Zidentyfikuj punkty w pliku kształtu, które nie mają innego punktu w odległości x km za pomocą QGIS

11

To prawdopodobnie naiwne pytanie, ale walczę jako nowy użytkownik QGIS.

Mam bardzo duży plik kształtu (275 000 punktów, ale w razie potrzeby mogę go podzielić na około 10 podregionów).

Chcę zidentyfikować wszystkie punkty, które nie mają innych punktów w promieniu 200 metrów, a następnie zakodować każdy z tych punktów wartością „unikatową” w polu pliku.

Dla wszystkich innych punktów, które są częścią lokalnych klastrów, chcę je zakodować jako „klastrowane”.

Po osiągnięciu tego chcę następnie losowo wybrać tylko jeden dla każdego klastra, aby zachować go w zbiorze danych, odrzucając pozostałe.

Obecnie nie udało mi się osiągnąć kroku 1, więc wszelka pomoc byłaby mile widziana.

Leigh Bettenay
źródło

Odpowiedzi:

0

Możesz także spróbować samodzielnie dołączyć za pomocą wtyczki NNJoin w QGIS.

Dla każdej cechy warstwy wejściowej znajdzie najbliższą cechę (wyłączając się w przypadku samozłączenia) i uwzględni odległość i wszystkie atrybuty najbliższej cechy w wygenerowanym zbiorze danych. Zajmie to trochę czasu dla twojego zestawu danych (próbowałem z zestawem danych punktowych z około 175000 funkcji, a to zajmuje kilka minut ...).

Håvard Tveite
źródło
9

Możesz użyć Vector> Narzędzia analizy> Macierz odległości i połączyć, aby osiągnąć to, o co prosisz.

Użyję QGIS przykładowe dane warstwę portu lotniczego jako przykład. Jest to niewielki zestaw danych, więc nie jestem pewien, jak pójdzie z plikiem kształtu 275000 punktów.

1. Utwórz macierz odległości, używając swojej warstwy jako miejsca docelowego i docelowego.

Nie zapomnij zaznaczyć „Używaj tylko najbliższych (k) punktów docelowych” i ustaw na 1.

wprowadź opis zdjęcia tutaj

2. Otwórz plik CSV z dodaną rozdzielaną warstwą tekstową

Wybierz „Przecinek” jako separator i ustaw definicję geometrii jako brak geometrii

wprowadź opis zdjęcia tutaj

3. Utwórz złączenie w oryginalnej warstwie z nowo utworzoną tabelą

wprowadź opis zdjęcia tutaj

4. Użyj kalkulatora pola, aby wypełnić pole żądanymi wartościami

Dzięki sprzężeniu mamy teraz dostęp do wartości tabeli odległości z tabeli atrybutów lotnisk, dlatego dość łatwo jest utworzyć nowe pole i wypełnić je wartościami „klastrowymi” i „unikalnymi” w zależności od wartości macierzy odległości . z powodu moich przykładowych danych użyłem wartości 1200000 (1200 km), powinieneś dostosować ją do swojego przypadku (200).

wprowadź opis zdjęcia tutaj

Na koniec twoja warstwa powinna mieć nowe pole o nazwie point_type o różnych wartościach, zgodnie z minimalną odległością do najbliższego punktu.

wprowadź opis zdjęcia tutaj

Alexandre Neto
źródło
To wygląda na eleganckie rozwiązanie. Mam jednak jedną komplikację. Wiem, że istnieją pewne punkty, które mają IDENTYCZNE lokalizacje (wynikają z synonimów nazw podczas oryginalnego przechwytywania danych). W jednym przypadku zidentyfikowałem 3 w tym samym punkcie. Myślę, że twoje rozwiązanie zakłada (rozsądnie), że wszystkie punkty są wyjątkowo umiejscowione. Czy jest jakiś oczywisty sposób na sprawdzenie mojego zasięgu, aby najpierw wyeliminować punkty w tej samej lokalizacji?
Leigh Bettenay,
@LeighBettenay Jeśli ta odpowiedź odnosi się do twojego pierwotnego pytania, to myślę, że powinieneś go zaakceptować (zielony ptaszek), aby nagrodzić wysiłek odpowiedzi, i zbadać / postawić swój dodatkowy wymóg jako nowe pytanie. +1 za świetne pierwsze pytanie!
PolyGeo
@PolyGeo Przepraszam, jestem nowy na tym forum i nie znam protokołu. Cieszę się, że „zielony haczyk” jest cudowną odpowiedzią, ale niestety nie wiem jak !!
Leigh Bettenay
Po prostu kliknij szary znacznik pod głosowaniem pytania (w lewym rogu pytania). Dzięki
Alexandre Neto,