2013-11-03 73 views
1

我有一個加拿大郵政編碼的shapefile,但我只想加載一小部分數據。我可以加載整個數據文件並使用SQL或Django查詢來修剪數據,但加載過程在我使用的較慢機器上花費大約2個小時。將部分shapefile加載到Postgis/GeoDjango項目中

由於我後面的數據大約是數據集的10%,這不是一個非常有效的過程。

我按照說明在Geodjango tutorial,具體如下代碼:

from django.contrib.gis.utils import LayerMapping 
from geoapp.models import TestGeo 
mapping = {'name' : 'str', # The 'name' model field maps to the 'str' layer field. 
       'poly' : 'POLYGON', # For geometry fields use OGC name. 
       } # The mapping is a dictionary 
lm = LayerMapping(TestGeo, 'test_poly.shp', mapping) 
lm.save(verbose=True) # Save the layermap, imports the data. 

有沒有辦法只只具有特定名稱的進口數據,如上面的例子嗎?

我只限於Linux/OS X命令行,所以無法使用任何GUI工具。

回答

2

感謝這裏的所有人和POSTGIS提供的幫助,特別是對ThomasG77this answer

下面一行的伎倆:

ogr2ogr PostalCodes.shp CANmep.shp -sql "select * from CANmep where substr(postalcode,1,3) in ('M1C', 'M1R')" 

ogr2ogr自帶GDAL。如果你在其他的* nix系統brew install gdal將在OS X上安裝GDAL,下面從源代碼安裝它:

$ wget http://download.osgeo.org/gdal/gdal-1.9.2.tar.gz 
$ tar xzf gdal-1.9.2.tar.gz 
$ cd gdal-1.9.2 
$ ./configure 
$ make 
$ sudo make install 
1

如果所需的郵政編碼在一段時間內不會更改,請嘗試使用QGIS創建所選郵政編碼的shapefile。如果您不熟悉QGIS,那麼值得深入研究。我使用它在上傳之前準備Web應用程序的文件,例如crs轉換,編輯,屬性表,並可能簡化幾何。

gis.stackexchange

theres大量教程和很大的幫助,如果你還沒有這樣做的話,拿這個問題gis.stackexchange。

希望這可以幫助你開始,並隨時索取更多信息。不久前,我對django/geodjango很陌生,並對我收到的所有幫助表示感謝。 Django不是因爲心臟不好。

邁克爾

+0

感謝您的快速反應,geomajor56。不幸的是,我僅限於命令行(Linux/OS X),因此需要堅持Python/C/C++庫等。 當然,我也會試一試gis.stackexchange。 –

+0

沒有GIS gui?無賴。希望你瞭解[gdal/ogr](https://pypi.python.org/pypi/GDAL/1.10.0),[fiona](https://pypi.python.org/pypi/Fiona), [勻稱](https://pypi.python.org/pypi/Shapely) – geomajor56

+0

我已經安裝了GDAL(因爲它是Geodjango/Postgis安裝所必需的)。通過GDAL/Fiona/Shapely可以做到這一點嗎?如果是這樣,你能指出我正確的方向嗎?歡呼 –

相關問題