2010-05-05 29 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有你要找的功能