First round of lat,lng -> lng,lat switcheroo
This commit is contained in:
@@ -73,10 +73,10 @@ void EdgeBasedGraphFactory::GetEdgeBasedNodes(std::vector<EdgeBasedNode> &nodes)
|
||||
#ifndef NDEBUG
|
||||
for (const EdgeBasedNode &node : m_edge_based_node_list)
|
||||
{
|
||||
BOOST_ASSERT(m_node_info_list.at(node.u).lat != INT_MAX);
|
||||
BOOST_ASSERT(m_node_info_list.at(node.u).lon != INT_MAX);
|
||||
BOOST_ASSERT(m_node_info_list.at(node.v).lon != INT_MAX);
|
||||
BOOST_ASSERT(m_node_info_list.at(node.v).lat != INT_MAX);
|
||||
BOOST_ASSERT(
|
||||
util::Coordinate(m_node_info_list[node.u].lon, m_node_info_list[node.u].lat).IsValid());
|
||||
BOOST_ASSERT(
|
||||
util::Coordinate(m_node_info_list[node.v].lon, m_node_info_list[node.v].lat).IsValid());
|
||||
}
|
||||
#endif
|
||||
using std::swap; // Koenig swap
|
||||
@@ -424,8 +424,7 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
|
||||
const QueryNode &from = m_node_info_list[previous];
|
||||
const QueryNode &to = m_node_info_list[target_node.node_id];
|
||||
const double segment_length =
|
||||
util::coordinate_calculation::greatCircleDistance(from.lat, from.lon,
|
||||
to.lat, to.lon);
|
||||
util::coordinate_calculation::greatCircleDistance(from, to);
|
||||
|
||||
edge_segment_file.write(reinterpret_cast<const char *>(&to.node_id),
|
||||
sizeof(to.node_id));
|
||||
@@ -1003,10 +1002,9 @@ QueryNode EdgeBasedGraphFactory::getRepresentativeCoordinate(const NodeID src,
|
||||
{
|
||||
if (m_compressed_edge_container.HasEntryForID(via_eid))
|
||||
{
|
||||
util::FixedPointCoordinate prev = util::FixedPointCoordinate(
|
||||
m_node_info_list[INVERTED ? tgt : src].lat,
|
||||
m_node_info_list[INVERTED ? tgt : src].lon),
|
||||
cur;
|
||||
util::Coordinate prev = util::Coordinate(m_node_info_list[INVERTED ? tgt : src].lon,
|
||||
m_node_info_list[INVERTED ? tgt : src].lat),
|
||||
cur;
|
||||
// walk along the edge for the first 5 meters
|
||||
const auto &geometry = m_compressed_edge_container.GetBucketReference(via_eid);
|
||||
double dist = 0;
|
||||
@@ -1035,8 +1033,8 @@ QueryNode EdgeBasedGraphFactory::getRepresentativeCoordinate(const NodeID src,
|
||||
for (auto itr = geometry.rbegin(), end = geometry.rend(); itr != end; ++itr)
|
||||
{
|
||||
const auto compressed_node = *itr;
|
||||
cur = util::FixedPointCoordinate(m_node_info_list[compressed_node.node_id].lat,
|
||||
m_node_info_list[compressed_node.node_id].lon);
|
||||
cur = util::Coordinate(m_node_info_list[compressed_node.node_id].lon,
|
||||
m_node_info_list[compressed_node.node_id].lat);
|
||||
this_dist = util::coordinate_calculation::haversineDistance(prev, cur);
|
||||
if (dist + this_dist > DESIRED_SEGMENT_LENGTH)
|
||||
{
|
||||
@@ -1047,7 +1045,7 @@ QueryNode EdgeBasedGraphFactory::getRepresentativeCoordinate(const NodeID src,
|
||||
prev = cur;
|
||||
prev_id = compressed_node.node_id;
|
||||
}
|
||||
cur = util::FixedPointCoordinate(m_node_info_list[src].lat, m_node_info_list[src].lon);
|
||||
cur = util::Coordinate(m_node_info_list[src].lon, m_node_info_list[src].lat);
|
||||
this_dist = util::coordinate_calculation::haversineDistance(prev, cur);
|
||||
return selectBestCandidate(src, dist + this_dist, prev_id, dist);
|
||||
}
|
||||
@@ -1056,8 +1054,8 @@ QueryNode EdgeBasedGraphFactory::getRepresentativeCoordinate(const NodeID src,
|
||||
for (auto itr = geometry.begin(), end = geometry.end(); itr != end; ++itr)
|
||||
{
|
||||
const auto compressed_node = *itr;
|
||||
cur = util::FixedPointCoordinate(m_node_info_list[compressed_node.node_id].lat,
|
||||
m_node_info_list[compressed_node.node_id].lon);
|
||||
cur = util::Coordinate(m_node_info_list[compressed_node.node_id].lon,
|
||||
m_node_info_list[compressed_node.node_id].lat);
|
||||
this_dist = util::coordinate_calculation::haversineDistance(prev, cur);
|
||||
if (dist + this_dist > DESIRED_SEGMENT_LENGTH)
|
||||
{
|
||||
@@ -1068,7 +1066,7 @@ QueryNode EdgeBasedGraphFactory::getRepresentativeCoordinate(const NodeID src,
|
||||
prev = cur;
|
||||
prev_id = compressed_node.node_id;
|
||||
}
|
||||
cur = util::FixedPointCoordinate(m_node_info_list[tgt].lat, m_node_info_list[tgt].lon);
|
||||
cur = util::Coordinate(m_node_info_list[tgt].lon, m_node_info_list[tgt].lat);
|
||||
this_dist = util::coordinate_calculation::haversineDistance(prev, cur);
|
||||
return selectBestCandidate(tgt, dist + this_dist, prev_id, dist);
|
||||
}
|
||||
|
||||
@@ -301,7 +301,7 @@ void ExtractionContainers::PrepareEdges(lua_State *segment_state)
|
||||
{
|
||||
util::SimpleLogger().Write(LogLevel::logWARNING)
|
||||
<< "Found invalid node reference "
|
||||
<< OSMNodeID_to_uint64_t(edge_iterator->result.osm_target_id);
|
||||
<< static_cast<uint64_t>(edge_iterator->result.osm_target_id);
|
||||
edge_iterator->result.target = SPECIAL_NODEID;
|
||||
++edge_iterator;
|
||||
continue;
|
||||
@@ -314,12 +314,14 @@ void ExtractionContainers::PrepareEdges(lua_State *segment_state)
|
||||
|
||||
BOOST_ASSERT(edge_iterator->result.osm_target_id == node_iterator->node_id);
|
||||
BOOST_ASSERT(edge_iterator->weight_data.speed >= 0);
|
||||
BOOST_ASSERT(edge_iterator->source_coordinate.lat != std::numeric_limits<int>::min());
|
||||
BOOST_ASSERT(edge_iterator->source_coordinate.lon != std::numeric_limits<int>::min());
|
||||
BOOST_ASSERT(edge_iterator->source_coordinate.lat !=
|
||||
util::FixedLatitude(std::numeric_limits<int>::min()));
|
||||
BOOST_ASSERT(edge_iterator->source_coordinate.lon !=
|
||||
util::FixedLongitude(std::numeric_limits<int>::min()));
|
||||
|
||||
const double distance = util::coordinate_calculation::greatCircleDistance(
|
||||
edge_iterator->source_coordinate.lat, edge_iterator->source_coordinate.lon,
|
||||
node_iterator->lat, node_iterator->lon);
|
||||
edge_iterator->source_coordinate,
|
||||
util::Coordinate(node_iterator->lon, node_iterator->lat));
|
||||
|
||||
if (util::lua_function_exists(segment_state, "segment_function"))
|
||||
{
|
||||
|
||||
@@ -39,8 +39,8 @@ void ExtractorCallbacks::ProcessNode(const osmium::Node &input_node,
|
||||
const ExtractionNode &result_node)
|
||||
{
|
||||
external_memory.all_nodes_list.push_back(
|
||||
{static_cast<int>(input_node.location().lat() * COORDINATE_PRECISION),
|
||||
static_cast<int>(input_node.location().lon() * COORDINATE_PRECISION),
|
||||
{util::toFixed(util::FloatLongitude(input_node.location().lon())),
|
||||
util::toFixed(util::FloatLatitude(input_node.location().lat())),
|
||||
OSMNodeID(input_node.id()), result_node.barrier, result_node.traffic_lights});
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,16 @@ auto get_value_by_key(T const &object, const char *key) -> decltype(object.get_v
|
||||
return object.get_value_by_key(key, "");
|
||||
}
|
||||
|
||||
template <class T> double latToDouble(T const &object)
|
||||
{
|
||||
return static_cast<double>(util::toFloating(object.lat));
|
||||
}
|
||||
|
||||
template <class T> double lonToDouble(T const &object)
|
||||
{
|
||||
return static_cast<double>(util::toFloating(object.lon));
|
||||
}
|
||||
|
||||
// Error handler
|
||||
int luaErrorCallback(lua_State *state)
|
||||
{
|
||||
@@ -108,18 +118,18 @@ void ScriptingEnvironment::InitLuaState(lua_State *lua_state)
|
||||
.def("get_value_by_key", &get_value_by_key<osmium::Way>)
|
||||
.def("id", &osmium::Way::id),
|
||||
luabind::class_<InternalExtractorEdge>("EdgeSource")
|
||||
.property("source_coordinate", &InternalExtractorEdge::source_coordinate)
|
||||
.property("weight_data", &InternalExtractorEdge::weight_data),
|
||||
.def_readonly("source_coordinate", &InternalExtractorEdge::source_coordinate)
|
||||
.def_readwrite("weight_data", &InternalExtractorEdge::weight_data),
|
||||
luabind::class_<InternalExtractorEdge::WeightData>("WeightData")
|
||||
.def_readwrite("speed", &InternalExtractorEdge::WeightData::speed),
|
||||
luabind::class_<ExternalMemoryNode>("EdgeTarget")
|
||||
.property("lat", &ExternalMemoryNode::lat)
|
||||
.property("lon", &ExternalMemoryNode::lon),
|
||||
luabind::class_<util::FixedPointCoordinate>("Coordinate")
|
||||
.property("lat", &util::FixedPointCoordinate::lat)
|
||||
.property("lon", &util::FixedPointCoordinate::lon),
|
||||
.property("lon", &lonToDouble<ExternalMemoryNode>)
|
||||
.property("lat", &latToDouble<ExternalMemoryNode>),
|
||||
luabind::class_<util::Coordinate>("Coordinate")
|
||||
.property("lon", &lonToDouble<util::Coordinate>)
|
||||
.property("lat", &latToDouble<util::Coordinate>),
|
||||
luabind::class_<RasterDatum>("RasterDatum")
|
||||
.property("datum", &RasterDatum::datum)
|
||||
.def_readonly("datum", &RasterDatum::datum)
|
||||
.def("invalid_data", &RasterDatum::get_invalid)];
|
||||
|
||||
if (0 != luaL_dofile(lua_state, file_name.c_str()))
|
||||
|
||||
Reference in New Issue
Block a user