#1 Mon 05 November 2012 16:31
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Fusionner des polygones
Bonjour,
Je cherche à fusionner des polygones issus de la même couche par le biais d'un transformer de FME.
J'ai essayé avec Aggregator mais ça ne me donne pas ce que je veux (les objets sont regroupés en un seul objet mais celui-ci garde les limites de chacun des objets), avec Dissolver non plus (a priori cela ne marche pas sur les objets qui se chevauchent) et avec FeatureMerger non plus (je n'obtiens pas de résultats satisfaisants).
Il me faudrait en fait un assemblage des objets à la manière de MapInfo, les objets sont regroupés en un et les limites qui se confondent sont supprimées pour donner un seul objet polygone simple.
Si quelqu'un a une idée pour faire cette manip, je suis preneur.
Merci
Hors ligne
#2 Mon 05 November 2012 17:02
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Fusionner des polygones
Aloha
Dissolver non plus (a priori cela ne marche pas sur les objets qui se chevauchent)
Non, non. Ce transformer est bien celui à utiliser dans votre cas (cf ici).
Ensuite il est fort probable au vu de vos résultats que les limites ne sont pas communes (ce qui me semble-t'il est géré par MapInfo via son moteur d'affichage). Je propose d'utiliser ceci avant le dissolver.
Quoiqu'il advienne n'oubliez pas que FME traitera les données telles que vous les lui présentez, non comme vous pensez qu'elles se présentent.
En espérant que cela vous aura aidé.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#3 Tue 06 November 2012 12:12
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
Bonjour,
Effectivement, le dissolver était la bonne solution, même si j'ai fait un Areaonareaoverlayer pour "découper" les objets qui se chevauchent plutôt qu'un SliverRemover, qui prenait vachement de temps dès la lecture du reader dès que je lintégrais dans mon schéma.
Par contre, le dissolver ne fusionne pas en un seul objet les objets ne se touchant pas. Y a-t-il une solution pour arriver à faire cela ?
Merci
Dernière modification par Maxime31 (Tue 06 November 2012 12:13)
Hors ligne
#4 Fri 09 November 2012 09:32
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: Fusionner des polygones
moi personnellement j'enchaine 3 transformer :
Deaggregator -> dissolver -> aggregator
je désaggrege d'abord car sinon le dissolver me créer des anomalies.
Après je fusionne tout les polygones qui se touche ou qui sont l'un dans l'autre (il faut selection dissolution des inclusions oui)
je réaggrege les polygones qui ne se touche pas afin d'avoir un polygone multipartie plutôt que plusieurs polygones.
Mais celà ne permets pas de faire se toucher les polygones si telle est la demande.
Hors ligne
#5 Mon 12 November 2012 17:09
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
Bonjour,
Merci pour cette réponse, effectivement l'aggregator me permet de regrouper les objets ne se touchant pas.
Par contre, le dissolver (sur des couches à 50-60000 polygones) me prend beaucoup de temps et d'ailleurs je ne sais même pas s'il fonctionne, puisqu'au bout d'un jour de traitement, je considère que, soit il a planté, soit c'est vraiment trop long et donc pas très efficace si je continue à laisse tourner)
Est-ce normal ? Faut-il rajouter une option ?
Hors ligne
#6 Tue 13 November 2012 09:07
Re: Fusionner des polygones
Est-ce que tous les polygones ont une géométrie valide ?
Essaye de passer un geometryvalidator avec comme paramètre valide et regarde si tout est ok.
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#7 Tue 13 November 2012 11:46
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: Fusionner des polygones
y'a aussi un paramétrage du dissolver permettant de réduire le traitement (mais ça modifie un peu vos données)
Prévisualisation : Cette méthode fournit un aperçu de la technologie FME à venir, qui augmente de manière significative le processus de dissolution notamment lors de jeux de données en entrée très gros. Les arcs sont vectorisés, les mesures sont supprimées et les lignes intérieures ne sont pas générées.
Astuce : Si le jeu de données est gros et avec des chevauchements, et qu'une quantité importante d'entités doit être dissoute, essayez d'utiliser cette méthode de prévisualisation. Dans certains cas, elle peut considérablement diminuer le temps de traitement.
Hors ligne
#8 Tue 13 November 2012 11:57
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: Fusionner des polygones
il y a aussi peut ête le paramètre "Intensité du parallélisme" que je n'ai pas bien compris mais il semble que ça permet de rendre le traitement prioritaire sur la machine. à faire confirmer par les autres :s
Hors ligne
#9 Tue 13 November 2012 14:42
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
Ah oui, c'est beaucoup plus rapide avec le paramètre "prévisualition" et le résultat me semble correct.
Merci pour l'astuce, par contre qu'est-ce que vous entendez par "ça modifie un peu vos données" ?
Hors ligne
#10 Tue 13 November 2012 14:56
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Fusionner des polygones
Je pense qu'il fait référence à des déplacements de noeuds (en fonction de paramètre de tolérance, par exemple on ne conservera pas le noeud commun à deux parcelles contigües, mais seulement les deux sommets de l'arc résultant de la fusion).
Pour le parallélisme, il s'agit d'affecter plus ou moins de processus, de tâches windows en profitant au mieux des architectures multi-core. Il y a une limite liée à la licence. Normalement, plus on affecte de processus, meilleur est le temps de réponse. Si quelqu'un a un i7 à me prêter plutôt que le vieux tacot du bureau, je suis prêt à me sacrifier pour tester.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#11 Wed 14 November 2012 16:27
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
Bonjour,
Pour continuer sur ce problème, je souhaite ensuite appliquer un tampon de -50 mètres à mon résultat de dissolver. Cependant, j'ai l'impression qu'il ne sait pas gérer les trous automatiquement puisque le résultat final n'est pas bon.
J'ai donc utilisé un DonutHoleExtractor qui me permet d'extraire les trous de mon résultat de dissolver, j'ai ensuite appliqué un tampon de -50 mètres aux objets "hors trous" et appliqué un tampon de 50 mètres aux objets "trous", et enfin j'ai découpé mon tampon d'objets "hors trous" par le tampon d'objets "trous"...je ne sais pas si je suis très clair.
Mais le problème c'est que lorsque j'ai des objets "hors trous" dans un objet "trou", et bien le DonutHoleExtractor les considère comme objets "trous" et me les supprime donc à la fin par le biais de découpage, ce qui, du coup, fausse le résultat.
Le DonutHoleExtractor ne possédant pas de paramètres particuliers, qqun a-t-il déjà été confronté à cela ?
Hors ligne
#12 Wed 14 November 2012 16:55
- Marc-André
- Participant assidu
- Lieu: Montréal
- Date d'inscription: 30 Sep 2005
- Messages: 688
Re: Fusionner des polygones
il y a aussi peut ête le paramètre "Intensité du parallélisme" que je n'ai pas bien compris mais il semble que ça permet de rendre le traitement prioritaire sur la machine. à faire confirmer par les autres :s
Bonjour, le parallélisme permet de distribuer la tâche sur tous les noyaux du processeur pour l'effectuer plus rapidement.
Ça peut être avantageux, mais pas dans tous les cas. Si vous faites un workspace que vous utiliserez souvent, ça vaut la peine de faire des tests pour trouver la meilleure option. Il va sans dire que le parallélisme n'apporte aucun avantage sur un ordinateur avec un processeur à noyau unique. Dans ce cas, il vaut mieux ne pas utiliser le parallélisme.
Hors ligne
#13 Wed 14 November 2012 17:48
Re: Fusionner des polygones
Il y a effectivement un problème avec les buffers négatifs et les trous, nous avons fait remonter ce problème à Safe.
Le contournement que vous évoquez est OK mais il faut attribuer un identifiant à chaque objet avant le DonutHoleExtractor.
Il faut ensuite mettre cet identifiant dans le fonction de regroupement (group by) de DonutBuilder.
Le parallélisme ne fonctionne que si vous utilisez la fonction de regroupement.
Hors ligne
#14 Thu 15 November 2012 13:59
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: Fusionner des polygones
pour les modifications du paramètre prévisualisation :
"Les arcs sont vectorisés, les mesures sont supprimées et les lignes intérieures ne sont pas générées".. Je n'ai encore une fois pas tout compris étant encore novice, mais j'ai eu des résultats parfois surprenant en utilisant ce paramètre au début de mes projets, du coup je ne me souviens pas vraiment du problème, donc j'évite de l'utiliser même avec de lourd traitement (mais j'ai une chouette machine aussi :p)
Hors ligne
#15 Fri 14 December 2012 17:21
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
Bonjour,
Toujours dans le cadre de traitements de données lourdes, je voudrais connaitre les surfaces d'intersections entre polygones de deux couches.
J'ai bien utilisé le AreaonAreaOverlayer (combiné à un AreaCalculator) mais étant donné qu'il découpe carrément les polygones, cela prend un temps fou sur des données lourdes. Y a-t-il un transformer (ou une combinaison de transformers) qui me permettrait juste de récupérer la surface de l'intersection sans effectuer de modifications sur les objets ?
Hors ligne
#16 Mon 17 December 2012 08:29
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: Fusionner des polygones
le clipper ? (il faudra en utiliser plusieurs peut être en inversant les port d'entrées)
il y a aussi spatialfilter et spatialrelator ?
moi je suis également en galère sur des grosses données qui ne passent même pas sur le dissolver :s
Hors ligne
#17 Mon 17 December 2012 10:25
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Fusionner des polygones
J'avais testé le clipper et le spatialfilter mais le clipper est aussi long que l'areaonareaoverlayer et le spatialfilter ne me permet pas de récupérer la surface d'intersection.
Je ne maîtrise pas bien le transformer spatialrelator, je vais essayer de tester.
Hors ligne
#18 Fri 22 November 2019 12:01
- valpuesta
- Participant occasionnel
- Date d'inscription: 5 Sep 2005
- Messages: 43
Re: Fusionner des polygones
Bonjour,
J'avais le même problème de fusion de tronçons de la même couche.
Dans mon cas le problème est résolu avec Fme2019 : Aggregator -> Dissolver
Hors ligne