#1 Mon 08 November 2010 19:21
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Calcul de surface avec deux tables spatiales
Bonjour,
Je souhaite calculer lea surface géographique d'un ensemble de parcelle en utilisant une valeur de référence. J'ai un ensemble de parcelle A qui intesect avec un ensemble de parcelle B, pour chaque table ou ensemble de parcelle il y a un champ surface, le champ surface de l'ensemble A contient une valeur. Le but est de déduire la surface de l'ensemble B en le calculant par rapport à la proportion qu'il occupe dans l'ensemble A.
J'ai déjà travaillé sur une formule magique mais je ne suis pas sur du résultat :
Code:
Select Parcellaire_A.Commune, Parcellaire_A.Section, Parcellaire_A.Parcelle, Parcellaire_B.Parcelle, Parcellaire_B.Surface, proportionoverlap(Parcellaire_A.obj, Parcellaire_B.obj) from Parcellaire_A, Parcellaire_B where Parcellaire_A.obj intersects Parcellaire_B.obj
Merci
Hors ligne
#2 Tue 09 November 2010 08:31
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Calcul de surface avec deux tables spatiales
Il me semble que c'est une question qui irait mieux dans le forum MapInfo (je me trompe ?)
Pour davantage de lisibilité du code, je rajouterai quelques espaces.
Code:
Select Parcellaire_A.Commune, Parcellaire_A.Section, Parcellaire_A.Parcelle, Parcellaire_B.Parcelle, Parcellaire_B.Surface, proportionoverlap(Parcellaire_A.obj, Parcellaire_B.obj) from Parcellaire_A, Parcellaire_B where Parcellaire_A.obj intersects Parcellaire_B.obj
Et désolé, je connais mal la fonction proportionoverlap.
Dernière modification par ppluvinet (Tue 09 November 2010 08:31)
Pascal PLUVINET
Hors ligne
#3 Tue 23 November 2010 10:26
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: Calcul de surface avec deux tables spatiales
Bonjour,
J'ai pris un peu de temps pour répondre car j'ai souhaité chercher une solution que je n'ai toujours pas trouvé, donc je relance ce sujet. Pour répondre à ppluvinet, c'est justement mon problème, je souhaite adapter ce type de requête utilisée sous MapInfo à Postgresql/Posgis.
Hors ligne
#4 Tue 23 November 2010 11:02
Re: Calcul de surface avec deux tables spatiales
Bonjour geobrie,
si je comprends bien ta recherche, tu veux renseigner un champ à partir d'une valeur de référence, et au prorata de l'intersection entre deux objets.
Si c'est bien cela, voici un exemple fonctionnel avec la table commune de la bd_topo et une table contenant les perimtres d'inventaire et réglementaires environnementaux.
Je calcule la part de la population communale (valeur fixe popul) potentiellement concernée par la ZPS.
Code:
select a.code_insee, a.popul, round(((area2d(intersection(a.geometrie, b.geometrie))/area2d(a.geometrie))*100)::numeric,2) AS "%_de la commune_en_en_zps", round(((area2d(intersection(a.geometrie, b.geometrie))/area2d(a.geometrie))*popul)::numeric,2) AS popul_concernee FROM ign_bd_topo.commune a, perimetre b WHERE type_perimetre = 'zps'AND st_intersects(a.geometrie, b.geometrie)
[edit]
Si on vaut la population non concernée, on selectionne
Code:
round(((1-area2d(intersection(a.geometrie, b.geometrie))/area2d(a.geometrie))*popul)::numeric,2) AS popul_non_concernee
[/edit]
J'espère que ça t'aidera.
Dernière modification par Mathieu BOSSAERT (Tue 23 November 2010 11:41)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#5 Tue 23 November 2010 11:37
- geobrie
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 120
Re: Calcul de surface avec deux tables spatiales
Bonjour Mathieu,
Merci pour cette réponse, en regardant ta requête, je pense que c'est exactement ce type de requête que je tente de faire fonctionner. Je vais tenter de l'intégrer à mon projet. Affaire à suivre !!! Encore un grand merci pour cette aide précieuse.
Hors ligne