org.geotools.referencing.CRS类的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(16.4k)|赞(0)|评价(0)|浏览(657)

本文整理了Java中org.geotools.referencing.CRS类的一些代码示例,展示了CRS类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。CRS类的具体详情如下:
包路径:org.geotools.referencing.CRS
类名称:CRS

CRS介绍

[英]Simple utility class for making use of the CoordinateReferenceSystem and associated org.opengis.referencing.Factory implementations. This utility class is made up of static final functions. This class is not a factory or a builder. It makes use of the GeoAPI factory interfaces provided by ReferencingFactoryFinder.

The following methods may be added in a future version:

  • CoordinateReferenceSystem parseXML(String)

When using CoordinateReferenceSystem matching methods of this class ( #equalsIgnoreMetadata(Object,Object), #lookupIdentifier(IdentifiedObject,boolean), #lookupEpsgCode(CoordinateReferenceSystem,boolean), #lookupIdentifier(IdentifiedObject,boolean), #lookupIdentifier(Citation,CoordinateReferenceSystem,boolean)) against objects derived from a database other than the official EPSG one it may be advisable to set a non zero comparison tolerance with Hints#putSystemDefault(java.awt.RenderingHints.Key,Object) using the Hints#COMPARISON_TOLERANCE key. A value of 10e-9 has proved to give satisfactory results with definitions commonly found in .prj files accompaining shapefiles and georeferenced images.
Warning: the tolerance value is used in all internal comparison, this will also change the way math transforms are setup. Use with care.
[中]用于使用CoordinateReferenceSystem和关联组织的简单实用程序类。opengis。参考。工厂实现。此实用程序类由静态final函数组成。此类不是工厂或生成器。它利用了ReferenceGFactoryFinder提供的GeoAPI工厂接口。
未来版本中可能会添加以下方法:
*坐标引用系统解析XML(字符串)
使用此类的CoordinateReferenceSystem匹配方法时(#equalsIgnoreMetadata(Object,Object),#lookupIdentifier(IdentifiedObject,boolean),#lookupEpsgCode(CoordinateReferenceSystem,boolean),#lookupIdentifier(IdentifiedObject,boolean),#lookupIdentifier(引文、坐标引用系统、布尔值))针对从官方EPSG one以外的数据库派生的对象,建议使用提示#比较#容差键设置带有提示#putSystemDefault(java.awt.RenderingHints.Key、Object)的非零比较容差。10e-9的值已证明能给出令人满意的结果,其定义通常在中找到。包含形状文件和地理参考图像的prj文件。
警告:公差值用于所有内部比较,这也将更改数学变换的设置方式。小心使用。

代码示例

代码示例来源:origin: geoserver/geoserver

  1. @Test
  2. public void testLatLonBounds() throws Exception {
  3. ReferencedEnvelope nativeBounds =
  4. new ReferencedEnvelope(700000, 800000, 4000000, 4100000, null);
  5. CoordinateReferenceSystem crs = CRS.decode("EPSG:32632", true);
  6. CatalogBuilder cb = new CatalogBuilder(getCatalog());
  7. ReferencedEnvelope re = cb.getLatLonBounds(nativeBounds, crs);
  8. assertEquals(DefaultGeographicCRS.WGS84, re.getCoordinateReferenceSystem());
  9. assertEquals(11.22, re.getMinX(), 0.01);
  10. assertEquals(36.1, re.getMinY(), 0.01);
  11. }

代码示例来源:origin: geoserver/geoserver

  1. /**
  2. * Test method for {@link CoordinateOperationFactoryUsingWKT#createCoordinateOperation}.
  3. *
  4. * @throws TransformException
  5. */
  6. @Test
  7. public void testCreateOperationFromCustomCodes() throws Exception {
  8. // Test CRSs
  9. CoordinateReferenceSystem source = CRS.decode(SOURCE_CRS);
  10. CoordinateReferenceSystem target = CRS.decode(TARGET_CRS);
  11. MathTransform mt = CRS.findMathTransform(source, target, true);
  12. // Test MathTransform
  13. double[] p = new double[2];
  14. mt.transform(SRC_TEST_POINT, 0, p, 0, 1);
  15. assertEquals(p[0], DST_TEST_POINT[0], 1e-8);
  16. assertEquals(p[1], DST_TEST_POINT[1], 1e-8);
  17. }

代码示例来源:origin: geoserver/geoserver

  1. /**
  2. * Computes the geographic bounds of a {@link ResourceInfo} by reprojecting the available native
  3. * bounds
  4. *
  5. * @param rinfo
  6. * @return the geographic bounds, or null if the native bounds are not available
  7. * @throws IOException
  8. */
  9. public ReferencedEnvelope getLatLonBounds(
  10. ReferencedEnvelope nativeBounds, CoordinateReferenceSystem declaredCRS)
  11. throws IOException {
  12. if (nativeBounds != null && declaredCRS != null) {
  13. // make sure we use the declared CRS, not the native one, the may differ
  14. if (!CRS.equalsIgnoreMetadata(DefaultGeographicCRS.WGS84, declaredCRS)) {
  15. // transform
  16. try {
  17. ReferencedEnvelope bounds =
  18. new ReferencedEnvelope(nativeBounds, CRS.getHorizontalCRS(declaredCRS));
  19. return bounds.transform(DefaultGeographicCRS.WGS84, true);
  20. } catch (Exception e) {
  21. throw (IOException) new IOException("transform error").initCause(e);
  22. }
  23. } else {
  24. return new ReferencedEnvelope(nativeBounds, DefaultGeographicCRS.WGS84);
  25. }
  26. }
  27. return null;
  28. }

代码示例来源:origin: geoserver/geoserver

  1. @Override
  2. public Object fromString(String str) {
  3. if (str.toUpperCase().startsWith("EPSG:")) {
  4. try {
  5. return CRS.decode(str);
  6. } catch (Exception e) {
  7. XStreamPersister.LOGGER.log(Level.WARNING, "Error decode epsg code: " + str, e);
  8. }
  9. } else {
  10. try {
  11. return CRS.parseWKT(str);
  12. } catch (FactoryException e) {
  13. XStreamPersister.LOGGER.log(Level.WARNING, "Error decode wkt: " + str, e);
  14. }
  15. }
  16. return null;
  17. }
  18. }

代码示例来源:origin: geoserver/geoserver

  1. final CoordinateReferenceSystem sourceCRS = envelope.getCoordinateReferenceSystem();
  2. if (CRS.equalsIgnoreMetadata(sourceCRS, DefaultGeographicCRS.WGS84)) {
  3. return new GeneralEnvelope(envelope);
  4. if (!CRS.equalsIgnoreMetadata(sourceCRS, targetCRS)) {
  5. targetEnvelope = CRS.transform(envelope, targetCRS);
  6. } else {
  7. targetEnvelope = new GeneralEnvelope(envelope);

代码示例来源:origin: org.geoserver/gs-wcs2_0

  1. @Test
  2. public void testBasic() throws Exception {
  3. final File xml =
  4. new File("./src/test/resources/rangesubset/requestGetCoverageRangeSubsetting.xml");
  5. final String request = FileUtils.readFileToString(xml);
  6. MockHttpServletResponse response = postAsServletResponse("wcs", request);
  7. assertEquals("image/tiff", response.getContentType());
  8. byte[] tiffContents = getBinary(response);
  9. File file = File.createTempFile("bm_gtiff", "bm_gtiff.tiff", new File("./target"));
  10. FileUtils.writeByteArrayToFile(file, tiffContents);
  11. final GeoTiffReader reader = new GeoTiffReader(file);
  12. assertTrue(
  13. CRS.equalsIgnoreMetadata(
  14. reader.getCoordinateReferenceSystem(), CRS.decode("EPSG:4326", true)));
  15. assertEquals(360, reader.getOriginalGridRange().getSpan(0));
  16. assertEquals(360, reader.getOriginalGridRange().getSpan(1));
  17. final GridCoverage2D coverage = reader.read(null);
  18. assertEquals(1, coverage.getSampleDimensions().length);
  19. GridCoverage2D sourceCoverage =
  20. (GridCoverage2D)
  21. this.getCatalog()
  22. .getCoverageByName("BlueMarble")
  23. .getGridCoverageReader(null, null)
  24. .read(null);
  25. assertEnvelopeEquals(sourceCoverage, coverage);
  26. reader.dispose();
  27. scheduleForCleaning(coverage);
  28. scheduleForCleaning(sourceCoverage);
  29. }

代码示例来源:origin: geotools/geotools

  1. final CoordinateReferenceSystem sourceCRS = sourceCoverage.getCoordinateReferenceSystem();
  2. if (targetCRS == null) {
  3. if (targetGG != null && targetGG.isDefined(GridGeometry2D.CRS_BITMASK)) {
  4. if (!CRS.equalsIgnoreMetadata(targetCRS, targetGGCRS)
  5. && !CRS.findMathTransform(targetCRS, targetGGCRS).isIdentity()) {
  6. throw new IllegalArgumentException(
  7. Errors.format(
  8. return targetCoverage;
  9. if (CRS.equalsIgnoreMetadata(sourceCRS, targetCRS)) {
  10. gridRange = CRS.transform(allSteps.inverse(), gridRange);
  11. targetEnvelope = CRS.transform(operation, sourceEnvelope);
  12. targetEnvelope.setCoordinateReferenceSystem(targetCRS);
  13. GeneralEnvelope gridRange = CRS.transform(step1.inverse(), targetEnvelope);
  14. case DataBuffer.TYPE_FLOAT:
  15. Envelope source = CRS.transform(sourceGG.getEnvelope(), targetCRS);
  16. Envelope target = CRS.transform(targetGG.getEnvelope(), targetCRS);
  17. assert CRS.equalsIgnoreMetadata(targetCoverage.getCoordinateReferenceSystem(), targetCRS)

代码示例来源:origin: geotools/geotools

  1. /** Tests {@link CRS#getHorizontalCRS} from a Geographic 3D CR. */
  2. public void testHorizontalFromGeodetic() throws FactoryException {
  3. // retrives "WGS 84 (geographic 3D)"
  4. CoordinateReferenceSystem compound = CRS.decode("EPSG:4327");
  5. CoordinateReferenceSystem horizontal = CRS.getHorizontalCRS(compound);
  6. // the horizonal version is basically 4326, but it won't compare positively
  7. // with 4326, not even using CRS.equalsIgnoreMetadata(), so we check the axis directly
  8. CoordinateSystem cs = horizontal.getCoordinateSystem();
  9. assertEquals(2, cs.getDimension());
  10. assertEquals(AxisDirection.NORTH, cs.getAxis(0).getDirection());
  11. assertEquals(AxisDirection.EAST, cs.getAxis(1).getDirection());
  12. }

代码示例来源:origin: geotools/geotools

  1. ImageUtilities.getReferencedEnvelopeFromGeographicBoundingBox(
  2. new GeographicBoundingBoxImpl(coverageEnvelope));
  3. coverageGeographicCRS2D = coverageGeographicBBox.getCoordinateReferenceSystem();
  4. coverageCRS2D = CRS.getHorizontalCRS(coverageCRS);
  5. assert coverageCRS2D.getCoordinateSystem().getDimension() == 2;
  6. if (coverageCRS.getCoordinateSystem().getDimension() != 2) {
  7. final MathTransform transform =
  8. CRS.findMathTransform(
  9. coverageCRS, (CoordinateReferenceSystem) coverageCRS2D);
  10. final GeneralEnvelope bbox = CRS.transform(transform, coverageEnvelope);
  11. bbox.setCoordinateReferenceSystem(coverageCRS2D);
  12. coverageBBox = new ReferencedEnvelope(bbox);
  13. } else {
  14. coverageBBox = new ReferencedEnvelope(coverageEnvelope);

代码示例来源:origin: geotools/geotools

  1. (GridCoverage2DReader) GRID_PROPERTY_NAME.evaluate(gridWrapper);
  2. if (CRS.equalsIgnoreMetadata(
  3. reader.getCoordinateReferenceSystem(),
  4. gridGeometry.getCoordinateReferenceSystem())) {
  5. gridGeometry.getEnvelope();
  6. GeneralEnvelope transformed =
  7. org.geotools.referencing.CRS.transform(
  8. atOriginal.inverse(), worldEnvelope);
  9. int minx = (int) Math.floor(transformed.getMinimum(0));
  10. int miny = (int) Math.floor(transformed.getMinimum(1));
  11. int maxx = (int) Math.ceil(transformed.getMaximum(0));
  12. int maxy = (int) Math.ceil(transformed.getMaximum(1));
  13. Rectangle rect =
  14. new ReferencedEnvelope(readGG.getEnvelope());
  15. CoordinateReferenceSystem coverageCRS =
  16. coverage.getCoordinateReferenceSystem2D();
  17. if (!CRS.equalsIgnoreMetadata(
  18. renderingEnvelope.getCoordinateReferenceSystem(), coverageCRS)) {
  19. renderingEnvelope = renderingEnvelope.transform(coverageCRS, true);
  20. if (coverage.getEnvelope2D().intersects(renderingEnvelope)) {

代码示例来源:origin: geotools/geotools

  1. cropEnvelope = (GeneralEnvelope) envelope;
  2. } else if (envelope instanceof Envelope) {
  3. cropEnvelope = new GeneralEnvelope((Envelope) envelope);
  4. Envelope e2d =
  5. JTS.getEnvelope2D(
  6. cropRoi.getEnvelopeInternal(), source.getCoordinateReferenceSystem());
  7. cropEnvelope = new GeneralEnvelope(e2d);
  8. final Envelope2D sourceEnvelope = source.getEnvelope2D();
  9. destinationCRS = source.getCoordinateReferenceSystem2D();
  10. ge.setCoordinateReferenceSystem(destinationCRS);
  11. destinationEnvelope = ge;
  12. if (!CRS.equalsIgnoreMetadata(sourceCRS, destinationCRS)) {
  13. throw new CannotCropException(
  14. Errors.format(
  15. ErrorKeys.MISMATCHED_ENVELOPE_CRS_$2,
  16. sourceCRS.getName().getCode(),
  17. destinationCRS.getName().getCode()));
  18. new GeneralEnvelope((Envelope) destinationEnvelope);
  19. intersectionEnvelope.setCoordinateReferenceSystem(source.getCoordinateReferenceSystem());
  20. (AffineTransform)
  21. ((GridGeometry2D) source.getGridGeometry())
  22. .getGridToCRS(PixelInCell.CELL_CORNER);

代码示例来源:origin: geotools/geotools

  1. @Test
  2. public void testConic() throws Exception {
  3. // setup a request large enough to cause severe reprojection deformation
  4. CoordinateReferenceSystem crs = CRS.decode("EPSG:32632", true);
  5. ReferencedEnvelope mapExtent = new ReferencedEnvelope(-1.5e7, 1.5e7, 0, 1e6, crs);
  6. // System.out.println(mapExtent.transform(DefaultGeographicCRS.WGS84, true));
  7. GridCoverageReaderHelper helper =
  8. new GridCoverageReaderHelper(
  9. reader,
  10. new Rectangle(400, 200),
  11. mapExtent,
  12. Interpolation.getInstance(Interpolation.INTERP_NEAREST));
  13. // read single coverage with no projection handling, we should get the full requested area
  14. GridCoverage2D coverage = helper.readCoverage(null);
  15. Envelope2D envelope = coverage.getEnvelope2D();
  16. // System.out.println(envelope);
  17. assertTrue(envelope.getMinX() < -100);
  18. assertTrue(envelope.getMaxX() > 100);
  19. // now read via the projection handlers
  20. ProjectionHandler handler =
  21. ProjectionHandlerFinder.getHandler(
  22. mapExtent, reader.getCoordinateReferenceSystem(), true);
  23. List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
  24. // System.out.println(coverages);
  25. assertEquals(1, coverages.size());
  26. envelope = coverages.get(0).getEnvelope2D();
  27. // west/east limited to 45 degrees from the central meridian
  28. assertEquals(-36, envelope.getMinX(), EPS);
  29. assertEquals(54, envelope.getMaxX(), EPS);
  30. }

代码示例来源:origin: geotools/geotools

  1. graphics.dispose();
  2. CoordinateReferenceSystem nativeCrs = CRS.decode("EPSG:4326", true);
  3. ReferencedEnvelope mapExtent = new ReferencedEnvelope(0, 90, 0, 90, nativeCrs);
  4. GridCoverage2D coverage =
  5. CoverageFactoryFinder.getGridCoverageFactory(null)
  6. .create("test", bi, new ReferencedEnvelope(0, 90, 0, 90, nativeCrs));
  7. assertEquals(coverage.getNumSampleDimensions(), 3);
  8. GridCoverage2DReader reader = new GeoTiffReader(coverageFile);

代码示例来源:origin: geotools/geotools

  1. final MathTransform transformTo2D;
  2. CoordinateReferenceSystem requestedEnvelopeCRS2D =
  3. requestedEnvelope.getCoordinateReferenceSystem();
  4. if (requestedEnvelopeCRS2D.getCoordinateSystem().getDimension() != 2) {
  5. transformTo2D =
  6. CRS.findMathTransform(
  7. requestedEnvelopeCRS2D, CRS.getHorizontalCRS(requestedEnvelopeCRS2D));
  8. requestedEnvelopeCRS2D = CRS.getHorizontalCRS(requestedEnvelopeCRS2D);
  9. } else transformTo2D = IdentityTransform.create(2);
  10. if (!transformTo2D.isIdentity()) {
  11. requestedEnvelope2D = CRS.transform(transformTo2D, requestedEnvelope);
  12. requestedEnvelope2D.setCoordinateReferenceSystem(requestedEnvelopeCRS2D);
  13. } else requestedEnvelope2D = new GeneralEnvelope(requestedEnvelope);
  14. assert requestedEnvelopeCRS2D.getCoordinateSystem().getDimension() == 2;
  15. return requestedEnvelope2D;

代码示例来源:origin: geotools/geotools

  1. "test",
  2. new float[200][100],
  3. new ReferencedEnvelope(
  4. -180, 180, -90, 90, DefaultGeographicCRS.WGS84));
  5. GridCoverage2DReader reader =
  6. new GeneralEnvelope((BoundingBox) coverage.getEnvelope2D());
  7. this.originalGridRange = coverage.getGridGeometry().getGridRange();
  8. CoordinateReferenceSystem crs = CRS.decode("EPSG:3031", true);
  9. ReferencedEnvelope mapExtent =
  10. new ReferencedEnvelope(-20000000, 20000000, -20000000, 20000000, crs);

代码示例来源:origin: geoserver/geoserver

  1. CoordinateReferenceSystem crs = CRS.decode(srs);
  2. wli.setSRS(srs);
  3. wli.setNativeCRS(crs);
  4. wli.setSRS("EPSG:4326");
  5. srs = "EPSG:4326";
  6. wli.setNativeCRS(CRS.decode("EPSG:4326"));
  7. } else if (srs.equals("CRS:83")) {
  8. wli.setSRS("EPSG:4269");
  9. srs = "EPSG:4269";
  10. wli.setNativeCRS(CRS.decode("EPSG:4269"));
  11. } else if (srs.equals("CRS:27")) {
  12. wli.setSRS("EPSG:4267");
  13. srs = "EPSG:4267";
  14. wli.setNativeCRS(CRS.decode("EPSG:4267"));
  15. if (llbbox != null) {
  16. ReferencedEnvelope re =
  17. new ReferencedEnvelope(
  18. llbbox.getMinX(),
  19. llbbox.getMaxX(),
  20. try {
  21. wli.setLatLonBoundingBox(
  22. wli.getNativeBoundingBox().transform(DefaultGeographicCRS.WGS84, true));
  23. } catch (Exception e) {
  24. LOGGER.log(Level.INFO, "Could not transform native bbox into a lat/lon one", e);

代码示例来源:origin: geotools/geotools

  1. ReferencedEnvelope targetEnvelope = ReferencedEnvelope.reference(renderingEnvelope);
  2. ReferencedEnvelope coveragesEnvelope = null;
  3. for (GridCoverage2D coverage : coverages) {
  4. ReferencedEnvelope re = ReferencedEnvelope.reference(coverage.getEnvelope2D());
  5. if (coveragesEnvelope == null) {
  6. coveragesEnvelope = re;
  7. } else {
  8. coveragesEnvelope.expandToInclude(re);
  9. new ReferencedEnvelope(
  10. targetEnvelope.intersection(coveragesEnvelope),
  11. renderingEnvelope.getCoordinateReferenceSystem());
  12. if (targetEnvelope.isEmpty() || targetEnvelope.isNull()) {
  13. return null;
  14. MathTransform2D mt = coverages.get(0).getGridGeometry().getCRSToGrid2D();
  15. Rectangle rasterSpaceEnvelope;
  16. rasterSpaceEnvelope = CRS.transform(mt, targetEnvelope).toRectangle2D().getBounds();
  17. GridEnvelope2D gridRange = new GridEnvelope2D(rasterSpaceEnvelope);
  18. GridGeometry2D gridGeometry = new GridGeometry2D(gridRange, targetEnvelope);

代码示例来源:origin: geotools/geotools

  1. CoordinateReferenceSystem nativeCrs = CRS.decode("EPSG:26915", true);
  2. GridCoverage2D coverage =
  3. CoverageFactoryFinder.getGridCoverageFactory(null)
  4. "test",
  5. bi,
  6. new ReferencedEnvelope(
  7. baseX,
  8. baseX + bi.getWidth(),
  9. MathTransform r2m = coverage.getGridGeometry().getGridToCRS();
  10. Envelope env = new Envelope(25, 75, 25, 75);
  11. ReferencedEnvelope read26915 = new ReferencedEnvelope(JTS.transform(env, r2m), nativeCrs);
  12. CoordinateReferenceSystem mapCRS = CRS.decode("EPSG:3857", true);
  13. ReferencedEnvelope read3857 = read26915.transform(mapCRS, true);
  14. Layer layer =
  15. new GridReaderLayer(
  16. new GeoTiffReader(testFile), sb.createStyle(sb.createRasterSymbolizer()));
  17. MapContent mc = new MapContent();
  18. mc.getViewport().setBounds(read3857);

代码示例来源:origin: opentripplanner/OpenTripPlanner

  1. @Override
  2. public void createIndividuals() {
  3. try {
  4. coverageCRS = CRS.decode(crsCode, true);
  5. } catch (Exception e) {
  6. LOG.error("error decoding coordinate reference system code.", e);
  7. return;
  8. }
  9. if (boundsFromGraph) {
  10. // autowire graph service or pass in
  11. }
  12. gridEnvelope = new GridEnvelope2D(0, 0, cols, rows);
  13. refEnvelope = new ReferencedEnvelope(left, right, bottom, top, coverageCRS);
  14. gridGeometry = new GridGeometry2D(gridEnvelope, refEnvelope);
  15. super.createIndividuals0();
  16. }

代码示例来源:origin: geotools/geotools

  1. coverageGeographicCRS2D =
  2. coverageGeographicBBox != null
  3. ? coverageGeographicBBox.getCoordinateReferenceSystem()
  4. : null;
  5. coverageCRS2D = CRS.getHorizontalCRS(coverageCRS);
  6. assert coverageCRS2D.getCoordinateSystem().getDimension() == 2;
  7. if (coverageCRS.getCoordinateSystem().getDimension() != 2) {
  8. final MathTransform transform = CRS.findMathTransform(coverageCRS, coverageCRS2D);
  9. final GeneralEnvelope bbox = CRS.transform(transform, coverageEnvelope);
  10. coverageBBox = ReferencedEnvelope.create(bbox, coverageCRS2D);
  11. } else {
  12. ReferencedEnvelope.create(
  13. coverageEnvelope, coverageEnvelope.getCoordinateReferenceSystem());

相关文章