GDAL中定義座標系

在GDAL中定義座標系,是很簡單的一件事情。主要參考類OGRSpatialReference。

根據官方的操作文檔(http://www.gdal.org/osr_tutorial.html),我們先定義一個座標系:

#include<gdal_priv.h>
#include <ogr_spatialref.h>


int main()
{
	GDALAllRegister();

        OGRSpatialReference oSRS;

        oSRS.SetGeogCS( "My geographic coordinate system",
                        "WGS_1984", 
                        "My WGS84 Spheroid", 
                        SRS_WGS84_SEMIMAJOR, SRS_WGS84_INVFLATTENING, 
                        "Greenwich", 0.0, 
                        "degree", SRS_UA_DEGREE_CONV);
}


但是上面的代碼運行卻發生了錯誤:error C2664: “OGRSpatialReference::SetGeogCS”: 不能將參數 9 從“const char [19]”轉換爲“double”。

很明顯,源碼中的SRS_UA_DEGREE_CONV定義的時候是 const char,這個時候不能轉爲double,參考gdal的bug說明(http://trac.osgeo.org/gdal/ticket/3775)。

修改後的源碼爲:

[code=cpp]
#include<gdal_priv.h>
#include <ogr_spatialref.h>




int main()
{
GDALAllRegister();


        OGRSpatialReference oSRS;


        oSRS.SetGeogCS( "My geographic coordinate system",
                        "WGS_1984", 
                        "My WGS84 Spheroid", 
                        SRS_WGS84_SEMIMAJOR, SRS_WGS84_INVFLATTENING, 
                        "Greenwich", 0.0, 
                        "degree", atof(SRS_UA_DEGREE_CONV));
}
[/code]

這樣,定義的座標系就不會有錯誤了。(未完待續,今天先睡了。)

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