gpt4 book ai didi

java - 在 WorldWind 中查找位置是陆地还是水域

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:21:32 27 4
gpt4 key购买 nike

我知道在 WorldWind Java 中,您可以通过以下方式找到海拔高度和特定位置:

public Double getPositionElevationMeters(Double lat, Double lon) {

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

return elevation;
}

有没有办法以编程方式确定该纬度/经度实际上是主要的水域还是陆地?我采取了一种“盲目”的方法,仅将海拔高度小于 0 视为水,但这显然并不理想。

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

最佳答案

您可以使用数据源 such as this从中您应该能够确定地球上所有国家/地区的多边形。南极洲也已添加到该数据集中。根据您对“主要”水域的定义,这将帮助您完成大部分工作。

从那里,您可以使用 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获取更详细地描述此过程的类似问题的答案。

关于java - 在 WorldWind 中查找位置是陆地还是水域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28133701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com