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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB