经纬度坐标下求多边形的面积

来源:互联网 发布:vb msdn中文版下载 编辑:程序博客网 时间:2024/06/10 07:14

经纬度坐标下求多边形的面积,mapinfo的值作为参考,试了几种投影都不行,原来应该计算球面坐标的面积。

最后采用了boost库的方法求面积。

对boost不熟悉的可以参考一下:

#include <boost/geometry.hpp>#include <boost/geometry/geometries/point_xy.hpp>#include <boost/geometry/geometries/polygon.hpp>namespace bg = boost::geometry;#define MAPINFO_SEMIMAJOR   6370997.0typedef bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > DPoint;typedef boost::geometry::model::polygon<DPoint> APolygon;using boost::geometry::append;double GetArea(vector<SGeoPoint>& vPt){    APolygon sph_poly;for (size_t i = 0; i < vPt.size(); i++){append(sph_poly,DPoint(vPt[i].x,vPt[i].y));}double area = bg::area(sph_poly);return fabs(area) *MAPINFO_SEMIMAJOR*MAPINFO_SEMIMAJOR;}


0 0
原创粉丝点击