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 11 June 2013 10:42

Anaïs Just
Participant actif
Lieu: Montreuil
Date d'inscription: 10 Dec 2007
Messages: 131

[Talend Open Studio SDI]:générer des lignes à partir de points

Bonjour,

J'ai réalisé un job sous talend qui me permet de lire en boucle des fichiers textes de traces GPS d'un logiciel propriétaire dans un dossier (tfilelist), de les transformer (tmap) afin d'avoir les données de coordonnées dans un bon format, de les grouper dans un seul fichier (thashoutput->thashinput->tunite), de les convertir en fichier de point (s2DPointreplacer) et de les intégrer dans un shapefile.

Cependant j'aimerais pouvoir placer un composant entre le (s2DPointreplacer) et le shapefile qui me permette d'obtenir des lignes à partir des points (prendrait en compte un identifiant de ligne et l'ordre des points)...

Une idée? ce composant existe-t-il ou dois-je sortir de mon job talend et faire ça sous qgis ou postgis?
ça m'arrangerait d'avoir tout en un afin de compiler ensuite le job pour en faire un exe qui se lance tout seul en dehors de talend.

En pièce jointe la capture d'écran du job.


Merci d'avance!


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

Hors ligne

 

#2 Tue 11 June 2013 11:28

mcoudert
Participant actif
Lieu: Toulouse
Date d'inscription: 16 Oct 2006
Messages: 83

Re: [Talend Open Studio SDI]:générer des lignes à partir de points

Bonjour,

Tout d'abord je ne pense pas qu'il existe de composants sur étagère correspondant exactement à votre besoin... 
Cependant cela reste réalisable via Talend par des manières détournées, si ma compréhension du besoin est correcte.

Il faudrait agréger les lignes (rows talend) à l'aide de l'identifiant de linestring (liste de corrdonnées X / Y ordonnées) puis ensuite créer de manière programmatique des linestrings en créant des nouvelles "Géométries" un peu à la manière de ce tutoriel :
http://www.talendforge.org/wiki/doku.ph … frompoints
Vous pouvez par exemple utiliser un tJavaRow pour créer les nouvelles géométries à partir de la liste de coordonnées X,Y ordonnées...

Mathieu

Hors ligne

 

#3 Tue 11 June 2013 11:37

Anaïs Just
Participant actif
Lieu: Montreuil
Date d'inscription: 10 Dec 2007
Messages: 131

Re: [Talend Open Studio SDI]:générer des lignes à partir de points

Merci beaucoup! en effet ça pourrait correspondre à mes besoins...
Je vais jeter un coup d'oeil à cette solution.
Je mettrais la solution en ligne.
Bonne journée!

Hors ligne

 

#4 Tue 11 June 2013 16:06

Anaïs Just
Participant actif
Lieu: Montreuil
Date d'inscription: 10 Dec 2007
Messages: 131

Re: [Talend Open Studio SDI]:générer des lignes à partir de points

Merci,

grâce à tes conseils j'ai pu créer mon shapefile en utilisant donc un méthode un peut "sioux" mais ça fonctionne parfaitement.
A partir d'un tableau comme ça:

Code:

[statistics] connecting to socket on port 3457
[statistics] connected

.---+-----------------------------+---------+-----------+--------+--------+--------.
|                                    tLogRow_3                                     |
|=--+-----------------------------+---------+-----------+--------+--------+-------=|
|id |identifiant_trait            |latitude |longitude  |altitude|date    |heure   |
|=--+-----------------------------+---------+-----------+--------+--------+-------=|
|1  |1102043Donnees brutesZ1f.Pts |45.33502 |-0.7449167 |0,00    |11/02/04|18:40:03|
|2  |1102043Donnees brutesZ1f.Pts |45.33385 |-0.74446666|0,00    |11/02/04|18:40:47|
|3  |1102043Donnees brutesZ1f.Pts |45.33265 |-0.74401665|0,00    |11/02/04|18:41:31|
|4  |1102043Donnees brutesZ1f.Pts |45.331467|-0.74355   |0,00    |11/02/04|18:42:15|
|5  |1102043Donnees brutesZ1f.Pts |45.330265|-0.74305   |0,00    |11/02/04|18:42:58|
|6  |1102043Donnees brutesZ1f.Pts |45.3291  |-0.74251664|0,00    |11/02/04|18:43:43|
|7  |1102043Donnees brutesZ1f.Pts |45.327965|-0.74188334|0,00    |11/02/04|18:44:27|
|8  |1102043Donnees brutesZ1f.Pts |45.3269  |-0.74115   |0,00    |11/02/04|18:45:11|
|9  |1102043Donnees brutesZ1f.Pts |45.3259  |-0.74050003|0,00    |11/02/04|18:45:54|
|10 |1102043Donnees brutesZ1f.Pts |45.3249  |-0.7399833 |0,00    |11/02/04|18:46:38|
|11 |1102043Donnees brutesZ1f.Pts |45.323868|-0.7394833 |0,00    |11/02/04|18:47:22|
|12 |1102043Donnees brutesZ1f.Pts |45.322834|-0.739     |0,00    |11/02/04|18:48:06|
|13 |1102043Donnees brutesZ1f.Pts |45.321766|-0.73855   |0,00    |11/02/04|18:48:50|
|14 |1102043Donnees brutesZ1f.Pts |45.320717|-0.7381    |0,00    |11/02/04|18:49:33|
|15 |1102043Donnees brutesZ1f.Pts |45.31965 |-0.73765   |0,00    |11/02/04|18:50:17|
|16 |1102043Donnees brutesZ1f.Pts |45.318565|-0.73723334|0,00    |11/02/04|18:51:01|
|17 |1102043Donnees brutesZ1f.Pts |45.31745 |-0.73683333|0,00    |11/02/04|18:51:44|
|18 |1102043Donnees brutesZ1f.Pts |45.316334|-0.73645   |0,00    |11/02/04|18:52:28|
|19 |1102043Donnees brutesZ1f.Pts |45.315235|-0.73604995|0,00    |11/02/04|18:53:13|
|20 |1102043Donnees brutesZ1f.Pts |45.314117|-0.7356167 |0,00    |11/02/04|18:53:57|
|21 |1102043Donnees brutesZ1f.Pts |45.313   |-0.73518336|0,00    |11/02/04|18:54:41|
|22 |1102043Donnees brutesZ1f.Pts |45.311882|-0.73471665|0,00    |11/02/04|18:55:24|
|23 |1102043Donnees brutesZ1f.Pts |45.31077 |-0.73425   |0,00    |11/02/04|18:56:08|
|24 |1102043Donnees brutesZ1f.Pts |45.31027 |-0.73401666|0,00    |11/02/04|18:56:30|
|25 |1202041Donnees brutesZ0.Pts  |45.234333|-0.70183337|0,00    |12/02/04|09:07:15|
|26 |1202041Donnees brutesZ0.Pts  |45.233334|-0.7018167 |0,00    |12/02/04|09:07:59|
|27 |1202041Donnees brutesZ0.Pts  |45.232334|-0.70166665|0,00    |12/02/04|09:08:43|
|28 |1202041Donnees brutesZ0.Pts  |45.2315  |-0.7015    |0,00    |12/02/04|09:09:26|
|29 |1202041Donnees brutesZ0.Pts  |45.2307  |-0.70136666|0,00    |12/02/04|09:10:11|
|30 |1202041Donnees brutesZ0.Pts  |45.229866|-0.7011833 |0,00    |12/02/04|09:10:55|
|31 |1202041Donnees brutesZ0.Pts  |45.229   |-0.70100003|0,00    |12/02/04|09:11:39|
|32 |1202041Donnees brutesZ0.Pts  |45.22817 |-0.70066667|0,00    |12/02/04|09:12:23|
|33 |1202041Donnees brutesZ0.Pts  |45.227333|-0.70049995|0,00    |12/02/04|09:13:06|
|34 |1202041Donnees brutesZ0.Pts  |45.226532|-0.70014995|0,00    |12/02/04|09:13:51|
|35 |1202041Donnees brutesZ0.Pts  |45.225666|-0.69983333|0,00    |12/02/04|09:14:35|
|36 |1202041Donnees brutesZ0.Pts  |45.224834|-0.6995    |0,00    |12/02/04|09:15:18|
|37 |1202041Donnees brutesZ0.Pts  |45.22395 |-0.6993167 |0,00    |12/02/04|09:16:03|
|38 |1202041Donnees brutesZ0.Pts  |45.22305 |-0.6990833 |0,00    |12/02/04|09:16:47|
|39 |1202041Donnees brutesZ0.Pts  |45.222168|-0.69883335|0,00    |12/02/04|09:17:3

1) Dans un premier tmap je créé des couples de points par simple concaténation de texte
row4.latitude +" "+row4.longitude ->row11.point

cela donne

Code:

[statistics] connecting to socket on port 3722
[statistics] connected
.---+-----------------------------+---------------------+--------+--------.
|                                tLogRow_4                                |
|=--+-----------------------------+---------------------+--------+-------=|
|id |identifiant_trait            |point                |date    |heure   |
|=--+-----------------------------+---------------------+--------+-------=|
|1  |1102043Donnees brutesZ1f.Pts |45.33502 -0.7449167  |11/02/04|18:40:03|
|2  |1102043Donnees brutesZ1f.Pts |45.33385 -0.74446666 |11/02/04|18:40:47|
|3  |1102043Donnees brutesZ1f.Pts |45.33265 -0.74401665 |11/02/04|18:41:31|
|4  |1102043Donnees brutesZ1f.Pts |45.331467 -0.74355   |11/02/04|18:42:15|
|5  |1102043Donnees brutesZ1f.Pts |45.330265 -0.74305   |11/02/04|18:42:58|
|6  |1102043Donnees brutesZ1f.Pts |45.3291 -0.74251664  |11/02/04|18:43:43|
|7  |1102043Donnees brutesZ1f.Pts |45.327965 -0.74188334|11/02/04|18:44:27|

2) dans un taggregate row j'aggrège en fonction de l'identifiant_trait ces couples de points (opération liste avec comme séparateur la virgule)

3) Dans un second tmap j'utilise ce champ d'aggrégation dans une variable comme indiqué dans ton exemple

"LINESTRING("+row11.point +")"

Je passe cette variable comme paramètre d'une fonction new Geometry d'une colonne de type geometry

4) en sortie j'utilise un shapefile! et voilà!

Dernière modification par Anaïs Just (Tue 11 June 2013 16:10)


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

Hors ligne

 

Pied de page des forums

Powered by FluxBB