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

GEODATA DAYS 2024

#1 Mon 27 February 2012 13:45

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Défi du jour : décaler des points le long d'un linéaire...

Bonjour à tous !

Je suis confronté à une limite (de maitrise perso, pas de FME je pense :p). J'ai des points qui sont actuellement superposés (pas systématiquement mais 1 sur 10 par exemple). J'arrive à extraire ces points sans souci mais j'aimerais maintenant les décaler de 1m sur le long d'un linéaire.

L'idée c'est d'avoir -----X----X------ au lieu de ---------X²--------- 

Le hic c'est que je ne vois pas trop comment procéder...

A la limite, je peux peut-être décaler mes points de 1M en X et Y (on doit bien avoir ça dans FME) puis les aligner avec un neighboorfinder (ou du genre) mais si je pouvais direct leur donner un vecteur basé sur l'orientation de l'arc, ça serait parfait big_smile

Hors ligne

 

#2 Mon 27 February 2012 16:54

veroh
Participant actif
Lieu: Moutier
Date d'inscription: 27 Sep 2008
Messages: 97
Site web

Re: Défi du jour : décaler des points le long d'un linéaire...

Bonjour,

Vu de loin, si tu fais un test pour sortir tes points à double et qu'ensuite tu crées un cercle avec un cercle dans la coordonnées à double et un rayon de ton décalage voulu puis que tu fais un lineonareaoverlayer pour avoir les intersections entre tes cercles et tes lignes, tu auras donc ---x--x--x---- au lieu de ------------x2---------------

Ok, ce n'est pas exactement la réponse à ta question, mais ensuite, tu peux toujours décider de ne prendre qu'une intersection sur 2 de tes cercles ?

Enfin voilà peut-être un début d'idée. Remarques que si tu as un exemple concret (genre tu parles de 20'000 lignes ou de 3 ou 4 lignes ?) et que tu peux le mettre à disposition, ça me tenterait bien de regarder plus à fond ce "défi du jour".

Parce que sinon, tu as le transformer INTERSECTOR qui te fournira des points entre deux lignes (plutôt que lineonareaoverlayer qui risque de prendre plus de temps).

Voilà quelques idées.

A plus avec un bel exemple j'espère

V.

Hors ligne

 

#3 Tue 28 February 2012 11:52

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Effectivement, voilà une réponse intéressante ! Je vais voir pour creuser cela.

En attendant, voici un extrait des données (2 shape, un ponctuel un linéaire). Le traitement concerne environ 75000 points mais "seulement" quelques milliers en doublons. Je peux les traiter à part.

Merci du coup de main !


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

Hors ligne

 

#4 Tue 06 March 2012 18:00

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Bon, bon, je dois être fatigué...

Je fais des tests pour réussir à obtenir ce que je veux et j'ai donc créé des shape qui contiennent d'un coté mes linéaires, de l'autres mes points à décaler.

J'envoie le point vers un 2DEllipseReplacer avec un rayon de 1. Mais quand j'essaie de croiser ensuite ces cercles avec mes linéaires (lineonline...), je ressors avec beaucoup trop de noeud (superposition de mes arcs + point de départ/Arrivée, etc.). Comment puis-je croiser mes deux couches et ne garder que les points d'intersection ?

Je gratte avec intersector ou les autres overlayer mais j'ai du mal...

Hors ligne

 

#5 Tue 06 March 2012 18:57

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: Défi du jour : décaler des points le long d'un linéaire...

Bonjour,

Est-ce qu'il peut y avoir plus de deux points superposés ?

Dans l'exemple, chaque point est associé à une extrémité d'un et d'un seul tronçon (via le tron_icode). Est-ce toujours le cas ?

Dernière modification par Renaud (Tue 06 March 2012 19:00)


Renaud Mouche

Hors ligne

 

#6 Tue 06 March 2012 19:00

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Non, je les filtre en amont. Pas de souci de ce coté là.

EDIT : hum, il faudra que je regarde si je peux avoir 2 points d'intersection superposé (je dirais donc peut-être mais je les traiterais si nécessaire).

Dernière modification par pierreb (Tue 06 March 2012 19:01)

Hors ligne

 

#7 Tue 06 March 2012 19:14

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: Défi du jour : décaler des points le long d'un linéaire...

Je dois débaucher, mais je testerai demain quelque chose à base de 'Snipper'

Est-ce que tu peux poster un exemple avec des superpositions ?
Pour l'instant, chaque point est à une extrémité d'une ligne, ce qui facilite les choses. Mais c'est peut-être normal.


Renaud Mouche

Hors ligne

 

#8 Wed 07 March 2012 09:07

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Hop, voilà déjà un petit zip avec des linéaires + 3 shapes de ponctuel (le 2 étant les doublons, le 3 les triples, etc.). J'ai séparé en 3 fichiers mais rien d'obligatoire hein smile

Je jette un oeil sur le snipper (et sur ce que j'ai fais hier, on sait jamais un oeil neuf...).

Merci du coup de main en tout cas !

Dernière modification par pierreb (Wed 07 March 2012 09:08)


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

Hors ligne

 

#9 Wed 07 March 2012 14:15

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: Défi du jour : décaler des points le long d'un linéaire...

Bonjour,


J'ai produit un workbench qui répond peut-être à la question (j'ai fait quelques hypothèses à partir des extraits).
L'idée est de calculer pour chaque lot de points le pk sur le tronçon via 'LengthToPoint'. On peut alors déterminer un pk décalé pour chaque point, et utiliser 'Snipper' suivi de 'CoordinateExtractor' pour obtenir le XY du point décalé.

Hypothèse 1- Chaque point est associé à un et un seul tronçon via le champ TRON_ICODE. C'est sur ce tronçon qu'on décale les points
Hypothèse 2- Chaque point est positionné au début ou à la fin de son tronçon associé (pas de point en milieu de tronçon)
Hypothèse 3- Tout les points associés à un tronçon donné sont superposés (ie ils sont tous au début ou tous à la fin)
Hypothèse 4- Le tronçon a une longueur suffisante pour accepter les points décalés
Hypothèse 5- Chaque point n'est pas forcément accroché topologiquement à son tronçon

Si l'hypothèse 1 est fausse, le workbench est à jeter. Ou en tout cas, il faut se ramener à l'hypothèse 1
Si l'hypothèse 2 est fausse, le résultat ne sera pas élégant : le décalage se fait dans un seul sens, pas de part et d'autre du point de départ. Et le risque que l'hypothèse 4 soit fausse est augmenté.
Si l'hypothèse 3 est fausse, le résultat ne sera pas élégant : les décalages seront irréguliers.
Si l'hypothèse 4 est fausse, autrement dit si le tronçon est très court ou le nombre de points très important, il n'y a pas la place pour placer tout les points. Je ne sais pas comment se comportera le workbench.
L'hypothèse 5 est peu importante, mais on notera juste que les points finaux sont snappés.

Le Workbench prend en entrée l'ensemble des points groupés (il ne faut pas les répartir dans plusieurs shapes) et l'ensemble des tronçons groupés.
Les ExpressionEvaluator permettent de régler le décalage (1m par défaut)

J'ai testé sur peu de points et je n'ai pris aucune précaution sur la qualité des données (respect des hypothèses), il y a donc un risque de bug assez élevé.
Je suis preneur de critiques.

[Edit]Je réalise que l'hypothèse 5 est peut-être importante, et qu'il faut probablement que chaque point soit préalablement snappé sur son tronçon[/Edit]

Dernière modification par Renaud (Wed 07 March 2012 14:22)


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

Renaud Mouche

Hors ligne

 

#10 Wed 07 March 2012 16:12

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Alors, tout d'abord merci pour ce sacré boulot ! Je suis en train de le regarder et j'ai pas mal de chose à apprendre sur FME encore smile

Coté hypothèse :

1 - ok
2 - non mais je peux par contre diviser chaque linéaire au niveau de chaque point.
3 - non, ils sont répartis le long des tronçons. Sauf si je divise chaque linéaire au niveau de chaque point.
4 - je ne pense aps que cela soit systématiquement le cas, il faudra que je vois pour récupérer les points en erreur. Encore que si FME les colle dans le vide, pas de souci.
5 - probablement. Là encore, je peux reconstruire la topologie si nécessaire.

La logique est exactement celle que je voulais au départ. Je n'avais carrément pas vu ce coup du pk qu'on peut décaler "facilement".

Je vais continuer à explorer le workbench et lancer un traitement pour voir.

Encore une fois, merci !

Hors ligne

 

#11 Wed 07 March 2012 17:03

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: Défi du jour : décaler des points le long d'un linéaire...

2- Ça oblige à se poser la question de répartir de part et d'autre du point initial, question de principe smile
Le décalage "de base" pourrait se faire en se décalant de la moitié de l'index (arrondi au supérieur). Si l'index est une valeur paire, on se décale vers l'arrière, sinon vers l'avant

Le soucis c'est que l'on, aura très souvent des points décalés hors du tronçon. Comment les replacer à la suite de ceux qui sont correctement placés ? J'aurai tendance à penser que c'est la difficulté majeure du défi.

Les autres hypothèses à corriger ne devraient pas poser de soucis majeur, mais le Workbench risque de se compliquer un chouia ...


Renaud Mouche

Hors ligne

 

#12 Thu 08 March 2012 15:23

pierreb
Participant actif
Lieu: La Rochelle
Date d'inscription: 3 Oct 2011
Messages: 73

Re: Défi du jour : décaler des points le long d'un linéaire...

Yes, j'ai fini !

Pas de souci, en fait mes points étaient, sauf exception, en début / fin de tronçon. J'ai donc facilement pu les traiter et flagger les erreurs.

Bref, je suis content, j'ai réussi à faire ça et j'ai appris pas mal de chose. Un grand merci à Renaud (et à veroh même si j'ai abandonné cette hypothèse, que je finirais par retenter quand même) !

Hors ligne

 

Pied de page des forums

Powered by FluxBB