Hallo, ich versuche in einem MultiLineString der Shapely-lib zwei LineStrigs zu tauschen: from shapely.geometry import MultiLineString from shapely.affinity import * from shapely.geometry.polygon import LinearRing ring_a = LinearRing([(0, 0), (2, 0), (2, 2), (0, 2), (0, 0)]) ring_b = translate(ring_a,1,1) print(ring_a) print(ring_b) print("Multilinestring") m_l_string = MultiLineString([ring_a, ring_b]) print(m_l_string) print(m_l_string[0]) print(m_l_string[1]) print("exchange") m_l_string[0], m_l_string[1] = m_l_string[1], m_l_string[0] print(linestring) Fehlermeldung: m_l_string[0], m_l_string[1] = m_l_string[1], m_l_string[0] TypeError: 'MultiLineString' object does not support item assignment Was mache ich falsch bzw. gibt's hier einen Trick? FlorenzW
> Was mache ich falsch bzw. gibt's hier einen Trick? Fehlermeldung lesen und verstehen: Zuweisung nicht möglich. Also gleich richtig bauen: > m_l_string = MultiLineString([ring_b, ring_a]) NB: ev. verleitet dich die geprintete Darstellung und die indexierte (lese-)Zugriffsmöglichkeit zu glauben es handle sich um eine Liste, das könnte aber auch nur eine (unbeabsichtig unvellständige) "inteface"-Implementation sein. Stehen zum Verändern ev. Andere Methoden zur Verfügung? --> Doku lesen (oder Source, ist ja zum Glück Python :-)
Nix Egsbert schrieb: > Also gleich richtig bauen: >> m_l_string = MultiLineString([ring_b, ring_a]) Geht leider nicht, soll zu Optimierungszwecken getauscht werden, um den Weg zwischen einer Vielzahl von LineStrings, die nacheinander angefahren werden, zu verkürzen. > NB: ev. verleitet dich die geprintete Darstellung und die indexierte > (lese-)Zugriffsmöglichkeit zu glauben es handle sich um eine Liste, das > könnte aber auch nur eine (unbeabsichtig unvellständige) > "inteface"-Implementation sein. Dieser Verdacht drängt sich auf... > Stehen zum Verändern ev. Andere Methoden zur Verfügung? --> Doku lesen > (oder Source, ist ja zum Glück Python :-) In der Doku hab ich nichts gefunden (was ich nur nicht so recht glauben will) Mein work around: In eine normale Python-Liste verwandeln, die Optimierung machen und in einen MultiLineString zurückschreiben.
Work around steht. Zwar nicht schön, aber funktioniert. Das mit dem Quellentext erwies sich als schwierig, da Shapely hauptsächlich die Funktionen der Geos-library durchschleift (und die war mir zu heftig). Danke Nix Egsbert
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.