1

有没有办法检查点/坐标是否处理异常和下面描述的问题。

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

    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)
4

1 回答 1

1

我认为您需要在 DirectPosition2d 构造函数中切换 lat,lon 的顺序,使其显示为:

DirectPosition pos = new DirectPosition2D(lon, lat); 

该异常不会从您发布的代码示例中引发,而是稍后在您调用 coverage.evaluate(pos) 时发生,因为该位置实际上是无效的。Geotools 默认需要 (lon,lat) 轴顺序 - 请参阅https://docs.geotools.org/latest/userguide/library/referencing/order.html

于 2019-08-15T15:12:05.500 回答