2010-05-05 77 views
1

我有一个巨大的36.000非重叠polygones(城市边界)shapefile。我想要轻松确定给定经纬度下的多边形。鉴于它必须具有极高的计算效率,最好的方法是什么?如何非常有效地分配经纬度描述的经纬度?

我正在考虑创建一个查找表(tilex,tiley,polygone_id),其中tilex和tiley是缩放级别为21或22的tile标识符。是的,缺少使用tile数字和平面投影的精度是可接受的我的应用程序。

我宁愿不使用postgres的GIS扩展,对于运行2天的程序来生成所有的INSERT语句都没问题。

回答

1

插入语句到什么地方?你在使用不同的空间数据库还是其他数据库?如果您愿意使用python,C或Java,则可以使用shapely,GEOS或JTS来编写一些自定义代码,以便更简单地执行所需操作。

在Python中使用此LIB打开shape文件 http://indiemaps.com/blog/2008/03/easy-shapefile-loading-in-python/

然后匀称 http://gispython.org/shapely/docs/1.0/manual.html#contains 测试遏制

对于Java使用Geotools其中还包括JTS。

+0

JTS是我一直在寻找与它的能力做'点在多边形' – 2010-05-07 20:32:29

+0

重温这么多......经过大量的试验,错误和解决方案,我们结束了与postgres/postgis,允许加载一个shapefile插入数据库并做各种整洁的事情。我们在一台16核心机器上以100%的利用率运行它。 – 2012-04-18 08:24:29

+0

是的 - 这是一个很好的解决方案,让你通过自己编写所有的代码。一定要考虑转向PostGIS 2.0 - 这里有很多改进。 – TheSteve0 2012-04-18 16:23:38

0

听起来像是你想要一个BSP tree。基本上你把这个区域分成更小和更小的多边形,像树一样。

优点是您不需要在以后比较每个多边形的坐标。这使它成为找到正确多边形的非常快速的方法。

0

QGIS/Vector tools有你要找的功能