有什么方法可以检查是否要处理异常的点/坐标以及下面描述的问题。

我尝试从网格覆盖范围(从栅格文件)创建一个信封,但这似乎不起作用。

    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

09-16 04:38