| 1 | #include <iostream>
|
|---|
| 2 | #include <boost/geometry.hpp>
|
|---|
| 3 |
|
|---|
| 4 | namespace bg = boost::geometry;
|
|---|
| 5 | typedef bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > pt;
|
|---|
| 6 | typedef bg::model::linestring<pt> pt_line;
|
|---|
| 7 |
|
|---|
| 8 | int main()
|
|---|
| 9 | {
|
|---|
| 10 | const double earthRadius = 6371.0 * 1000.0;
|
|---|
| 11 | pt oslo(10.733557, 59.911923);
|
|---|
| 12 | pt sandvika(10.521812, 59.887214);
|
|---|
| 13 | pt trondheim(10.4, 63.43);
|
|---|
| 14 |
|
|---|
| 15 | // works correct
|
|---|
| 16 | double d1 = bg::distance(sandvika, trondheim, bg::strategy::distance::haversine<double>(earthRadius));
|
|---|
| 17 | double d2 = bg::distance(oslo, trondheim, bg::strategy::distance::haversine<double>(earthRadius));
|
|---|
| 18 | std::cout << "Sandvika-Trondheim " << d1 << std::endl;
|
|---|
| 19 | std::cout << "Oslo-Trondheim " << d2 << std::endl;
|
|---|
| 20 |
|
|---|
| 21 | pt_line ll;
|
|---|
| 22 | ll.push_back(oslo);
|
|---|
| 23 | ll.push_back(sandvika);
|
|---|
| 24 |
|
|---|
| 25 | // Does not work
|
|---|
| 26 | double d3 = bg::distance(trondheim, ll, bg::strategy::distance::haversine<double>(earthRadius));
|
|---|
| 27 | std::cout << "Oslo-Sandvika - Trondheim " << d3 << std::endl;
|
|---|
| 28 |
|
|---|
| 29 | return 0;
|
|---|
| 30 | }
|
|---|
| 31 |
|
|---|