final float pixelSizeY = (float) (yMeters / h); final MapInfo mapInfo = new MapInfo( mapProjection, pixelX, pixelY, easting, northing, pixelSizeX, pixelSizeY, Datum.WGS_84); mapInfo.setSceneWidth(productDimension.width); mapInfo.setSceneHeight(productDimension.height); mapInfo.setOrientation(0);
public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append(getMapProjection().getName()); buffer.append(", "); buffer.append(getPixelX()); buffer.append(", "); buffer.append(getPixelY()); buffer.append(", "); buffer.append(getEasting()); buffer.append(", "); buffer.append(getNorthing()); buffer.append(", "); buffer.append(getPixelSizeX()); buffer.append(", "); buffer.append(getPixelSizeY()); buffer.append(", "); buffer.append(getDatum().getName()); buffer.append(", "); buffer.append("units=" + getMapProjection().getMapUnit()); buffer.append(", "); buffer.append(getSceneWidth()); buffer.append(", "); buffer.append(getSceneHeight());
public AffineTransform getPixelToMapTransform() { AffineTransform transform = new AffineTransform(); transform.translate(getEasting(), getNorthing()); transform.scale(getPixelSizeX(), -getPixelSizeY()); transform.rotate(Math.toRadians(-getOrientation())); transform.translate(-getPixelX(), -getPixelY()); return transform; } }
@Override public Object clone() { try { final MapInfo mapInfo = (MapInfo) super.clone(); final MapProjection mapProjection = mapInfo.getMapProjection(); mapInfo.setProjection((MapProjection) mapProjection.clone()); return mapInfo; } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } }
println(crsTags[0]); ++indent; final Datum datum = info.getDatum(); final MapProjection projection = info.getMapProjection(); final Ellipsoid ellipsoid = datum.getEllipsoid(); final MapTransform mapTransform = projection.getMapTransform(); ++indent; final String[][] mapAttrib = new String[][]{{DimapProductConstants.ATTRIB_VALUE, ""}}; mapAttrib[0][1] = String.valueOf(info.getPixelX()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_PIXEL_X, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getPixelY()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_PIXEL_Y, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getEasting()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_EASTING, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getNorthing()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_NORTHING, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getOrientation()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_ORIENTATION, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getPixelSizeX()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_PIXELSIZE_X, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getPixelSizeY()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_PIXELSIZE_Y, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.getNoDataValue()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_NODATA_VALUE, mapAttrib, null); mapAttrib[0][1] = info.getMapProjection().getMapUnit(); printLine(indent, DimapProductConstants.TAG_MAP_INFO_MAPUNIT, mapAttrib, null); mapAttrib[0][1] = String.valueOf(info.isOrthorectified()); printLine(indent, DimapProductConstants.TAG_MAP_INFO_ORTHORECTIFIED, mapAttrib, null);
public void testCreateDeepClone() { MapInfo original = createMapInfo(); original.setNoDataValue(-1.23456); original.setOrthorectified(true); original.setSceneSizeFitted(true); original.setElevationModelName("G8"); MapInfo deepClone = original.createDeepClone(); assertEquals(deepClone.getMapProjection(), original.getMapProjection()); assertEquals(deepClone.getDatum(), original.getDatum()); assertEquals(deepClone.getPixelX(), original.getPixelX(), 1e-6f); assertEquals(deepClone.getPixelY(), original.getPixelY(), 1e-6f); assertEquals(deepClone.getPixelSizeX(), original.getPixelSizeX(), 1e-6f); assertEquals(deepClone.getPixelSizeY(), original.getPixelSizeY(), 1e-6f); assertEquals(deepClone.getNorthing(), original.getNorthing(), 1e-6f); assertEquals(deepClone.getEasting(), original.getEasting(), 1e-6f); assertEquals(deepClone.getOrientation(), original.getOrientation(), 1e-6f); assertEquals(deepClone.getElevationModelName(), original.getElevationModelName()); assertEquals(deepClone.getSceneWidth(), original.getSceneWidth()); assertEquals(deepClone.getSceneHeight(), original.getSceneHeight()); assertEquals(deepClone.getNoDataValue(), original.getNoDataValue(), 1e-10); assertEquals(deepClone.isOrthorectified(), original.isOrthorectified()); assertEquals(deepClone.isSceneSizeFitted(), original.isSceneSizeFitted()); }
final MapGeoCoding srcMapGeoCoding = ((MapGeoCoding) srcScene.getGeoCoding()); final MapInfo srcMapInfo = srcMapGeoCoding.getMapInfo(); float pixelX = srcMapInfo.getPixelX(); float pixelY = srcMapInfo.getPixelY(); float easting = srcMapInfo.getEasting(); float northing = srcMapInfo.getNorthing(); float pixelSizeX = srcMapInfo.getPixelSizeX(); float pixelSizeY = srcMapInfo.getPixelSizeY(); final float orientation = srcMapInfo.getOrientation(); if (subsetDef != null) { final Rectangle region = subsetDef.getRegion(); final PixelPos pixelPos = new PixelPos(region.x + pixelX, region.y + pixelY); final GeoPos geoPos = getGeoPos(pixelPos, null); final Point2D mapPoint = this.getMapInfo().getMapProjection().getMapTransform().forward(geoPos, null); easting = (float) mapPoint.getX(); northing = (float) mapPoint.getY(); final MapInfo destMapInfo = (MapInfo) srcMapInfo.clone(); destMapInfo.setPixelX(pixelX); destMapInfo.setPixelY(pixelY); destMapInfo.setEasting(easting); destMapInfo.setNorthing(northing); destMapInfo.setPixelSizeX(pixelSizeX); destMapInfo.setPixelSizeY(pixelSizeY); destMapInfo.setSceneWidth(destScene.getRasterWidth()); destMapInfo.setSceneHeight(destScene.getRasterHeight()); destScene.setGeoCoding(new MapGeoCoding(destMapInfo)); return true;
private MapInfo createMapInfo() { MapTransform transform = MapTransformFactory.createTransform("Identity", null); MapProjection projection = new MapProjection("pro_name", transform); Datum datum = new Datum("datumName", new Ellipsoid("ellipsoidName", 7d, 8d), 0, 0, 0); MapInfo mapInfo = new MapInfo(projection, 1f, 2f, 3f, 4f, 5f, 6f, datum); mapInfo.setSceneWidth(123); mapInfo.setSceneHeight(234); return mapInfo; } }
final Ellipsoid ellipsoid = new Ellipsoid(ellipsoidName, semiMinor, semiMajor); final Datum datum = new Datum(datumName, ellipsoid, 0, 0, 0); // @todo nf/nf - read also DX,DY,DZ final MapInfo mapInfo = new MapInfo(projection, pixelX, pixelY, easting, northing, pixelSizeX, pixelSizeY, datum); mapInfo.setOrientation(orientation); mapInfo.setNoDataValue(noDataValue); mapInfo.setOrthorectified(orthorectified); mapInfo.setElevationModelName(elevModelName); mapInfo.setSceneSizeFitted(sceneFitted); mapInfo.setSceneWidth(sceneWidth); mapInfo.setSceneHeight(sceneHeight); final Resampling resampling = ResamplingFactory.createResampling(resamplingName); if (resampling != null) { mapInfo.setResampling(resampling); } else { Debug.trace("Unknown resampling: '" + resamplingName + "'");
final float northing = (float) pMax.getY() - pixelY * pixelSize; final MapInfo mapInfo = new MapInfo(mapProjection, pixelX, pixelY, pixelSize, gc.getDatum()); mapInfo.setOrientation((float) orientation); mapInfo.setSceneSizeFitted(true); mapInfo.setSceneWidth(targetW); mapInfo.setSceneHeight(targetH); mapInfo.setNoDataValue(noDataValue); return mapInfo;
imageToMapTransform = this.mapInfo.getPixelToMapTransform(); try { mapToImageTransform = this.mapInfo.getPixelToMapTransform().createInverse(); } catch (NoninvertibleTransformException e) { throw new IllegalArgumentException("mapInfo", e); mapTransform = this.mapInfo.getMapProjection().getMapTransform(); final Rectangle rect = new Rectangle(0, 0, this.mapInfo.getSceneWidth(), this.mapInfo.getSceneHeight()); if (!rect.isEmpty()) { final GeoPos[] geoPoints = createGeoBoundary(rect); final CoordinateReferenceSystem mapCRS = CoordinateReferenceSystems.getCRS(mapInfo.getMapProjection(), mapInfo.getDatum()); setMapCRS(mapCRS); setImageCRS(createImageCRS(mapCRS, new AffineTransform2D(mapToImageTransform)));
private boolean isGeographicLatLon(GeoCoding geoCoding) { if (geoCoding instanceof MapGeoCoding) { MapGeoCoding mapGeoCoding = (MapGeoCoding) geoCoding; MapTransformDescriptor transformDescriptor = mapGeoCoding.getMapInfo() .getMapProjection().getMapTransform().getDescriptor(); String typeID = transformDescriptor.getTypeID(); if (typeID.equals(IdentityTransformDescriptor.TYPE_ID)) { return true; } } else if (geoCoding instanceof CrsGeoCoding) { return CRS.equalsIgnoreMetadata(geoCoding.getMapCRS(), DefaultGeographicCRS.WGS84); } return false; }
private MapInfo createMapInfo(Datum datum, MapProjection projection) { return new MapInfo(projection, -1.2f, 3.4f, 5.6f, -7.8f, 0.9f, -1.0f, datum); }
/** * Gets the datum, the reference point or surface against which {@link GeoPos} measurements are made. * * @return the datum */ @Override public Datum getDatum() { return mapInfo.getDatum(); }
private MapGeoCoding createRotatedMapGeoCoding() { final MapInfo mapInfo = createMapInfo(Datum.WGS_84); mapInfo.setOrientation(42.0f); return new MapGeoCoding(mapInfo); }
pw.println(" </Projection>"); pw.println(" <MAP_INFO>"); pw.println(" <PIXEL_X value=\"" + mapInfo.getPixelX() + "\" />"); pw.println(" <PIXEL_Y value=\"" + mapInfo.getPixelY() + "\" />"); pw.println(" <EASTING value=\"" + mapInfo.getEasting() + "\" />"); pw.println(" <NORTHING value=\"" + mapInfo.getNorthing() + "\" />"); pw.println(" <ORIENTATION value=\"" + mapInfo.getOrientation() + "\" />"); pw.println(" <PIXELSIZE_X value=\"" + mapInfo.getPixelSizeX() + "\" />"); pw.println(" <PIXELSIZE_Y value=\"" + mapInfo.getPixelSizeY() + "\" />"); pw.println(" <NODATA_VALUE value=\"" + mapInfo.getNoDataValue() + "\" />"); pw.println(" <MAPUNIT value=\"" + mapInfo.getMapProjection().getMapUnit() + "\" />"); pw.println(" <ORTHORECTIFIED value=\"" + mapInfo.isOrthorectified() + "\" />"); pw.println(" <ELEVATION_MODEL value=\"" + mapInfo.getElevationModelName() + "\" />"); pw.println(" <SCENE_FITTED value=\"" + mapInfo.isSceneSizeFitted() + "\" />"); pw.println(" <SCENE_WIDTH value=\"" + mapInfo.getSceneWidth() + "\" />"); pw.println(" <SCENE_HEIGHT value=\"" + mapInfo.getSceneHeight() + "\" />"); pw.println(" <RESAMPLING value=\"" + mapInfo.getResampling().getName() + "\" />"); pw.println(" </MAP_INFO>"); pw.println(" </Horizontal_CS>");
@Test public void testSetGeocoding() { MapProjection projection = createMapProjectionForTestSetGeocoding(); MapInfo mapInfo = new MapInfo(projection, 0, 0, 23, 24, 12, 13, Datum.WGS_84); MapGeoCoding mapGeoCoding = new MapGeoCoding(mapInfo); int sceneRasterWidth = 243; Product product = new Product("name", "type", sceneRasterWidth, sceneRasterHeight); mapInfo.setSceneWidth(sceneRasterWidth + 1); mapInfo.setSceneHeight(sceneRasterHeight); try { product.setGeoCoding(mapGeoCoding); mapInfo.setSceneWidth(sceneRasterWidth); mapInfo.setSceneHeight(sceneRasterHeight + 1); mapInfo.setSceneWidth(sceneRasterWidth); mapInfo.setSceneHeight(sceneRasterHeight);
final Ellipsoid ellipsoid = new Ellipsoid(ellipsoidName, semiMinor, semiMajor); final Datum datum = new Datum(datumName, ellipsoid, 0, 0, 0); final MapInfo mapInfo = new MapInfo(projection, pixelX, pixelY, easting, northing, pixelSizeX, pixelSizeY, datum); mapInfo.setOrientation(orientation); mapInfo.setOrthorectified(orthorectified); mapInfo.setElevationModelName(elevModelName); mapInfo.setNoDataValue(noDataValue); mapInfo.setSceneWidth(sceneWidth); mapInfo.setSceneHeight(sceneHeight); mapInfo.setSceneSizeFitted(sceneFitted); mapInfo.setResampling(resampling); product.setGeoCoding(new MapGeoCoding(mapInfo));
final float easting = (float) envelope[0].getX(); final float northing = (float) envelope[1].getY(); final MapInfo mapInfo = new MapInfo(mapProjection, 0.5F, 0.5F, pixelSize, gc.getDatum()); mapInfo.setSceneSizeFitted(true); mapInfo.setSceneWidth(targetW); mapInfo.setSceneHeight(targetH); mapInfo.setNoDataValue(MapInfo.DEFAULT_NO_DATA_VALUE); return mapInfo;
return; mapProjection = info.getMapProjection();