C++ C/C+中的库+;用于位置搜索

C++ C/C+中的库+;用于位置搜索,c++,c,boost,C++,C,Boost,我有一套描述某个地方的纬度和经度。伦敦的纬度和经度设置如下(格式为(纬度,经度)): (36.47606,-119.44318),(43.63457,-123.09285),(36.48091,-119.44401),(10.36389,-66.73333),(-24.81667,31.05),(-24.76667,30.86667),(-24.3,30.58333) 现在我想用上面给出的点创建一个区域:这样,给定另一组(lat,long)点——我可以找出这两个点: 是否相交 一组点是否位于另一

我有一套描述某个地方的纬度和经度。伦敦的纬度和经度设置如下(格式为(纬度,经度)):

(36.47606,-119.44318),(43.63457,-123.09285),(36.48091,-119.44401),(10.36389,-66.73333),(-24.81667,31.05),(-24.76667,30.86667),(-24.3,30.58333)

现在我想用上面给出的点创建一个区域:这样,给定另一组(lat,long)点——我可以找出这两个点:

  • 是否相交
  • 一组点是否位于另一组点内
  • 我尝试使用Boost的R-树库实现同样的功能,但该库只允许我指定一个矩形,而我想用点形成一个多边形。C/C++中是否有一些库可以让我获得所需的功能。如果是,请有人举例说明。或者,如果我在使用Boost时出现了问题,那么有人能帮我纠正一下吗。

    有一个使用Boost geometry检测多边形相交的示例,其功能是:

    template<typename Geometry1, typename Geometry2>
    bool intersects(Geometry1 const & geometry1, Geometry2 const & geometry2)
    
    模板
    布尔相交(几何1常数和几何1,几何2常数和几何2)
    
    他们的例子可以概括为:

    boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
    boost::geometry::read_wkt("linestring(2 1,1 2,4 0)", line2);
    
    bool b = boost::geometry::intersects(line1, line2);
    
    std::cout << "Intersects: " << (b ? "YES" : "NO") << std::endl;
    
    boost::geometry::read_wkt(“linestring(1,2,3)”,第1行);
    boost::geometry::read_wkt(“linestring(2 1,1 2,4 0)”,第2行);
    bool b=boost::几何体::相交(第1行,第2行);
    std::cout有一个使用Boost geometry检测多边形相交的示例,其函数为:

    template<typename Geometry1, typename Geometry2>
    bool intersects(Geometry1 const & geometry1, Geometry2 const & geometry2)
    
    模板
    布尔相交(几何1常数和几何1,几何2常数和几何2)
    
    他们的例子可以概括为:

    boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
    boost::geometry::read_wkt("linestring(2 1,1 2,4 0)", line2);
    
    bool b = boost::geometry::intersects(line1, line2);
    
    std::cout << "Intersects: " << (b ? "YES" : "NO") << std::endl;
    
    boost::geometry::read_wkt(“linestring(1,2,3)”,第1行);
    boost::geometry::read_wkt(“linestring(2 1,1 2,4 0)”,第2行);
    bool b=boost::几何体::相交(第1行,第2行);
    std::cout有一个使用Boost geometry检测多边形相交的示例,其函数为:

    template<typename Geometry1, typename Geometry2>
    bool intersects(Geometry1 const & geometry1, Geometry2 const & geometry2)
    
    模板
    布尔相交(几何1常数和几何1,几何2常数和几何2)
    
    他们的例子可以概括为:

    boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
    boost::geometry::read_wkt("linestring(2 1,1 2,4 0)", line2);
    
    bool b = boost::geometry::intersects(line1, line2);
    
    std::cout << "Intersects: " << (b ? "YES" : "NO") << std::endl;
    
    boost::geometry::read_wkt(“linestring(1,2,3)”,第1行);
    boost::geometry::read_wkt(“linestring(2 1,1 2,4 0)”,第2行);
    bool b=boost::几何体::相交(第1行,第2行);
    std::cout有一个使用Boost geometry检测多边形相交的示例,其函数为:

    template<typename Geometry1, typename Geometry2>
    bool intersects(Geometry1 const & geometry1, Geometry2 const & geometry2)
    
    模板
    布尔相交(几何1常数和几何1,几何2常数和几何2)
    
    他们的例子可以概括为:

    boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
    boost::geometry::read_wkt("linestring(2 1,1 2,4 0)", line2);
    
    bool b = boost::geometry::intersects(line1, line2);
    
    std::cout << "Intersects: " << (b ? "YES" : "NO") << std::endl;
    
    boost::geometry::read_wkt(“linestring(1,2,3)”,第1行);
    boost::geometry::read_wkt(“linestring(2 1,1 2,4 0)”,第2行);
    bool b=boost::几何体::相交(第1行,第2行);
    
    无法解释这个问题和谷歌地图之间的关系?这些坐标是什么单位?当然不是度——或者不是伦敦……@Matstpeterson坐标是以度为单位的。我编造数据只是为了说明这一点,如果坐标不是伦敦的,你为什么要提到伦敦?还是说南非的伦敦?(或者加利福尼亚——我认为委内瑞拉没有伦敦)。如果你说“这是我刚编出来的一些随机坐标”]会让人们觉得你想回答你的问题是没有帮助的。解释一下这个问题和谷歌地图之间的关系?这些坐标是什么单位?当然不是度——或者不是伦敦……@Matstpeterson坐标是以度为单位的。我编造数据只是为了说明这一点,如果坐标不是伦敦的,你为什么要提到伦敦?还是说南非的伦敦?(或者加利福尼亚——我认为委内瑞拉没有伦敦)。如果你说“这是我刚编出来的一些随机坐标”]会让人们觉得你想回答你的问题是没有帮助的。解释一下这个问题和谷歌地图之间的关系?这些坐标是什么单位?当然不是度——或者不是伦敦……@Matstpeterson坐标是以度为单位的。我编造数据只是为了说明这一点,如果坐标不是伦敦的,你为什么要提到伦敦?还是说南非的伦敦?(或者加利福尼亚——我认为委内瑞拉没有伦敦)。如果你说“这是我刚编出来的一些随机坐标”]会让人们觉得你想回答你的问题是没有帮助的。解释一下这个问题和谷歌地图之间的关系?这些坐标是什么单位?当然不是度——或者不是伦敦……@Matstpeterson坐标是以度为单位的。我编造数据只是为了说明这一点,如果坐标不是伦敦的,你为什么要提到伦敦?还是说南非的伦敦?(或者加利福尼亚——我认为委内瑞拉没有伦敦)。如果你说“这是我刚编出来的一些随机坐标”]会更好,这样会让人们觉得你想回答你的问题是没有帮助的。