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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 18 April 2016 12:43

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

[POSTGIS] : requête (min et <) avec résultat curieux

Bonjour,

Je possède une couche de triangles qui ont un poids (le poids correspond à la valeur Z du plus petit des 3 sommets). Je cherche à savoir si dans mes triangles, je n'ai pas des objets (points) qui sont inférieurs (Z) à mon poids du triangle.
Ca fonctionne très bien, excepté pour certains cas, pour lesquels je me retrouve avec des points dont le Z est égal à mon poids de triangle.
La question que je me pose est double, pourquoi le strictement inférieur ou (supérieur selon comment on fait la requête) ne fonctionne pas correctement et pourquoi, il ne me remonte que quelques objets alors que vu son fonctionnement dans mes requêtes, il devrait m'en faire remonter beaucoup plus.

Code:

select distinct TR_mini.id_triangle as IDENTIFIANT_TRIANGLE, TR_mini.mindepth as Poids_du_TRIANGLE, SDG_REF.F03 as Depth_sonde, SDG_REF.F02, SDG_REF.F01, SDG_REF.source as SORIND_SONDES, st_asewkt(SDG_REF.geom) as geometry 
from "triangle_mini" TR_mini join "7444_total_30" SDG_REF on st_contains(TR_mini.geometry_tr, SDG_REF.geom)
 where TR_mini.mindepth > SDG_REF.f03

En espérant être clair?

D'avance merci

Dernière modification par Ted (Mon 18 April 2016 14:06)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Mon 18 April 2016 12:57

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

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Bonjour,

Sans un échantillon des données difficile de dire ce qui se passe:

Peut etre un problème de précision avec st_contains ? (un point sur le contour du triangle ne sera pas renvoyé: utiliser st_intersects pour cela)

Essayer peut etre aussi de faire le JOIN avec les deux conditions de jointure: on st_contains(...) AND TR_mini.mindepth > SDG_REF.f03.

Nicolas

Hors ligne

 

#3 Mon 18 April 2016 14:09

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Nicolas,

Je viens de tester tes deux idées, ça me fait la même chose. J'ai ajouté un échantillon de données ( 2 shp, l'un contenant mes triangles, l'autre mes ponctuels).
Pour visualiser  je fais cette requête :

Code:

select distinct TR_mini.id_triangle as IDENTIFIANT_TRIANGLE, TR_mini.mindepth as Poids_du_TRIANGLE, SDG_REF.F03 as Depth_sonde, SDG_REF.F02, SDG_REF.F01, SDG_REF.source as SORIND_SONDES, st_asewkt(SDG_REF.geom) as geometry from "triangle_mini" TR_mini join "7444_total_30" SDG_REF on st_contains(TR_mini.geometry_tr, SDG_REF.geom) where TR_mini.mindepth > SDG_REF.f03

d'avance merci

Hors ligne

 

#4 Mon 18 April 2016 15:49

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

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Je ne suis pas sûr de comprendre votre problème.

La requete renvoie bien des points ayant les conditions demandées.
Quels sont les points qui posent pb ?

Nicolas

Hors ligne

 

#5 Mon 18 April 2016 15:51

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Bonjour.
Est-ce que le fait d'avoir des attributs de type double avec une précision de 15 n'est pas la source de votre problème ?
En arrondissant à 2 ou 3 chiffres après la virgule le résultat ne serait-il pas plus probant ?
Cordialement
JPL

Hors ligne

 

#6 Mon 18 April 2016 16:18

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] : requête (min et <) avec résultat curieux

@Nicolas,

La requête renvoie bien des résultats, mais pourquoi sur certains sommets j'ai une anomalies (voir les triangles Id 592,593,594), je me retrouve avec une sonde en anomalie (valeur 0.7 sur le triangle id 593 avec mindepth à 0.7, les valeurs sont égales et non > ou <), je devrai retrouver aucunes anomalies pour mon cas

@JPL,

C'est ce que je me suis dit, mais j'ai laissé faire la requête "bêtement". Postgis prend-il des valeurs "autres" sans qu'on le voit dans l'interface de la table?
QGIS m'avait quelque-chose de semblable!

Hors ligne

 

#7 Mon 18 April 2016 16:19

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

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Sinon, je vois aussi que les coord ont l'air d'etre en lat/long.
Ca serait mieux de reprojeter dans un système métrique, 2154 ou France nord, pour travailler avec des coordonnées représentant des metres.
Peu d'opérations spatiales de postgis marchent avec des coordonnées sphériques, et il faut travailler avec un type GEOGRAPHY et non GEOMETRY dans ce cas.

nicolas

Hors ligne

 

#8 Mon 18 April 2016 16:45

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

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Il n'y a pas les points correspondant aux triangles en question dans l'échantillon.

Je suis d'accord avec JP, ca sent les erreurs d'arrondis dans les données de points (range de valeurs entre -11.5 et 40.700000000000003) j'imagine que la bonne valeur doit etre 40.7, non ?

Nicolas

Hors ligne

 

#9 Mon 18 April 2016 17:00

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: [POSTGIS] : requête (min et <) avec résultat curieux

Ma réponse était basée sur une simple intuition. J'ai toujours la crainte en travaillant sur des valeurs avec une précision élevée que non seulement les traitements aient tendance à faire un arrondi en "toute transparence", mais aussi que les temps de traitements soient un peu plombés  (mes craintes ne sont peut être pas fondées !). D'autant plus qu'en brossant rapidement vos données, une telle précision ne semble pas nécessaire.
JPL

Hors ligne

 

#10 Mon 18 April 2016 17:06

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] : requête (min et <) avec résultat curieux

A tous les deux,

Je vais faire de nouveaux tests demain.
Je suis obligé de travailler en WGS84. J'ai chargé mes données en shp, et elles ont été automatiquement mises en Geometry et avec les types d'attributs.

merci

Hors ligne

 

#11 Mon 18 April 2016 18:02

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

Re: [POSTGIS] : requête (min et <) avec résultat curieux

On est obligé à rien avec PostgreSQL/PostGIS wink

Vos données sont reprojetables en 2154 sans souci, si tant est qu'elles soient bien en WGS84 (ce que je crois, vu le calage avec la cote):

par ex pour les triangles:

Code:

alter table triangle alter column geom type geometry (polygon, 2154) using st_transform(st_setSRID(st_geometryN(geom, 1), 4326), 2154);

C'est encore mieux de préciser le SRID au chargement des données, ca permet d'utiliser st_transform plus proprement, sans forcer le srid.
Le alter montré fait aussi une extraction de vos Multipolygon, qui ne contiennent en fait que des MPG avec un seul élément.

Nicolas

Hors ligne

 

#12 Tue 19 April 2016 10:55

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] : requête (min et <) avec résultat curieux

merci à tous les 2
le changement de float à numéric m'a corrigé pas mal de problèmes.

cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB