Mam dwie warstwy: warstwę punktową określającą właściwości (95 obiektów) i warstwę wielokąta definiującą działki powiązane z właściwościami (211 obiektów). Każdy punkt dotyczy jednego lub więcej wielokątów. Chciałbym stworzyć tabelę odległości każdego punktu do WSZYSTKICH wielokątów powiązanych z tym punktem (najbliższa krawędź lub środek ciężkości wielokąta - albo to zrobi). Obliczanie najbliższej odległości jest stosunkowo łatwe w QGIS i ArcGIS, ale te obliczenia pomijają wszystkie odległe wielokąty, przynajmniej metodami, które stosowałem. Idealnie chciałbym uzyskać wynik
Point_ID | distance to polygon 1 | distance to polygon 2 | distance to polygon 3 | etc.
Wszelkie wskazówki w ArcGIS 10 lub QGIS 2.2+ byłyby najbardziej pomocne.
Odpowiedzi:
Aby to osiągnąć, możesz skorzystać z macierzy odległości w QGIS. Najpierw musisz przekonwertować swoje wielokąty na punkty centroidów za pomocą opcji Wektor > Narzędzia geometrii > Centroidy wielokątów lub za pomocą wersji SAGA centroidów wielokątów. Powodem tego jest to, że funkcja macierzy odległości może analizować tylko między 2 punktowymi warstwami. Ponadto wynik będzie taki:
Dane wyjściowe to plik .csv, dzięki czemu można ręcznie edytować układ za pomocą innego oprogramowania, takiego jak Microsoft Excel.
źródło
Jest to dość proste do osiągnięcia przy użyciu QGIS (myślę, że każda wersja to zrobi) i bardzo prostej instrukcji SQL w menedżerze DB. Ale do tego twoja musi znajdować się w jakiejś przestrzennej bazie danych (Postgis lub spatialite). Ponieważ jest on bardziej dostępny dla większości ludzi, założę się, że używa spatialite, ale instrukcje SQL są takie same dla Postgis.
Odległość od wszystkich punktów do granic wszystkich wielokątów
Odległość do wszystkich punktów do powiązanych granic wielokątów (przy założeniu istnienia wspólnego pola)
Odległość do wszystkich punktów do powiązanych centroidów wielokątów :
Zauważ, że możesz dodać dowolne pole ze swoich warstw do wyniku:
Lub nawet wszystkie pola:
źródło
Narzędzie Generuj w pobliżu tabeli w ArcGIS zrobi to, co chcesz, ale wymaga licencji Advanced i zrobi to dla wszystkich punktów / wielokątów - nie tylko tych powiązanych ze sobą. Oznacza to, że dla każdego z 95 obiektów otrzymasz odległość rankingową dla wszystkich 211 właściwości, czyli 20 045 wierszy w tabeli. Musisz albo odfiltrować wynikową tabelę, albo, jak sugeruje Emil, zautomatyzować zadanie, aby utworzyć selekcje na podstawie powiązania i uruchomić je tylko na tych grupach.
Jeśli chodzi o filtrowanie, tak, wystarczy połączyć (a następnie zapytanie lub wybór definicji). Wynik narzędzia daje IN_FID i NEAR_FID. W zależności od sposobu uruchomienia narzędzia (właściwości w pobliżu punktu lub właściwość w pobliżu punktu) określ, który FID jest który. Następnie dołączysz tabelę punktów i właściwości (obie) do wyniku narzędzia na podstawie odpowiedniego FID.
Zakłada się, że każdy z 211 rekordów właściwości ma atrybut określający, do którego z 95 punktów należą, ponieważ następnym krokiem jest wybranie (lub zdefiniowanie zapytania) wszystkich rekordów w połączonych tabelach, w których dwa pola jednego rekordu powinny match - pole nazwy punktu = pole nazwy punktu powiązane z właściwością. Przypadki, w których nie pasują do siebie, to wielokąty, które nie są powiązane z tym punktem, więc nie obchodzi Cię ich odległość od tego punktu.
źródło