#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
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...
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
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
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