三種開源庫實現GIS座標轉換

1 Proj.4

通過座標系proj4字符串創建projPJ類型座標系,調用pj_transform函數實現。

其中座標系proj4字符串可在PROJ4-data文件夾中的epsg文件中搜索得到。

double x = dblSrcX;
double y = dblSrcY;
double z = dblSrcZ;

projPJ fRef, tRef;
tRef = pj_init_plus(strDstProj.c_str());
fRef = pj_init_plus(strSrcProj.c_str());

pj_transform(fRef, tRef, 1, 1, &x, &y, &z);

 

2 GDAL

GDAL底層座標轉換對Proj.4接口進行了封裝,設置座標系的方式變得更加多樣。支持常用名、EPSG碼、WKT、Proj4等多種方式。對座標轉換功能也進行了面向對象封裝。

double dbx = dbLon;
double dby = dbLat;
double dbz = dbHgt;

OGRSpatialReference fRef, tRef;
fRef.SetWellKnownGeogCS("WGS84");
//EPSG::4547 CGCS2000 / 3-degree Gauss-Kruger CM 114E 
tRef.importFromEPSG(4547);

OGRCoordinateTransformation *coordTrans;
coordTrans = OGRCreateCoordinateTransformation(&fRef, &tRef);
coordTrans->Transform(1, &dbx, &dby, &dbz);

3 osgEarth

osgEarth座標轉換進一步調用了GDAL的座標轉換接口,使用更加方便。

osg::ref_ptr<osgEarth::SpatialReference> pSrcSRS;
osg::ref_ptr<osgEarth::SpatialReference> pDstSRS;

pSrcSRS = osgEarth::SpatialReference::createFromPROJ4(strSrcProj);
pDstSRS = osgEarth::SpatialReference::createFromPROJ4(strDstProj);

osg::Vec3d vecOut;
pSrcSRS->transform(vecPositon, pDstSRS, vecOut);

以上三種GIS開源庫都可方便實現座標轉換。具體實踐過程中,可根據項目開源庫的依賴情況靈活選用。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章