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?

Adrian
źródło
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!).

Adrian
źródło
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.

radek
źródło
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.

Pablo
źródło
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 .

Jose
źródło
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.

grzywka
źródło
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