Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2011, 18h10   #1
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
Par défaut Requête géographique qui ne renvoie rien

Salut,

Je souhaiterais pouvoir récupérer tous les enregistrements d'une table dont la géométrie est incluse dans une géométrie donnée (bounding box).

Ma table contient un champ de type sdo_geometry.

Voici les différentes requêtes que j'ai essayé pour récupérer des enregistrements :

Code :
1
2
3
4
5
6
7
8
9
SELECT count(*) AS TOUCH FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=TOUCH') = 'TRUE';
SELECT count(*) AS OVERLAPBDYDISJOINT FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=OVERLAPBDYDISJOINT') = 'TRUE';
SELECT count(*) AS OVERLAPBDYINTERSECT FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=OVERLAPBDYINTERSECT') = 'TRUE';
SELECT count(*) AS EQUAL FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=EQUAL') = 'TRUE';
SELECT count(*) AS INSIDE FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=INSIDE') = 'TRUE';
SELECT count(*) AS COVEREDBY FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=COVEREDBY') = 'TRUE';
SELECT count(*) AS CONTAINS FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=CONTAINS') = 'TRUE';
SELECT count(*) AS COVERS FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=COVERS') = 'TRUE';
SELECT count(*) AS ANYINTERACT FROM SCHEMA.TABLE WHERE SDO_RELATE(COL_GEOMETRY, SDO_GEOMETRY('POLYGON((-170 80,170 80,170 -80,-170 -80,-170 80))', 8307),'mask=ANYINTERACT') = 'TRUE';
Les points présents dans la table sont tous contenus dans le polygon mais rien n'est renvoyé.

Est-ce que quelqu'un aurait une solution à ce problème.
Merci d'avance.
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 19h39   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Je ne connais pas du tout ce type de structures.

En revanche, je suis étonné que le premier et le dernier point du polygone soient identiques : t'as essayé de ne pas fermer ton poly (sans remettre le premier point à la fin) ?

Sinon, aucune idée, je laisse ceux qui savent de quoi ils parlent parler à ma place
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 01h31   #3
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
Un polygone géographique est toujours représenté de cette manière. S'il n'y avait pas ce dernier point, cela équivaut à une ligne donc le polygone est faux.
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h12   #4
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Ok.

Vu qu'il s'agit d'un polygone et non d'une ligne, je pensais justement que la jointure entre le dernier et le premier point était implicite, justement pour faire en sorte que ce soit un polygone et non une ligne

Tout dépend de l'interprétation qu'on fait du mot polygone (en GDI, c'est la méthode dont je parle qui est utilisée).

Mais bon, si en SGBD le polygone est forcément fermé, je m'incline
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h06.


 
 
 
 
Partenaires

Hébergement Web