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

GEODATA DAYS 2024

#1 Mon 07 April 2008 11:13

revrard
Juste Inscrit !
Date d'inscription: 7 Apr 2008
Messages: 3

requête spatiale

Bonjour à tous,

Voici la difficulté à surmonter :

Lors de l'exécution d'une requête spatiale basée sur un "Entirely Within", est-il possible de spécifier que nous voulons sélectionner les objets situés entièrement à l'intérieur d'un autre objet appartenant à une autre couche, mais ayant une frontière commune avec celui-ci ? Lors de mes différentes tentatives, les requêtes fonctionnent correctement, excepté pour ces objets qui ont une frontière commune avec les objets de l'autre table.

Hors ligne

 

#2 Mon 07 April 2008 13:02

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: requête spatiale

Bonjour
Within risque d'être trop imprécis (centroide de obj1 dans obj2....vague !)
Entirely Within ne distinguera pas ces objets inclus mais avec une frontière commune
Intersects trouvera les frontières communes (et même les points communs !) mais pas l'inclusion
Il faudra donc passer  par un Intersects et ajouter une condition par "and", par exemple que la surface de recouvrement soit égale à celle du polygone inclus: areaoverlap(obj1,obj2) = area(obj1)

Hors ligne

 

#3 Mon 07 April 2008 17:37

revrard
Juste Inscrit !
Date d'inscription: 7 Apr 2008
Messages: 3

Re: requête spatiale

Rebonjour Maurice, et je vous remercie déjà de votre réponse si prompte.

Cependant, je ne parviens pas à aller au bout de cette requête. Ainsi, selon la syntaxe utilisée :

- soit la requête ne s'exécute pas :

Code:

Select * from uga_wgs, regions07 where uga_wgs.Obj Intersects regions07.Obj and areaoverlap(uga_wgs.Obj,regions07.Obj) = area(uga_wgs.Obj)

- soit la requête s'exécute mais le résultat de la sélection est nul -- ce qui est une ineptie par rapport à la géographie des tables :

Code:

Select * from uga_wgs, regions07 where uga_wgs.Obj Intersects regions07.Obj and areaoverlap(uga_wgs.Obj,regions07.Obj) = (uga_wgs.Superficie) into Selection

Pourriez-vous m'indiquer quelle syntaxe exacte utiliser ?

Merci encore,

Hors ligne

 

#4 Mon 07 April 2008 17:54

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: requête spatiale

Normal que ça ne marche pas: j'ai dit une ânerie !!
Quand c'est inclus, la surface de recouvrement est toujours égale à celle du polygone inclus, frontière commune ou pas sad
Et, à cette heure, je ne vois pas de critère qui permette d'identifier le cas d'une frontière commune ....
La nuit porte conseil... smile

Hors ligne

 

#5 Tue 08 April 2008 07:56

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: requête spatiale

Après réflexion...il n'y a pas de critère pour sélectionner directement les polygones inclus à frontière commune et eux seuls !!
On peut/doit procéder par étapes:
- sélectionner (par entirely within)  les polygones inclus DONT ceux à frontière commune dans table_2 ---> tata
- supprimer (provisoirement ! un "annuler changement" les rétablira ensuite) les polygones qui les contiennent dans table_1
- sélectionner et supprimer les polygones de tata qui n'intersectent pas cette table_1 modifiée ( ou ceux qui les intersectent, puis "inverser sélection")
Resteront dans tata les seuls polygones recherchés...

Hors ligne

 

#6 Tue 08 April 2008 10:35

Gérard parcoli
Participant actif
Date d'inscription: 9 Jan 2007
Messages: 95

Re: requête spatiale

Bonjour,
Essayez le select suivant : 

Code:

Select * 
         from Table_Polygones_dedans, Table_Polygones_contenant 
         where Table_Polygones_dedans.obj Within Tables_Polygone_contenant.obj 
                     and 
                   not (Table_Polygones_dedans.obj Entirely Within Tables_Polygone_contenant.obj)
          into Sel_Table_Polygones_frontiere

-> Mon MI902 semble ne pas considérer comme Entierement Dedans (Entirely Within) un polygoneA dont des noeuds sont superposés à un polygoneB (meme si polygoneA=polygoneB), ce qui, tout en restant étrange à mes yeux, permet d'en déduire qu'a partir du moment ou ils se touchent, il y a bien une zone frontaliere... Pour cette raison la jointure se fait dans mon exemple avec Within (le centroide est à l'intérieur) et pas Entirely Within. A voir avec de 'vraies' données.

Un polygone non completement inclus serait pris en compte -> mais un polygone inclus et ne touchant pas la frontiere ne sera pas selectionné...

Hors ligne

 

#7 Tue 08 April 2008 11:24

revrard
Juste Inscrit !
Date d'inscription: 7 Apr 2008
Messages: 3

Re: requête spatiale

Bonjour et merci de votre aide,

En fait, j'ai le regret de vous annoncer que mon problème avait pour origine un défaut de cohérence entre les deux couches. J'avais pourtant été attentif sur ce point, mais il se trouve que la couche régions2007 de mon fournisseur n'est pas exactement la même que la couche régions2006, ce qui obérait dès le départ toute possibilité de réussir. Cependant, vos efforts ne seront pas perdus car j'aurais besoin d'exécuter ces requêtes -- dès que mes tables seront cohérentes !

Toutes mes excuses,

Hors ligne

 

#8 Tue 08 April 2008 17:35

FERNANE
Participant actif
Date d'inscription: 14 Sep 2005
Messages: 139

Re: requête spatiale

Bonjour,

Remarque : si un objet est contenu et a une limite commune à l'objet qui le contient, alors si l'on créé un tampon très faible, l'objet tampon aura une surface contenue plus petite que sa surface totale.

Les objets strictement à l'intérieur ont une surface contenue égale à leur surface totale, de même pour leur tampon de faible valeur.

Cela peut éventuellement servir à améliorer la requête.

cordialement
Béatrice FERNANE
Tél : 03.81.61.53.57
Courriel : beatrice.fernane@texte-a-enlever.developpement-durable.gouv.fr

Hors ligne

 

#9 Tue 08 April 2008 23:57

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: requête spatiale

Merci Béatrice, c'est une piste
Mais elle introduit le danger de faire un tampon trop grand, qui fera considérer des polygones "quasi inclus" comme ayant une frontière commune
Et il n'est guère envisageable de faire ces tests au sein d'une unique requête
Alors, tant qu'à procéder par étape...je préfère ma méthode (smile) pour ce qui est, d'après le dernier post, redevenu un exercice de style théorique tongue

Hors ligne

 

Pied de page des forums

Powered by FluxBB