有什么方法可以检查是否要处理异常的点/坐标以及下面描述的问题。
我尝试从网格覆盖范围(从栅格文件)创建一个信封,但这似乎不起作用。
GridCoverage2D c1 = geography.getCoverage("layer1"); // this is a raster layer
Envelope2D e1 = c1.getEnvelope2D();
DirectPosition pos = new DirectPosition2D(lat, lon);
if(e1.contains(pos))
//point is valid
尽管检查了代码中所示的点位置,但仍收到以下异常:
org.opengis.coverage.PointOutsideCoverageException: Coordinate (42.82, 10.608) is outside coverage.
at org.geotools.coverage.grid.GridCoverage2D.evaluate(GridCoverage2D.java:479)
at org.geotools.coverage.grid.GridCoverage2D.evaluate(GridCoverage2D.java:414)
at org.geotools.coverage.grid.GridCoverage2D.evaluate(GridCoverage2D.java:355)
最佳答案
我认为您需要在DirectPosition2d构造函数中切换lat,lon的顺序,以便其显示为:
DirectPosition pos = new DirectPosition2D(lon, lat);
不会从您发布的代码示例中引发异常,而是稍后在您调用coverage.evaluate(pos)时发生,因为该位置实际上是无效的。 Geotools默认情况下期望轴(纬度,纬度)顺序-请参见https://docs.geotools.org/latest/userguide/library/referencing/order.html