Bonjour , j'ai un projet à faire en Ocaml , mais je n'ai pas su faire quelques trucs ....
le but de mon projet est de réaliser un logiciel de rendu ( ou renderer ) de cartes en OCaml, capable de lire un fragment de carte au format XML standard d'OpenStreetMap et de l'afficher à l'ecran en utilisant des primitives portables de dessin.
j'ai un exemple d'un fichier.osm : de galerie lafayette.osm :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="UTF-8"?> <osm version="0.6" generator="CGImap 0.0.2"> <bounds minlat="39.7492900" minlon="-104.9737800" maxlat="39.7525610" maxlon="-104.9693810"/> <node id="1321042431" lat="39.7519707" lon="-104.9739674" user="StellanL" uid="28775" visible="true" version="1" changeset="8411074" timestamp="2011-06-11T23:41:37Z"/> <node id="176096518" lat="39.7507340" lon="-104.9708826" user="StellanL" uid="28775" visible="true" version="6" changeset="8411074" timestamp="2011-06-11T23:41:39Z"/> <node id="176071903" lat="39.7532291" lon="-104.9696574" user="StellanL" uid="28775" visible="true" version="5" changeset="8411074" timestamp="2011-06-11T23:41:45Z"/> <node id="176085445" lat="39.7664884" lon="-104.9733488" user="DavidJDBA" uid="139555" visible="true" version="10" changeset="6591862" timestamp="2010-12-09T04:43:03Z"/> <node id="176085406" lat="39.7477190" lon="-104.9727580"
voici ce que j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #directory "+xml-light";; #load"xml-light.cma";; let x = parse_file" 01_denver_lafayette.osm";; type xml = | element of (string * string) list * xml list) |PCData of string type node ={ id : int ; lan : int ; lon int } type bounds_of_xml = { minlan : string ; minlon:string ; maxlan : string ; maxlon : string } let bounds_of_xml = function |Xml.Element("minlan" ,[],[])->Xml.Element.Bounds.minlan |Xml.Element("minlan" ,[],[])->Xml.Element.Bounds.minlan
Donc ça m'affiche des erreurs !!
je veux extraire les données de ce fichier .Osm ( que j'ai déjà parsé) et les mettre dans des listes
par ex : pour bounds ( dans le fichier .Xml ) contient 4 informations : minlan , minlon , maxlan , maxlon. et il n'y a qu'un seul " BOUNDS " dans le fichier ( pas la peine d'utiliser une fonction récursive !!)
comment faire pour extraire ces données ? dont j'aurai besoin après pour dessiner .
Merci.
Partager