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似乎相当简单:

我不这么认为,这工作到了终点,然后在菲奥娜中产生了错误:在Po.Load中。打开(文件):< /Cord>可能有空行或空字符(我不这么认为),这工作到一个点,然后在结尾产生错误:<菲奥娜中的POL代码>打开(文件):可能有空行或空字符?
# Setting the allowed types here since GeometryCollection is defined before
# its subclasses.
GeometryCollection._allowed = (Point, LineString, LinearRing, Polygon, 
                                MultiPoint, MultiLineString, MultiPolygon)