1. 概述

GDAL是使用PROJ进行坐标转换的,但是很容易出现转换不了的问题,这里总结一二,以供参考。

2. 详论

总的来说,要保证两个大致的方向不要出错。

2.1. 数据

PROJ库本身只是坐标转换的运算库,空间参考的定义依赖于我们传入的坐标参考的字符串。而GDAL则对所有的空间参考进行了管理,在GDAL编译好之后,都会有这个数据目录:

所以在通过GDAL进行转换之前,必要得配置这个目录,否则GDAL就会因为找不到坐标的空间参考数据而转换失败。

配置的办法有两个(二选一):

  1. 在系统中设置新的环境变量GDAL_DATA为上面提到的数据目录。
  2. 使用GDAL之前调用一次配置函数:CPLSetConfigOption("GDAL_DATA", "D:/Work/GDALBuild/gdal-2.4.4/install/data");

推荐使用第二种方法。

2.2. PROJ库

如果使用的PROJ库是动态库(一般情况下),需要注意的是PROJ库的名称。GDAL是以显式加载的方式使用PROJ,并且使用的默认名称为proj.dll。最近PROJ库开始疯狂飙版本号,所以编译出来的时候不一定是这个名字,所以最好把编译好的PROJ库名称修改成proj.dll,放在GDAL库的同目录下即可。

如果不想修改,有的资料提出,这个库文件的地址也是可以配置的:

std::string strPrjLibFullPath = (_T("C:\\projd.dll"));
CPLSetConfigOption("PROJSO",strPrjLibFullPath.c_str());

除此之外,还有个很好的办法是编译GDAL的时候使用PROJ的静态库,就不用担心路径和名称的问题了。

2.3. 参考

  1. C++的dll库,采用动态调用更好还是静态调用更好? - Eleven的回答 - 知乎
  2. gdal库中设置prj4库全路径的用法
  3. gdal库的三个使用心得

GDAL使用PROJ坐标转换相关问题的总结的更多相关文章

  1. 使用GDAL进行RPC坐标转换

    使用GDAL进行RPC坐标转换 对于高分辨率遥感卫星数据而言,目前几乎都提供了有理函数模型(RFM)来进行图像校正(SPOT系列提供了有理函数模型之外还提供了严格轨道模型).对遥感影像进行校正目前最常 ...

  2. python pip settools 安装基于源码 gdal安装需要c++相关库

  3. GDAL坐标转换

    一.引言 最近研究了一下GIS.测绘学的坐标转换的问题,感觉大部分资料专业性太强,上来就是一通专业性论述:但感觉对于相关从业者来说,其实不必了解那么多背景知识的:就通过GDAL这个工具,来简单总结下坐 ...

  4. GDAL的安装和配置(编译proj.4)

    1.下载地址 http://trac.osgeo.org/gdal/wiki/DownloadSource 下面是两个版本: http://pan.baidu.com/s/1bntuXER  (1.1 ...

  5. Centos7.3 编译安装GDAL以及Python的GDAL包

    参考: https://cryolite.iteye.com/blog/176382 https://blog.csdn.net/a13326021319/article/details/782505 ...

  6. Install GDAL in OpenSUSE 12.3 Linux

    Runtime Enviroment:Open SUSE Linux *i385 Notice:if any command disavliable ,you can copy the paramet ...

  7. Linux下编译GDAL

    一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...

  8. GDAL指定自定义的金字塔目录

    缘起 对于一般的遥感影像文件,金字塔文件默认都是与影像文件放在同一个目录下,金字塔文件名一般与源影像文件名相同,但后缀名不同.或者金字塔内建于影像内部,但这不是这里所涉及的. 在使用ArcGIS桌面版 ...

  9. cesium 学习(六) 坐标转换

    cesium 学习(六) 坐标转换 一.前言 在场景中,不管是二维还好还是三维也罢,只要涉及到空间概念都会提到坐标,坐标是让我们理解位置的一个非常有效的东西.有了坐标,我们能很快的确定位置相关关系,但 ...

  10. RedHat7下PostGIS源码安装

    本文介绍在RedHat7环境下安装使用PostGIS的流程. 1. PostgreSQL 1.1 yum安装PostgreSQL 这个比较简单,直接使用yum安装即可. $ sudo yum inst ...

随机推荐

  1. nacos-mysql.sql

    https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql # Nacos安装 /home/nacos ...

  2. 记一次有趣的 buffer overflow detected 问题分析

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   在我开发的一个实验和学习库中,在很久 ...

  3. IEDA-Maven项目开发步骤

    1. 打开IDEA 界面,选择"New Project" 2. 输入项目名称和基本信息 输入项目名称.选择存放路径.JDK版本.以及GroupId.ArtifactId. Grou ...

  4. 监控Mysql数据库

    Prometheus(普罗米修斯) 监控Mysql数据库: 这个是基于第一版本环境搭建的,需要部署prometheus: 服务器 IP地址 Prometheus服务器 192.168.1.22 被监控 ...

  5. 数据结构-线性表-双向链表(c++)

    与单循环链表类似,但析构函数需要注意 析构函数: 因为while循环的条件是p->next!=front,所以不能直接delete front: template<class T> ...

  6. java 处理常量字符串过长 & springboot 项目读取 resouces 文件夹下的文件内容

    长字符串起因 项目里面有一长串的加密字符串(最长的万多个字符),需要拼接作为参数发送给第三方. 如果我们使用 枚举 定义的话,idea 编译的时候就会出现编译报错 Error: java:常量字符串过 ...

  7. [Python急救站课程]健康食谱搭配

    健康食谱搭配输出 diet = ['西红柿', '花椰菜', '黄瓜', '牛排', '虾仁'] for x in range(0, 5): for y in range(0, 5): if not ...

  8. excel对比两个文档,判断范围内的取值是否在另一个列表内存在(vlookup函数的使用)

    背景: sheet1表为原始数据: sheet2表为新的数据副本, 目标是查询sheet2列表中是否存在sheet1表的数据,并且标记出来,且获取sheet2列表的一些数据至sheet1列表中,补充D ...

  9. 2022 暑期 DP 极限单兵计划

    前言 LJ 认为我的 DP 是我的一大弱项,便精心为我准备了 毒瘤DP 12 题(然后发现原来给的 T1 是个树套树,就变成 毒瘤DP 11 题 感谢 LJ 教练..... 为了方便复习,代码均格式化 ...

  10. 最小生成树(Kruskal Prim)

    最小生成树 (克鲁斯卡尔算法) Kruskal 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给 ...