1

我正在开发一个应用程序,其中实体位于地球上的位置。我想要一组数据,我可以从中确定一个点包含在哪些区域中。

区域可能是以下类型:

  • 大陆
  • 国家
  • 非军事区
  • 沙漠
  • 冰架

……等等。

我设想将每个区域表示为一个多边形。对于任何给定的点,我会测试它是否包含在每个多边形中。非常欢迎替代想法。

我也希望找到包含部分或全部这些边界的公共领域数据集。

其中一些多边形将非常详细(可能比我需要的更详细),因此我需要有效执行这些计算的技巧。我期望简化 2D 多边形的方法也会很有用。这类事情的最佳实践是什么?

任何人都可以推荐这些数据的任何好的资源、任何特定的编程方法或现有的软件库来做这种事情吗?

编辑

我应该指出,区域的数据集将是相当静态的,因此如果可以提高性能,预计算是一个不错的选择。

4

2 回答 2

1

如果您在飞机上,常见的算法是从您的点绘制一条随机直线,并检查与给定多边形的交点数量。如果它是奇数,你在里面,如果它是偶数,你在外面。您必须注意顶点和数值不准确。

现在,你在一个球体上。您可以将其投影在平面上(您使用的实际投影可能取决于多边形)并执行上述操作。

于 2010-09-03T14:30:03.403 回答
1

一个伟大的资源是自然地球

Natural Earth 是一个公共领域的地图数据集,可提供 1:10m、1:50m 和 1:110 百万比例尺。Natural Earth 具有紧密集成的矢量和栅格数据,您可以使用制图或 GIS 软件制作各种视觉上令人愉悦、制作精良的地图。

数据以 ESRI Shapefile 的形式提供。存在许多 Shapefile 库。

如果在您的编程语言中找不到对 Shapefile 的支持,此PDF详细介绍了文件格式。

于 2010-09-04T12:28:37.847 回答