Pages: 1
- Sujet précédent - QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer - Sujet suivant
#1 Mon 27 June 2022 17:05
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Bonjour,
Je cherche à calculer des surfaces non planes dans des virtual de layer.
Si je compare cette requète:
select LIBELLE,
SUM(st_area(ZONE_URBA.geometry)) as 'surf'
from ZONE_URBA
aux résultats obtenus avec la calculatrice de champs avec $area, j'ai des différences de surfaces
car je ne sais comment prendre en compte le src dans cette requête.
Dans postgis on pourrait écrire st_area(geom::geography)
mais je ne connais pas la correspondance avec le Sqlite utilisé dans les virtual layer.
J'espère être assez clair, merci de vos conseils.
Dernière modification par JeanMich (Mon 27 June 2022 17:07)
Hors ligne
#2 Tue 19 July 2022 16:06
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
.
Dernière modification par JeanMich (Tue 19 July 2022 16:11)
Hors ligne
#3 Tue 19 July 2022 16:08
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
J'ai essayé
select sum(st_area(ZONE_URBA.geometry, true)) as surf
from ZONE_URBA
mais sans succès.
D'après la doc: http://www.gaia-gis.it/gaia-sins/spatia … .0.html#p4
pour utiliser st_area avec use_ellipsoid il faut le module LWGEOM. C'est peut être ca le problème ?
Dernière modification par JeanMich (Tue 19 July 2022 16:12)
Hors ligne
#4 Tue 19 July 2022 16:08
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
.
Dernière modification par JeanMich (Tue 19 July 2022 16:11)
Hors ligne
#5 Tue 13 September 2022 09:55
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Bonjour,
Je cherche toujours la réponse. Je ne sais pas si la question est pas clair, ou si il n'y a pas de réponse...
Hors ligne
#6 Wed 14 September 2022 16:19
- Mathieu Denat
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 5 May 2010
- Messages: 110
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Bonjour,
Sans grande conviction, avez vous essayé:
Code:
select LIBELLE, SUM(st_area(geometry)) as 'surf' from ZONE_URBA
Bonne continuation,
Mathieu
C'est en forgeant qu'on devient forgeron
Hors ligne
#7 Wed 14 September 2022 16:35
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 994
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Ne manque-t-il pas tout simplement un "GROUP BY" ?
Code:
select LIBELLE, SUM(st_area(ZONE_URBA.geometry)) as 'surf' from ZONE_URBA GROUP BY LIBELLE
Sylvain M.
Hors ligne
#8 Wed 14 September 2022 16:38
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 994
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Sinon, si vous travaillez en France métropolitaine, vous pouvez reprojeter vos géométries en Lambert 93 avec cette formule : ST_Transform(ZONE_URBA.geometry, 2154)
Ce qui donnerait donc :
Code:
select LIBELLE, SUM(st_area(ST_Transform(ZONE_URBA.geometry, 2154))) as 'surf_m2' from ZONE_URBA GROUP BY LIBELLE
Sylvain M.
Hors ligne
#9 Wed 14 September 2022 16:43
- Miniopterine
- Participant assidu
- Date d'inscription: 29 Nov 2005
- Messages: 278
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
J'ai essayé
select sum(st_area(ZONE_URBA.geometry, true)) as surf
from ZONE_URBA
mais sans succès.
D'après la doc: http://www.gaia-gis.it/gaia-sins/spatia … .0.html#p4
pour utiliser st_area avec use_ellipsoid il faut le module LWGEOM. C'est peut être ca le problème ?
Ca ressemble à ce pb: https://github.com/qgis/QGIS/issues/41890
Hors ligne
#10 Fri 16 September 2022 11:21
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Bonjour,
Sans grande conviction, avez vous essayé:Code:
select LIBELLE, SUM(st_area(geometry)) as 'surf' from ZONE_URBABonne continuation,
Oui, ca donne la surface cartésienne, donc fausse. Mais merci !
Hors ligne
#11 Fri 16 September 2022 11:25
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
Sinon, si vous travaillez en France métropolitaine, vous pouvez reprojeter vos géométries en Lambert 93 avec cette formule : ST_Transform(ZONE_URBA.geometry, 2154)
Ce qui donnerait donc :Code:
select LIBELLE, SUM(st_area(ST_Transform(ZONE_URBA.geometry, 2154))) as 'surf_m2' from ZONE_URBA GROUP BY LIBELLE
J'ai aussi essayé, mais là on reprojette qlq chose de faux, le résultat n'est pas bon. Merci d'avoir essayé.
Hors ligne
#12 Fri 16 September 2022 11:33
- JeanMich
- Participant occasionnel
- Date d'inscription: 28 Mar 2016
- Messages: 46
Re: QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer
JeanMich a écrit:J'ai essayé
select sum(st_area(ZONE_URBA.geometry, true)) as surf
from ZONE_URBA
mais sans succès.
D'après la doc: http://www.gaia-gis.it/gaia-sins/spatia … .0.html#p4
pour utiliser st_area avec use_ellipsoid il faut le module LWGEOM. C'est peut être ca le problème ?
Ca ressemble à ce pb: https://github.com/qgis/QGIS/issues/41890
j'ai essayé avec:
select LIBELLE,
st_area(geometry),
st_area(geometry,true),
st_area(geometry,false)
from ZONE_URBA
GROUP BY LIBELLE
st_area(geometry) = renvoi un résultat faux
st_area(geometry,true), st_area(geometry,false) = renvoi un NULL que je passe par les virtual layer ou le db manager.
Je ne suis pas sûr de tout comprendre dans les réponses de github. Y a t il une solution ?
Merci à tous ceux qui ont essayé
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3.16: Calcul de surface non cartesienne avec les Virtual Layer - Sujet suivant