关闭

GDAL地理与投影坐标系

868人阅读 评论(0) 收藏 举报
#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);
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83284次
    • 积分:1801
    • 等级:
    • 排名:千里之外
    • 原创:98篇
    • 转载:8篇
    • 译文:0篇
    • 评论:15条
    博客专栏
    最新评论