Calculer des surfaces polygonales dans QGIS?

72

Comment calculer les superficies d'un fichier de formes surfaciques en mètres carrés ou en acres (ha)?

Je n'ai pas trouvé cette fonctionnalité dans les outils vectoriels.

desputin
la source
Question de suivi: j'ai une couche dans le plan d'états NAD83. Lorsque j'utilise ces commandes, la zone est créée en pieds. Et si je veux des acres ou des kilomètres carrés? Merci
C_K
Les deux réponses fournies fonctionnent, mais leur mise en œuvre est un peu lente, surtout lorsque l’on essaie de déterminer l’aire de nombreux fichiers de vecteurs polygones. N'y a-t-il pas un plug-in ou un autre moyen d'obtenir la surface d'un polygone simplement en faisant un clic droit sur le polygone? Les réponses fournies se retrouvent avec un nouvel attribut de champ (c'est-à-dire la surface), mais la valeur ne se met pas à jour si le polygone est modifié. Ainsi, dans de nombreux cas, il n'est pas nécessaire que la zone soit affichée dans un attribut de champ séparé. Si la zone pouvait simplement être indiquée sous forme de nombre dans un petit graphique, au bas de la page, etc., cela serait suffisant. Donc, est le
David
2
À l'aide de l'outil d'identification, cliquez sur un polygone. La surface est calculée et affichée sous "Dérivée" dans la fenêtre d'identification. Vous pouvez modifier les unités dans les paramètres.
csk

Réponses:

70

Rendez le calque modifiable, puis utilisez la calculatrice de champs (Calque> Ouvrir la table attributaire> Calculatrice de champs / Ctrl + I ou cliquez avec le bouton droit de la souris sur le fichier de formes> Ouvrir la table attributaire> Calculatrice de champs / Ctrl + I). Il existe un opérateur "$ area" qui calculera la surface de chaque ligne du tableau. Toutes les unités seront calculées dans les unités de la projection. Par conséquent, vous voudrez probablement la projeter sur une projection utilisant des pieds ou des mètres avant de le faire, plutôt que lat / lon.

Stev_k
la source
6
Dans les versions actuelles de QGIS, si vos données se trouvent dans un système de classification géographique, vous pouvez utiliser la fonction transform () pour projeter les géométries sur un système projeté (de préférence une surface égale) sans qu'il soit nécessaire de dupliquer vos données. Dans la calculatrice de terrain, quelque chose comme ceci devrait fonctionner: surface ($ geometry, 'EPSG: 4326', 'EPSG: 3763')
Alexandre Neto
9
@AlexandreNeto: Vous voulez dire area(transform($geometry, 'EPSG:4326','EPSG:3763'))?
Stewart Macdonald
@ smacdonald oui, c'est mon erreur.
Alexandre Neto
18

Cela peut également être fait avec les colonnes Vector | Geometry Tools | Add / Export, ce qui crée un nouveau fichier de formes avec des colonnes de surface et de périmètre (ou de longueur) ajoutées.

Édition: (à l'aide de l'outil ci-dessus, vous pouvez également désélectionner "enregistrer en tant que nouveau fichier de forme" dans V1.8, le fichier de formes est maintenant uniquement mis à jour!)

L'utilisation de la calculatrice de terrain est probablement une meilleure idée, car elle ne nécessite pas la création d'un nouveau fichier de formes.

Simbamangu
la source
Vous ne pouvez pas modifier les attributs du fichier de formes sans activer d'abord la modification (le calcul de la surface compte pour la modification des attributs, vous ajoutez une nouvelle colonne). Gardez à l'esprit que toutes les unités seront calculées dans les unités de la projection (mètres par défaut), de sorte que vous la reprocheriez d'abord sur un système de coordonnées projeté.
Hasan Mustafa
4

J'ai écrit un script spécialement pour cela. Si vous ne voulez pas reprojeter vos données, vous pouvez calculer la zone en utilisant des calculs ellipsoïdaux.

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

Vous trouverez le script installé dans Processing Toolbox -> Utils -> Ellipsoidal area

L'outil doit être explicite et vous permettre de calculer la surface en unités de votre choix, quelle que soit la projection.

pensées spatiales
la source
Pouvez-vous donner un meilleur exemple sous forme de code?
Léo Léopold Hertz 준영
0

Si les zones que vous examinez sont susceptibles de changer, telles que la configuration des infrastructures, les zones de chalandise, les zones d'étude, etc., je trouve utile de simplement étiqueter les zones au lieu de les ajouter en tant qu'attributs.

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

De cette façon, vous n'avez pas besoin de vous rappeler de mettre à jour les zones de chalandise dans les tables d'attributs aussi souvent.

Gordon Huang
la source