【问题标题】:Scanning a polygon like geographical area扫描类似于地理区域的多边形
【发布时间】:2010-12-08 02:43:23
【问题描述】:

我有一个多边形形状的地理区域。我想用确定的步骤扫描该区域,比如每步约 25-30 米。我正在使用纬度/经度系统。我所需要的只是一种进行此类扫描的方法。效率是加分项。

另外,如果你能帮我找到一种方法,用上面提到的相同步骤在这个多边形的边界上选取点。

注意:我不关心 100% 准确的结果。

【问题讨论】:

  • 您使用的是特定平台吗?
  • 我将 RoR 与 Google 地图一起使用
  • 对于那些不熟悉 RoR 的人,您已经可以做什么? (你把它当作一个数学问题,而不是一个关于工具细节的问题。)
  • 是的,我正在寻找解决方案。我会想办法把它变成我的工具。
  • 纬度/经度有多少位小数?我需要估计计算中的误差。

标签: math geometry gis geography area


【解决方案1】:

听起来你可以:

a) 为你的形状找出轴对齐的边界矩形。用统一的网格覆盖它,测试网格中的每个点是否在您的形状内部。我敢肯定,像这样的幼稚方法是次优的,但除非你的形状受到约束(它(严格)凸面吗?它有任何孔吗?)那么它可能是最简单和最直接的实现。

b) 你的形状边界中的每个线段都有端点,将每个线段划分为规则间隔是相当简单的。

现在,您已经指定了纬度和经度以及以米为单位的距离。如果边界矩形足够小(这是您的准确性要求的问题,但根据经验,我建议如果您的边界框沿两侧小于 30 弧分,则它足够小)只需向前犁并处理纬度,只要平面坐标,将 30m 转换为(局部)角度测量 - 并记住东西和南北角度测量可能不相等。对于地球上大部分人口稠密的地区来说,这已经足够准确了。

为了获得更高的精度,您将需要使用某种投影,或者将您的地理坐标转换为平面坐标以符合您的网格规范,或者反之亦然(或两者兼而有之,因为您的输入是地理点和平面点的混合)。

【讨论】:

  • 是的,这很有效:首先为了摆脱坐标问题,我使用球体系统保留所有操作。第二件事,我用了一秒的步长。之后我遵循以下逻辑: 1-确定边界框 2-在边界框中生成位置网格 3-对于网格中的每个点,检查是否属于多边形。我在这里找到了一个很酷的算法来检查一个位置是否属于一个多边形:msdn.microsoft.com/en-us/library/cc451895.aspx.
  • 很酷的是整个问题在不到 70 行的代码中就解决了!
猜你喜欢
  • 2012-08-06
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2012-03-02
  • 1970-01-01
  • 2016-12-16
相关资源
最近更新 更多