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);
}

转载自:https://blog.csdn.net/u010771437/article/details/46780281

You may also like...