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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Wed 26 May 2010 21:34

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

différence entre getArea de GPolygon et ST_Area de postgis ?

bonjour.
je souhaiterais utiliser la fonction ST_Area de postgis mais j'ai l'impression que l'unité utilisée n'est pas correcte (je voudrais des kilomètres²) : avec un polygone très précis de paris, j'obtiens 0.0129023924443382
alors qu'en insérant mon polygone dans un GPolygone (pr l'afficher avec google map api) puis en appelant getArea, j'ai la bonne superficie. j'ai essayé de trouvé le coefficiant multiplicateur à appliquer au résultat retourné par ST_Area mais c'est apparemment plus compliqué que ça car sur un très grand polygone, la proportionnalité n'est plus respecté.
avez vous une idée de la convertion à appliquer à ST_Area ?
merci d'avance!

Hors ligne

 

#2 Thu 27 May 2010 05:49

mbaudier
Participant occasionnel
Date d'inscription: 6 May 2010
Messages: 11

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,

quel est votre projection? (et surtout son unité)

Je suis loin d'être un expert PostGIS, mais j'ai utilisé récemment cette fonction avec la projection ETRS89 / ETRS-LAEA (EPSG 3035) dont l'unité est le mètre.
Je convertissais ensuite en ha en divisant par 10000 (pour des km² cela serait 1000000 ou 10^6).

Peut-être que l'unité que vous utilisez est le degré, d'où ce résultat?

Juste une idée de piste...

Mathieu

Hors ligne

 

#3 Thu 27 May 2010 09:00

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

bonjour.

merci de ta réponse. je ne suis pas expert non plus sur postgis, mais on va s'en sortir wink
j'ai ajouté un polygone avec INSERT INTO polygons_department (id_po_de,   id_de,   polygone) VALUES (154,64,ST_GeomFromText( 'POLYGON((-0.278513523192217 42.9392355563593, ... ))',  -1 ) );

je crois que la projection correspond au second paramètre de ST_GeomFromText (pour moi -1), que faut-il mettre à la place ?
               
merci d'avance

Hors ligne

 

#4 Thu 27 May 2010 09:45

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

toupil a écrit:

bonjour.

merci de ta réponse. je ne suis pas expert non plus sur postgis, mais on va s'en sortir wink
j'ai ajouté un polygone avec INSERT INTO polygons_department (id_po_de,   id_de,   polygone) VALUES (154,64,ST_GeomFromText( 'POLYGON((-0.278513523192217 42.9392355563593, ... ))',  -1 ) );

je crois que la projection correspond au second paramètre de ST_GeomFromText (pour moi -1), que faut-il mettre à la place ?
               
merci d'avance


Bonjour,

Le polygone rentré est visiblement exprimé en latitude, longitude: il faut lui mettre un systeme de reference spatial coherent. (peut etre WGS84, le plus courant des systemes lat/long, dont le SRID (code de projection) est 4326.)

Ca ne suffira pas dans postgis pour calculer une aire en m2 ou km2: il faudra:

soit reprojeter ce polygone dans un systeme metrique (lambert 93 par ex smile )

soit le stocker dans postigs sous forme de GEOGRAPHY (le nouveau type apporté par Pgis 1.5) et non pas GEOMETRY. ce nouveau type "sait" que les données sont relatives a la "sphere" terrestre et calcule les aires et distances convenablement.

L'ambiguité avec google vient du fait qu'il utilise une projection pour ses données (un vilain mercator spherique, métrique) mais qu'il exprime les coordonnées en sortie en lat/lon, en faisant la conversion tout seul. (enfin je crois big_smile)

Nicolas

Hors ligne

 

#5 Thu 27 May 2010 09:46

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

bonjour,

Il faut mettre 4326 à la place de -1 dans ton cas.

st_area renvoie une surface en unité de la projection, donc il ne renverra pas de km²

Il y a peut être plus simple mais tu peux toujours reprojeter en lambert 2 étendue et calculer la surface.

st_area(transform(the_geom,27572))


Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#6 Thu 27 May 2010 10:37

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

merci de vos réponses. j'essaye la réponse de Yves ce soir et je vous tiens au courant.
la solution de GEOGRAPHY ne convient pas dans mon cas car j'utilise postgis 1.4
encore merci smile

Hors ligne

 

#7 Thu 27 May 2010 11:12

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

toupil a écrit:

merci de vos réponses. j'essaye la réponse de Yves ce soir et je vous tiens au courant.
la solution de GEOGRAPHY ne convient pas dans mon cas car j'utilise postgis 1.4
encore merci smile


Faut etre sur du SRID avant de mettre 4326.
Il existe des dizaines de SRS geographiques (lat/long).

D'ou viennent donc ces données ? smile

Hors ligne

 

#8 Thu 27 May 2010 13:15

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

bonjour.
ces données viennent d'un KML représentant les départements de france : http://www.gitesdegaule.fr/KaraMeLise/
est-ce bien le 4326 ?
merci !

Hors ligne

 

#9 Thu 27 May 2010 13:25

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,

Si le fichier suit bien le standard KML il doit être en 4326.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Thu 27 May 2010 19:27

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

je viens d'updater mes polygones avec ça :

UPDATE polygons_department SET polygone = ST_SetSRID(polygone, 4326);

puis je fais ça :

select st_area(polygon) , id_de from polygons_department;

mais j'ai tjrs le même résultat...

Hors ligne

 

#11 Thu 27 May 2010 20:48

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

toupil a écrit:

je viens d'updater mes polygones avec ça :

UPDATE polygons_department SET polygone = ST_SetSRID(polygone, 4326);

puis je fais ça :

select st_area(polygon) , id_de from polygons_department;

mais j'ai tjrs le même résultat...


Bonsoir,

Mettre a jour le SRID des objets geometriques ne suffit pas. Ils sont toujours en lat/lon et postgis calcule toujours l'aire en degres carrés.
Pour calculer une aire en m2, il faut reprojeter les données dans un systeme de projection metrique, comme l'indiquait Yves.
Le systeme de projection choisi doit etre en accord avec la zone geographique des données. Pour la france, vous avez le choix entre Lambert 2 Etendu; SRID 27582, ou mieux, Lambert 93, srid 2154.

quelque chose comme:

select st_area(st_transform(polygone, 27582)) as aire from polygons_departement;

Nicolas

PS: pensez aussi a mettre la table geometry_columns a jour, apres avoir changé le SRID de la colonne polygone.
Cette table doit contenir une entrée décrivant la table polygons_departement.
Certains logiciels se servent de cette table pour lister les données geographiques presentes dans une base postgis.

Hors ligne

 

#12 Thu 27 May 2010 20:56

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

d'accord merci je commence à comprendre smile
lorsque j'effectue ton select, j'ai l'erreur :

ERREUR:  AddToPROJ4SRSCache: Cannot find SRID (27582) in spatial_ref_sys

comment ajouter le srid dans la table ?
merci d'avance

Hors ligne

 

#13 Thu 27 May 2010 21:09

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

hi hi! ca à l'air de fonctionner smile)
pour info, voici ce que j'ai passé pour remplir mes spatial_ref_sys :
psql toupil < /usr/share/postgresql-8.4/contrib/postgis-1.5/spatial_ref_sys.sql

merci à tous! je suis impressionné de ce qu'il est possible de faire avec postgis !!!

Hors ligne

 

#14 Thu 27 May 2010 21:41

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

toupil a écrit:

hi hi! ca à l'air de fonctionner smile)
pour info, voici ce que j'ai passé pour remplir mes spatial_ref_sys :
psql toupil < /usr/share/postgresql-8.4/contrib/postgis-1.5/spatial_ref_sys.sql

merci à tous! je suis impressionné de ce qu'il est possible de faire avec postgis !!!


Cool !
Oui, installer postgis sur une base de données postgresql, ca veut dire principalement lancer deux fichiers: postgis.sql et spatial_ref_sys.sql: Le manuel en francais est disponible ici: http://www.postgis.fr/node/496

Postgis est vraiment un outil extremement puissant pour le stockage et la manipulation d'objets geographiques.

Nicolas

Hors ligne

 

#15 Thu 27 May 2010 21:45

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

toupil a écrit:

hi hi! ca à l'air de fonctionner smile)
pour info, voici ce que j'ai passé pour remplir mes spatial_ref_sys :
psql toupil < /usr/share/postgresql-8.4/contrib/postgis-1.5/spatial_ref_sys.sql

merci à tous! je suis impressionné de ce qu'il est possible de faire avec postgis !!!


Hmm... /contrib/postgis-1.5/spatial_ref_sys.sql ?

Vous avez postgis 1.5 alors, finalement ? ou plusieurs installations ?. Si c'est le cas, il faut mieux installer les bons fichiers SQL sur la version de postgis courante.

Si vous avez 1.5, le nouveau type geography est a essayer, dans votre cas wink

Nico

Hors ligne

 

#16 Thu 27 May 2010 22:30

toupil
Juste Inscrit !
Date d'inscription: 26 May 2010
Messages: 8
Site web

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

merci de vos réponses smile
j'ai en effet la 1.5 (j'ai tellement galéré pour installer postgis sur gentoo que je ne me rappelle même plus quelle version est installé...).

j'essayerai geography pour une prochaine utilisation.

encore merci smile

Hors ligne

 

#17 Mon 08 February 2021 11:42

cg
Juste Inscrit !
Date d'inscription: 8 Feb 2021
Messages: 2

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,

Petite question sur ce vieux post, en lien avec l'utilisation de la fonction st_area dans QGIS.

Après pas mal de recherches, l'utilisation de la fonction st_area, y compris avec l'outil transform, me renvoie toujours la même chose que l'utilisation de l'outil area($geometry) et donc, si j'ai bien compris, la surface "géométrique", sans prise en compte du système de projection et de l'ellipsoïde que je souhaiterais utiliser... ce qui me pose un souci de cohérence avec des surfaces calculées "en dur" en utilisant l'outil $area dans la table attributaire.

Un peu de contexte est sans doute nécessaire !
Jusque là, notre équipe calculait des surfaces "en dur" dans la table attributaire via la fonction $area, sur des entités contenues dans des couches projetées en Lambert 93/EPSG 2154, dans des projets paramétrés dans leurs propriétés pour calculer les surfaces en utilisant l'ellipsoïde GRS 80 (EPSG 7019) avec des m² comme unité.

Je cherche à calculer de manière dynamique ces surfaces grâce à une couche virtuelle.

J'ai essayé différentes syntaxes :
select st_area(COUCHE.geometry) as surf_sig from COUCHE

> Cela me retourne la même surface que l'outil area($geometry) en dur, assez logiquement si j'ai bien compris, la fonction renvoyant aux entités géométriques (et géographiques ?)

select st_area(COUCHE.geometry, true) as surf_sig from COUCHE

> Cela ne me retourne rien dans ma couche virtuelle

select st_area(st_transform(COUCHE.geometry, 2154)) as surf_sig_2154 from COUCHE

> Cela ne me retourne rien dans ma couche virtuelle

J'ai sans doute un problème de syntaxe et/ou de référence au système de référence spatiales mais que je n'arrive pas à identifier.

En vous remerciant pour votre aide ... Claire

Hors ligne

 

#18 Tue 09 February 2021 17:52

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,

Je me greffe a ce sujet pour faire remonter un problème de calcul en apparence simple. J'ai un polygone en 4326 que j'arrive a reprojeter avec Qgis en 2154 pour calculer sa surface. Cependant je n'arrive pas a la même surface dans postgis avec un st_area. Pourtant le système de projection est le même (2154) mais avec des résultats différents...

Hors ligne

 

#19 Tue 09 February 2021 23:32

Sylther
Participant actif
Lieu: Mtp
Date d'inscription: 17 May 2016
Messages: 137

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,
Peut-être que cela est à mettre en rapport avec la différence entre '$area' et 'area' ?
Cf. ici, je cite :

14.3.13.2. $area
Renvoie la surface de l’entité courante. La surface calculée par cette fonction respecte à la fois le paramétrage de l’ellipsoïde du projet et les unités de distance. Par exemple, si un ellipsoïde a été paramétré pour le projet alors la surface sera ellipsoïdale, sinon, elle sera calculée selon un plan.

14.3.13.3. area
Renvoie la surface d’une géométrie polygonale. Les calculs sont toujours planimétriques dans le Système de Coordonnées de Référence (SCR) de la géométrie et les unités de la surface correspondent aux unités du SCR. Cette fonction est différente des calculs effectués par la fonction $area qui réalise des calculs ellipsoïdaux en se basant sur les paramètres d’ellipsoïde du projet et des unités de surface.

Hors ligne

 

#20 Wed 10 February 2021 13:58

cg
Juste Inscrit !
Date d'inscription: 8 Feb 2021
Messages: 2

Re: différence entre getArea de GPolygon et ST_Area de postgis ?

Bonjour,

C'est tout à fait cela ! Et je cherche bien à reproduire les calculs de la fonction $area dans ma couche virtuelle/en sql, sans succès pour l'instant...

Dernière modification par cg (Wed 10 February 2021 13:58)

Hors ligne

 

Pied de page des forums

Powered by FluxBB