GDAL使用PROJ坐标转换相关问题的总结

简介: GDAL使用PROJ坐标转换相关问题的总结

GDAL使用PROJ坐标转换相关问题的总结

目录

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

标签: 坐标转换 , Proj4 , GDAL


相关文章
|
Java 开发工具
【GDAL-java的四个常用代码示例】
【GDAL-java的四个常用代码示例】
426 0
|
编解码 Linux 编译器
使用 C++ 方式实现 GBK 到 UTF-8 转码 (win / linux)
使用 C++ 的方式处理在 Windows 平台和 Linux 平台,编码字符集从 GBK 到 UTF-8 转码,C++ 存在多种方式实现
3877 1
|
Java 定位技术 数据处理
windows下gdal的java开发环境搭建
本文介绍了gdal在windows环境下怎么搭建java开发,同时提供一个开发示例,通过输出gdal支持的数据驱动来演示其支持的数据类型,同时表明我们的环境搭建完成,可以基于java进行相应开发。
1251 0
windows下gdal的java开发环境搭建
|
编译器 数据处理 C++
Visual Studio配置并编译C++环境下GDAL库、SQLite环境与PROJ库的方法
Visual Studio配置并编译C++环境下GDAL库、SQLite环境与PROJ库的方法
837 1
|
Java Linux Windows
【Java】已解决Java中的java.lang.UnsatisfiedLinkError异常
【Java】已解决Java中的java.lang.UnsatisfiedLinkError异常
1900 0
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
【5月更文挑战第12天】在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查'example.txt'文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
794 2
|
编译器 Linux 定位技术
PROJ 9.1.1源码下载编译(Win10+VS2022)
PROJ 9.1.1源码下载编译(Win10+VS2022)
535 0
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
1052 0
|
算法 数据处理 图形学
开源项目推荐:Bezier曲线、B-Spline和NURBS的区别与《THE NURBS BOOK 2nd》简介
开源项目推荐:Bezier曲线、B-Spline和NURBS的区别与《THE NURBS BOOK 2nd》简介
3223 0
开源项目推荐:Bezier曲线、B-Spline和NURBS的区别与《THE NURBS BOOK 2nd》简介
|
存储 SQL 关系型数据库
GIS系统中WKT、SRID、EPSG概念解析
之前一直对WKT、EPSG、SRID不是很理解,总是混淆,今天看了一下,清晰了很多,顺便总结一下。
902 0