Page 1 sur 1
Besoin de conseille sur le traitements de données [résolu]
Publié : ven. 28/mai/2010 14:03
par MetalOS
Salut tout le monde, pour améliorer un de mes logiciels je doit traiter le contenus d'un fichier text, le voici :
Code : Tout sélectionner
Latitude : 42.683060112 - Longitude : 3.6909340445
Latitude : 42.6680327896 - Longitude : 3.6909340445
Latitude : 42.6530054672 - Longitude : 3.6909340445
Latitude : 42.6980874344 - Longitude : 3.7142856928
Latitude : 42.683060112 - Longitude : 3.7142856928
Latitude : 42.6680327896 - Longitude : 3.7142856928
Latitude : 42.6530054672 - Longitude : 3.7142856928
Latitude : 42.6379781448 - Longitude : 3.7142856928
Latitude : 42.683060112 - Longitude : 3.7376373411
Latitude : 42.6680327896 - Longitude : 3.7376373411
Latitude : 42.6530054672 - Longitude : 3.7376373411
Latitude : 46.8756830616 - Longitude : 5.6291208534
Latitude : 46.8606557392 - Longitude : 5.6291208534
Latitude : 46.8456284168 - Longitude : 5.6291208534
Latitude : 46.890710384 - Longitude : 5.6524725017
Latitude : 46.8756830616 - Longitude : 5.6524725017
Latitude : 46.8606557392 - Longitude : 5.6524725017
A savoir que sont contenus peut varier de 0 ligne à plusieurs centaine de lignes car je le consulte à intervalle régulier. Mon problème et que je doit lire ligne par ligne, et stocker dans une variable string la valeur de la latitude, et dans une autre variable string la valeur de la longitude, et faire ca pour chaque lignes.
Pensez vous que les listes chainées et une bonne solution ?
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 14:09
par Backup
...............
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 14:21
par MetalOS
C'est ce qui me semble le plus simple aussi Dobro. Pour le moment j'arrive juste à récupérer le dernier chiffre.
Code : Tout sélectionner
If ReadFile(1,"Donnees.txt")
Ligne.s = ReadString(1)
While Not Eof(1)
Ligne.s = ReadString(1)
For x=1 To 3 ;(nombre de :)
info.s = StringField(Ligne.s, x, ":") ;découpage de la chaîne Ligne.s
Next x
Debug info.s
Wend
CloseFile(1)
EndIf
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 14:40
par kernadec
bonjour MetalOs
tu trouveras des données d'atlas préformatée ici:
http://www.southville.net/astrolog32/fr/atlas.html
mais si le formatage te conviens pas
on peut facilement l'adapter avec un éditeur du style UTRAEDIT
Cordialement
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 14:46
par MetalOS
Non ce sont des données que je reçoit d'un site météo et que je doit traiter pour les positionner sur carte, d'où l'aide que tu ma fournit à ce sujet

.
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 15:30
par MetalOS
Bon j'avance tous doucement. J'arrive avec ce code à créer un fichier long.txt et un fichier lat.txt.
Dans le fichier long.txt ce trouve toute les longitude du fichier données.txt après découpage.
Dans le fichier lat.txt ce trouve toute les latitude du fichier données.txt après découpage.
Seulement dans le fichier lat.txt il me reste ca :
Alors qu'il devrait me rester uniquement ca :
Voici mon code :
Code : Tout sélectionner
If ReadFile(1,"Donnees.txt")
Ligne.s = ReadString(1)
;DateTime.s = StringField(Ligne,1,";")+" : "
; Debug DateTime.s
If CreateFile(2, "lat.txt")
If CreateFile(3, "long.txt")
While Not Eof(1)
Ligne.s = ReadString(1)
;Debug Ligne.s
For x=1 To 2 ;(nombre de :)
info.s = StringField(Ligne.s, x, ":") ;découpage de la chaîne Ligne.s
Next x
Debug info.s
WriteStringN(2, info.s)
For x=1 To 3 ;(nombre de :)
info2.s = StringField(Ligne.s, x, ":") ;découpage de la chaîne Ligne.s
Next x
Debug info2.s
WriteStringN(3, info2.s)
Wend
CloseFile(2)
EndIf
CloseFile(3)
EndIf
CloseFile(1)
EndIf
Je n'arrive pas à découper mieux pour les latitude.
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 15:46
par lepiaf31
Je ne sais pas si j'ai bien compris ton problème mais moi j'aurais fait comme ca (tout bêtement j'ai envi de dire) :
Code : Tout sélectionner
path.s = "Donnees.txt" ; <== chemin vers Donnees.txt
Structure Position
lat.s ;latitude
long.s ;longitude
EndStructure
NewList Positions.Position() ;liste des positions
;récupération des données
file = OpenFile(#PB_Any, path)
If file
While Eof(file) = 0
string.s = ReadString(file)
AddElement(Positions())
Positions()\lat = StringField(string, 3, " ")
Positions()\long = StringField(string, 7, " ")
Wend
CloseFile(file)
EndIf
;Affichage des données
ForEach Positions()
Debug "Latitude: "+Positions()\lat+" Longitude: "+Positions()\long
Next
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 15:48
par Backup
.................
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 16:06
par MetalOS
Re: Besoin de conseille sur le traitements de données
Publié : ven. 28/mai/2010 16:28
par lepiaf31
Dobro a écrit :
arf !! grillé par l'oiseau (sous Linux , je suis plus lent

)
Piaf 1 - 0 Pingouin xD
Re: Besoin de conseille sur le traitements de données [résol
Publié : ven. 28/mai/2010 16:29
par G-Rom
l'utilisation massive des maps est très bien pour le stockage :
Code : Tout sélectionner
Global Map RegionMap.s()
RegionMap("Aquitaine") = "97"
RegionMap("Auvergne") = "98"
RegionMap("Basse-Normandie") = "99"
RegionMap("Bourgogne") = "A1"
RegionMap("Bretagne") = "A2"
RegionMap("Centre") = "A3"
RegionMap("Champagne-Ardenne") = "A4"
RegionMap("Corse") = "A5"
RegionMap("Franche-Comte") = "A6"
RegionMap("Haute-Normandie") = "A7"
RegionMap("Ile-de-France") = "A8"
RegionMap("Languedoc-Roussillon") = "A9"
RegionMap("Limousin") = "B1"
RegionMap("Lorraine") = "B2"
RegionMap("Midi-Pyrenees") = "B3"
RegionMap("Nord-Pas-de-Calais") = "B4"
RegionMap("Pays de la Loire") = "B5"
RegionMap("Picardie") = "B6"
RegionMap("Poitou-Charentes") = "B7"
RegionMap("Provence-Alpes-Cote d'Azur") = "B8"
RegionMap("Rhone-Alpes") = "B9"
RegionMap("Alsace") = "C1"
Structure Ville
Latitude.s
Longitude.s
EndStructure
Structure Region
List Villes.Ville()
EndStructure
Structure Pays
List Regions.Region()
EndStructure
France.Pays
Region$ = RegionMap("Haute-Normandie")
France\Regions(Region$)\Villes("Le Havre")\Latitude = "1w17"
France\Regions(Region$)\Villes("Le Havre")\Longitude = "49n31"
Re: Besoin de conseille sur le traitements de données [résol
Publié : ven. 28/mai/2010 17:40
par Backup
ce que tu dis G-rom est vrais , pour touts ce qui a besoin d'etre indexé
mais pour juste des valeurs , ma fois les listes chainée c'est pas mal
par contre s'il voulait ajouter le nom de la ville avec les coordonnées , là ; ok !

Re: Besoin de conseille sur le traitements de données [résol
Publié : ven. 28/mai/2010 18:02
par lepiaf31
Complétement d'accord, c'est très pratique pour faire une application multi-langues. Il suffit de faire un truc du genre:
fichier anglais;
fichier francais:
et ensuite on charge le fichier que l'on veut en fonction de la langue:
Code : Tout sélectionner
Procedure lang_load(fileName.s, Map lang.s())
Protected file, string.s, count=0
If FileSize(fileName) > -1
file = OpenFile(#PB_Any, fileName)
If file
While Eof(file) = 0
string = ReadString(file)
If Left(string, 1) <> ";" ;ce n'est pas une ligne de commentaire
lang(Trim(StringField(string, 1, "="))) = Trim(StringField(string, 2, "="))
count+1
EndIf
Wend
CloseFile(file)
ProcedureReturn count
EndIf
EndIf
ProcedureReturn 0
EndProcedure
NewMap test.s()
lang_load("francais", test())
Debug test("hello")
et voilà ^^
Re: Besoin de conseille sur le traitements de données [résol
Publié : ven. 28/mai/2010 18:09
par G-Rom
Dobro a écrit :ce que tu dis G-rom est vrais , pour touts ce qui a besoin d'etre indexé
mais pour juste des valeurs , ma fois les listes chainée c'est pas mal
par contre s'il voulait ajouter le nom de la ville avec les coordonnées , là ; ok !

les fichiers contiennent énormément de valeurs , si tu as besoin de retrouvé rapidement une valeur ( les coordonnées d'une ville par exemple

)
tu n'as pas besoin de faire une itération jusqu'à ce que tu trouve ce que tu cherches.
Imagine que tu as 50.000 ville , et que en permanence tu as besoin de lire des valeurs , tu ne vas pas parcourir tes 50.000 éléments à chaque fois.
la map te permet sans itération de retrouvé ce que tu cherches , le hic , c'est que ca bouffe plus de ram , mais bon , le choix est vite vu !
