Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Le GeoRezo accueille un nouveau blog à la croisée des mondes de la géomatique et de l’urbanisme :  SIG & URBA

L’ambition de ce blog est de parler géomatique aux urbanistes :

- les tenir au courant de ce qui évolue en rapport avec leur métier,
- vulgariser un certain nombre de concept SIG et les éclairer par leur prolongement en urbanisme,
- communiquer sur les initiatives intéressantes …

Ce blog est un espace d’échange qui doit permettre de présenter des travaux, des réflexions intéressantes, des initiatives en toute liberté, et avec de l’envie.Les idées d’articles  ne manquent pas , et Aline, rédactrice principale de ce blog, compte sur le soutien et la participation de toutes les bonnes volontés, spécialistes de l’urbanisme, utilisateurs ou non de SIG.

Alors, réagissez, faites passer l’information, inscrivez le blog dans vos flux RSS …
Et rendez-vous la semaine prochaine pour un premier article intitulé “L’essentiel … sur la numérisation des PLU”.

L’équipe GeoRezo

#1 lun 01 février 2010 17:38

SanLas
Membre
Date d'inscription: 1 fév 2010
Messages: 5

recoupement de plusieurs polygones

Bonjour,

Je cherche à mettre à jour une table "polygone 1" en utilisant une autre couche "polygone 2", ces 2 tables se recoupent dans l'espace.

Pour cela, j'utilise la fonction "mettre à jour colonne".

Mon problème est le suivant:
un polygone de ma table "polygone 1" peut recouper un ou plusieurs polygones de la table "polygone 2".
Dans le cas où mon polygone 1 recoupe plusieurs polygones de ma seconde table, je souhaite affecter à la table à mettre à jour, la valeur du polygone qui recoupe le plus mon polygone 1. Hors mapinfo m'indique aléatoirement soit la valeur de la surface la plus représentée, soit celle de la moins représentée.

Comment faire pour renseigner la valeur du polygone le plus recoupé??

Merci d'avance.

Hors ligne

 

#2 mer 03 février 2010 18:17

SanLas
Membre
Date d'inscription: 1 fév 2010
Messages: 5

Re: recoupement de plusieurs polygones

Bonjour,

Personne n'aurait une petite idée????

Merci

Hors ligne

 

#3 mer 03 février 2010 18:47

Daniel
Moderateur
Lieu: Victoriaville, Québec
Date d'inscription: 6 sep 2005
Messages: 1212
Site web

Re: recoupement de plusieurs polygones

Bonjour

Bon, tentons une réponse.  Probablement que d'autres réponses se grefferons à la mienne!!!  Mais c'est ce qui me vient à l'esprit en ce moment...

Il est possible de savoir quel polygone coupe tel autre polygone, dans deux couches différentes.
Il suffit de faire un areaoverlap dans une requête SQL.
COLONNE: Polygone_1_ID, Polygone_2_ID, sum(oreaolverlap (polygone_1.obj, polygone_2.obj))
TABLE: polygone_1, Polygone_2
WHERE: polygone_1.obj intersect polygone_2.obj
Group by: Polygone_1_ID, Polygone_2_ID

On peut faire aussi un sort pour mettre en ordre selon les polygone_1_ID et polygone_2_ID

Le résultat va vous donner l'intersection entre les deux tables en indiquand le nom du polygone et sa superficie.  Donc, la plus grande superficie entre deux polygone apparîtra.

Maintenant, il reste à assigner cette valeur!!!

Daniel

Hors ligne

 

#4 lun 08 février 2010 16:03

SanLas
Membre
Date d'inscription: 1 fév 2010
Messages: 5

Re: recoupement de plusieurs polygones

Merci pour votre réponse.
Malheureusement l'overlap ne me permet pas de résoudre mon pb.

Hors ligne

 

#5 lun 08 février 2010 17:26

Maurice
Moderateur
Lieu: Montpellier
Date d'inscription: 5 sep 2005
Messages: 4878

Re: recoupement de plusieurs polygones

Bonjour
La solution de Daniel est pourtant la bonne: une fois que vous avez par requête la proportion de chaque intersection vous pouvez  obtenir le recouvrement majoritaire et faire porter la mise à jour sur une sélection des ces polygones
Si j'ai le temps je vous détaille ça un peu plus ....bientôt

Hors ligne

 

#6 lun 08 février 2010 22:13

Maurice
Moderateur
Lieu: Montpellier
Date d'inscription: 5 sep 2005
Messages: 4878

Re: recoupement de plusieurs polygones

Une petite séquence de SQL en nocturne...et en syntaxe FMB
Soient vos tables poly1 (avec un NOM, un ID et une SURF) et poly2, cette dernière portant des valeurs CODE2 .
Première requête pour déterminer la proportion de surface de chaque CODE2 contenue dans les poly1 intersectés

Code:

Select poly1.NOM, poly1.ID, poly2.CODE2, sum(areaoverlap(poly1.obj, poly2.obj)*100/poly1.SURF) "test" from poly1, poly2 where poly1.Obj intersects poly2.Obj group by poly1.NOM, poly2.CODE2 order by poly1.NOM, test desc into sel1

Une deuxième pour sélectionner les maximums du premier résultat

Code:

Select ID, Code2,  Max(test) "CODE2_max" from sel1 group by ID order by ID into Sel2

Enfin, après avoir ajouté une colonne CODE2_max à poly1, on met à jour cette nouvelle colonne avec les valeurs de CODE2_max de sel2 sur le critère poly1.ID=sel2.ID. Autrement dit:

Code:

Add Column "poly1" (CODE2_max) From Sel2 Set To Code2 Where poly1.ID = Sel2.ID

Hors ligne

 

#7 mar 09 février 2010 15:58

SanLas
Membre
Date d'inscription: 1 fév 2010
Messages: 5

Re: recoupement de plusieurs polygones

Merci beaucoup. Problème résolu.

Hors ligne

 

#8 jeu 11 février 2010 14:56

michelbgy
Membre
Date d'inscription: 9 fév 2010
Messages: 21

Re: recoupement de plusieurs polygones

Il existe une solution sans taper de code SQL: sachant que lorsqu'on demande à Mapinfo de grouper par colonne dans la boîte de dialogue "sélection SQL" il retient systématiquement les données de la première ligne rencontrée, il suffit donc de trier préalablement la table en ordre décroissant de la surface (ou tout autre critère)


Procédure pas à pas(à chaque étape enregistrer le résultat sous un nouveau nom de table):

-attention dans le cas ou des polygones "2" recouperaient plusieurs polygones "1": il faut les découper (objets"2"=cible à découper par objets"1")
-rajouter et mettre à jour 2 colonnes dans la table "2": surface objet et inverse de cette surface
-sélection SQL objets "1" contain objets "2", trier par inverse surface
-sélection SQL, grouper par l'identifiant des objets "1"
-la table attributaire obtenue permets de renseigner la table "1"originelle; la surface mais aussi toutes les autres données récupérées de la table"2" correspondent à celles du plus gros objet  contenu.

Hors ligne

 

#9 jeu 11 février 2010 18:09

Maurice
Moderateur
Lieu: Montpellier
Date d'inscription: 5 sep 2005
Messages: 4878

Re: recoupement de plusieurs polygones

michelbgy a écrit:

Il existe une solution sans taper de code SQL...

Bon, il n'y a pas de SQL...mais si on fait un concours de vitesse, je suis sur de gagner big_smile
Faire du MI sans utiliser SQL... c'est courir avec les jambes attachées !

Hors ligne

 

Pied de page des forums

Powered by FluxBB

- Faire un don - Contact - Mentions légales -