1

我有一个带有加拿大邮政编码的 shapefile,但我只想加载一小部分数据。我可以加载整个数据文件并使用 SQL 或 Django 查询来修剪数据,但在我使用的速度较慢的机器上加载过程大约需要 2 个小时。

由于我实际需要的数据约占数据集的 10%,因此这不是一个非常有效的过程。

我正在按照Geodjango 教程中的说明进行操作,特别是以下代码:

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 工具。

4

2 回答 2

2

感谢这里和 Postgis 上的每个人的帮助,特别是ThomasG77这个答案

以下行起到了作用:

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

ogr2ogr 带有 GDAL。brew install gdal将在 OS X 上安装 GDAL。如果您在另一个 *nix 系统上,以下从源代码安装它:

$ 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
于 2013-11-05T03:13:59.763 回答
1

如果您需要的所需邮政编码在一段时间内不会改变,请尝试使用QGIS创建所选邮政编码的 shapefile 。如果您不熟悉 QGIS,则值得研究。在上传之前,我使用它为 webapp 准备文件,例如 crs 转换、编辑、属性表,并可能简化几何。

在gis.stackexchange上有很多教程和很大的帮助

如果您还没有这样做,请将此问题提交给 gis.stackexchange。

希望这可以帮助您入门,并随时询问更多信息。不久前我是 django/geodjango 的新手,感谢我收到的所有帮助。Django 不适合胆小的人。

迈克尔

于 2013-11-04T14:46:47.290 回答