Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

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


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

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

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: Affecter à chaque ligne des attributs de ses deux points extrémités

- GMLFeatureExtractor -> GeometryExtractor
  - coordinateFetcher -> CoordinateExtractor
  - 2DPointReplacer -> VertexCreator
  - GMLFeatureReplacer -> Geometryreplacer


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

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


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

--
Frédéric Eichelbrenner
Ellipso Facto - Sophia Antipolis

Hors ligne

 

Pied de page des forums

Powered by FluxBB