/***************************************************************************
* Project: osmdata
* File: trace-osm.h
* Language: C++
*
* osmdata is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* osmdata is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* osm-router. If not, see .
*
* Author: Mark Padgham
* E-Mail: mark.padgham@email.com
*
* Description: Functions to trace OSM ways and store in C++ dynamic arrays
* (no RCpp here).
*
* Limitations:
*
* Dependencies: none (rapidXML header included in osmdata)
*
* Compiler Options: -std=c++11
***************************************************************************/
#pragma once
#include "common.h"
void trace_relation (Relations::const_iterator &itr_rel,
osm_str_vec &relation_ways,
std::vector > & relation_kv);
void trace_multipolygon (Relations::const_iterator &itr_rel, const Ways &ways,
const Nodes &nodes, double_arr2 &lon_vec, double_arr2 &lat_vec,
string_arr2 &rowname_vec, std::vector &ids);
void trace_multilinestring (Relations::const_iterator &itr_rel,
const std::string role, const Ways &ways, const Nodes &nodes,
double_arr2 &lon_vec, double_arr2 &lat_vec, string_arr2 &rowname_vec,
std::vector &ids);
osmid_t trace_way (const Ways &ways, const Nodes &nodes, osmid_t first_node,
const osmid_t &wayi_id, std::vector &lons,
std::vector &lats, std::vector &rownames,
const bool append);