#1 Fri 05 October 2012 17:27
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Je suis en pleine migration de MapInfo vers Qgis mais je me heurte à un nouveau problème. Sous MapInfo j'avais l'habitude de calculer les surfaces d'une table par apport à une autre table qui contient les polygones de la première table. Ma requête ressemblait à cela :
Code:
Add Column "Table2" (Superficie )From Table1 Set To proportion sum(Surface) Where intersects
Puis-je appliquer ce genre de requête sous Qgis
Merci
Hors ligne
#2 Mon 08 October 2012 08:08
Re: QGIS 1.9 : Calcul de surface géométrique
en gros, tu as deux couches de polygones P1 et P2.
- Il faut des identifiants à ta couche d'agrégation. Par ex. idP1
- calcule la surface de ta couche P1. "Vecteur > Ajouter colonnes de géométrie"
- Pour avoir la surface de P1 qui intersecte les polygones de P2, il faut générer dans un premier temps une couche des intersections spatiales Pint = P1&P2 "Vecteur > Inetrsection"
- Rajoute une colonne géométrique "Vecteur > Ajouter colonnes de géométrie" à Pint
- Puis tu fais une jointure sur les identifiants "Propriétés de P1 > Jointure" sur la base des identifiants
- Puis avec la calc. de champ, tu rajoutes une colonne géométrique à Pint appelée proportion qui contient la valeur S(int)/S(P1)
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Thu 11 October 2012 18:09
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonsoir,
Désolé pour cette réponse tardive due à une absence. Merci baobazz pour cette réponse précise, je vais tenter de mettre tout ça en place pour tester cette solution. Par la suite je vous promet un petit retour de ce test.
Merci bonne soirée
Hors ligne
#4 Sat 13 October 2012 14:02
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
J'ai pu tester cette façon de faire qui fonctionne bien et donne donc le résultat voulu. Maintenant si je travaille sur des tables issuess d'une base de données postgresql, est-ce que je peux adapter ma requête dans PostGIS Manager de QGIS via SQL window ?
Merci
Hors ligne
#5 Wed 24 October 2012 09:32
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Je suis toujours dans l'impasse, est-il possible d'adapter ce type de requête dans PostGIS :
Code:
Add Column "Table2" (Superficie )From Table1 Set To proportion sum(Surface) Where intersects
Merci de votre aide
Hors ligne
#6 Wed 24 October 2012 14:45
- Georgie
- Participant assidu
- Date d'inscription: 28 May 2011
- Messages: 232
Re: QGIS 1.9 : Calcul de surface géométrique
Sous PostGIS, pour calculer les surfaces, c'est l'instruction ST_AREA :
Code:
select ST_AREA(geom) from MaTable
Pour sommer les surface de certains polygones d'une même table, en fonction d'un champ, c'est ça :
Code:
select sum(ST_AREA(geom)) from MaTable group by MonChamp
"geom" peut être plutôt "the_geom" (par défaut), ou encore tout autre nom de champ choisi par la suite.
Je ne connais pas PostGIS Manager, mais dans un premier temps, pour retrouver l'ambiance base de données de MapInfo, il s'agit bien d'utiliser le Triptyque Postgres/PostGIS/QGIS.
PGAdmin est le plus utilisé, je crois, donc plus facile de trouver de l'aide.
Dernière modification par Georgie (Wed 24 October 2012 14:47)
Hors ligne
#7 Thu 18 July 2013 11:55
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Je me permet de relancer ce post assez ancien car après un long moment d'absence je me replonge dans mon développement. Pour cela je tente de mettre en application la réponse de baobazz, je bloque sur l'étape de la jointure que j'arrive à faire mais je ne vois pas son application dans la dernière étape car la calculatrice de champs ne me permet pas de sélectionner S(P1) à moins que ce champs doit être sélectionné dans la table Pint.
Merci pour votre aide
Hors ligne
#8 Thu 18 July 2013 13:10
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Un des posts ci-dessus évoque l'utilisation de postgis dans votre démarche. Essayez dans pgadmin (ou DBManager?) un
Code:
select p1.id, p2.id, st_intersection((p1.geom,p2.geom), st_area(st_intersection(p1.geom,p2.geom)) as surf_int where p1.geom && p2.geom and _st_intersects(p1.geom,p2.geom)
devrait vous donner pour chaque paire qui s'intersecte (p1,p2) la géométrie et la surface de p_int correspondante
Hors ligne
#9 Thu 18 July 2013 13:50
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Merci je vais essayer cette solution et tenter de la comprendre cette requête.
Hors ligne
#10 Thu 18 July 2013 14:17
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 1.9 : Calcul de surface géométrique
Je viens de noter une erreur dans mon code
Code:
select p1.id, p2.id, st_intersection(p1.geom,p2.geom), st_area(st_intersection(p1.geom,p2.geom)) as surf_int from p1, p2 where p1.geom && p2.geom and _st_intersects(p1.geom,p2.geom);
J'avais notamment omis les tables de sélection p1 et p2. Pas top!
Pour explication, (http://postgis.refractions.net/docs/ref … asurements)
st_intersection crée la géométrie d'intersection entre les entités p1 et les entités p2
st_area renvoie la surface de l'objet
les éléments de la condition where permettent de ne récupérer que les endroits où il y a eu superposition (st_intersects). Combiner _st_intersects et && permet de rendre la requête d'intersection plus performante
Dernière modification par SANTANNA (Thu 18 July 2013 14:21)
Hors ligne
#11 Thu 18 July 2013 15:07
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Merci ça marche, maintenant est-il possible de rajouter une colonne avec la proportion d'intersection.
Sous MapInfo il existe par exemple une fonction appelée :
Code:
proportionoverlap(p1.geom, p2.geom)
Merci
Hors ligne
#12 Thu 18 July 2013 16:04
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Je pense avoir trouvé
Code:
select p1.id,p2.id, st_intersection(p1.the_geom,p2.the_geom),(p1.surface*(st_area(st_intersection(p1.the_geom,p2.the_geom)) / st_area(p1.the_geom))) as surf_int from p1,p2 where p1.the_geom && p2.the_geom and _st_intersects(p1.the_geom,p2.the_geom);
Qu'en pensez-vous ?
Hors ligne
#13 Thu 18 July 2013 17:30
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 1.9 : Calcul de surface géométrique
vous souhaitez savoir ce que représente l'intersection au sein de l'entité p1? soit surface de l'intersection/surface de p1? Alors, la syntaxe serait plutôt
Code:
select p1.id,p2.id, st_intersection(p1.the_geom,p2.the_geom), st_area(st_intersection(p1.the_geom,p2.the_geom)) *100 / st_area(p1.the_geom) as surf_int -- (pour l'avoir en pourcentage) from p1,p2 where p1.the_geom && p2.the_geom and _st_intersects(p1.the_geom,p2.the_geom)
dans votre requête, vous multipliez la surface intersectée par la surface de p1 (je suppose que ce sont les valeurs du champ p1.surface) que vous divisez par la surface de p1.
Hors ligne
#14 Fri 19 July 2013 09:59
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Merci pour cette correction, dans les faits je travail avec deux types de surface.
la première est une surface cadastrale, cette donnée est saisie, il s'agit de la surface référence.
La deuxième est une surface calculée, cette donnée va me servir a calculer des taux d’intersection des différentes tables et ainsi calculer la surface en pourcentage d'intersection de la surface cadastrale.
C'est un peu tiré par les cheveux mais je ne vois pas d'autre méthode pour arriver à ce résultat. Mon problème est que généralement il y a une différence significative entre la surface cadastrale et la surface géographique.
Pour mon travail je suis contraint de travailler sur la surface cadastrale.
Merci pour votre aide.
Hors ligne
#15 Fri 19 July 2013 16:25
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Dans le même esprit j'ai tenté cette manipulation mais j’obtiens une erreur :
syntax error at end of input
Code:
UPDATE t1 SET G = (select round( AVG(t2.G)) FROM t2 WHERE t2.the_geom && t1.the_geom and _st_contains(t2.the_geom,t1.the_geom);
Sachant que t1 est une table de polygones et t2 est une table de points
Merci
Hors ligne
#16 Wed 05 February 2014 16:51
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
bonjour,
Je souhaiterai savoir si il est possible dans Gestionnaire BD de QGIS de mettre à jour une table avec cette requête en récupérant "surf_int"
Je souhaiterai donc combiner cette requête SELECT avec une requête UPDATE.
vous souhaitez savoir ce que représente l'intersection au sein de l'entité p1? soit surface de l'intersection/surface de p1? Alors, la syntaxe serait plutôt
Code:
select p1.id,p2.id, st_intersection(p1.the_geom,p2.the_geom), st_area(st_intersection(p1.the_geom,p2.the_geom)) *100 / st_area(p1.the_geom) as surf_int -- (pour l'avoir en pourcentage) from p1,p2 where p1.the_geom && p2.the_geom and _st_intersects(p1.the_geom,p2.the_geom)dans votre requête, vous multipliez la surface intersectée par la surface de p1 (je suppose que ce sont les valeurs du champ p1.surface) que vous divisez par la surface de p1.
Merci
Hors ligne
#17 Fri 05 September 2014 09:09
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
je reviens vers vous sur ce sujet car ce sujet me pose toujours quelques soucis et la méthode que j'utilise manque toujours de pertinence quand aux nombreuses étapes au quelles il faut se plier.
Actuellement pour obtenir un résultat il faut :
1 - Calculer les "surface graphique" de ma couche de saisie, sachant que c'est la "surface saisie" qui nous intéresse (elle est globalement légèrement différente).
2 - Créer une couche d'intersection entre les deux couches vectorielles.
3 - Calculer la surface graphique de cette couche d'intersection.
4 - Calculer le taux de recouvrement entre la couche de saisie et l'intersection
5 - Calculer la surface saisie de chaque polygone d'intersection via le taux de recouvrement.
Je trouve cette méthode relativement lourde, je souhaiterai savoir si il est possible de la simplifier.
Merci
Hors ligne
#18 Wed 08 October 2014 10:10
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Je suis toujours à la recherche d'une solution plus 'rationnelle', auriez-vous une petite idée.
Merci
Hors ligne
#19 Wed 08 October 2014 11:23
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
QGIS propose dans le menu "Traitement" la possibilité de pouvoir créer des modèles d'outils dont l'exécution s'enchaîne.
Ci-après le lien du manuel d'exercice de QGIS sur la question.
C'est peut-être une piste pour automatiser ton process
Hors ligne
#20 Thu 16 October 2014 09:28
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
QGIS propose dans le menu "Traitement" la possibilité de pouvoir créer des modèles d'outils dont l'exécution s'enchaîne.
Ci-après le lien du manuel d'exercice de QGIS sur la question.
C'est peut-être une piste pour automatiser ton process
Merci pour cette piste, je cherche mais pour le moment je suis au point mort.
Hors ligne
#21 Thu 16 October 2014 10:37
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS 1.9 : Calcul de surface géométrique
Salut Geobrie,
Peux-tu stp reformuler ton besoin? En relisant les échanges, je n'arrive plus vraiment à cerner d'où tu pars et ce que tu veux obtenir.
Merci
Hors ligne
#22 Thu 16 October 2014 11:02
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: QGIS 1.9 : Calcul de surface géométrique
Bonjour,
Je possède deux couches, une couche "cadastre" et une couche "unité de gestion". Pour couche "cadastre" j'ai saisie la surface cadastrale donnée sur les matrices, cette surface par définition, est légèrement différente de la surface calculé par le SIG. Mon objectif est de déterminer la surface cadastrale de chaque polygone de la couche "unité de gestion", sachant que les limites des couches ne sont pas systématique superposées.
Pour y parvenir je détermine la surface de recouvrement de chaque polygone de la couche "unité de gestion" par rapport à la couche "cadastre". Ensuite j'utilise se taux de recouvrement pour calculer la surface cadastrale.
Merci
Hors ligne