Czy identyfikujesz klastry w danych punktów wektorowych za pomocą QGIS?


34

Mam wektorowy zestaw danych wiejskich punktów danych szerokopasmowych (jak szybko itp.) I chciałbym zbadać, czy istnieją skupiska punktów o podobnych cechach, i wykreślić otaczające je wielokąty.

Na przykład mogę mieć 45 000 punktów w jednym zestawie danych PostGIS rozłożonym na krajobraz. Chcę zidentyfikować klastry, które leżą w odległości x km od siebie i których prędkość jest mniejsza niż y kb / s, oraz stworzyć wypukłe kadłuby dla każdej kwalifikującej się grupy.

Czy istnieje na przykład prosty sposób na zrobienie tego w QGIS?


3
Warto zwrócić uwagę na naturę łączy szerokopasmowych. Duże prędkości wystąpią na obszarach miejskich; konglomeracje przemysłowe; promieniowanie wzdłuż jezdni z CO, modemów i innej infrastruktury światłowodowej / kablowej / DSL; i nadawane z niektórych wież komórkowych (w zależności od definicji „łącza szerokopasmowego”). W ten sposób wysokie prędkości będą się grupować, a niższe prędkości będą przypominały przerwy w klastrach. W szczególności jest mało prawdopodobne, aby wypukłe kadłuby były nawet przyzwoitymi opisami regionów o niskiej prędkości. Dobrze byłoby wiedzieć, jak zamierzasz interpretować wszystkie znalezione „klastry”.
whuber

Dzięki za pomoc. Badam obszary wiejskie, w których architektura przewodowego łącza szerokopasmowego może wywołać bardziej nietypowe sytuacje z powodu rozmieszczenia szaf ulicznych i linii zasilanych bezpośrednio na słupach, a także na przykład położenia geograficznego obszarów. W rezultacie znajdują się klastry, które mogą być użytecznym punktem wyjścia do tworzenia lokalnych rozwiązań i mogą być ważnym krokiem w opracowywaniu strategii. W rzeczywistości można je nawet znaleźć na obszarach miejskich, często ze względu na dziedzictwo przemysłowe lub rzeczy, takie jak linie kolejowe i rzeki, które trudno jest przekroczyć.
Adrian

Odpowiedzi:


15

Połączyłem fragmenty z kilku sugestii i dodałem trochę własnych i znalazłem rozwiązanie, które działa dobrze dla mnie - i wszystko z poziomu QGis!

Najpierw uruchomiłem PostGis SELECT, aby znaleźć punkty, które mają właściwe wspólne atrybuty i leżą w odległości x km od siebie:

WYBIERZ ODLEGŁOŚĆ s1.postcode, s1. thegeom, s1.gid FROM broadband_data AS s1 DOŁĄCZ broadband_data AS s2 ON ST_DWithin (s1.the_geom, s2.the_geom, 1000) GDZIE s1.postcode! = S2.postcode AND s1.fastest_b

(Prawie prosto z bardzo dobrej książki ManGinga w PostGis w akcji , dodając tylko samodzielne dołączenie)

Następnie załadowałem wtyczkę Carson Farmer's ManageR i zaimportowałem warstwę. Odtąd śledziłem sugerowany tutaj proces klastrowania PAM i wyeksportowałem wynik do pliku kształtu, w którym wypukłe kadłuby zostały obliczone w ciągu kilku sekund za pomocą fTools (Carson się porusza!).


Pierwsza edycja PostGIS w akcji jest już wyczerpana. Oto link do drugiej edycji manning.com/books/postgis-in-action-second-edition oraz link do pierwszego rozdziału, który jest bezpłatny manning-content.s3.amazonaws.com/download/a/…, który jest świetnie
nadaje

8

Chociaż nie jest to rozwiązanie QGIS, osobiście wybrałbym analizę eksploracyjną za pomocą SaTScan . Jest szybki, dobrze udokumentowany i szeroko stosowany, więc nie powinieneś mieć problemów z uruchomieniem. 45 000 punktów może jednak wymagać trochę pamięci RAM.

Nie jestem pewien, czy może czytać bezpośrednio z Postgres, ale łatwo importuje z plików dbf i plików tekstowych.

Wyniki analizy można następnie łatwo odczytać z powrotem do Postgres lub QGIS. Możesz zdecydować się na wyszukiwanie skupisk kołowych lub elips (przydatne może być użycie, jeśli w danych występują określone typy osad, na przykład miasta / wioski o długich kształtach w dolinach itp.). Następnie można wygenerować wielokąty lub elipsy lub wyświetlić tylko lokalizacje będące członkami klastrów.

Aby szybko wyświetlić podgląd wyników w Google Earth, możesz również użyć narzędzia SaTScan NAACCR do Google Earth Conversion Tool .

Co ważne - jeśli zdecydujesz się uruchomić symulacje Monte Carlo (wydaje mi się, że min. 99), będziesz mógł także powiedzieć coś o statystycznym znaczeniu twoich klastrów. Interpretacja i uzasadnienie tych klastrów będzie kolejną kwestią, ponieważ była dyskutowana w naukach przestrzennych przynajmniej przez ostatnie dwie dekady (tak myślę;).

Możesz spróbować przeprowadzić analizę czysto przestrzenną w poszukiwaniu klastrów o wysokich, niskich lub hagh i niskich wartościach. Jeśli masz jakieś atrybuty czasowe w swoich danych * codziennych, cotygodniowych agregacjach), myślę, że byłoby naprawdę interesujące uruchomić niektóre modele czasoprzestrzenne.


2
Wygląda dobrze - Dobra odpowiedź
Mapperz

5

SciPy ma pakiet klastrowy (dla Pythona), możesz go użyć w konsoli Pythona, napisać prostą wtyczkę, aby to zrobić lub użyć PL / python wewnątrz Postgis.

http://docs.scipy.org/doc/scipy/reference/cluster.html

Po analizie wystarczy użyć f-narzędzi, aby utworzyć wypukłe kadłuby.


Jestem prostym użytkownikiem z bardzo małym doświadczeniem w Pythonie, ale przyjrzę się - wiem, że muszę się uczyć!
Adrian

czy klastrowanie SciPy uwzględnia relacje przestrzenne między punktami?
radek

1
Po prostu dodajesz jeszcze dwie zmienne towarzyszące dla współrzędnej xiy twojego punktu.
Jose

5

Jest podobny przykład tego, co chcesz zrobić za pomocą R i trawy tutaj . Alternatywnie możesz użyć narzędzi do tworzenia klastrów Scipy'ego zgodnie z sugestią, a następnie wykonać obliczenia wypukłego kadłuba przy użyciu tej metody .


3

Możesz wypróbować wtyczkę Ftools. Vector> Geoprocessing Tools> Convex Hulls.

Istnieje opcja Create convex hulls based on input field, parametr pola wejściowego powinien pochodzić z atrybutów punktów wejściowych.


Dzięki za pomoc. Wypukły bit kadłuba utworzy wielokąty, ale nie identyfikuje, czy klastry istnieją lub gdzie mogą być. Naprawdę chciałbym najpierw znaleźć sposób na skojarzenie punktów o podobnych cechach w odległości x km od siebie. Zgaduję, że musiałbym uruchomić skrypt, który jednoznacznie identyfikuje istnienie klastrów i aktualizuje dodatkowe pole w tabeli postgis dla członków każdego klastra. Na przykład utworzenie triangulacji Delaunaya i odfiltrowanie wszystkich punktów, w których boki trójkątów są dłuższe niż x km, ale nie mam pojęcia, jak to zrobić
Adrian
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.