联合编译C++版本gdal编译过程文档

gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf

各依赖库源代码版本及下载地址

gdal

Proj.4

geos

HDF4

HDF5

netCDF

编译环境及工具版本

编译安装

1、 编译geos

2、 编译proj.4

3、 修改gdal的编译配置文件make.opt

4、 编译gdal

编译及运行过程中可能出现的问题及对应的解决方法

测试gdal是否正确联合编译其他三方库的命令

测试hdf

测试proj.4

测试netCDF

gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf

各依赖库源代码版本及下载地址

gdal

版本:2.4.4

下载地址:https://gdal.org/download.html

说明:下载的是源码文件,也是本地联合编译的中心文件,其他四个三方库是融入到gdal中调用的

Proj.4

版本:4.9.3

下载地址:https://proj.org/download.html

说明:源码文件,需要使用vs进行编译,重要文件在src文件夹中

geos

版本:3.7.3

下载地址:http://download.osgeo.org/geos

说明:源码,需要使用vs进行编译,重要文件是include文件夹和src文件夹下的geos_c_i.lib文件

HDF4

版本:4.2.6

下载地址:https://support.hdfgroup.org/ftp/HDF/releases/HDF4.2.6/bin/windows/

说明:是已经编译好了的文件,也包含源码,重要文件在dll文件夹中

HDF5

版本:1.10.3

下载地址:https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.3/bin/

说明:下载的文件解压后是一个.msi文件,双击可安装,安装之后得到一个文件夹,其中的内容和HDF4中的内容相似,重要文件在bin文件夹中

netCDF

版本:4.7.2-NC4

下载地址: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.7.2-NC4-64.exe

说明:下载所得是一个.exe可执行文件,双击安装之后得到一个包含三个文件夹的文件夹,重要文件在bin当中

编译环境及工具版本

Windows x64、vs2015 x64 本机工具提示符

编译安装

注:示例文件组织模式如下:

1、 编译geos

进入geos文件夹,如果可以找到autogen.bat和makefile.vc两个文件,则证明文件夹正确,打开vs2015 x64 本机工具提示符,cd到geos文件夹,即autogen.bat和makefile.vc所在文件夹,先后运行autogen.bat和nmake /f makefile.vc src_dir

2、 编译proj.4

cd转到proj.4的文件夹,其中应该包含makefile.vc,运行nmake /f makefile.vc install-all

3、 修改gdal的编译配置文件make.opt

进入gdal文件夹,找到make.opt文件并使用notepad++打开,修改gdal安装路径

使用搜索工具,搜索GDAL_HOME,找到如57行的位置(不同版本位置可能会有差别),将值改为自己准备安装gdal的文件夹

修改编译版本为64位

搜索win64,找到如191行的位置,去掉其前面的#号(#号代表注释)

集成geos数据读取路径

搜索geos,找到如621~623行的位置,去掉前面的#号,将如621行GEOS_DIR的值修改为geos文件夹的路径,如geos文件夹内的内容未做修改,可将622和623行中的内容修改为截图所示

集成HDF4数据读取路径

搜索hdf4,找到如441~443行的位置,去掉前面的#号

将441行HDF4_DIR修改为HDF4文件夹的路径,其余内容与图上一致,442行为dll文件夹下的.lib文件列表,完整的内容为:$(HDF4_DIR)\dll\hd426m.lib $(HDF4_DIR)\dll\hm426m.lib $(HDF4_DIR)\lib\hd426.lib $(HDF4_DIR)\lib\hm426.lib Ws2_32.lib

集成HDF5数据读取路径

搜索hdf5,找到如451~453行的位置,去掉前面的#号

将452行HDF5_DIR的值修改为HDF5文件夹的路径,其余内容与图上一致,453行完整的内容为:$(HDF5_DIR)\lib\hdf5_cpp.lib $(HDF5_DIR)\lib\hdf5_hl.lib $(HDF5_DIR)\lib\hdf5_hl_cpp.lib $(HDF5_DIR)\lib\hdf5_tools.lib $(HDF5_DIR)\lib\libhdf5.lib $(HDF5_DIR)\lib\libhdf5_cpp.lib $(HDF5_DIR)\lib\libhdf5_hl.lib $(HDF5_DIR)\lib\libhdf5_hl_cpp.lib $(HDF5_DIR)\lib\libszip.lib $(HDF5_DIR)\lib\libzlib.lib $(HDF5_DIR)\lib\szip.lib $(HDF5_DIR)\lib\zlib.lib

集成netCDF数据读取路径

搜索netcdf,找到如541~545行的位置,去掉前面的#号

将544行NETCDF_LIB和545行NETCDF_INC_DIR中的D:\gdal-pgh45n替换为netcdf所在的文件夹路径,保证按照所写路径可以找到netcdf.lib和include文件夹

4、 编译gdal

将vs2015 x64 本机工具cd转到gdal文件夹,即make.opt所在文件夹,先后运行

nmake /f makefile.vc

nmake /f makefile.vc install

nmake /f makefile.vc devinstall

运行结束之后指定的安装路径下会出现如下的多个文件夹

编译及运行过程中可能出现的问题及对应的解决方法

1)、NMAKE:fatal error U1077. return code 0x460

工程中连接了一个lib文件,链接的时候却出现不能解析的外部符号。大概率是32位和64位不兼容问题,也有可能是包含的lib是错的。可以从以下几个方面检查:1、gdal的配置文件make.opt中的win64=yes是否打开以及是否将注释符号去掉;2、vs工具提示符使用的版本不对,使用其他版本的工具重试;3、参与编译的文件存在32版本

2)、NMAKE:fatal error U1077. return code 0x49d

文件路径不对,查询到文件不存在,可以返回到make.opt挨个检查文件路径是否准确,可以沿着设置的路径依次进入检查,避免漏检

3)运行安装的gdal中的bin文件夹下的.exe提示缺少某.dll文件,一般在某个依赖库的bin文件或其他文件下有该.dll文件,对于dpapi.dll的缺失可以在网上搜索下载

4)当所有的.dll都不缺失后,运行上述.exe文件提示netcdf定位H5Literate失败,这是由于netcdf中的hdf5与gdal中引用的hdf5版本冲突导致的,笔者采用的办法是寻找与netcdf中的gdf5中的一样的hdf5引入到gdal中

注:gdal运行依赖库所需的.dll文件

测试gdal是否正确联合编译其他三方库的命令

测试时采用dos命令行启动.exe读取或计算指定路径下的文件,根据运行结果及提示信息判断gdal是否正确集成对应的三方库,因此在输入测试命令前需要提前cd将当前路径转到安装的gdal的bin文件夹下

测试hdf

命令:gdalinfo.exe 目标.HDF文件

提示该.HDF文件如下图所示的各种数据信息则证明安装成功,否则安装失败

测试proj.4

命令:gdalwarp.exe" -t_srs “PROJCS[“WGS_1984_Web_Mercator_Auxiliary_Sphere”,GEOGCS[“GCS_WGS_1984”,DATUM[“D_WGS_1984”,SPHEROID[“WGS_1984”,6378137.0,298.257223563]],PRIMEM[“Greenwich”,0.0],UNIT[“Degree”,0.0174532925199433]],PROJECTION[“Mercator_Auxiliary_Sphere”],PARAMETER[“False_Easting”,0.0],PARAMETER[“False_Northing”,0.0],PARAMETER[“Central_Meridian”,0.0],PARAMETER[“Standard_Parallel_1”,0.0],PARAMETER[“Auxiliary_Sphere_Type”,0.0],UNIT[“Meter”,1.0],AUTHORITY[“Esri”,3857]]” 源tif文件 目标tif文件

测试netCDF

命令:gdalwarp.exe -t_srs “+proj=latlong +datum=WGS84” -te 112.0 28.4 116.7 32.3 -tr 0.05 0.05 -dstnodata -9999 -overwrite NETCDF:源.nc文件路径:AOT_Merged 目标.nc文件路径,如gdalwarp.exe -t_srs “+proj=latlong +datum=WGS84” -te 112.0 28.4 116.7 32.3 -tr 0.05 0.05 -dstnodata -9999 -overwrite NETCDF:F:\H08_20200727_0100_1HARP030_FLDK.02401_02401.nc:AOT_Merged F:\1.tif

错误提示:

1) 若提示ERROR 4: `NETCDF:F:\H08_20200727_0100_1HARP030_FLDK.02401_02401.nc:AOT_Merged’ does not exist in the file system, and is not recognized as a supported dataset name.说明netCDF和gdal版本不兼容,需要更换netcdf版本,笔者是由netCDF3更换为了netCDF4解决了这个问题

2) 若出现如图所示的提示

说明netCDF中的hdf5版本号是1.10.3,而gdal中的hdf5版本号是1.8.19,两者不一致,需要将gdal中的版本更换为和netCDF中的一样,即需要重新下载1.10.3版本的hdf联合编译gdal

附:

联合编译好的gdal.

单独编译好但还没做集成的文件

完全没改动过的源文件

mysql netcdf_gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf相关推荐

  1. gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf

    联合编译C++版本gdal编译过程文档 gdal联合编译C++版本proj.4.geos.hdf4.hdf5.netcdf 各依赖库源代码版本及下载地址 gdal Proj.4 geos HDF4 H ...

  2. mysql 数据库安装命令_教你MySQL数据库的编译安装以及命令详解(5.7版本)

    一.安装MySQL所需的环境依赖包 [root@localhost opt]# yum -y install gcc gcc-c++ make ncurses ncurses-devel bison ...

  3. Delphi xe5 编译报environment.proj错误的解决

    Delphi xe5 在Win64位下编译报 environment.proj 错误,网上有说明: http://hi.baidu.com/fly_king1228/item/9c85fccd8db4 ...

  4. CentOS MySQL 5.7编译安装

    CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能: ...

  5. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)

    本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...

  6. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)

    一.说明 电脑系统:win10 qt版本:5.13.2和5.14.1(测试均成功) mysql版本:MySQL-5.5 本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动 ...

  7. opencv、opencv_contrib及cuda联合编译详细教程

    opencv.opencv_contrib及cuda联合编译详细教程 最近在使用opencv时需要用cuda加速,网上了很多帖子,踩了很多雷,摸索出来了一点规律,分享给大家,一起探讨(我也是刚刚入手, ...

  8. 什么是MySQL的预编译?

    一.什么是MySQL的预编译? 通常我们发送一条SQL语句给MySQL服务器时,MySQL服务器每次都需要对这条SQL语句进行校验.解析等操作. 但是有很多情况下,我们的一条SQL语句可能需要反复的执 ...

  9. 编译好的GDAL库,支持ECW格式,支持proj,支持geos

    这几天因为工作需要,把GDAL重新编译了一下,现支持ECW格式,即可以用GDALOPEN读取JPEG2000格式的影像数据;编译时也添加了对geos和proj的支持. 内含3个文件夹,分别是gdal, ...

最新文章

  1. 基本的函数返回值 使用
  2. 诚意租房网blog2
  3. c++排查线程hang住_Kafka学习笔记之kafka高版本Client连接0.9Server引发的血案排查 - 时光飞逝,逝者如斯...
  4. priority queue
  5. ofstream写不进txt文件的奇怪问题
  6. Linux系统搭建Red5服务器
  7. 三星Galaxy S20:如何开启黑暗模式
  8. python中变量的作用域
  9. Being a Good Boy in Spring Festival【博弈】
  10. 广东 职称英语计算机,现在评职称英语和计算机都不用考了
  11. devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释
  12. 网络丢包诊断与分析的现实与理想
  13. openresty查看log
  14. 程序员如何保护自己?
  15. ICESat 数据介绍
  16. LeetCode题目Java代码解答 (详细解释!!!)
  17. 集美大学计算机课程考试系统,集美大学教务管理系统入口http://jwgl3.jmu.edu.cn
  18. ROS端口映射这样才正确
  19. 实战开发支付SDK —— 处理微信支付异步回调以及订单状态查询(含源码)
  20. 高通Camx offline Log merge命令

热门文章

  1. 在平台上便捷使用LS-DYNA的方式
  2. webRTC入门示例demo
  3. local class incompatible异常解决
  4. Android入门基础2
  5. php rdp,实战 RDP Wrapper 实现 windows 多用户
  6. android看美女软件真实案例(1)
  7. 中小型企业网络构建之综合布线和子网划分
  8. 别告诉我你连线程池都不会用~ 一文搞懂线程池
  9. 计算机毕业设计(25)java毕设作品之预约看房房产中介系统
  10. MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例