1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| (* declare les types *)
type data = Node of node | Bounds of bounds | Ways of ways
and bounds = {minlat : float; minlon : float; maxlat : float; maxlon : float}
and node = {id : int; lat : float; lon : float}
and ways = {idw: int; nd: int list; tags: (string*string) list}
...
(* data contient une liste de type data, je vous épargne tous ce code qui lui marche *)
let data= extract "01_denver_lafayette.osm";;
(*a partir de data on refait des sous listes avec tous les sous types node et ways *)
let list_nodes = get_list_nodes data;;
let list_ways = get_list_ways data;;
(* a partir d une reference, obtient la latitude et la longitude et dessine
a partir du point courant au coord de la reference *)
let draw_ref i = let x = ref_to_lat list_nodes i in
let y = ref_to_lon list_nodes i in
Graphics.lineto (lat_to_coordo x) (lon_to_coordo y)
;;
(* prend une int list l avec des reference aux nodes
et dessine les differents points
attention avant de draw_points, bien positionner le curseur *)
let rec draw_points l = match l with
|[] -> ()
|hd::tail -> draw_ref hd;
draw_points tail
;;
(*prend une reference de noeud et deplace vers la coordonnee du noeud *)
let move_cursor nd = let x = ref_to_lat list_nodes nd in
let y = ref_to_lon list_nodes nd in
Graphics.moveto (lat_to_coordo x) (lon_to_coordo y)
;;
(* draw_ways prend une liste de ways et renvoie *)
(* L'erreur semblerait etre dans cette fonction *)
let rec draw_ways l = match l with
| [] -> ()
| w::tail -> move_cursor (List.hd (w.nd));
Graphics.set_color Graphics.red;
Graphics.set_line_width 50;
draw_points w.nd;
draw_ways tail
;;
let size = " "^(string_of_int(longueur))^"x"^(string_of_int(largeur));;
Graphics.open_graph size;;
Graphics.lineto 10 100;;
(* Graphics.close_graph ;;*)
draw_ways list_ways;;
(* je pense avoir mis tout les code essentiel car c'est assez long donc je voulais vous épargné le maximum *) |
Partager