Pages: 1
- Sujet précédent - Affecter à chaque ligne des attributs de ses deux points extrémités - Sujet suivant
#1 Tue 30 January 2007 13:21
- Varjabétian
- Juste Inscrit !
- Lieu: Marseille
- Date d'inscription: 3 Oct 2005
- Messages: 3
Affecter à chaque ligne des attributs de ses deux points extrémités
Bonjour,
à partir de deux couches (*.SHP), l'une de points et l'autre de lignes, je souhaite affecter à chaque ligne des attributs de ses deux points extrémités.
J'ai utilisé le Transformer NeighborPairFinder (les lignes en tant que BASE, et les points en tant que CANDIDATE), mais il ne récupère pas les attributs dans tous les cas. Et il arrive aussi qu'il ne récupère pas les attributs du bon point.
Existe-t-il un Transformer qui permette de faire une telle jointure spatiale, à partir d'un critère topologique?
Merci de vos réponses.
Hors ligne
#2 Wed 31 January 2007 10:41
Re: Affecter à chaque ligne des attributs de ses deux points extrémités
NeighborPairFinder est le bon Transformer mais il faut sans doute préparer les données en entrée car le point le plus proche de votre ligne n'est pas forcement le plus proche de l'extrémité. Deux plus, il y a deux extrémités donc deux cas à gérer.
Voici la procédure que je mettrais en oeuvre :
Stocker la géométrie des lignes sous la forme d'un attribut avec GMLFeatureExtractor
1. Chercher le point le plus proche de l'extrémité initiale (vertex n°0) :
-récuperer les coordonnées du vertex initial avec coordinateFetcher dans les attributs x0 et y0
- remplacer la géométrie de la ligne par le point initial avec 2DPointReplacer (paramètres x0 et y0)
- utilisez ces points comme entités de Base dans NeighborFinder pour trouver les points associés à l'extrémité initiale de chaque ligne.
- régénérer la géométrie linéaire initiale avec GMLFeatureReplacer
1. Chercher le point le plus proche de l'extrémité terminale (vertex n°-1) :
suivre la procédure précédente en utilisant -1 comme index dans coordinateFetcher
ça devrait marcher...
Hors ligne
#3 Tue 15 November 2016 18:14
- BOUGUEN
- Participant occasionnel
- Lieu: Guignen
- Date d'inscription: 9 Mar 2008
- Messages: 43
Re: Affecter à chaque ligne des attributs de ses deux points extrémités
Bonjour,
Je tente d'effectuer cette procédure mais je ne trouve pas les transformers cités dans le process.
Par quel autre transformer ont été remplacé les transformer suivant :
- GMLFeatureExtractor
- coordinateFetcher
- 2DPointReplacer
- GMLFeatureReplacer
Merci d'avance pour votre aide
Gaël
Hors ligne
#4 Tue 15 November 2016 21:25
Re: Affecter à chaque ligne des attributs de ses deux points extrémités
- GMLFeatureExtractor -> GeometryExtractor
- coordinateFetcher -> CoordinateExtractor
- 2DPointReplacer -> VertexCreator
- GMLFeatureReplacer -> Geometryreplacer
Hors ligne
#5 Tue 15 November 2016 22:05
- BOUGUEN
- Participant occasionnel
- Lieu: Guignen
- Date d'inscription: 9 Mar 2008
- Messages: 43
Re: Affecter à chaque ligne des attributs de ses deux points extrémités
Merci beaucoup !
Hors ligne
#6 Thu 17 November 2016 15:58
- lefred
- Participant occasionnel
- Lieu: Sophia Antipolis
- Date d'inscription: 3 Jul 2008
- Messages: 42
Re: Affecter à chaque ligne des attributs de ses deux points extrémités
Bonjour,
Pour info, "SpatialRelator" permet de faire le traitement en un seul transformer.
J'ai retrouvé un petit exemple de fmw que je m'étais fait pour tester l'influence du paramètre "predicate", et que j'ai remis en forme pour qu'il soit plus explicite (FME 2016.1 minimum).
Le "predicate" "Touches" effectue le traitement que vous souhaitez (sélection uniquement des extrémités, donc deux points par ligne), le "predicate" "Intersect" sélectionne aussi le point interne aux lignes.
Cordialement,
Frédéric
--
Frédéric Eichelbrenner
Ellipso Facto - Sophia Antipolis
Hors ligne
Pages: 1
- Sujet précédent - Affecter à chaque ligne des attributs de ses deux points extrémités - Sujet suivant