Czy pobierasz punkty początkowe i końcowe dla każdego pliku kształtu w linii w ArcGIS Desktop lub QGIS?

15

Mam plik kształtu wektor (polilinia) i muszę pobrać punkty początkowe i końcowe każdej linii (węzły) i utworzyć plik kształtu z tymi punktami. Następnie muszę dodać do tabeli atrybutów polilinii punkt początkowy i końcowy każdej linii na podstawie identyfikatora punktów.

Jak mogę to zrobić w prosty sposób w ArcGIS Desktop lub QGIS?

użytkownik51651
źródło
2
W ArcGIS, jeśli posiadasz licencję Advanced, możesz użyć narzędzia Data Management Toolbox-> Feature Toolset-> Feature Vertices to Points z opcją Oba końce. Wszystkie atrybuty linii zostają zachowane. Należy jednak dodać pole do oryginalnej klasy elementów linii i obliczyć identyfikator elementu na linii, aby zachować tę wartość w punktach. Jeśli masz na swoich liniach inne unikalne pole wartości, możesz dołączyć i obliczyć FID po uruchomieniu narzędzia. Ostateczna opcja obejmowałaby połączenie przestrzenne z opcją One To Many i usunięcie kopii ze złymi atrybutami.
Richard Fairhurst
Czy to odpowiada na twoje pytanie? „Jak uzyskać współrzędne punktu początkowego i końcowego za pomocą Pythona / arcpy?” gis.stackexchange.com/q/31684/8104
Aaron
Próbowałem podobnego podejścia, ale zgubiłem się po drodze. Spróbuję to powtórzyć. Najlepszym rozwiązaniem będzie utworzenie makra, które wykonuje wszystkie te zadania, aby każdy mógł później wykonać tę samą procedurę. Twoje zdrowie!
user51651,
@RichardFairhurst metoda, która prawdopodobnie powinna być również sugerowana jako odpowiedź. Tak właśnie zrobiłem historycznie
bwp8nt

Odpowiedzi:

8

To jest jedna linijka dla GDAL. To polecenie tworzy plik kształtów z węzłów początkowych z wybranymi atrybutami:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Użyj ST_EndPoint dla punktów końcowych.

użytkownik30184
źródło
Dziękuję bardzo! Prawdopodobnie wykonałem to zadanie, ale szukałem czegoś prostszego (wizualnego), aby inne osoby bez umiejętności programowania mogły wykonać to zadanie.
user51651,
Gdzie piszesz to polecenie?
blue_chip
Do wiersza poleceń. W systemie Linux użyj normalnej powłoki. W systemie Windows użyj okna poleceń, ale upewnij się, że twoje środowisko ma właściwe ścieżki. Powłoka Osgeo4w robi to automatycznie.
user30184,
6

Istnieje wtyczka QGIS „Lokalizuj punkty wzdłuż linii” . Aby uzyskać początek i punkty końcowe, wybierz Dodaj punkty końcowe i użyj Interwału dłuższego niż najdłuższa linia.

EikeMike
źródło
6

Rozwiązanie QGIS: Możliwe jest wyodrębnienie początkowych i końcowych węzłów (współrzędnych) pliku wektora linii, po prostu za pomocą xat i yat w kalkulatorze polowym, z odpowiednimi indeksami 0 (początek) i -1 (koniec).

xat(0)    
yat(0)
xat(-1)
yat(-1)
gonethou
źródło
5

Dla rozwiązania ArcGIS stworzyłem narzędzie geoprzetwarzania, które tworzy punkty na liniach.

Możesz go pobrać i wyświetlić kod tutaj: Utwórz punkty w liniach

Dla typu wybierz opcję PUNKTY START / KOŃCOWE. Spowoduje to utworzenie nowej klasy obiektów punktowych, która zawiera punkty początkowe i końcowe dla każdej polilinii.

Klasa obiektów punktu wyjściowego będzie również miała pole o nazwie LineOID, które rejestruje OID polilinii, z której został utworzony. W ten sposób możesz ponownie dołączyć dane atrybutów.

Oto zrzut ekranu, w jaki sposób ustawić parametry:

wprowadź opis zdjęcia tutaj

ianbroad
źródło
To jest świetne Ian! Pobiorę go, przetestuję i przekażę jak najszybciej informacje zwrotne. Myślę, że to narzędzie przyda się do tego, czego potrzebuję i pomoże lepiej zautomatyzować proces! Dziękuję Ci!
user51651
Cześć Ian, nie wiem dlaczego, ale nie mogę sprawić, by twoje narzędzie działało w ArcGIS 10.0 lub 10.1 ... Dodałem je do
zestawu
@ user51651 Czy pojawia się komunikat o błędzie? Nie będzie działać z wersją 10.0, ale powinien działać z wersją 10.1 i nowszą. Jeśli wejdziesz do menu Geoprocessing, a następnie Wyniki. Czy są tam jakieś wiadomości?
ianbroad
3

do dodania współrzędnych punktów końcowych w tabeli atrybutów za pomocą ArcGIS można użyć kalkulatora pola (nie trzeba tworzyć geometrii). Kliknij nazwę pola, kalkulator pola, a następnie użyj składni Python z pojedynczymi liniami poniżej (przykład ze współrzędną X):

!shape.firstPoint.X!

!shape.lastPoint.X!

zauważ, że wszystko jest w środku !!

radouxju
źródło
To naprawdę dobra odpowiedź, nie zdawałem sobie sprawy, że to możliwe. Migawka w kalkulatorze polowym może pomóc mniej znanym osobom w tym zadaniu. Zakładam, że możesz to zrobić również z wartościami M?
bwp8nt
2

W QGIS użyj narzędzia Wyodrębnij określone wierzchołki . Ustaw indeksy wierzchołków na 0, aby uzyskać punkty początkowe i -1, aby uzyskać punkty końcowe, lub 0, -1, aby uzyskać oba.

Wyciąg QGIS Określone wierzchołki

Zwróć uwagę na opis:

Pierwszy wierzchołek odpowiada indeksowi 0, drugi wierzchołek ma indeks 1, itp. Do znalezienia wierzchołków na końcu geometrii można użyć indeksów ujemnych, np. Indeks -1 odpowiada ostatniemu wierzchołkowi, - 2 odpowiada drugiemu ostatniemu wierzchołkowi itp.

Karol Daniluk
źródło
1

W ArcGIS, jeśli posiadasz licencję Advanced, możesz użyć narzędzia Data Management Toolbox-> Feature Toolset-> Feature Vertices to Points z opcją Oba końce. Wszystkie atrybuty linii zostają zachowane. Należy jednak dodać pole do oryginalnej klasy elementów linii i obliczyć identyfikator elementu na linii, aby zachować tę wartość w punktach. Jeśli masz na swoich liniach inne unikalne pole wartości, możesz dołączyć i obliczyć FID po uruchomieniu narzędzia. Ostateczna opcja obejmowałaby połączenie przestrzenne z opcją One To Many i usunięcie kopii ze złymi atrybutami.

Richard Fairhurst
źródło