Ich versuche Regionen von Polygonen unter der Bedingung zu schaffen, dass sie berühren. In meinem Beispiel habe ich ein Beispiel-Dataset mit 382 Polygonen, die zusammen gruppiert werden müssen (aber das vollständige Dataset enthält 6355 Polygone). (Ich würde ein Bild zeigen, aber ich habe nicht genug Ruf, um das zu tun ..)Python-Region wächst mit Polygonen Leistung
Ich habe zwar diese rohe Gewalt, aber das dauert natürlich sehr lange und ist nicht sehr optimal.
Ich erfuhr über die Region wächst und dachte, dass das eine mögliche Lösung wäre, aber immer noch die Leistung ist schrecklich. Ich habe dies auf folgende Weise umgesetzt:
def groupBuildings(blds):
# blds is a list with shapely polygons
others = blds
groups = []
while blds != []:
done = []
group = []
first = blds.pop(0)
done.append(first)
group.append(first)
for other in others:
if (other in blds) and first.touches(other):
group.append(other)
blds.remove(other)
return groups
Aber ich denke, das Problem hier ist, dass ich keine nächsten Nachbarn haben, also muss ich noch zweimal jedes Gebäude laufen.
Also meine Frage ist: sind die nächsten Nachbarn essentiell für die Region wächst? Oder gibt es eine andere Möglichkeit, dies effizient zu tun?