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 Thu 01 March 2007 16:55

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

MapInfo 8.5 - Requête spatiale

Bonjour !

Décidemment, je lutte avec MapInfo, venant d'ArcGIS... Comment fait-on une requête spatiale dans MapInfo, du type "Sélectionner toutes les entités (points) situées dans un polygones" ? Par avance, merci.

Hors ligne

 

#2 Fri 02 March 2007 06:51

SIGISTE
Participant occasionnel
Date d'inscription: 5 Sep 2005
Messages: 31

Re: MapInfo 8.5 - Requête spatiale

bonjour,

vous pouvez essayer ceci :

SELECT * FROM Tab_poly, Tab_point WHERE Tab_poly.obj contains Tab_point.obj

cela sélectionnera l'ensemble des points contenus dans tout les polygones.

si souhaitez les points d'un polygone bien précis il faut préciser l'identifiant de ce dernier.

SELECT * FROM Tab_poly, Tab_point WHERE Tab_poly.obj contains Tab_point.obj AND Tab_poly.ID = mavaleur


Les mots en gras sont à remplacer par la valeur réelle qu'ils ont chez vous

Dernière modification par SIGISTE (Fri 02 March 2007 06:52)


Pourquoi partir si l'on a envie de rester encore un peu et pourquoi rester quand le besoin se fait de changer de quartier ?

Hors ligne

 

#3 Fri 02 March 2007 09:27

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: MapInfo 8.5 - Requête spatiale

Bonjour,
si vos tables de données sont grosses, pour la dernière requête citée précédemment, je vous conseille une petite optimisation qui peut vous faire gagner de précieuses minutes:


SELECT * FROM Tab_poly, Tab_point WHERE Tab_poly.obj contains Tab_point.obj AND Tab_poly.ID = mavaleur

devient

SELECT * FROM Tab_poly, Tab_point WHERE (select Tab_poly.object from Tab_poly where Tab_poly.ID = mavaleur)  contains Tab_point.obj 

Il s'agit de faire la sélection par critère dans une sous requête. Celle ci sera effectuée en premier par MI, et le croisement géographique ne se fera donc que sur cet objet, et non l'ensemble des objets de la table. La différence performance est énorme si vous utilisez par exemple une couche de communes sur une région ou un terrritoire plus grand.
Régis

Hors ligne

 

#4 Sun 04 March 2007 09:49

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

Re: MapInfo 8.5 - Requête spatiale

Bonjour,
Je dirais même plus, tant qu'à utiliser une sous-sélection (ce qui est une excellente idée), que la syntaxe la plus efficace (élégante?) est alors:
Select * from TAB_POINT  where obj Within any (select obj from TAB_POLY where macolonne=mavaleur)

Hors ligne

 

Pied de page des forums

Powered by FluxBB