Mam kilka obiektów funkcji polilinii w Pythonie. Teraz chcę zdobyć wszystkie punkty polilinii.
Na przykład, jeśli polilinia ma punkt początkowy punktu [0,0]
początkowego [5,5]
. Rezultat: [1,1];[2,2];[3,3];[4,4];[5,5]
.
Chcę znaleźć wszystkie liczby całkowite na tej linii, w tym punkty końcowe. W przypadku linii prostej jest to bardzo proste, ale jeśli polilinia ma geometrię typu Krzywa Beizera, Łuk kołowy, Łuk eliptyczny, to jak mogę to zrobić?
EDYTOWAĆ:
Mogę używać tylko tych narzędzi, które są dostępne na wszystkich poziomach licencji ArcGIS. Na przykład ArcGIS Basic.
arcpy
point
features
geometry-conversion
użytkownik
źródło
źródło
Odpowiedzi:
Wiem, że to stare, ale szukałem tego samego, ponieważ nie mam ArcInfo dla narzędzi FeatureVerticesToPoints . Po zastosowaniu powyższego rozwiązania dotyczącego kursora wyszukiwania poszedłem do przodu, aby uprościć kod i odkryłem, że przy użyciu tablic NumPy w module dostępu do danych można stworzyć prosty i bardzo szybki skrypt. Używam tego jako narzędzia skryptowego.
Uwaga: Kluczem jest
explode_to_points
parametr warcpy.da.FeatureClassToNumPyArray
Oto link do lokalizacji repozytorium ArcGIS: Klasa elementu do punktów
źródło
ctrl-k
zastosuj formatowanie kodu (to samo dlab
starego ii
talic). Zgodnie z konwencją unikamy gadatliwych słów, takich jak „cześć”, „dzięki”, „na zdrowie”. Sugeruje się, że są one zawsze obecne i pomagają wzmocnić ideę, że to miejsce różni się od zwykłych forów i wiadomości e-mail. Witamy na pokładzie.Jak zrozumiałem, musisz zwiększyć liczbę wierzchołków dla swoich funkcji polilinii. A także przekształcenie wszystkich segmentów „Krzywa Beizera, Łuk kołowy, Łuk eliptyczny” w kilka segmentów liniowych.
Do tego zadania w ArcGIS można użyć narzędzia Densify (edycja) w ArcToolbox.
Następnie możesz przekonwertować wierzchołki polilinii na obiekty punktowe, jak sugerował Darren Cope i grafika21.
Jeśli wolisz to zrobić w ArcMap, zapoznaj się z tematem Tworzenie nowych punktów wzdłuż tematu pomocy linii .
źródło
Następujące elementy powinny działać na poliliniach i wielokątach:
W przypadku niektórych danych o drogach w Wielkiej Brytanii mam to; zagnieżdżona lista par X, Y dla każdego wierzchołka tworzącego polilinię:
źródło
print pnt.X, pnt.Y
zpart_list.append([pnt.X, pnt.Y])
. I drukujesz to na końcu pętli. W jaki sposób kod może uzyskać wszystkie punkty linii, ale kod ESRI nie?Jak zasugerował Darren Cope, konwersję warstwy na wierzchołki punktów można wykonać za pomocą narzędzia Operacje wierzchołków na punkty .
Oto fragment kodu python:
źródło