Besoin de conseille sur le traitements de données [résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Besoin de conseille sur le traitements de données [résolu]

Message 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 ?
Dernière modification par MetalOS le ven. 28/mai/2010 16:07, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Besoin de conseille sur le traitements de données

Message par Backup »

...............
Dernière modification par Backup le sam. 01/oct./2011 11:39, modifié 1 fois.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Besoin de conseille sur le traitements de données

Message 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 
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Besoin de conseille sur le traitements de données

Message 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
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Besoin de conseille sur le traitements de données

Message 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 :wink: .
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Besoin de conseille sur le traitements de données

Message 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 :

Code : Tout sélectionner

42.683060112 - Longitude 
Alors qu'il devrait me rester uniquement ca :

Code : Tout sélectionner

42.683060112
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.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Besoin de conseille sur le traitements de données

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Besoin de conseille sur le traitements de données

Message par Backup »

.................
Dernière modification par Backup le sam. 01/oct./2011 11:38, modifié 1 fois.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Besoin de conseille sur le traitements de données

Message par MetalOS »

Putain oui comment je me prend la tête pour rien 8O :oops: :oops: :oops:

Merci les gars.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Besoin de conseille sur le traitements de données

Message par lepiaf31 »

Dobro a écrit : arf !! grillé par l'oiseau (sous Linux , je suis plus lent :lol: )
Piaf 1 - 0 Pingouin xD
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Besoin de conseille sur le traitements de données [résol

Message 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"
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Besoin de conseille sur le traitements de données [résol

Message 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 ! :)
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Besoin de conseille sur le traitements de données [résol

Message 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;

Code : Tout sélectionner

hello = hello
bye = bye
fichier francais:

Code : Tout sélectionner

hello = bonjour
bye = au revoir
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à ^^
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Besoin de conseille sur le traitements de données [résol

Message 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 ! :D
Répondre