Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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: 3807

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: 3807

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: 3807

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.

SANTANNA a écrit:

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: 3807

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,

SANTANNA a écrit:

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: 3807

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

 

Pied de page des forums

Powered by FluxBB