#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
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