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

时间:2015-01-25 05:58:36

标签: 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;
}

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

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

1 个答案:

答案 0 :(得分:6)

您可以使用数据源such as this,您应该可以从中确定地球上所有国家/地区的多边形。南极洲也被添加到该数据集中。这将使你大部分时间都在那里,这取决于你定义为" major"水体。

从那里,您可以使用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;
}

修改

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