Hi,

 

I am trying to build a rtree index with a collection if waypoint (about 30.000) each represented by longitude and latitude. When I use Cartesian coordinates rtree.query works as expected. However the results are slightly wrong because of my use of longitude,latitude in the cartesian domain.

 

I then tried to refine the datatypes to use spherical_equatorial and geographic CoordinateSystem. Now I encounter two problems:

a)      With geographic, it does not compile.

b)      With spherical_equatorial query(nearest) gives clearly wrong results.

 

Do you have any clues on what I am doing wrong?

Attached is two images illustrating the query results. Search target is dot with label on it.

I am using boost 1.55.0 on Linux with g++ 4.4.3 (same result with 4.6.3).

 

typedef bg::model::point<double, 2, bg::cs::cartesian> geo_point;

typedef bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > geo_point_with_wrong_results;

typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > geo_point_does_not_compile;

typedef std::pair<geo_point, unsigned int> geo_vg_value;

 

void test() {

      iterate_over_all_waypoints (wp) {

         geo_point pt(wp->on, wp->lat);

         rtree.insert(std::make_pair(pt, wp->id));

      }

 

      std::vector<geo_vg_value> result;

      geo_point here(targetLat, targetLat);

      rtree.query(bgi::nearest(here, 20), std::back_inserter(result));

}

 

Kind regards,

Ola Martin