Jeśli mają dwa punkty, z których chcę utworzyć prosty LineStringobiekt:
from shapely.geometry import Point, LineString
A = Point(0,0)
B = Point(1,1)
Podręcznik Shapely dlaLineString stanów:
Sekwencja
Pointinstancji nie jest poprawnym parametrem konstruktora. ALineStringjest opisany punktami, ale nie składa się z instancji Point.
Więc jeśli mam dwa punkty Ai Bczy istnieje krótszy / lepszy / łatwiejszy sposób tworzenia linii ABniż moje obecne „najlepsze” przypuszczenie ...
AB = LineString(tuple(A.coords) + tuple(B.coords))
... co wydaje się dość skomplikowane. Czy istnieje prostszy sposób?
Aktualizacja
W dzisiejszym wydanym Shapely 1.3.2 powyższe stwierdzenie z instrukcji nie jest już poprawne. Więc od teraz
AB = LineString([A, B])
działa !
shapely.__version__zgadza się) i wklejeniu twojego kodu dosłownie, otrzymuję ValueError z linestring.pyc # 228 na temat „Dane wejściowe[<...Point object at 0x..>, <...Point object at 0x...>]mają niewłaściwy kształt dla LineString”. Czy coś przeoczyłem?