#1 Mon 04 March 2013 12:20
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
l'intersection dans MapInfo
Bonjour,
Je débute sur MapInfo (11.0) et ma question doit être sans doute très bête mais le parcours des fiches d'aides et de plusieurs forums n'a pas donné de réponse à ma question.
Je souhaite tout simplement réaliser une intersection entre deux couches polygonales. J'utilise la requête SQL proprement et obtiens effectivement une table avec les bons enregistrements.
Le hic c'est que je n'ai pas de géométrie en sortie, je n'ai qu'un tableau d'enregistrements !
Voici ce que je tape dans la requête SQL : SELECT Commune.Obj, COMMUNE.INSEE_Commune, COMMUNE.nom_Commune, fobrou.Obj, fobrou.Nature FROM COMMUNE,fobrou WHERE COMMUNE.Obj intersects fobrou.Obj GROUP BY COMMUNE.INSEE_Commune, fobrou.Nature INTO intersection;
Ma question est donc : quelle est l'étape qui me manque sous MapInfo pour obtenir une géométrie en sortie ?
A+
Samy
Dernière modification par Samy-DT (Mon 04 March 2013 16:17)
Hors ligne
#2 Mon 04 March 2013 16:02
- Marc-André
- Participant assidu
- Lieu: Montréal
- Date d'inscription: 30 Sep 2005
- Messages: 688
Re: l'intersection dans MapInfo
Bonjour,
allez dans le menu «Sélection --> Sélection SQL...»
Dans la fenêtre SQL, pour l'onglet «Tables:»
Choisissez d'abord la table requérante puis la table fournissante.
Ex: Table_A,Table_B
L'onglet «Critères» se remplit automatiquement.
Ex: « Table_A.Obj Contains Table_B ».
Remplacez si nécessaire la condition «Contains» par celle qui est appropriée.
Voici les choix de conditions pour les requêtes spatiales.
Contains (Contient) Les entités de la table requérante qui recouvrent les centroïdes des entités de la table fournissante sont sélectionnées.
Contains Entire (Contient entièrement) Les entités de la table requérante qui recouvrent entièrement des entités de la table fournissante sont sélectionnées.
Within (Contenu) Les entités de la table requérante dont leurs centroïdes sont contenus dans des entités de la table fournissante sont sélectionnées.
Entirely Within (Entièrement contenu) Les entités de la table requérante entièrement contenus dans des entités de la table fournissante sont sélectionnées.
Intersect (Intersecte) Les entités de la table requérante qui touchent les entités de la table fournissante sont sélectionnées.
Dernière modification par Marc-André (Mon 04 March 2013 16:04)
Hors ligne
#3 Mon 04 March 2013 16:28
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: l'intersection dans MapInfo
Bonjour,
Merci de votre réponse mais c'est bien la procédure que j'effectuais (cf.pièce jointe) sans le résultat escompté : j'ai effectivement un bon tableau avec le bon nombre d'enregistrements mais pas de géométries...
Comment faut-il s'y prendre pour avoir une géométrie et donc un résultat similaire à l'intersection dans tous les autres logiciels (QGIS, ArcGIS, GvSIG...).
A+
Samy
Hors ligne
#4 Mon 04 March 2013 17:09
- Marc-André
- Participant assidu
- Lieu: Montréal
- Date d'inscription: 30 Sep 2005
- Messages: 688
Re: l'intersection dans MapInfo
Bonjour,
C'est le «Group By Columns» qui ne permet pas l'affichage de la géométrie.
Hors ligne
#5 Mon 04 March 2013 17:13
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: l'intersection dans MapInfo
Bonjour
Samy as-tu essayé de cocher la case find result in current map windows?
Sinon vu que tu as nommé ta sélection tu peux aussi l'ajouter à ta fenêtre carte...
Hors ligne
#6 Mon 04 March 2013 18:24
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: l'intersection dans MapInfo
Damien, l'ajout par la fenêtre carte ne me donne toujours qu'une table. Dans mon dossier de données, cette requête SQL ne produit qu'un .TAB accompagné d'un .DAT. Les .MAP et .ID ne sont pas générés...Je confirme donc bien qu'il n'y a pas de géométrie.
Marc-André, pourquoi le GROUP BY empêcherait-il d'obtenir une géométrie, ça change tout au niveau des résultats sans le GROUP BY ?!
La requête d'intersection sous MapInfo se fait-elle donc uniquement via cette requête SQL, auquel cas c'est mon MapInfo douteux qui craque, ou bien faut-il faire une autre manipulation pour obtenir l'intersection ?
Merci pour vos réponses,
Samy.
Hors ligne
#7 Tue 05 March 2013 00:57
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: l'intersection dans MapInfo
ça m'apprendra à vouloir lire trop vite...
Bon ok avec le group by pas de géométrie car mapinfo ne gère pas la géométrie dans ce cas là.
Que devrais-t-on faire en cas de 2 enregistrement avec la même information au niveau du group by?
On fusionne les géométrie? on prend la plus grande?
Par contre il y a toujours moyen de recréer la géométrie par un select. Mais pour la géométrie c'est l'un ou l'autre. soit la géométrie de communes soit celle de fobrou. mettre la géométrie dans le cadre select n'est pas prévu...
Mapinfo ne gère qu'une seule géométrie par enregistrement.
d'ailleurs en général pour respecter les standards SQL il faut avoir dans le cadre select les même champ que dans le group by à moins d'avoir une fonction d'aggrégation de données.
Pour faire ce que tu as envie, il faut créer 2 tables à partir de ta table intersection. Il n'y aura pas de doublon à partir du moment ou l'on utilise un champ unique (sans doublon au niveau des valeurs...).
Hors ligne
#8 Tue 05 March 2013 12:26
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: l'intersection dans MapInfo
Bonjour Damien,
Je ne suis pas sûr de comprendre ce que tu veux dire par "créer 2 tables". Du coup je me suis dit qu'après avoir réalisé l'intersection avec le SQL, il fallait découper le résultat pour avoir les polygones que je souhaite conserver.
Mais du coup, avec le découpage qui est d'ailleurs mauvais, les résultats attributaires ne suivent pas. Pour être plus clair, j'ai illustré mon test dans le .docx joint à ce message.
J'espère qu'il permettra de trouver la solution ^^ !
A+
Samy
Hors ligne
#9 Tue 05 March 2013 12:57
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: l'intersection dans MapInfo
Le pourquoi des 2 tables.
la première c'est la récupération des géométries des communes liées en mettant la table communes en premier et en second la table intersection, pour ne récupérer que les communes touchées
la seconde c'est la récupération des géométries de fobrou.
Est-ce bien ça?
Nb ou est ton test?
Hors ligne
#10 Fri 08 March 2013 11:03
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: l'intersection dans MapInfo
Salut Damien,
Désolé pour le retour tardif.
Alors on se rapproche du résultat effectivement mais ce n'est pas encore tout à fait ça.
Donc si je récapitule, j'ai une première requête d'intersection entre les communes et fobrou dans laquelle je récupère la géométrie des communes avec dans la table attributaire en sortie les enregistrements de fobrou qui intersectent la couche commune.
Pour récupérer la géométrie de fobrou, je refais alors une requête SQL avec un "within" entre fobrou et la couche précédemment créée avec l'intersection.
Je récupère effectivement la géométrie de fobrou. Seulement, après avoir groupé sur les 2 colonnes nécessaires, je ne tombe toujours pas sur le même nombre d'enregistrements que sous ArcGIS ou QGIS.
Comment se fait-il que je perde des objets en chemin ? Cela vient peut-être de la façon de grouper : apparemment on ne peut grouper que sur une colonne, mais avant de créer la nouvelle table, il demande comment agréger les données, et là il me semble que je peux choisir plusieurs colonnes. ça ne me semble pas très clair...
Décidément, cette histoire d'intersection est plus compliquée que sous QGIS ou ArcGIS ^^
A+
Samy
Hors ligne
#11 Fri 08 March 2013 12:43
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: l'intersection dans MapInfo
Je reprends mon explication
En premier tu devais établir un group by entre tes 2 tables. c'est ce que j'appelle la table intersection.
cette table te donnera l'id des communes, et l'id d'un enregistrement de la table fobrou
en 1 tu va récupérer la géométrie des communes en se basant sur cette la table intersection.
pas besoin de within
en 2 tu va récupérer la géométrie de fobrou en se basant toujours sur la table intersection.
Ensuite pour fusionner des enregistrements, oui c'est le principe...
Hors ligne
#12 Fri 08 March 2013 13:42
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: l'intersection dans MapInfo
Super Damien,
ça y est j'y suis. Je commence à piger un peu mieux la logique de MI, mais c'est un peu déstabilisant par rapport à ArcGIS ou QGIS.
Merci beaucoup pour ce déblocage !
Samy
Hors ligne