- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在学习 https://docs.djangoproject.com/en/1.8/ref/contrib/gis/tutorial/#importing-spatial-data 上的教程用于在我的机器上设置 GeoDjango。但似乎那里有一些问题。通过运行 load.run()
使用 LayerMapping 导入数据时,出现以下错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/ubuntu/src/django/world/load.py", line 23, in run
lm = LayerMapping(WorldBorder, world_shp, world_mapping, transform=False, encoding='iso-8859-1')
File "/home/ubuntu/Envs/vir-env/local/lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py", line 105, in __init__
self.check_layer()
File "/home/ubuntu/Envs/vir-env/local/lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py", line 178, in check_layer
ogr_field_types = self.layer.field_types
File "/home/ubuntu/Envs/vir-env/local/lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py", line 153, in field_types
for i in range(self.num_fields)]
KeyError: 12
然后我发现,.shp
文件中没有'MULTIPOLYGON'字段:
>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource('world/data/TM_WORLD_BORDERS-0.3.shp')
>>> layer = ds[0]
>>> layer.fields
[u'FIPS', u'ISO2', u'ISO3', u'UN', u'NAME', u'AREA', u'POP2005', u'REGION', u'SUBREGION', u'LON', u'LAT']
但它存在于 WorldBorder
模型中,类型为 MultiPolygonField
。因此,在 world_mapping 文件中,'mpoly': 'MULTIPOLYGON'
映射的导入肯定会失败。还有其他人遇到过这个问题吗?我希望如此,因为我已逐步按照教程进行操作。但它没有说任何关于这样的问题。如果我通过删除 mpoly
映射来加载数据,会有什么影响?
这是我的 load.py 文件:
1 import os
2 from django.contrib.gis.utils import LayerMapping
3 from models import WorldBorder
4
5 world_mapping = {
6 'fips' : 'FIPS',
7 'iso2' : 'ISO2',
8 'iso3' : 'ISO3',
9 'un' : 'UN',
10 'name' : 'NAME',
11 'area' : 'AREA',
12 'pop2005' : 'POP2005',
13 'region' : 'REGION',
14 'subregion' : 'SUBREGION',
15 'lon' : 'LON',
16 'lat' : 'LAT',
17 'mpoly' : 'MULTIPOLYGON',
18 }
19
20 world_shp = os.path.abspath(os.path.join(os.path.dirname(__file__), 'data/TM_WORLD_BORDERS-0.3.shp'))
21
22 def run(verbose=True):
23 lm = LayerMapping(WorldBorder, world_shp, world_mapping, transform=False, encoding='iso-8859-1')
24
25 lm.save(strict=True, verbose=verbose)
只是一个更新:通过堆栈跟踪查看源代码后,我发现我无法访问 layer
模块的 field_types
属性。因此,在 python shell 中,当我访问该属性时,我得到了同样的错误:
>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource(wshp)
>>> layer = ds[0]
>>> layer.fields
[u'FIPS', u'ISO2', u'ISO3', u'UN', u'NAME', u'AREA', u'POP2005', u'REGION', u'SUBREGION', u'LON', u'LAT']
>>> layer.field_types
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/ubuntu/Envs/rj-venv/local/lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py", line 153, in field_types
for i in range(self.num_fields)]
KeyError: 12
现在,这很奇怪,因为现在我还从 WorldBorder
模型中删除了 mpoly
字段。
更新 2:
在深入研究源代码后,我发现,在我的 gdal 版本中,OGDFieldTypes
可能没有 key 12,如此处的源代码所示:https://github.com/django/django/blob/master/django/contrib/gis/gdal/field.py .但它说键 12 和 13 将可用于 GDAL 2
,这就是我安装的。现在似乎真的是图书馆之间有些冲突。
我已经安装了以下库:
并且 PostGIS 版本 2.1.5 安装在 Amazon RDS 实例中。
最佳答案
这里的问题是 version 1.8.2 Django(撰写本文时的最新版本)不支持 GDAL 2.0.0 字段类型。此问题的修复在 Django 主代码分支中 - 但尚未在发布版本中。
在撰写本文时,您有两个选择 - 从 Github 上的最新源代码构建 Django(即升级),或者降级 GDAL 以便 native 代码 called by this line无法将值 12
作为字段类型返回。
因为 GDAL 2.0 can return 12
as a field type , 查找 this dictionary使用 Django 1.8.2 代码时出现 KeyError
失败。 On master , dict
包含 GDAL 2.0 的正确字段 - 由 this commit 修复(撰写本文时仅 9 天大!)。
为了完整起见 - 这个故障的诊断是在 SOPython 聊天室中的讨论之后进行的 - 一个到书签对话的链接 is here
注意来自聊天 如果您安装了多个 GDAL 版本,您可能必须在 django 设置文件中添加 GDAL_LIBRARY_PATH
以指向正确版本的 libgdal.so
(或者我猜相应的 .dll
如果你在 Windows 上)
关于python - 在 GeoDjango 中导入空间数据时出错 - mpoly 字段的 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096405/
运行 Tomcat 失败并出现 java.lang.OutOfMemoryError - 与缺少 PermGen 空间相关的错误。 我最近将 Tomcat 更改为以自己的用户(而非 root)运行。
我们有一个表,其中包含数百万行,其中包含 PostGIS 几何图形。我们要执行的查询是:落在边界几何内的最新条目是什么?这个查询的问题是我们经常会有大量的项目匹配边界框(半径大约为 5 公里),然后
我有一个Elasticsearch设置,它将允许用户搜索通配符作为索引。 array:3 [ "index" => "users" "type" => "user" "body" => arra
我创建了一个表,其中每行包含两个按钮,并且两个按钮连接在一起,我想将两个按钮分开。我用过 不起作用,css 也是,这是他们的另一种方式。 我有另一个问题,因为我不想在表格边框内显示操作按钮,而是在靠近
我试图在 jQuery Mobile 中的两个按钮之间留出空白。现实中的布局是这样的: Button 1 Button 2 (Hidden w/ display: none)
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
您好,我对图表应用程序还很陌生。现在我为我的应用程序创建了条形图。当我运行 create bar chart as separate project 时,输出如下所示。 然后当我将条形图与我的应用程序
我在使用 H2 和 GeoDB(内存中,junit)时遇到问题。 另外,使用 Hibernate 5(每个包的最新版本,包括 hibernate-spatial)和 Spring 4。 通过 id 实
我想画一张澳大利亚的 map ,并将每个城市表示为一个点。 然后突出显示人口众多(> 1M)的城市 library(sp) library(maps) data(canada.cities) head
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 6年前关闭。 Improve this
如何保持.txt文件中存在的空格?在.txt文件中,它表示: text :text text1 :text1 text23 :text2 text345 :text3 如果我写这段
以下哪个键最大? 选项 1:16 个数字 [0,9] 选项 2:30 个元音 选项 3:字母表中的 16 个字母 选项 4:32 位 有人可以帮助我,告诉我哪一个是正确的答案以及我们如何计算它吗?我知
在 Unity 3d 中使用 Azure 空间 anchor 来实现在 iOS 和 Android 上部署的室内和室外增强现实体验是否有益? 最佳答案 是的,对于 Azure Spatial Anch
我有一个绝对定位的圆形图像。图像只需占据屏幕宽度的 17%,并且距离顶部 5 个像素。 问题是,当我调整图像大小以占据屏幕宽度的 17% 时,它会这样做,但同时容器会变长。图像本身不会拉伸(stret
我在 Ubuntu 14.04 上使用 Cassandra。从文档中,我可以看到运行命令: nodetool snapshot 创建我的 key 空间的快照。 命令的输出是: nodetool sn
Heroku引入了“私有(private)空间”,是否可以将现有应用迁移到私有(private)空间? https://blog.heroku.com/archives/2015/9/10/herok
是否允许在语义记录中使用非绑定(bind)空格 或其他 HTML 编码字符?我遇到的问题是 ; 字符被软件视为记录的结尾。 例如:假设我有一份婚姻记录,其中包含 2 个结婚者的姓氏、结婚年份以及结
我正在研究“智能 parking ”项目,偶然发现了包含我们真正需要的YouTube视频。我们已经实现了第一部分,即从视频源进行实时透视变换,下一步是将其定义为一组矩形 我基本上需要知道他是如何做到的
我有两个类:Engine 和 Trainset(多个单元),这两个类共享其 ID 空间,其中包含名称和系列 id=- . 这是我的Engine类(它是抽象的,因为有引擎的子类型(DieselEngin
如果有人能帮助我,那就太好了。 我正在尝试使用Java的Split命令,使用空格分割字符串,但问题是,字符串可能没有空格,这意味着它将只是一个简单的顺序(而不是“输入2”将是“退出”) Scanner
我是一名优秀的程序员,十分优秀!