Tworzenie regularnie rozmieszczonych, zdefiniowanych # punktów wewnątrz wielokąta w QGIS

12

Użyłem narzędzia badawczego „Punkty regularne” do wytworzenia określonej liczby punktów w wielokącie, ale tworzy on prostokątną siatkę punktów, a nie tylko w kształcie wielokąta. Ponieważ potrzebuję pewnej liczby punktów w obrębie wielokąta, czy można to zrobić bez prób i błędów?

Np. W tej chwili tylko 8 z 25 punktów, które chcę, znajdują się w wielokącie, ale chcę 25 punktów, więc mógłbym zwiększyć do 50 punktów i zobaczyć, ile z nich pojawi się w wielokącie

wprowadź opis zdjęcia tutaj

coelacanth
źródło
Chcę również utworzyć regularnie odstępy, zdefiniować liczbę punktów w wielokącie w QGIS, czy istnieje do tego jakaś wtyczka? Mógłbym to zrobić z rozszerzeniem Arcgisa o nazwie ET GEOWIZARD (Jednolite punkty w wielokątach), ale muszę to zrobić w QGIS !! Możesz mi pomóc?
Ana María

Odpowiedzi:

3

QGIS odnosi się do granicy warstwy w rzeczywistości obwiednią lub obwiednią geometrii.

Udokumentowałem rozwiązanie, które prawdopodobnie jest najbliższe automatyzacji (brak zgłoszenia błędu / żądania funkcji).

Proces działa w oparciu o stosunek między obszarem dwóch obiektów: geometrią elementu i jego obwiednią).

Sprawdź następujące kroki poniżej:

  1. Wybierz warstwę, na której chcesz pracować.

  2. Wybierz funkcję, nad którą chcesz pracować. Upewnij się, że nic innego nie jest zaznaczone.

  3. Uruchom następujący fragment kodu w konsoli Python.

    layer = qgis.utils.iface.activeLayer()
    features = layer.selectedFeatures()
    feature = features[0]
    geom = feature.geometry()
    env_rect = geom.boundingBox()
    env_geom = QgsGeometry.fromRect(env_rect)
    env_geom.area() / geom.area()
    

    Pamiętaj, aby nacisnąć Enter, ponieważ ostatni wiersz nie powróci automatycznie.

  4. Uruchom Regular Pointsnarzędzie ponownie, ale wprowadź liczbę punktów w polu pomnożoną przez wynik podany przez skrypt.

W poniższej próbce wynik, który otrzymałem z wyjścia, wynosił ~ 2. Poprosiłem o 20 kropek, aby były wyprowadzane przez proces, w którym tak naprawdę chciałem tylko 10. Dostałem 8 w zamian, co jest dość blisko. W zależności od rzeczywistego kształtu, którego używasz, wyniki będą się różnić.

Jeśli masz takie skłonności, możesz zautomatyzować (rekurencyjnie) proces Punktów Regularnych modyfikując zmienne, aż osiągniesz pożądaną liczbę.

Próba

nagytech
źródło
+1 Twoja sugestia jest bliska, ale może się nie udać. To, co chcesz zrobić, to (a) oszacować odstępy, które spowodują, że pożądana liczba punktów spadnie w obrębie wielokąta i (b) iteruje z losowym przesunięciem (pokazanym na zrzucie ekranu).
whuber
Jeśli wykonam losowe przesunięcie, to nie jest to już siatka, prawda? Chcę, aby próbka obejmowała cały obszar wielokąta z określoną liczbą punktów. A może to nie jest to, czego chcę, ponieważ wybranie jednego punktu początkowego i przejście od niego nie jest wystarczająco losowe?
coelacanth
@coelacanth Być może nie ujawniasz wystarczającej ilości informacji o swoim problemie? Jaki byłby następny krok w twojej analizie? Mogą istnieć inne sposoby osiągnięcia twojego celu, oprócz użycia siatki punktów.
nagytech,
Hmmm, jestem nowy w całej dziedzinie GPS / GIS i projektowania ankiet, więc proszę dać mi znać, czy istnieje lepszy sposób na zrobienie czegoś. Chcę ustawić pewną liczbę obszarów próbkowania w obrębie wielokąta (tj. Odcinka lasu) do próbkowania roślinności. Chcę, aby obszary były rozmieszczone w całej witrynie, aby uzyskać reprezentację całej witryny. Chcę użyć tej funkcji do ustawienia lokalizacji tych obszarów próbkowania w granicach. Następnie nawigowałbym do tego punktu za pomocą urządzenia GPS i zbierałbym moje dane.
coelacanth
0

Możesz to łatwo zrobić po prostu przycinając: wygeneruj regularną siatkę punktów tak jak to zrobiłeś, a następnie użyj Wektor> Narzędzia geoprzetwarzania> Klip, wprowadź wygenerowaną siatkę punktów i użyj funkcji jako maski klipu.

Rodrigues
źródło
-1

Uproszczone rozwiązanie sugeruje zrzut ekranu. Możesz wyodrębnić wielokąty na nowe warstwy Vector -> Data Managment Tools -> Split vector layer, zaimportować je, a następnie wybrać warstwę z funkcją (ID), która ma być warstwą wejściową dla próbnika „Regularne punkty”.

Jeśli musisz to zrobić tylko dla garści wielokątów, znalezienie ich i eksportowanie ich osobno może być bardziej wydajne. Po wybraniu kliknij prawym przyciskiem myszy nazwę warstwy i wybierz Save Selection As ..., wybierz plik kształtu, wypełnij resztę, a następnie powtórz jak poprzednio.

EDYCJA: Ponieważ masz już jedną cechę, nie mogę wymyślić nic prostszego, niż użycie gęstszej siatki, ponowne przecięcie jej z wielokątem i wreszcie usunięcie wszystkich punktów zewnętrznych (najłatwiej poprzez tabelę atrybutów, ponieważ można łatwo wyśrodkować i łączna liczba).

lynxlynxlynx
źródło
W pliku kształtu jest już tylko jeden wielokąt.
coelacanth
Och, jakie to wtedy denerwujące (jak fakt, że stworzył 20 zamiast 25 punktów). Proponuję otworzyć żądanie funkcji na hub.qgis.org/projects/quantum-gis/issues - Przypuszczam, że powinno mieć dodatkowe pole wyboru, aby użyć prawdziwej granicy warstwy.
lynxlynxlynx
-2

Zastosuj zapytanie definicji do swoich wielokątów (w 1.8 kliknij warstwę prawym przyciskiem myszy i wybierz Zapytanie). Następnie uruchom narzędzie. Usuń zapytanie.

Jan
źródło
Jak to pomaga? To jest tak samo jak wybór.
Nathan W
Dosyć. Ale działa to teraz w QGIS, podczas gdy wybór nie działa, przynajmniej na moich komputerach.
John