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

GEODATA DAYS 2024

#1 Mon 11 August 2003 09:11

Yguiet
Invité

Polygones multiples / Polygones troues

De: Yves Guiet
Bonjour,
Des communes de certains departements(ex: Htes-Pyrenees) sont incluses dans un departement voisin (Pyr-Atlant.). Concretement le premier departement est materialise par un polygone multiple, le second par un polygone troue. La fonction Objectinfo(obj,21) renvoie bien une valeur correspondant au nombre de polygones dans un polygone multiple, mais elle renvoie la meme valeur pour le polygone troue. Existe-il un moyen pour selectionner seulement les polygones multiples reels ?
Merci

 

#2 Mon 11 August 2003 14:00

Eric Mauviere
Invité

Re: Polygones multiples / Polygones troues

Bonjour,

la commande objets/desagreger peut vous rendre service dans ce cas.

Voici un script recopiable dans la fenetre Mapbasic de Mapinfo, operant sur une table dept avec deux colonnes dept (code) et deptc (libelle) :

map from dept
Set Map Layer 1 Editable On
Select * from dept into t1
Objects Disaggregate Into Table dept Data dept=dept,deptc=deptc
Select dept, deptc,count(*) nb from dept group by 1,2 into t1
Select * from t1 where nb>1 into t2
Browse * From t2
Rollback Table dept

Eric Mauviere
http://www.geoclip.net

 

#3 Mon 11 August 2003 19:19

Jacques Paris
Invité

Re: Polygones multiples / Polygones troues

La solution offerte par Éric a surtout l'avantage de montrer la complexite
du probleme ou plutot de la solution possible dans le cadre des ressources
originales de MapInfo. Il faut de plus signaler que la commande Disaggregate
n'existe que depuis la version 6.5.

À remarquer aussi que la solution ne fait que lister sans les selectionner
les  vrais beignes  (n.m. venant de beignets, de la forme d'un tore, tres
prises, il parait, des policiers nord-americains, et voila que le cycle se
referme sur les beignes, n.f. du moins a Bayonne ou elles remplacent les
gnons avantageusement)

Revenons a nos trous de beignes. Il n'y a pas moyen de les detecter
directement a moins de faire appel a une procedure particuliere, une
fonction par exemple, ce qui exige de construire une application MB, ou a un
script comme celui d'Éric pour les versions les plus recentes.

Quelle serait la procedure la plus efficace si l'objectif est de
selectionner tous les beignes vrais? J'ai du en inventer au moins une pour
l'application ExploReg qui etait la facon de desagreger les polygones
multiples avec l'option de conserver les vrais beignes, mais elle est trop
complexe pour etre facilement decrite et applicable. Car il faut considerer
des cas complexes comme une region faite de plusieurs  iles , dont au
moins une a un lac, dans lequel il a une ile....

La procedure la plus fiable apparemment est de prendre la surface de l'objet
original et de faire la somme des surfaces des polygones constituants quand
il y en a plus d'un qui le compose. Si la somme est > a l'original, il y a
un trou.

Une autre est de verifier si chaque polygone n'est pas a l'interieur d'un
autre. Cette approche plus longue a cause du nombre de comparaisons
necessaires est utile cependant pour reconstituer les vrais beignes a partir
des polygones constituants.

La solution d'Éric peut probablement etre amelioree pour repondre mieux a la
question. Voici ce que je suggere

map from dept
Set Map Layer 1 Editable On
Select * from dept
Objects Disaggregate
Note : les objets desagreges seront ajoutes dans la table originale; mais
les vrais beignes ne seront pas transformes (absence du mot cle ALL)

Select * from dept where objectinfo(obj,21)>1

Et ne pas oublier par la suite

Rollback Table dept

Mais ceci ne prevoit pas toutes les situations car je ne sais pas trop
comment Mi traitera le cas des iles dont une a un lac; traite-t-il la region
comme si elle etait un beigne beigne, ou eclate-t-il les iles en laissant
celle avec le lac intact? Je n'ai pas fait ces tests la? Quelqu'un aurait-il
une idee?

Jacques Paris

 

Pied de page des forums

Powered by FluxBB