PDA

Voir la version complète : [MapInfo 7.x] Sélectionner deux objets "proches"



hubmtda
04/03/2005, 09h29
Bonjour à toute la communauté.
Je voudrais d'abord féliciter tous les gens qui participent à ce forum, qui le font vivre. C une vrai richesse, la simple consultation du forum permet d'éviter des heures de galère devant le moniteur !!! :D

Mon "problème" est le suivant :
Dans ma couche (polygone), j'ai environ 700 polygones. Je souhaiterai sélectionner ceux qui sont à moins de 10 m les uns des autres pour ensuite les fusionner.
Qn a t-il une piste ?

Cordialement,

globulo
05/03/2005, 00h21
Salut,

Tu peux peut-être essayer sous Outils - Fusion / Simplification, en précisant 10 m en "valeur d'accrochage de noeuds inter-objets".

@+

hubmtda
08/03/2005, 08h41
J'ai déjà essayé mais le problème est si les bords extérieurs des polygones sont à moins de 10m, il les fusionne également, ce qui fait qu'au final je n'ai plus qu'un trait.
@+

Duval
08/03/2005, 14h38
Peut-être par sélection SQL (grouper, ...) ? Sinon par la fenêtre MapBasic, mais je ne suis pas expert !
Je vais regarder chez moi au cas où, mais c'est pas gagné !
En tous cas, bon courage !

globulo
09/03/2005, 22h45
Salut,

Je crois avoir trouvé une solution au pb, un peu tordue peut-être:roll: .

1 - Renseignes si ce n'est pas déjà fait ta table polygone avec un identifiant unique pour chaque objet (type "rowid" ou autre),
2- Copies tous ces objets, et crées des tampons de 5 m de rayon dans une nouvelle couche,
3 - Mets à jour cette table tampon avec l'identifiant de départ du polygone correspondant (par jointure spatiale du type polygone est à l'intérieur dans tampon),
4 - Fais une copie de cette table tampon,
5 - Effectues une requête SQL entre tes deux tables tampons en spécifiant que tu souhaites sélectionner uniquement les tampons1 qui intersectent les tampons2 et pour lesquels il n'y a pas de correspondance entre identifiants.
En SQL, ça donne à peu près ça: tampon2.Obj Intersects tampon1.Obj And tampon2.ID <> tampon1.ID (si ton champ ID est de type Entier).
6 - Encore une requête SQL pour sélectionner les polygones d'origine qui sont entièrement contenus dans la sélection de tampon et avec correspondance des identifiants.


Attention, si un tampon englobe complètement deux polygones, le calcul est faussé.
Il vaut mieux alors passer par une correspondance au niveau des centroïdes.

Voilà, en espérant que ça fasse avancer le schmilblick....

@+

Duval
10/03/2005, 14h09
Je vais paraître idiot peut-être, mais comment tu fais tes tampons ?

globulo
10/03/2005, 14h24
Salut,
Tu copies tous les objets, tu rends modifiable la couche sur laquelle tu veux créer les tampons, et tu déroules le menu Objet - Tampon (en précisant un tampon pour chaque objet et ajustant le nombre de segments).
@+

Duval
10/03/2005, 14h28
OK, merci !

Y a pu qu'à voir si cela convient à hubmtda.

hubmtda
11/03/2005, 09h38
Bonjour,
merci globulo, ta réponse m'a permis d'arriver à mes fins.

Une simple précision, si je peux me permettre ; il y a 2 boites de dialogue lors de la création de tampons : quand on crée des tampons, en clickant sur "créer un tampon par objet" puis sur copier la "valeur" pour l'identifiant, il n'y pas besoin de mettre à jour la table tampon avec l'identifiant de départ du polygone...

La seule "difficulté" que j'ai rencontré c'est pour enchainer les deux requêtes sql. Bon c'est simple, j'ai supprimé les objets qui ne n'intéressaient pas (en inversant la sélection).

Cette solution me convient mais au départ je pensais aller plus loin, ce qui n'est pas nécessaire finalement.
Donc si tu aimes les défis, et juste pour le fun :
mes polygones sont en fait deux par deux souvent. L'objectif est de les fusionner deux par deux, mais de manière automatique...
Rq : je n'attends pas de réponse mais c'est aussi pour faire avancer le schmilblick....

Merci encore,

hubmtda
11/03/2005, 11h00
:o:
oups, en fait la solution proposée ne me convient qu'à moitier... c'est la deuxième partie de mon précédent message qui m'intéresse vraiment : fusionner les polygones qui sont proches (dans mon cas, ils sont souvent 2 par 2).

Duval
11/03/2005, 14h10
Peut-être en ajoutant qqch dans la partie "grouper" de la sélection SQL ?

hubmtda
11/03/2005, 18h00
Oui, dans la fenêtre SQL, il y a un champ grouper par colonne...mais je ne sais pas si la solution est là : aucune de mes colones de polygone n'a de champ identique...

Duval
15/03/2005, 14h39
Effectivement, il doit y avoir autre chose à faire. Peut-être avec la fenêtre MapBasic, mais là, je ne peux t'aider... Désolé.

;)

Brice
15/03/2005, 15h40
Par rapport à ta toute premiére question, l'outil proxsrch.mbx qui permettrait de sélectionner des objets situés à une certaine distance (je ne l'ai pas tester)

http://geomatique-nt.unige.ch/gumi/outil/pv2001_06_28.htm#qo