1. 程式人生 > >GDAL地理與投影座標系

GDAL地理與投影座標系

#include "ogr_p.h"
int main()
{
	int a=0;

	/**************定義地理座標系**************/
	OGRSpatialReference oSRS;
	oSRS.SetGeogCS("My GCS",//設定定義的地理座標系的名字
		"WGS_1984",
		"My WGS84 Sopheroid",
		SRS_WGS84_SEMIMAJOR,SRS_WGS84_INVFLATTENING,
		"Greenwich",0.0,
		"degree",0.0174532925199433);

	oSRS.SetWellKnownGeogCS("WGS84");

	//oSRS.SetWellKnownGeogCS("EPSG:4326");

	//為了方便和其他庫進行互動,OGRSpatialReference提供了與OpenGIS的WKT格式的相互轉換
	//OGRSpatialReference可以使用一個WKT來進行初始化(importFromWKT()),或者將裡面的資訊匯出為WKT格式(exportToWkt)

	char * pszWKT=NULL;
	char * pszTemp=NULL;
	oSRS.exportToWkt(&pszWKT);
	oSRS.exportToWkt(&pszTemp);

	oSRS.importFromWkt(&pszTemp);

	char* pszPrettyWKT=NULL;
	oSRS.exportToPrettyWkt(&pszPrettyWKT);

	printf("普通WKT:\n%s\n\n",pszWKT);
	printf("漂亮WKT:\n%s\n\n",pszPrettyWKT);

	/**************定義投影座標系**************/
	OGRSpatialReference projSRS;
	projSRS.SetProjCS("UTM 17(WGS84) in northern hemisphere");//設定投影座標系的名稱
	projSRS.SetWellKnownGeogCS("WGS84");//定義該投影座標系所在的地理座標系
	projSRS.SetUTM(17,TRUE);//設定投影座標系的投影引數資訊
	//一般來說,應該先設定地理座標系,再設定投影座標系

	char *pszProjWKT=NULL;
	char *pszProjPrettyWKT=NULL;
	projSRS.exportToWkt(&pszProjWKT);
	projSRS.exportToPrettyWkt(&pszProjPrettyWKT);

	printf("普通WKT:\n%s\n\n",pszProjWKT);
	printf("漂亮WKT:\n%s\n",pszProjPrettyWKT);


	/**************解析空間參考資訊**************/
	/*
	OGRSpatialReference::IsProjected()  
	OGRSpatialReference::IsGeographic()判斷該空間參考是地理座標系還是投影座標系

	OGRSpatialReference::GetSemiMajor()獲取參考橢球的長半軸
	OGRSpatialReference::GetSemiMinor()獲取參考橢球的短半軸
	OGRSpatialReference::GetInvFlattening()獲取參考橢球的扁率的倒數

	OGRSpatialReference::GetAttrValue()方法獲取PROJCS、GEOGCS、DATUM、SPHEROID和PROJECTION的名稱字串
	OGRSpatialReference::GetProjParm()獲取投影引數資訊
	OGRSpatialReference::GetLinearUnits()獲取長度單位型別並將其轉換為米

	*/
	scanf("%d",&a);
}