@Override public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCoordinateUnits) { double par = readAttributeDouble( ctv, CF.STANDARD_PARALLEL, Double.NaN); if (Double.isNaN(par)) { double scale = readAttributeDouble( ctv, CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN, Double.NaN); if (Double.isNaN(scale)) throw new IllegalArgumentException("Mercator projection must have attribute " + CF.STANDARD_PARALLEL + " or " + CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN); par = ucar.unidata.geoloc.projection.Mercator.convertScaleToStandardParallel(scale); } readStandardParams(ctv, geoCoordinateUnits); ucar.unidata.geoloc.projection.Mercator proj = new ucar.unidata.geoloc.projection.Mercator( lon0, par, false_easting, false_northing, earth_radius); return new ProjectionCT(ctv.getName(), "FGDC", proj); } }
public CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Variable ctv) { double par = readAttributeDouble( ctv, CF.STANDARD_PARALLEL, Double.NaN); if (Double.isNaN(par)) { double scale = readAttributeDouble( ctv, CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN, Double.NaN); if (Double.isNaN(scale)) throw new IllegalArgumentException("Mercator projection must have attribute "+CF.STANDARD_PARALLEL+" or "+ CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN); par = ucar.unidata.geoloc.projection.Mercator.convertScaleToStandardParallel(scale); } double lon0 = readAttributeDouble( ctv, CF.LONGITUDE_OF_PROJECTION_ORIGIN, Double.NaN); double lat0 = readAttributeDouble( ctv, CF.LATITUDE_OF_PROJECTION_ORIGIN, Double.NaN); // LOOK not used double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0); double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0); double earth_radius = getEarthRadiusInKm(ctv); if ((false_easting != 0.0) || (false_northing != 0.0)) { double scalef = getFalseEastingScaleFactor(ds, ctv); false_easting *= scalef; false_northing *= scalef; } ucar.unidata.geoloc.projection.Mercator proj = new ucar.unidata.geoloc.projection.Mercator( lon0, par, false_easting, false_northing, earth_radius); return new ProjectionCT(ctv.getShortName(), "FGDC", proj); } }
@Override public CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Variable ctv) { double par = readAttributeDouble( ctv, CF.STANDARD_PARALLEL, Double.NaN); if (Double.isNaN(par)) { double scale = readAttributeDouble( ctv, CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN, Double.NaN); if (Double.isNaN(scale)) throw new IllegalArgumentException("Mercator projection must have attribute " + CF.STANDARD_PARALLEL + " or " + CF.SCALE_FACTOR_AT_PROJECTION_ORIGIN); par = ucar.unidata.geoloc.projection.Mercator.convertScaleToStandardParallel(scale); } double lon0 = readAttributeDouble( ctv, CF.LONGITUDE_OF_PROJECTION_ORIGIN, Double.NaN); double lat0 = readAttributeDouble( ctv, CF.LATITUDE_OF_PROJECTION_ORIGIN, Double.NaN); // LOOK not used double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0); double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0); double earth_radius = getEarthRadiusInKm(ctv); if ((false_easting != 0.0) || (false_northing != 0.0)) { double scalef = getFalseEastingScaleFactor(ds, ctv); false_easting *= scalef; false_northing *= scalef; } ucar.unidata.geoloc.projection.Mercator proj = new ucar.unidata.geoloc.projection.Mercator( lon0, par, false_easting, false_northing, earth_radius); return new ProjectionCT(ctv.getShortName(), "FGDC", proj); } }