let string_of_node_id = function
    (id, None-> string_of_id id
  | (id, Some (id2, None)) ->
      Printf.sprintf "%s:%s"
        (string_of_id id)
        (string_of_id id2)
  | (id, Some (id2, Some c)) ->
      Printf.sprintf "%s:%s:%s"
        (string_of_id id)
        (string_of_id id2)
        (string_of_compass_pt c)