由于几何形状不同,尝试溶解多边形时使用fiona的代码失败

时间:2019-07-11 20:08:46

标签: python python-2.x ogr fiona

使用fiona,我试图根据溶解场溶解具有数百个(有时是数千个)几何形状的层。因此,具有相同溶解域值的几何将对其执行一元联合函数,以使几何保持相同,但在图层中仅作为一条记录出现。

输入具有类型为“ MultiPolygon”的几何图形。将输出的几何图形设置为输入的几何图形,因此仍为“ MultiPolygon”。我认为问题出在哪里,是在完成并集后,它将多多边形几何转换为单个多边形几何,因此在将其写入输出时会给出以下错误代码:

fiona.errors.GeometryTypeValidationError:记录的几何类型与集合架构的几何类型不匹配:'Polygon'!= u'MultiPolygon'

我不确定如何将输出的geom更改为Polygon,因为由于数据中所有不同的溶解域值,最终输出将是MultiPolygon。

我是新来的,所以我希望我能清楚地解释这个问题。让我知道您是否有任何澄清的问题。

这使用的是Python 2.7.14,MSC v.1500 32位 GDAL / OGR版本202400

使用fiona.open(inGDB,layer ='FISH')作为输入:

meta = input.meta
with fiona.open(outGDB, 'w', layer= 'fish_dissolved', **meta) as output:

    e = sorted(input, key=lambda k: k['properties'][dissolve_field])

    for key, group in itertools.groupby(e, key=lambda x: x['properties'][dissolve_field]):
        properties, geom = zip(*[(feature['properties'], shape(feature['geometry'])) for feature in group])

        output.write({'geometry': mapping(unary_union(geom)), 'properties': properties[0]})

input.close() output.close()

fiona.errors.GeometryTypeValidationError:记录的几何类型与集合架构的几何类型不匹配:'Polygon'!= u'MultiPolygon'

0 个答案:

没有答案