public void loadFromProperties(Properties properties){
  projected=StringUtil.getBooleanValue(properties,"ProjectionInfo.Projected",false,true);
  tiePoint=StringUtil.getDoubleArray(properties,"ProjectionInfo.TiePoint",null,true);
  scale=StringUtil.getDoubleArray(properties,"ProjectionInfo.Scale",null,true);
  globe=StringUtil.getStringValue(properties,"ProjectionInfo.Globe",null,true);
  rasterWidth=StringUtil.getIntegerValue(properties,"ProjectionInfo.RasterWidth",true,0,true);
  rasterLength=StringUtil.getIntegerValue(properties,"ProjectionInfo.RasterLength",true,0,true);
  datumCode=StringUtil.getIntegerValue(properties,"ProjectionInfo.DatumCode",true,0,false);
  ellipsoidCode=StringUtil.getIntegerValue(properties,"ProjectionInfo.DatumCode",true,0,false);
  semiMajorAxis=StringUtil.getDoubleValue(properties,"ProjectionInfo.SemiMajorAxis",true,Double.NaN,false);
  semiMinorAxis=StringUtil.getDoubleValue(properties,"ProjectionInfo.SemiMinorAxis",true,Double.NaN,false);
  inverseFlattening=StringUtil.getDoubleValue(properties,"ProjectionInfo.InverseFlattening",false,Double.NaN,false);
  gcsPrimeMeridianLon=StringUtil.getDoubleValue(properties,"ProjectionInfo.GCSPrimeMeridianLon",false,Double.NaN,false);
  projCode=StringUtil.getIntegerValue(properties,"ProjectionInfo.ProjectionCode",true,0,false);
  pcsCode=StringUtil.getIntegerValue(properties,"ProjectionInfo.ProjectionCoordinateSystemCode",true,0,false);
  coordTransformCode=StringUtil.getIntegerValue(properties,"ProjectionInfo.CoordTransformCode",true,0,false);
  stdParallel1=StringUtil.getDoubleValue(properties,"ProjectionInfo.StdParallel1",false,Double.NaN,false);
  poleLat=(int)(Math.signum(stdParallel1) * 90);
  stdParallel2=StringUtil.getDoubleValue(properties,"ProjectionInfo.StdParallel1",false,Double.NaN,false);
  naturalOriginLon=StringUtil.getDoubleValue(properties,"ProjectionInfo.NaturalOriginLon",false,Double.NaN,false);
  naturalOriginLat=StringUtil.getDoubleValue(properties,"ProjectionInfo.NaturalOriginLat",false,Double.NaN,false);
  falseOriginLon=StringUtil.getDoubleValue(properties,"ProjectionInfo.FalseOriginLon",false,Double.NaN,false);
  falseOriginLat=StringUtil.getDoubleValue(properties,"ProjectionInfo.FalseOriginLat",false,Double.NaN,false);
  falseEasting=StringUtil.getDoubleValue(properties,"ProjectionInfo.FalseEasting",false,Double.NaN,false);
  falseNorthing=StringUtil.getDoubleValue(properties,"ProjectionInfo.FalseNorthing",false,Double.NaN,false);
  centerEasting=StringUtil.getDoubleValue(properties,"ProjectionInfo.CenterEasting",false,Double.NaN,false);
  centerNorthing=StringUtil.getDoubleValue(properties,"ProjectionInfo.CenterNorthing",false,Double.NaN,false);
  centerLon=StringUtil.getDoubleValue(properties,"ProjectionInfo.CenterLon",false,Double.NaN,false);
  centerLat=StringUtil.getDoubleValue(properties,"ProjectionInfo.CenterLat",false,Double.NaN,false);
  scaleAtNaturalOrigin=StringUtil.getDoubleValue(properties,"ProjectionInfo.ScaleAtNaturalOrigin",false,Double.NaN,false);
  scaleAtCenter=StringUtil.getDoubleValue(properties,"ProjectionInfo.ScaleAtCenter",false,Double.NaN,false);
  azimuth=StringUtil.getDoubleValue(properties,"ProjectionInfo.Azimuth",false,Double.NaN,false);
  straightVertPoleLon=StringUtil.getDoubleValue(properties,"ProjectionInfo.StraightVertPoleLon",false,Double.NaN,false);
  gcsCitation=StringUtil.getStringValue(properties,"ProjectionInfo.GCSCitation",null,false);
  pcsCitation=StringUtil.getStringValue(properties,"ProjectionInfo.PCSCitation",null,false);
  projLinearUnits=StringUtil.getStringValue(properties,"ProjectionInfo.ProjLinearUnits","meter",false);
  if (coordTransformCode == GeoKey.Code_Undefined) {
    String citation=(pcsCitation == null ? "" : pcsCitation.toLowerCase());
    if (citation.contains("mercator") && (citation.contains("web") || citation.contains("pseudo") || citation.contains("global"))) {
      coordTransformCode=GeoKey.Code_CT_Mercator;
      if (Double.isNaN(naturalOriginLon))       naturalOriginLon=0;
      if (Double.isNaN(falseEasting))       falseEasting=0;
      if (Double.isNaN(falseNorthing))       falseNorthing=0;
      if (citation.contains("auxiliary") && citation.contains("sphere")) {
        if (!Double.isNaN(semiMajorAxis))         semiMinorAxis=semiMajorAxis;
 else {
          semiMajorAxis=SEMI_MAJOR_AXIS[0];
          semiMinorAxis=SEMI_MINOR_AXIS[0];
        }
      }
    }
  }
}

public void loadFromProperties ( Properties properties ) { projected = StringUtil . getBooleanValue ( properties , "ProjectionInfo.Projected" , false , true ) ; tiePoint = StringUtil . getDoubleArray ( properties , "ProjectionInfo.TiePoint" , null , true ) ; scale = StringUtil . getDoubleArray ( properties , "ProjectionInfo.Scale" , null , true ) ; globe = StringUtil . getStringValue ( properties , "ProjectionInfo.Globe" , null , true ) ; rasterWidth = StringUtil . getIntegerValue ( properties , "ProjectionInfo.RasterWidth" , true , 0 , true ) ; rasterLength = StringUtil . getIntegerValue ( properties , "ProjectionInfo.RasterLength" , true , 0 , true ) ; datumCode = StringUtil . getIntegerValue ( properties , "ProjectionInfo.DatumCode" , true , 0 , false ) ; ellipsoidCode = StringUtil . getIntegerValue ( properties , "ProjectionInfo.DatumCode" , true , 0 , false ) ; semiMajorAxis = StringUtil . getDoubleValue ( properties , "ProjectionInfo.SemiMajorAxis" , true , Double . NaN , false ) ; semiMinorAxis = StringUtil . getDoubleValue ( properties , "ProjectionInfo.SemiMinorAxis" , true , Double . NaN , false ) ; inverseFlattening = StringUtil . getDoubleValue ( properties , "ProjectionInfo.InverseFlattening" , false , Double . NaN , false ) ; gcsPrimeMeridianLon = StringUtil . getDoubleValue ( properties , "ProjectionInfo.GCSPrimeMeridianLon" , false , Double . NaN , false ) ; projCode = StringUtil . getIntegerValue ( properties , "ProjectionInfo.ProjectionCode" , true , 0 , false ) ; pcsCode = StringUtil . getIntegerValue ( properties , "ProjectionInfo.ProjectionCoordinateSystemCode" , true , 0 , false ) ; coordTransformCode = StringUtil . getIntegerValue ( properties , "ProjectionInfo.CoordTransformCode" , true , 0 , false ) ; stdParallel1 = StringUtil . getDoubleValue ( properties , "ProjectionInfo.StdParallel1" , false , Double . NaN , false ) ; poleLat = ( int ) ( Math . signum ( stdParallel1 ) * 90 ) ; stdParallel2 = StringUtil . getDoubleValue ( properties , "ProjectionInfo.StdParallel1" , false , Double . NaN , false ) ; naturalOriginLon = StringUtil . getDoubleValue ( properties , "ProjectionInfo.NaturalOriginLon" , false , Double . NaN , false ) ; naturalOriginLat = StringUtil . getDoubleValue ( properties , "ProjectionInfo.NaturalOriginLat" , false , Double . NaN , false ) ; falseOriginLon = StringUtil . getDoubleValue ( properties , "ProjectionInfo.FalseOriginLon" , false , Double . NaN , false ) ; falseOriginLat = StringUtil . getDoubleValue ( properties , "ProjectionInfo.FalseOriginLat" , false , Double . NaN , false ) ; falseEasting = StringUtil . getDoubleValue ( properties , "ProjectionInfo.FalseEasting" , false , Double . NaN , false ) ; falseNorthing = StringUtil . getDoubleValue ( properties , "ProjectionInfo.FalseNorthing" , false , Double . NaN , false ) ; centerEasting = StringUtil . getDoubleValue ( properties , "ProjectionInfo.CenterEasting" , false , Double . NaN , false ) ; centerNorthing = StringUtil . getDoubleValue ( properties , "ProjectionInfo.CenterNorthing" , false , Double . NaN , false ) ; centerLon = StringUtil . getDoubleValue ( properties , "ProjectionInfo.CenterLon" , false , Double . NaN , false ) ; centerLat = StringUtil . getDoubleValue ( properties , "ProjectionInfo.CenterLat" , false , Double . NaN , false ) ; scaleAtNaturalOrigin = StringUtil . getDoubleValue ( properties , "ProjectionInfo.ScaleAtNaturalOrigin" , false , Double . NaN , false ) ; scaleAtCenter = StringUtil . getDoubleValue ( properties , "ProjectionInfo.ScaleAtCenter" , false , Double . NaN , false ) ; azimuth = StringUtil . getDoubleValue ( properties , "ProjectionInfo.Azimuth" , false , Double . NaN , false ) ; straightVertPoleLon = StringUtil . getDoubleValue ( properties , "ProjectionInfo.StraightVertPoleLon" , false , Double . NaN , false ) ; gcsCitation = StringUtil . getStringValue ( properties , "ProjectionInfo.GCSCitation" , null , false ) ; pcsCitation = StringUtil . getStringValue ( properties , "ProjectionInfo.PCSCitation" , null , false ) ; projLinearUnits = StringUtil . getStringValue ( properties , "ProjectionInfo.ProjLinearUnits" , "meter" , false ) ; if ( coordTransformCode == GeoKey . Code_Undefined ) { String citation = ( pcsCitation == null ? "" : pcsCitation . toLowerCase ( ) ) ; if ( citation . contains ( "mercator" ) && ( citation . contains ( "web" ) || citation . contains ( "pseudo" ) || citation . contains ( "global" ) ) ) { coordTransformCode = GeoKey . Code_CT_Mercator ; if ( Double . isNaN ( naturalOriginLon ) ) naturalOriginLon = 0 ; if ( Double . isNaN ( falseEasting ) ) falseEasting = 0 ; if ( Double . isNaN ( falseNorthing ) ) falseNorthing = 0 ; if ( citation . contains ( "auxiliary" ) && citation . contains ( "sphere" ) ) { if ( ! Double . isNaN ( semiMajorAxis ) ) semiMinorAxis = semiMajorAxis ; else { semiMajorAxis = SEMI_MAJOR_AXIS [ 0 ] ; semiMinorAxis = SEMI_MINOR_AXIS [ 0 ] ; } } } } }
load contents from a properties object
