#1 Mon 14 March 2011 16:27
- lenain
- Juste Inscrit !
- Date d'inscription: 14 Mar 2011
- Messages: 3
Polygones à trous avec MapBASIC
Bonjour,
je suis sur un projet où j'importe des lignes iso depuis un dxf dans mapinfo. le but est qu'en fin de traitement, le client puisse avoir une surface de chaque polygone entre deux courbes iso.
Le problème vient de certains endroits où les courbes iso sont les unes à l'intérieur des autres (sommets, fosses). Il faut don créer des polygones à trous.
Jusque là, pas de problème.
cependant j'ai une grosse quantité de données à traiter, donc j'ai voulu automatiser la tache avec mapbasic. Dans l'ensemble cela fonctionne bien, mais j'ai quelques surfaces irréductibles dans lesquelles les découpes ne se font pas.
Je vous joins une copie de mon code si vous vous voulez tester, constater, résoudre...
Je pense qu'un des problèmes est dans la méthode de désagrégation, mais je ne sais pas quoi mettre d'autre...
Code:
dim i as Integer Set Map Layer 1 Editable On Layer 1 Selectable On Open Table "....Polygones_nettoyes.TAB" as Polygones_nettoyes for i=1 to 93 Select * From Polygones_nettoyes where Id=i into Selection1 Set Target On Select * from Polygones_nettoyes where (obj Within any (Select obj from Polygones_nettoyes where ID=i)and Polygones_nettoyes.ID <> i) into Selection2 if Selection1<>Selection2 and Selection1.ID_char<>"" and Selection2.ID_char<>"" then Objects Erase into Target Data ID=ID else end if Set Target Off next
Cordialement
Hors ligne
#2 Mon 14 March 2011 20:20
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Polygones à trous avec MapBASIC
Bonjour,
Je me demande si un tri préalable, en fonction de la valeur de tes isolignes, n'est pas nécéssaire pour s'assurrer qu'un polygone plus élevé en valeur efface "toujours" un polygone plus petit en valeur...ou id = 1 est ta plus petite valeur? Ceci permetterais a mon avis d'éliminer les polygone en ordre et éviter les "quelques surfaces irréductibles"
Par contre je m'interroge sur l'impacte sur les "fosses" vis-à-vis le tri
JF
Dernière modification par jean94 (Mon 14 March 2011 20:22)
Hors ligne
#3 Wed 16 March 2011 10:33
- lenain
- Juste Inscrit !
- Date d'inscription: 14 Mar 2011
- Messages: 3
Re: Polygones à trous avec MapBASIC
Bonjour,
merci pour l'astuce! cela marche correctement pour les sommets, mais les fosses restent "irréductibles". Mais je pense qu'il suffit simplement de refaire un tri, dans l'autre sens et repasser le script?
Hors ligne
#4 Wed 16 March 2011 10:41
- lenain
- Juste Inscrit !
- Date d'inscription: 14 Mar 2011
- Messages: 3
Re: Polygones à trous avec MapBASIC
une autre question, je voudrais que les éléements créés gardent tous leurs attributs. hors j'ai beau mettre dans la méthode erase ID=ID ou autocad_elevation=autocad_elevation, cela ne fonctionne pas.
Cordialement
Hors ligne
#5 Wed 16 March 2011 13:37
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Polygones à trous avec MapBASIC
Pour garder les attributs des champs, tu peux ajouter une boucle comme celle-ci, voici ton pseudo code :
Code:
Do while x to TableInfo(TAB_INFO_NCOLS) Add Column "TaNouvelleTable" (x) From AncienneTable Set To Colx Where ID=ID x = x + 1 Loop
JF
Dernière modification par jean94 (Wed 16 March 2011 13:38)
Hors ligne