Расчет площадей полигонов в QGIS?

72

Как рассчитать площади шейп-файла площади в квадратных метрах или в акрах (га)?

Я не нашел такой функциональности в векторных инструментах.

desputin
источник
Следующий вопрос: у меня есть слой в State Plane NAD83. Когда я использую эти команды, это создает область в футах. Что если я хочу акры или квадратные мили? Спасибо
C_K
Два предоставленных ответа работают, но они немного медленны для реализации, особенно когда кто-то пытается определить область многих векторных файлов полигонов. Разве нет плагина или другого способа получить площадь многоугольника простым щелчком правой кнопкой мыши на многоугольнике? Предоставленные ответы заканчиваются новым атрибутом поля (то есть областью), но значение не обновляется, если полигон изменяется. Таким образом, во многих случаях нет необходимости отображать область в отдельном атрибуте поля. Если бы область могла быть просто показана в виде числа на небольшом графике, внизу страницы и т. Д., Этого было бы достаточно. Итак, это
Дэвид
2
Используя инструмент идентификации, нажмите на многоугольник. Площадь рассчитывается и отображается в разделе «Производные» в окне идентификации. Вы можете изменить единицы в настройках.
csk

Ответы:

70

Сделайте слой редактируемым, затем используйте калькулятор поля («Слой»> «Открыть таблицу атрибутов»> «Калькулятор поля» / Ctrl + I или щелкните правой кнопкой мыши шейп-файл> «Открыть таблицу атрибутов»> «Калькулятор поля» / «Ctrl + I»). Есть оператор «$ area», который вычислит площадь каждой строки в таблице. Все единицы будут рассчитаны в единицах проекции, поэтому вы, вероятно, захотите проецировать их на проекцию, в которой перед этим используются футы или метры, а не широта / долгота.

Stev_k
источник
6
В текущих версиях QGIS, если ваши данные находятся в Geographic CRS, вы можете использовать функцию transform () для проецирования геометрий в спроецированную систему (предпочтительно равной площади) без необходимости дублировать ваши данные. В калькуляторе поля должно работать что-то вроде этого: площадь ($ geometry, 'EPSG: 4326', 'EPSG: 3763')
Александр Нето
9
@AlexandreNeto: Вы имеете в виду area(transform($geometry, 'EPSG:4326','EPSG:3763'))?
Стюарт Макдональд
@ Smacdonald Да, моя ошибка.
Александр Нето
18

Это также можно сделать с помощью Vector | Geometry Tools | Добавить / экспортировать столбцы геометрии, который создает новый шейп-файл с добавленными столбцами площади и периметра (или длины).

Редактировать: (используя инструмент выше, вы также можете отменить выбор «сохранить как новый файл формы» в V1.8, файл формы теперь только обновляется!)

Использование полевого калькулятора, вероятно, является лучшей идеей, поскольку не требует создания нового шейп-файла.

Simbamangu
источник
Вы не можете изменить атрибуты шейп-файла, не включив сначала редактирование (вычисление площади считается редактированием атрибутов, вы добавляете новый столбец). Имейте в виду, что все единицы будут рассчитаны в единицах проекции (метры по умолчанию), поэтому сначала вам нужно перепроецировать их в проецируемую систему координат.
Хасан Мустафа
4

Я написал сценарий специально для этого. Если вы не хотите перепроектировать свои данные, вы можете вычислить площадь, используя эллипсоидальную математику.

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

Вы найдете скрипт, установленный в Processing Toolbox -> Utils -> Ellipsoidal area

Инструмент должен быть понятен и позволит вам рассчитать площадь в выбранных вами единицах независимо от проекции.

spatialthoughts
источник
Можете ли вы привести лучший пример в виде кода?
Лео Леопольд Герц 준영
0

Если области, на которые вы смотрите, могут измениться, такие как расположение инфраструктуры, зоны охвата, зоны изучения и т. Д., Я считаю полезным просто пометить области вместо добавления их в качестве атрибутов.

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

Таким образом, вам не нужно помнить, чтобы обновлять зоны охвата в таблицах атрибутов так часто.

Гордон Хуан
источник