#1 Thu 20 August 2009 11:01
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Décaler des points sur des lignes
Bonjour,
j'ai en entré des points et des lignes, mes points sont proches de mes lignes (entre 1 et 2m).
Je voudrais déplacer chaque point sur une ligne (j'ai un attribut commun entre les lignes et les points) selon la distance la plus courte.
J'ai fait des recherches dans le forum et j'ai passé en revu tous les transformer de FME mais je ne vois pas comment réaliser ce traitement.
Quelqu'un a-t-il déjà été confronté à ce problème ou aurait une idée pour effectuer ce déplacement ?
Merci d'avance
N'hesitez pas à me demander des précisions si je n'ai pas été assez clair
Dernière modification par xav (Thu 20 August 2009 11:02)
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#2 Thu 20 August 2009 11:57
- Sarah - VEREMES
- Participant actif
- Date d'inscription: 21 Apr 2009
- Messages: 51
Re: Décaler des points sur des lignes
Bonjour,
A mon avis, il faut utiliser NeighborFinder (les points en tant que Base et les lignes en tant que Candidats). Avec ce Transformer, on peut spécifier la distance maximum. on peut également demander à regrouper par.
Si une entité candidate est trouvée, tous les attributs du candidat le plus proche sont ajoutés à l'entité de base et cette dernière entité ressort par le port MATCHED (entité de base avec voisin). Plusieurs attributs sont alors ajoutés, notamment les coordonnées du point interpolé de l'entité candidate le plus proche de l'entité de base.
Il suffit donc de placer ensuite un 2DPointReplacer avec les coordonnées des candidats et le tour est joué!
Cordialement,
Sarah MOURE
Veremes : support FME & version française
Hors ligne
#3 Thu 20 August 2009 14:31
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Décaler des points sur des lignes
Bonjour et merci pour la réponse,
j'ai réalisé un test avec un neighborfinder, le résultat est très intéressant mais il subsiste un problème, la ligne qui correspond à un point n'est pas forcement la plus proche.
Il faudrait que je trouve comment faire exactement la même chose mais avec une jointure attributaire au lieu d'une jointure topologique.
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#4 Thu 20 August 2009 14:49
- Sarah - VEREMES
- Participant actif
- Date d'inscription: 21 Apr 2009
- Messages: 51
Re: Décaler des points sur des lignes
Je n'ai pas testé mais l'option "regrouper par" devrait faire ce que vous souhaitez, non ?
Sarah MOURE
Veremes : support FME & version française
Hors ligne
#5 Thu 20 August 2009 14:54
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Décaler des points sur des lignes
J'etais en train de tester avec le regrouper par mais ca ne fonctionne pas.
J'ai sélectionné la clé de mon candidat et la clé de ma base mais du coup le NeighborFinder ne ressord plus aucun resultat par le port matched.
J'ai jamais trop compris comment utiliser (ou à quoi servait) le regrouper par dans le neighborfinder et la doc n'est pas très explicite la dessus.
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#6 Thu 20 August 2009 15:19
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Décaler des points sur des lignes
J'ai trouvé comment résoudre mon problème.
J'ai utilisé la liste des candidats du NeighborFinder et en mettant une distance suffisante je suis certain de trouver la ligne qui va bien dans cette liste. Ensuite avec un ListSearcher et un ListIndexer, je récupère les attribut de la bonne ligne.
Merci de vos réponse qui m'ont permis de trouver la bonne solution
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#7 Thu 20 August 2009 15:25
- Sarah - VEREMES
- Participant actif
- Date d'inscription: 21 Apr 2009
- Messages: 51
Re: Décaler des points sur des lignes
Je viens de faire le test, le "regrouper par" fonctionne correctement!
En effet, dans l'aide sur ce Transformer ce n'est pas expliqué...
Pour explication, le principe s'est qu'il faut qu'il y ai des 2 côtés (lignes et points) un même attribut (même nom). Dès que cet attribut aura la même valeur des 2 côtés, alors le test sera effectué.
Exemple :
Mes entités : point1 avec JOIN=A, point2 avec JOIN=B et ligne avec JOIN=A
Les 2 points sont à moins de 1,50 de la ligne. En utilisant NeighborFinder en regroupant par JOIN. Seul le point1 récupérera les coordonnées de la ligne.
J'espère que j'ai été claire...
Bonne continuation.
Sarah MOURE
Veremes : support FME & version française
Hors ligne
#8 Thu 20 August 2009 15:29
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Décaler des points sur des lignes
ok, je comprend bien le fonctionnement mais je n'avais pas les même nom de chaque coté pour l'attribut qui me sert pour la jointure.
Du coup, je vais aussi tester avec cette méthode pour voir la différence de temps de traitement
merci
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#9 Thu 20 August 2009 16:16
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Décaler des points sur des lignes
j'ai testé les 2 méthodes.
En utilisant les listes, j'avais quelques points qui avait un positionnement étrange, je doit avoir un petit bug qui traine.
Par contre en utilisant le regrouper par du NeighborFinder ça fonctionne tres bien pour tous les points.
Merci beaucoup de votre aide
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne