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

Printemps des cartes 2024

#1 Sat 23 February 2008 15:08

diophamidou
Participant assidu
Date d'inscription: 18 Jan 2006
Messages: 243

requete sql sur postgres/postgis

Bjr,
Requete sur postgresql / postgis

1) je voudrais récuperer des ilots d'épandages qui se trouvent à 100m d'une rivières pour cela j'ai construit la requête suivante: select codehydro,ilots.nuero,ilots.surface_ha
from rivieres, ilots where intersects(
buffer(rivieres.the_geom,100),ilots.the_geom)

mais seulement voila, la requete a été interommpue et voila le message qui m'a été renvoyé :
NOTICE:  TopologyException: side location conflict (246384,2.27929e+006,2.27929e+006)

ERROR: GEOS intersects() threw an error!
État SQL :XX000
quelqu'un peut il m'expliquer ce qui ne va pas? et comment peut-on gerer ce conflit entre ces 2 points?

2) Ne serait-il pas prudent de faire la requete en 2 temps : cad créer un beffer de 100 m autour des rivieres, et l'enregistrer comme étant  une vue ? Cette vue est elle géométrique sinon comment la rendre géometrique afin de pouvoir faire l'intersect avec la couche ilots

Dernière modification par diophamidou (Sat 23 February 2008 15:16)

Hors ligne

 

#2 Sat 23 February 2008 16:37

vincentp
Participant actif
Lieu: Paris
Date d'inscription: 18 Jul 2006
Messages: 127

Re: requete sql sur postgres/postgis

Bonjour,
Pour ce type de requete, il y a la function ST_DWITHIN de PostGIS, qui a l'avantage d'être optimisée pour utiliser les index. Il faut cependant penser à les créer auparavant.

Code:

ST_DWithin(geometry, geometry, float)
    Returns true if geometries are within the specified distance of one another. Uses indexes if available.

http://postgis.refractions.net/docs/ch06.html#id2551694

Concernant l'erreur de topologie side location, elle est certainement due à des géométries invalides. Tester les géometries avec des requetes du type :

Code:

select * from table where not isvalid(the_geom);

Bon courage,
vincent

Hors ligne

 

#3 Sat 23 February 2008 16:45

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

Re: requete sql sur postgres/postgis

Bonjour,

Je répond uniquement à la partie 2). Créer une vue n'est pas la meilleur solution, car une vue est une requête sauvegardée, à chaque fois que tu utilises la vue, la requête est relancée. Il faut soit créer une "vue matérialisée", soit ajouter un champ buffer de type geometry (polygon), l'ajouter dans la table geometry_column et mettre à jour ce champ avec la requête : UPDATE <table> SET buffer=buffer(the_geom,100);

La réponse de Vincent résoudra cependant votre problème.

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

 

Pied de page des forums

Powered by FluxBB