Obliczanie obszarów wielokątów w QGIS?

72

Jak obliczyć powierzchnię pliku kształtu obszaru w metrach kwadratowych lub akrach (ha)?

Nie znalazłem tej funkcjonalności w narzędziach wektorowych.

desputin
źródło
Dalsze pytanie: Mam warstwę w State Plane NAD83. Kiedy używam tych poleceń, tworzy obszar w stopach. Co jeśli chcę akrów lub mil kwadratowych? Dzięki
C_K 17.04.13
Dwie podane odpowiedzi działają, ale ich implementacja jest nieco powolna, zwłaszcza gdy próbuje się określić obszar wielu plików wektorowych wielokątów. Czy nie ma wtyczki ani innego sposobu uzyskania obszaru wielokąta po prostu klikając wielokąt? Dostarczone odpowiedzi kończą się nowym atrybutem pola (tj. Obszarem), ale wartość nie aktualizuje się, jeśli wielokąt zostanie zmieniony. Tak więc w wielu przypadkach nie ma potrzeby wyświetlania obszaru w oddzielnym atrybucie pola. Jeśli obszar mógłby być pokazany jako liczba na małej tabeli, na dole strony itp., Wystarczy. Tak jest
David,
2
Za pomocą narzędzia do identyfikacji kliknij wielokąt. Obszar jest obliczany i wyświetlany w polu „Pochodna” w oknie identyfikacji. Możesz zmienić jednostki w ustawieniach.
csk

Odpowiedzi:

70

Zmień warstwę na edytowalną, a następnie użyj kalkulatora pola (Warstwa> Otwórz tabelę atrybutów> Kalkulator pola / Ctrl + I lub kliknij plik kształtu prawym przyciskiem myszy> Otwórz tabelę atrybutów> Kalkulator pola / Ctrl + I). Istnieje operator „$ area”, który obliczy powierzchnię każdego wiersza w tabeli. Wszystkie jednostki zostaną obliczone w jednostkach projekcji, więc prawdopodobnie zechcesz rzutować go na projekcję, która wykorzystuje stopy lub metry przed zrobieniem tego, zamiast lat / lon.

Stev_k
źródło
6
W aktualnych wersjach QGIS, jeśli twoje dane znajdują się w Geograficznym CRS, możesz użyć funkcji transform (), aby rzutować geometrie na rzutowany system (najlepiej o równej powierzchni) bez potrzeby duplikowania danych. W kalkulatorze polowym coś takiego powinno działać: obszar (geometria $, „EPSG: 4326”, „EPSG: 3763”)
Alexandre Neto
9
@AlexandreNeto: Masz na myśli area(transform($geometry, 'EPSG:4326','EPSG:3763'))?
Stewart Macdonald,
@smacdonald tak, mój błąd.
Alexandre Neto,
18

Można to również zrobić za pomocą narzędzia Vector | Narzędzia geometrii | Dodaj / eksportuj kolumny geometrii, które tworzą nowy plik kształtu z dodanymi kolumnami obszaru i obwodu (lub długości).

Edycja: (przy użyciu powyższego narzędzia można również odznaczyć opcję „zapisz jako nowy plik kształtu” w wersji 1.8, plik kształtu jest teraz tylko aktualizowany!)

Korzystanie z kalkulatora pola jest prawdopodobnie lepszym pomysłem, ponieważ nie wymaga utworzenia nowego pliku kształtu.

Simbamangu
źródło
Nie można zmienić atrybutów pliku kształtu bez uprzedniego włączenia edycji (obliczanie obszaru liczy się jako edycja atrybutów, dodajesz nową kolumnę). Należy pamiętać, że wszystkie jednostki zostaną obliczone w jednostkach projekcji (domyślnie metry bu), więc najpierw należy ponownie rzutować na rzutowany układ współrzędnych.
Hasan Mustafa
4

Napisałem skrypt specjalnie do tego. Jeśli nie chcesz ponownie rzutować swoich danych, możesz obliczyć obszar za pomocą matematyki elipsoidalnej.

Processing Toolbox -> Tools -> Get scripts from on-line scripts collection -> Ellipsoidal Area

Znajdziesz skrypt zainstalowany w Processing Toolbox -> Utils -> Ellipsoidal area

Narzędzie powinno być zrozumiałe i pozwoli ci obliczyć powierzchnię w wybranych jednostkach, niezależnie od projekcji.

myśli przestrzenne
źródło
Czy możesz podać lepszy przykład jako kod?
Léo Léopold Hertz
0

Jeśli obszary, na które patrzysz, mogą ulec zmianie, takie jak układy infrastruktury, obszary zlewni, obszary badań itp., Uważam, że warto po prostu oznaczyć te obszary, zamiast dodawać je jako atrybuty.

Label-> round($area/10000,2)||' ha'

W ten sposób nie musisz pamiętać o częstej aktualizacji obszarów zlewni w tabelach atrybutów.

Gordon Huang
źródło