Используя Фиона, я пытаюсь растворить слой с сотнями, иногда тысячами геометрий, основанных на поле растворения. Таким образом, геометрии с одинаковым значением поля растворения будут иметь унарную функцию объединения, чтобы сохранить геометрию одинаковой, но выглядеть как одна запись в слое.
У входа есть геом с типом 'MultiPolygon'. Geom выходных данных устанавливается как geom входных данных, поэтому все еще «MultiPolygon». Я думаю, что проблема заключается в том, что когда объединение выполнено, оно превращает многогранную геометрию в единую многоугольную геометрию, следовательно, при записи ее в выходной файл выдает код ошибки:
fiona.errors.GeometryTypeValidationError: Тип геометрии записи не соответствует типу геометрии схемы коллекции: 'Polygon'! = U'MultiPolygon '
Я не уверен, как изменить геометрию вывода на 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 '