示例 代码如下:

// convertor.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "convertor.h"
#include <projects.h>#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 唯一的应用程序对象void output_coordinates(const double coords[3][3], const char* msg, bool degtorad = false);CWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{int nRetCode = 0;HMODULE hModule = ::GetModuleHandle(NULL);if (hModule != NULL){if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0)){_tprintf(_T("错误:  MFC 初始化失败\n"));nRetCode = 1;}else{}}else{_tprintf(_T("错误:  GetModuleHandle 失败\n"));nRetCode = 1;}projPJ lcc = pj_init_plus(" +proj=lcc +x_0=0 +y_0=0 +lat_0=0 +lon_0=105 +lat_1=30 +lat_2=62 +a=6378245 +b=6356863.01877305 +no_defs");//projPJ lcc = pj_init_plus(" +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378245 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs");projPJ lonlat1 = pj_init_plus(" +proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +no_defs");projPJ lonlat2 = pj_init_plus(" +proj=longlat +datum=WGS84 +no_defs");projPJ merc = pj_init_plus(" +proj=merc +x_0=0 +y_0=0 +lon_0=0 +lat_1=0 +datum=WGS84 +no_defs");double xyz1[3][3] = { { 1000000, 1100000, 1 }, { 2000000, 2200000, 2 }, { 3000000, 3300000, 3 } };double xyz2[3][3] = { { 1000000, 1100000, 1 }, { 2000000, 2200000, 2 }, { 3000000, 3300000, 3 } };int ret = 0;if (lcc == nullptr || lonlat1 == nullptr || lonlat2 == nullptr || merc == nullptr){printf_s("坐标系初始化失败。\n");goto zanting;}output_coordinates(xyz1, "北京54投影坐标系");for (int i = 0; i < 3; i++)ret = pj_transform(lcc, lonlat1, 1, 1, &xyz1[i][0], &xyz1[i][1], &xyz1[i][2]);output_coordinates(xyz1, "北京54投影坐标系转大地坐标系", true);output_coordinates(xyz1, "北京54投影坐标系转大地坐标系");for (int i = 0; i < 3; i++)pj_geodetic_to_geocentric(lcc->a, lcc->es, 1, 1, &xyz1[i][0], &xyz1[i][1], &xyz1[i][2]);output_coordinates(xyz1, "大地坐标系转空间直角坐标系");for (int i = 0; i < 3; i++)pj_geocentric_to_geodetic(merc->a, merc->es, 1, 1, &xyz1[i][0], &xyz1[i][1], &xyz1[i][2]);output_coordinates(xyz1, "空间直角坐标系转大地坐标系", true);for (int i = 0; i < 3; i++){xyz1[i][0] *= DEG_TO_RAD;xyz1[i][1] *= DEG_TO_RAD;ret = pj_transform(lonlat2, merc, 1, 1, &xyz1[i][0], &xyz1[i][1], &xyz1[i][2]);}output_coordinates(xyz1, "大地坐标系转Mecator投影坐标系");for (int i = 0; i < 3; i++)ret = pj_transform(lcc, merc, 1, 1, &xyz2[i][0], &xyz2[i][1], &xyz2[i][2]);output_coordinates(xyz2, "北京54投影坐标系直接转Mecator投影坐标系");
zanting:_tsystem(_T("pause"));return nRetCode;
}void output_coordinates(const double coords[3][3], const char* msg, bool degtorad)
{printf_s("=================================================\n");printf_s(msg);printf_s("\n");for (int i = 0; i < 3; i++){if (degtorad)printf_s("%16f,%16f,%16f\n", coords[i][0] / DEG_TO_RAD, coords[i][1] / DEG_TO_RAD, coords[i][2]);elseprintf_s("%16f,%16f,%16f\n", coords[i][0], coords[i][1], coords[i][2]);}printf_s("=================================================\n");
}

代码中有很多中文标注,应该不用多讲吧。

用Proj.4进行坐标系转换(以北京54坐标系转WGS84投影坐标系为例)相关推荐

  1. 北京54和西安80投影坐标系,高斯-克吕格投影

    1.首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为 地理坐标系统,是以经纬度为地图的存储单位的.很明显, ...

  2. 西安80转换成北京独立计算机,关于坐标转换及坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解...

    各种坐标系让人头晕,坐标转换让人头疼.今天我们来详细讲解下关于坐标转换及坐标系的理解,全是经验之谈希望对你有所帮助,让你对坐标问题不再头疼. 坐标转换 每个项目收集到的资料并不一定都是一致的,如坐标类 ...

  3. bigemap如何转换成北京54坐标系?

    注意:投影转换成54坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准. 第一步:选择无偏移地图源,下载你所需要的卫星图像. 第二步:选择BIGEMAP软 ...

  4. 我国三大常用坐标系区别(北京54、西安80和WGS-84)(转)

    [size=medium]1.北京54坐标系(BJZ54) 北京54坐标系为参心大地坐标系,大地上的一点可用经度L54.纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐 ...

  5. 地球坐标系与投影方式的理解(关于北京54,西安80,WGS84;高斯,兰勃特,墨卡托投影)

    一.地球模型 地球是一个近似椭球体,测绘时用椭球模型逼近,这个模型叫做参考椭球,如下图: 赤道是一个半径为a的近似圆,任一圈经线是一个半径为b的近似圆.a称为椭球的长轴半径,b称为椭球的短轴半径. a ...

  6. 各坐标系转换,百度、高德、wgs84、cgcs2000坐标系互转

    首先申明:转换方法都是网上找的,但是都不全,整理了一下 其中wgs84.cgcs2000互转结果有差异,也就是完全还原不了 先附上百度.高德.wgs84互转方法 js /*** Created by ...

  7. 怎么一键发布 WGS84 投影坐标系的卫星地图

    一.一键发布 <水经注地图发布服务中件间>安装完成后,会自动安装WeServer服务,并自动启中间件服务管理界面. 点击"WGS84 影像一键发布"按钮,如果显示以下提 ...

  8. neu坐标系和xyz坐标系转换_航测必知的坐标系详解和转换关系

    在航测中可能经常会遇到不知道如何选择正确的坐标系和坐标系之间的转换,现在我们针对于航测坐标系做详细的讲解. 首先简单介绍一下航测中地理坐标系.投影坐标系以及地图投影的概念:地理坐标系:为球面坐标. 参 ...

  9. ENVI定义坐标系及坐标系转换

    一.实验名称: 定义坐标系及坐标系转换 二.实验目的: 熟悉ENVI软件中的基本操作和设置,掌握自定义坐标系的方法,能够对数据进行坐标系转换. 三.实验内容和要求: 1.添加椭球体文件. 2.添加基准 ...

  10. 地理坐标系与投影坐标系的区别以及投影变换与定义投影的区别

    本文仅为arcgis转换经纬度和投影坐标教程,mapgis版本详见<转换经纬度和投影坐标excel导入arcgisl>,还有<新建或更改矢量坐标系> 在"数据管理&q ...

最新文章

  1. 解决阿里云无法正常使用samba的问题【转】
  2. 被困69天后,智利矿工重返人间
  3. 机器学习 KNN算法_0 丐版(matlab实现)
  4. thinkphp-1
  5. 【Manacher】最长双回文串(luogu 4555)
  6. Spring Batch –用JavaConfig替换XML作业配置
  7. linux查看杀死进程
  8. [芦半山]Binder的异常机制
  9. mysql批量删除进程_小程序批量删除云数据库里的数据
  10. JavaScript初学者系列一:JavaScript基础(上)
  11. 和付费网盘说再见,自己起个网盘不香吗?| Java 开源项目
  12. python读取txt矩阵数据(转换为excel格式利用pandas读取)
  13. Andriod获取本机ip地址
  14. 需求调第四篇--常用的调研工作方法
  15. IDEA初学者 常用注解意思
  16. JS中的attribute和property的区别和联系
  17. 软件也兼职 Word2003的另类玩法(转)
  18. 甘特图在项目管理中的应用
  19. The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path类似问题简单解决方案
  20. 实验吧-证明自己吧(超详细)

热门文章

  1. java 控制层和业务层,控制层、业务层和数据访问层
  2. Android 项目必备(三十二)-->APP 项目产品介绍
  3. java中raiseSalary_用Java编写常用的工资管理系统,目的是把每个人的工资上涨百分之五...
  4. 原生PHP配置paypal支付接口成功!不用Composer!
  5. 物联网导论知识部分梳理
  6. matlab 排序 cell,MATLAB中对cell数组排序
  7. Kubernetes详细笔记
  8. 【AI视野·今日Robot 机器人论文速览 第二十三期】Tue, 28 Sep 2021
  9. 《微电子概论》 PN结与二极管
  10. 热切换Log4j日志级别