Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

Pied de page des forums

Powered by FluxBB