【问题标题】:Handling a coordinate generated outside coverage处理在覆盖范围之外生成的坐标
【发布时间】:2019-08-14 21:31:24
【问题描述】:

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

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

    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)

【问题讨论】:

  • 您能否在if(e1.contains(pos)) 之后包含您的代码?如果您可以包含并指出抛出顶级 PointOutsideCoverageException 的行,这也会很有帮助

标签: java gis repast-simphony


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多