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é ?

#1 Wed 13 August 2008 12:44

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Lissage de polygone avec mapinfo version8

Bonjour
Je cherche un moyen pour lisser mes polygones. J'ai beau cherché dans le forum mais je n'ai pas trouvé une réponse satisfaisante. Je sais que ArcGis permet cette manip mais je n'ai que MapInfo version8.
Y' a t'il un MBX pour faire cela?

J'ai transformé mes polygones en polyligne et fais le lissage ...et je sais que àa marche...mais dès qu'on reviens au polygone (couleur surfacique l'oblige pour mon sujet), le lissage disparaît??? J'ai joins une image, mais je ne sais pas s'elle sera affiché au forum !!!

Merci d'avance


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Wed 13 August 2008 15:38

Marc-André
Participant assidu
Lieu: Montréal
Date d'inscription: 30 Sep 2005
Messages: 688

Re: Lissage de polygone avec mapinfo version8

Bonjour,
La commande de lissage n'est que cosmétique.
La géométrie reste inchangée.

La fonction «Objet --> Fusion/Simplification» devrait mieux convenir.
Attention! Il vaut mieux travailler sur des copies de fichiers.

Hors ligne

 

#3 Wed 13 August 2008 15:49

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Re: Lissage de polygone avec mapinfo version8

Merci pour la réponse
La fonction ne fait qu'enlever des noeuds ce qui parfois agrave la situation car peu de noeud construissent mes polygones ? Sauf si j'ai mal utilisé cette fonction. Dans ce cas, je serai preneur des étapes à faire...Merci

Hors ligne

 

#4 Thu 14 August 2008 16:12

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Re: Lissage de polygone avec mapinfo version8

Je relance le sujet sur le lissage des polygones sous mapinfo 8.
Si un spécialiste peut me dire que ce n'est pas la peine de chercher et qu'il n'existe aucun moyen pour le moment, pour moi c'est une réponse qui va me satisfaire...histoire de ne plus chercher??? mERCI D'AVANCE

Hors ligne

 

#5 Thu 14 August 2008 16:39

didier.bondyfalat
Participant occasionnel
Lieu: Nice
Date d'inscription: 31 Jan 2007
Messages: 31

Re: Lissage de polygone avec mapinfo version8

Bonjour,

Bien que je ne comprend pas bien le sens géométrique du lissage, je propose de faire une succession de trois buffers autour des polygone :
1) buffer positif de x unités (dépend de la taille des objets en unité) ;
2) buffer négatif de 2x unités ;
3) buffer positif de x unités.

Les objets obtenus sont des polygones dont les angles ont été lissés (à l'intérieur pour les angles aigus, à l'extérieur pour les angles obtus).

Didier.

PS : un coup de MBR sur les objets peux donner une technique permettant de définir la valeur x différente sur chaque objet et proportionnelle à leur taille.

Hors ligne

 

#6 Thu 14 August 2008 17:51

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Re: Lissage de polygone avec mapinfo version8

Code:

1) buffer positif de x unités (dépend de la taille des objets en unité) ;
2) buffer négatif de 2x unités ;
3) buffer positif de x unités.

Les objets obtenus sont des polygones dont les angles ont été lissés (à l'intérieur pour les angles aigus, à l'extérieur pour les angles obtus).

Didier.

Merci Didier...mais ;(
J'ai essayé les Buffers (tampon) mais vu que je veux que mon buffer ne change pas trop d'emplacement par rapport à mon polygone d'origine, je suis obligé de lui fixé une distance assez proche de ce polygone, du soup les angles ne sont pas trop lissé. En fait, c'est l'histoire de mes isohyètes qui sont trop angulaire avec peu de noeud et je souhaite avoir des angles plus arrondie sans que le tracé de l'isohyte change !!! Tu peux regarder mon premier message et le type d'image que je souhaite avoir, c'est le tracé rouge qui m'intéresse au lieu du tracé vert... en tous cas merci
En cas où j'ai mal interprété ta méthose, n'hésite pas à m'eclaircir les démarches... smile

Hors ligne

 

#7 Mon 18 August 2008 09:28

magali di salvo
Participant actif
Lieu: Lyon
Date d'inscription: 21 Sep 2005
Messages: 70

Re: Lissage de polygone avec mapinfo version8

bonjour,
sans être spécialiste du domaine, il me semble que ce que vous souhaitez faire est une généralisation...ce n'est pas simple d'automatiser la généralisation d'un polygone et mapinfo ne possède pas de fonction de généralisation si ce n'est d'enlever un noeud sur X ou tous les Y mètres (c'est plutôt une simplification)...

il y a dix ans de tels algorithmes faisaient l'objet de thèses à l'IGN (labo Cogit), certains devraient être implémentés dans des outils SIG maintenant mais aucune idée desquels (ni des algos, ni des outils)...en tout cas pas dans mapinfo....

avec seulement mapinfo, ça parait difficile...vous pouvez déjà faire une recherche sur ce forum avec les mots clés "généralisation polygone" pour voir s'il y a des infos, des outils ? voir aussi sur le "forum sig" la discussion suivante "http://www.forumsig.org/showthread.php?t=11135" sur les outils de généralisation en open source ? (jump est sans doute une piste à creuser...)

bon courage

magali di salvo Diren Rhone-Alpes

Hors ligne

 

#8 Mon 18 August 2008 10:00

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Re: Lissage de polygone avec mapinfo version8

Code:

magali di salvo 
 
avec seulement mapinfo, ça parait difficile...vous pouvez déjà faire une recherche sur ce forum avec les mots clés "généralisation polygone" pour voir s'il y a des infos, des outils

D'abord Merci Magali
Je commence donc à être convaincu que le fonction "Lisser" dans MapInfo n'est fonctionnelle que pour les polylignes et non pour les polygones !!! Bien que je ne sais pas pourquoi, j'ai cru au départ que cela risque de changer la surface réelle du polygone après lissage, mais apparement ce n'est pas le cas puisque la polyligne ne change pas de périmètre après lissage. Autrement, c'est dommage que cette fonction n'existe pas sur Mapinfo (lissage de polygone et non de polyligne) du moins dans la version MI8, en plus elle existe sur d'autres outils SIG, je pense qu'elle sera très utile hmm
Quant à la généralisation, j'ai regardé les chemins que Magali m'a indiqué, mais je reste toujours sur ma faim. Je ne suis pas spécialiste de programmation de Mbx ni des fonctions MapBasic,  mais s'il y 'a des gentelMaps, qu'ils n'hésitent pas à voir la question...en tous cas merci wink wink

Hors ligne

 

#9 Mon 18 August 2008 11:51

didier.bondyfalat
Participant occasionnel
Lieu: Nice
Date d'inscription: 31 Jan 2007
Messages: 31

Re: Lissage de polygone avec mapinfo version8

Bonjour,

Il me semble qu'il y a des confusions entre surface et périmètre. Dans l'exemple que vous donnez lors de votre premier message, il me semble que le périmètre et la surface changent.

La technique des tampons permet d'obtenir un lissage des angles mais n'assure pas la conservation du périmètre ou de la surface voire de deux.

Je donne un exemple de la technique des tampons avec comme distance 10% de la racine carré de la surface des polygone (10% pour des carrés). Pré requis une table polygone ouverte avec une carte active (faire un copier coller dans le FMB).

Code:

Alter Table "Polygone" ( add x Float ) Interactive
Update Polygone Set x = sqr(Area(obj, "sq mi"))/10


Create Table "Polygonebuffer1" (ID Integer,x Float) file "D:\SIG\Polygonebuffer1.TAB" TYPE NATIVE Charset "WindowsLatin1"
Create Map For Polygonebuffer1 CoordSys NonEarth Units "ft" Bounds (0, -342) (320, 1)
Add Map Layer Polygonebuffer1
Set Map Layer 1 Editable On
Create Object As Buffer From Polygone Width x Units "mi" Type Cartesian Resolution 12 Into Table Polygonebuffer1 Group by Rowid Data ID=ID,x=x

Create Table "Polygonebuffer2" (ID Integer,x Float) file "D:\SIG\Polygonebuffer2.TAB" TYPE NATIVE Charset "WindowsLatin1"
Create Map For Polygonebuffer2 CoordSys NonEarth Units "ft" Bounds (0, -342) (320, 1)
Add Map Layer Polygonebuffer2
Set Map Layer 1 Editable On
Create Object As Buffer From Polygonebuffer1 Width -2*x Units "mi" Type Cartesian Resolution 12 Into Table Polygonebuffer2 Group by Rowid Data ID=ID,x=x

Create Table "Polygonebuffer3" (ID Integer,x Float) file "D:\SIG\Polygonebuffer3.TAB" TYPE NATIVE Charset "WindowsLatin1"
Create Map For Polygonebuffer3 CoordSys NonEarth Units "ft" Bounds (0, -342) (320, 1)
Add Map Layer Polygonebuffer3
Set Map Layer 1 Editable On
Create Object As Buffer From Polygonebuffer2 Width x Units "mi" Type Cartesian Resolution 12 Into Table Polygonebuffer3 Group by Rowid Data ID=ID,x=x

Didier

Hors ligne

 

#10 Mon 18 August 2008 11:55

FERNANE
Participant actif
Date d'inscription: 14 Sep 2005
Messages: 139

Re: Lissage de polygone avec mapinfo version8

Bonjour,

La fusion-simplification des noeuds  fonctionne tout de même bien sur
les polygones.
Je l'ai utilisé sur le fichier des communes de l'IGN pour créer un
fichier allégé pour GPS.
La topologie est conservé.
Rappel : le fichier des communes de l'IGN est un fichier commercial.

cordialement
Béatrice FERNANE

Hors ligne

 

#11 Mon 18 August 2008 14:44

NEJJARI
Participant actif
Lieu: METZ
Date d'inscription: 12 Feb 2007
Messages: 99

Re: Lissage de polygone avec mapinfo version8

Code:

didier.bondyfalat : Il me semble qu'il y a des confusions entre surface et périmètre. Dans l'exemple que vous donnez lors de votre premier message, il me semble que le périmètre et la surface changent

Il n' y a pas de confusion etre surface et périmètre. Déssinez une polyligne sur une couche de dessin avec des angles bien aigu, notez quelques part le périmètre,
cliquez deux fois sur la polyligne et cochez la case "lisser", recliquez sur la polyligne lissé et regardez le périmètre : c'est toujours le même. Une fois, que vous transformez votre polyligne en polygone, le lissage disparaît et les angles aigus réaparaissent.
Quant aux tompons, je suis d'accord avec vous que là, il y aura des changements de surfaces et de périmètres...le tampon est déssiné au-delà du tracé original. Mais comme je l'ai expliqué dans un message ci-dessus : J'ai essayé les Buffers (tampon) mais vu que je veux que mon buffer ne change pas trop d'emplacement par rapport à mon polygone d'origine,
je suis obligé de lui fixé une distance assez proche de ce polygone, du coup les angles ne sont pas trop lissé.

Je me répète, c'est l'histoire de mes isohyètes qui sont trop angulaire avec peu de noeud à l'origine et je souhaite avoir des angles plus arrondie sans que le tracé de l'isohyète change !!! Le type de résultat que je souhaite avoir (voir image JPG dans le premier message), c'est le tracé rouge qui m'intéresse au lieu du tracé vert... Dans cette image, la poyligne est lissé mais le polygone ne l'ai pas car MI ne permet pas de lisser les polygones.

Code:

FERNANE La fusion-simplification des noeuds  fonctionne tout de même bien sur
les polygones

Certes, pour simplifier des polygones et créer des fichiers allégés, mais ce n'est ce que je cherche pour les résultats que je souhaite puisque en simplifiant des noeud d'un polygone qui n'a pas beaucoup de noeud à l'origine, peut modifier trop le tracé de l'isoyète (voir image JPG du premier message).
Cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB