在WorldWind中查找位置是土地还是水

mai*_*rgs 9 java gis worldwind

我知道在WorldWind Java中你可以找到高程和特定位置,如下所示:

public Double getPositionElevationMeters(Double lat, Double lon) {

    double elevation = getWorldWindCanvas().getModel().getGlobe()
            .getElevation(Angle.fromDegrees(lat), Angle.fromDegrees(lon));

    return elevation;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法弄清楚这个纬度/经度是否实际上是一个主要的水体或土地?我采取了一种"盲目"的方法,只考虑低于0的高度是水,但这显然不是理想的.

我甚至会使用另一个能够提供这些信息的图书馆; 我只需要它离线工作.

Jef*_*xon 6

您可以使用此类数据源,您应该可以从中确定地球上所有国家/地区的多边形.南极洲也被添加到该数据集中.根据你所定义的"主要"水体,这将使你大部分都在那里.

从那里,您可以使用GeoTools导入形状数据并计算给定纬度/经度对中的多边形.如果没有,那么它可能是一个海洋.

以下伪代码说明了逻辑流程:

// pseudocode, not the actual GeoTools API
boolean isWater(Coordinate point) 
{
    ShapeDataStore countryShapes = loadShapeData("world.shp");

    GeoShape shape = countryShapes.findShapeByPoint(point);

    if (shape == null)
        return true // not a country or Antarctica, must be international waters.
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

编辑

请参阅此答案,以获得更详细描述此过程的类似问题的答案.