2012-10-30 110 views
0

我有遍布整个国家的设备,它们将GPS位置报告给我。我想要做的是有一个系统,将这些坐标映射到一个命名区域。将GPS坐标映射到区域

我看到两种方法是:

  • 有一个定义的区域为多边形各种GPS COORDS之间拉伸的数据库。
  • 使用某种形式的web服务可以为我提供信息。

两者都可以。它不一定非常准确,因为我只需要知道所涉及的区域,以便在设备出现问题时知道要拨打哪个区域办事处。

在第一种方法中,您将如何构建包含数据的SQL表?将GPS坐标与其中一个定义区域进行匹配的方法是什么?不需要定义许多区域,而且它们会很大,因此手动输入定义区域的值不会成为问题。

在第二种方法的情况下,有没有人知道一种编程方式将这些信息从网上按需提供? (我可能会在这种情况下使用Perl WWW :: Mechanize)。 “接近Somecity”就足够了。

-

PS:这不是一个“做的工作为我”之类的问题,但更多的是头脑风暴请求。伪代码很好。关于这个问题的一般理论也很好。

+0

您是否了解空间数据库 - SpatiaLite或PostGIS? – Spacedman

回答

0

这个过程被称为反向地理编码,许多服务提供商如谷歌,雅虎和ESRI提供服务,让做这个事情

他们将返回的利益或地址的最近点,但可以保留行政级别您有兴趣

使用,看看哪些服务是与您的预期用途

1

在第一种方法兼容的检查而言,你将如何建立一个包含 的DAT SQL表一个?那么将您的GPS坐标定位到其中一个定义区域的方法是什么?

Asume:一个区域被定义为一个封闭的多边形。
你匹配的GPS通过简单地调用方法多边形内部的点坐标,像

boolean isInside = polygon.contains(latitude, longitude); 

如果你有几个多边形,你可以做一个强力搜索,通过现有的所有多边形。 如果您有许多点和每个(十个)数千个点,则要使用空间网格(如四叉树或k-d树)来减少搜索到相关多边形。

方法。

+0

你将如何定义多边形以及如何调用这些方法?有没有适合这个的Java或Python库? – jb11

+0

我会使用int坐标,因为Point-in-Polygon只是搜索谷歌,以防你可以从C中移植它。 – AlexWien