#python #json #geojson
#python #json #geojson
Вопрос:
У меня есть geojson
объект, в котором могут быть объекты типа multi-polygon или polygon. Если он многополигонный, я хочу разбить его на полигоны.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"id": "86aba1ae-80e2-49d4-ab32-c2744a3b4bf4"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[...],
[...]
]
}
}
]
}
Например, выше geojson
следует создать 2 функции, которые работают нормально, но я также хочу создать уникальные id
для каждого из них, с которыми я работаю str(uuid.uuid4())
. Это дает уникальный идентификатор для каждого xfeature
, но когда он добавляется в output
коллекцию, второй всегда переопределяет первый, и идентификаторы дублируются. Я не могу найти причину, по которой это происходит, и как ее решить.
js = open('test.geojson', 'r').read()
gj = json.loads(js)
output = {"type": "FeatureCollection", "features": []}
for feature in gj['features']:
if ((feature['geometry'] is not None)
and (feature['geometry']['type'] == 'MultiPolygon')):
for poly in feature['geometry']['coordinates']:
xfeature = {"type": "Feature", 'properties': feature['properties'],
"geometry": {"type": "Polygon"}}
xfeature['properties']['id'] = str(uuid.uuid4())
xfeature['geometry']['coordinates'] = poly
output['features'].append(xfeature)
else:
output['features'].append(feature)
Ответ №1:
Проблема 'properties': feature['properties']
в строке
xfeature = {"type": "Feature", 'properties': feature['properties'], "geometry": {"type": "Polygon"}}
вы должны его клонировать.
Для этого используйте deepcopy — https://docs.python.org/3/library/copy.html