Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Sun 11 December 2022 16:50
- pyrenees-refuges
- Juste Inscrit !
- Date d'inscription: 11 Dec 2022
- Messages: 3
ST_Contains avec du Multi Polygon
Bonjour
Je souhaite savoir si un point X,Y appartient a une commune.
J'ai une base de donnée commune de France avec une ligne par commune
Ma requête fonctionne très bien sauf si la commune possède plusieurs polygone.
Etant donné que mon point n'est pas compris dans les deux polygone la fonction me retourne false
Avez vous déjà rencontré ce problème, avez vous une solution ?
Code:
SELECT nom_commune FROM commune WHERE ST_Contains(commune.geom,GeomFromText( 'Point( $x $y)' ))
Merci, Cordialement
Hors ligne
#2 Mon 12 December 2022 09:47
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: ST_Contains avec du Multi Polygon
Bonjour.
Si les communes sont de type polygon simple, peut-être faut-il forcer la main en les transformant en multi-polygon :
Code:
SELECT nom_commune FROM commune WHERE ST_Contains(st_multi(commune.geom),GeomFromText( 'Point( $x $y)' ))
A tester !
Bonne journée.
JP
Hors ligne
#3 Mon 12 December 2022 18:28
- pyrenees-refuges
- Juste Inscrit !
- Date d'inscription: 11 Dec 2022
- Messages: 3
Re: ST_Contains avec du Multi Polygon
Bonjour
Désolé, je n'ai pas précisé : je suis sous MySQL 5.7, cette fonction n'existe pas
Une autre idée ?
Hors ligne
#4 Mon 12 December 2022 22:38
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 431
Re: ST_Contains avec du Multi Polygon
As-tu essayé avec st_intersects() plutôt que st_contains() ?
Hors ligne
#5 Tue 13 December 2022 20:29
- pyrenees-refuges
- Juste Inscrit !
- Date d'inscription: 11 Dec 2022
- Messages: 3
Re: ST_Contains avec du Multi Polygon
Je viens de faire le test, sans succès.
Par contre si le point est sur la limite cela fonctionne mais dans mon cas le point peut-être n'importe où sur la commune ...
Une autre idée ? HELP !
Hors ligne
#6 Tue 13 December 2022 21:25
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 431
Re: ST_Contains avec du Multi Polygon
Je ne connais pas MySQL mais en tout cas st_contains et st_intersects fonctionnent bien avec des multipolygones dans postgres.
Peut-être commencer par vérifier que tes géométries sont correctes (valides) ?
Si la géométrie de ton multipolygone est erronée la fonction peut mal fonctionner.
Hors ligne
#7 Wed 14 December 2022 14:37
- Alban Kraus
- Participant actif
- Lieu: Tulle (19)
- Date d'inscription: 13 Jan 2022
- Messages: 58
Re: ST_Contains avec du Multi Polygon
J'ai une base de donnée commune de France avec une ligne par commune
Ma requête fonctionne très bien sauf si la commune possède plusieurs polygone.
[...] la fonction me retourne false
je suis sous MySQL 5.7
si le point est sur la limite cela fonctionne
Se pourrait-il que votre base de communes soit de type linéaire (avec seulement les contours des communes), ET que MySQL convertisse implicitement les anneaux en polygones ?
Que dit :
Code:
SELECT DISTINCT ST_GeometryType(geom) FROM commune
Si cette hypothèse se vérifie, il faudra alors convertir les données en multipolygones, mais je ne sais pas faire cela en MySQL.
Etant donné que mon point n'est pas compris dans les deux polygone
Normalement, ST_Contains est censé faire un OU...
Hors ligne