Я пытаюсь создать новый словарь (intersections
), который содержит пересекающиеся области из многоугольников в словаре с именем zones
.
Я использую combinations
, чтобы найти все возможные уникальные комбинации zones
. Затем я использую .intersects()
Shapely для проверки if
пересечения зон. Если они это сделают, я бы хотел, чтобы их геометрия сохранялась в переменной int_geometry
, а затем сохранялась в словаре (используя: Shapely's .intersection()
).
Я знаю, что есть четыре пересечения, потому что этот код возвращает их:
for a, b in combinations(zones.values(), 2):
a_geom = a['location']
b_geom = b['location']
if a_geom.intersects(b_geom) == True:
print a_geom.intersection(b_geom)
Однако, если я заменю то, что следует после оператора if
, как показано в коде ниже, он начнет перезаписываться сам.
intersections = {}
for a, b in combinations(zones.values(), 2):
a_geom = a['location']
b_geom = b['location']
if a_geom.intersects(b_geom) == True:
int_geometry = a_geom.intersection(b_geom)
int_area = round(int_geometry.area,2)
int_perimeter = round(int_geometry.length,2)
intersections = {
'geometry' : int_geometry,
'attributes' : {
'area' : int_area,
'perimeter' : int_perimeter,
}
}
pprint(intersections)
Есть несколько тем по схожим вопросам, хотя я не могу найти свой ответ. Я знаю, что упускаю из виду что-то очень очевидное, но не могу это обнаружить. Может кто-нибудь объяснить мне, что я делаю не так?