Python参数中遇到无效类型
如何正确地将形状文件转换为多多边形?尝试将形状文件转换为多多边形时出现以下错误Python参数中遇到无效类型,python,django,Python,Django,如何正确地将形状文件转换为多多边形?尝试将形状文件转换为多多边形时出现以下错误 .401 395951.4, 238087.5 395958.5, 238086.5 395963, 238086.3 395968.2, 238087.3 395973, 238090.7 395980.6, 238094.2 395989.2, 238101 395993.2, 238107.7 395994.1, 238114 395993.8, 238121.3 395992.6, 238131.6 3959
.401 395951.4, 238087.5 395958.5, 238086.5 395963, 238086.3 395968.2, 238087.3 395973, 238090.7 395980.6, 238094.2 395989.2, 238101 395993.2, 238107.7 395994.1, 238114 395993.8, 238121.3 395992.6, 238131.6 395988.6, 238146.9 395978.2, 238184.401 395960.9, 238196.6 395958.4, 238203.1 395956.801, 238214.599 395953.4)))
Traceback (most recent call last):
File "geo.py", line 25, in <module>
Multi = MultiPolygon([pol['geometry'] for pol in fiona.open(file)])
File "/Users/user/Documents/workspace/env/lib/python3.4/site-packages/django/contrib/gis/geos/collections.py", line 38, in __init__
self._check_allowed(init_geoms)
File "/Users/user/Documents/workspace/env/lib/python3.4/site-packages/django/contrib/gis/geos/mutable_list.py", line 261, in _check_allowed
raise TypeError('Invalid type encountered in the arguments.')
file = 'NUTS1_DEC_2008_EW_BFE.shp'
我想你需要对文件进行
.read()
,对吗
Multi = MultiPolygon([pol['geometry'] for pol in fiona.open(file).read()])
我想你需要对文件进行
.read()
,对吗
Multi = MultiPolygon([pol['geometry'] for pol in fiona.open(file).read()])
对象继承自。查看
GeometryCollection.\uu ini\uuuu()
方法您可以看到有一个对self.\u check\u allowed()
方法的调用self.\u-check\u-allowed()
来自和类,即\u-check\u-allowed()
id:
如您所见,上述方法检查每个项是否为以下任何类型的实例:
Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon
您可以在这里的django/django/contrib/gis/geos/collections.py
行中找到它:
也就是说,可能是fiona.open()
没有返回任何有效的允许类型。
我不是GeoDjango专家,但我觉得使用django.contrib.gis.utils.LayerMapping
就可以了。
阅读GeoDjango文档中的教程似乎相当容易:对象继承自。查看
GeometryCollection.\uu ini\uuuu()
方法您可以看到有一个对self.\u check\u allowed()
方法的调用self.\u-check\u-allowed()
来自和类,即\u-check\u-allowed()
id:
如您所见,上述方法检查每个项是否为以下任何类型的实例:
Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon
您可以在这里的django/django/contrib/gis/geos/collections.py
行中找到它:
也就是说,可能是fiona.open()
没有返回任何有效的允许类型。
我不是GeoDjango专家,但我觉得使用django.contrib.gis.utils.LayerMapping
就可以了。
阅读Geogjango文档中的PutoRoA似乎相当简单:我不这么认为,这工作到了终点,然后在菲奥娜中产生了错误:
# Setting the allowed types here since GeometryCollection is defined before
# its subclasses.
GeometryCollection._allowed = (Point, LineString, LinearRing, Polygon,
MultiPoint, MultiLineString, MultiPolygon)