【C++】Windows配置GDAL(附编译结果)
SQLite是一款轻量级的嵌入式关系型数据库管理系统,它遵循ACID(原子性、一致性、隔离性和持久性)原则,并提供了完整的事务处理能力。SQLite由D.Richard Hipp创建,并且是一个开源的项目,其源代码大约有3万行,大小约为250KB。它被设计为紧凑且独立,不依赖于外部库或服务。支持ACID保证数据的一致性和正确性;数据存储在一个单一的磁盘文件中,最大可扩展到2TB;能够在不同的字节顺
所需库及软件
GDAL
介绍:
GDAL,全称Geospatial Data Abstraction Library,即地理空间数据抽象库,是一个在X/MIT许可协议下读写空间数据的开源库,可以通过命令行工具来进行数据的转换和处理。而在调用中我们常用的OGR(OpenGIS Simple Features Reference Implementation)则是GDAL的一个子项目,实现了一个对空间参考信息进行处理的类。这其中,GDAL主要支持对栅格数据的处理,而OGR主要进行矢量数据的处理,二者通过一个生成系统进行维护,合称为GDAL,用于很多著名的GIS产品(例如ArcGIS、QGIS等)的底层,支持python、C、R等各种语言的API。
GDAL支持的三大类数据:栅格数据、矢量数据和地理网络数据。
栅格数据
GDAL中使用dataset表示一个栅格数据,其中包含了栅格数据的波段、空间参考、元数据等信息,共同构成了栅格数据集GeoTIFF。数据集含有栅格大小的概念,适用于所有波段,负责所有波段的地理参考变换和坐标系定义,本身也可以有关联的源数据。
矢量数据
OGR为矢量数据提供了矢量数据模型,其中主要包括:特征/特征定义(OGRGeometry)、层(OGRLayer)、数据集(GDALDataset)等。
地理网络数据(Geographic Network Model)
任何现实世界中的网络都可以表示为一组矢量数据,而矢量数据本身可以表示为dataset,由网络部分(网络的拓扑、网络的源数据等)和空间/属性部分(GDAL层、特征、几何图形)组成。
下载:
版本:3.5.3
下载地址:Download — GDAL documentation
下载截屏:
SQLite
介绍:
SQLite是一款轻量级的嵌入式关系型数据库管理系统,它遵循ACID(原子性、一致性、隔离性和持久性)原则,并提供了完整的事务处理能力。SQLite由D.Richard Hipp创建,并且是一个开源的项目,其源代码大约有3万行,大小约为250KB。它被设计为紧凑且独立,不依赖于外部库或服务。
SQLite的特点包括:
- 支持ACID保证数据的一致性和正确性;
- 数据存储在一个单一的磁盘文件中,最大可扩展到2TB;
- 能够在不同的字节顺序之间自由共享数据库文件;
- 占用资源较少,处理速度快;
- 提供C/C++等API接口,便于集成和使用;
- 支持多种编程语言,如PHP、Python、Tcl、Java等;
- 通过ODBC接口与其他应用程序结合。
SQLite的第一个Alpha版本发布于2000年5月,并且已经发布了SQLite 3作为最新的稳定版本。它支持多种操作系统,包括Windows、Linux和Unix,并且在嵌入式系统中尤其受欢迎,因为它的资源需求很低,可能在嵌入式设备上仅需几百KB的内存即可运行。
下载:
版本:3.45.1
下载地址:SQLite Download Page
下载截图:
PROJ
介绍:
PROJ.4是开源GIS最著名的地图投影库,它专注于地图投影的表达,以及转换,许多GIS开源软件的投影都直接使用Proj.4的库文件。GDAL中的投影转换函数(类CoordinateTransformation中的函数)也是动态调用该库函数的。
Proj.4的功能主要有经纬度坐标与地理坐标的转换,坐标系的转换,包括基准变换等。地图投影的表达方式有多种,由于采用一种非常简单明了的投影表达--PROJ.4比其它的投影定义简单,很容易就能看到各种地理坐标系和地图投影的参数,同时它强大的投影转换功能,也是非常吸引人的。
下载:
版本:9.3.1
下载地址:Download — PROJ 9.3.1 documentation
下载截图:
TiFF
介绍:
libtiff是一个用于读写TIFF格式文件的开源库,提供了丰富的API和功能,可以方便地对TIFF文件进行操作。
下载:
版本:4.6
下载地址:Index of /libtiff/
下载截图:
CURL
介绍:
Curl是一个命令行工具和库,用于进行数据传输。它支持多种协议,如HTTP、HTTPS、FTP、SMTP等,并可以通过URL进行数据传输。Curl提供了一个简单的语法来发送HTTP请求和接收服务器响应。它可以执行各种操作,如发送GET请求、POST请求、上传文件、下载文件等。使用Curl,您可以方便地在命令行中进行HTTP请求的测试和调试。它提供了丰富的选项和参数,可以设置请求头、发送表单数据、处理Cookie、进行认证等。除了作为命令行工具,Curl还提供了一个C语言的库,可以在您的程序中使用。这意味着您可以通过编写C代码来集成Curl,并使用其丰富的功能来进行数据传输。Curl是一个开源项目,具有跨平台的特性,可以在多种操作系统上使用,包括Windows、Linux、macOS等。
总之,Curl是一个功能强大、使用方便的工具和库,可用于进行各种网络数据传输操作。无论是在命令行还是在程序中,Curl都是一个非常有用的工具。
下载:
版本:8.6
下载地址:Releases · curl/curl · GitHub
下载截图;
CMAKE
介绍:
CMake是一个开源的跨平台自动化构建系统,它使用平台和编译器独立的配置文件来控制软件编译过程。CMake的配置文件通常命名为CMakeLists.txt,它允许开发者编写一种平台无关的配置文件来定制整个编译流程。CMake并不直接构建出最终的软件,而是产生标准的构建档,如Unix的Makefile或Windows Visual C++的projects/workspaces,然后再依一般的建构方式使用。这种特性使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和其他类似系统如SCons的区别之处。
CMake支持两种构建模式:
in-source build:在源文件目录下构建,产生的二进制文件将与源文件生成在一个文件夹里。
out-of-source build:单独创建一个文件夹,如build,在该文件夹下构建二进制文件,与源代码文件分开。
CMake支持跨库依赖检查、并行构建和简单的头文件结构,这大大减少了跨平台软件的开发和维护过程的复杂性。它还提供了一些高级功能,如生成安装包、源码包、Dashboard显示数据并上传等,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能。
CMake可以与原生建置环境结合使用,例如make、苹果的Xcode与微软的Visual Studio。它使得开发者可以编写一次代码,然后在不同的平台上运行,这被称为“Write once, run everywhere”。
CMake的跨平台和自动化特性使得它成为许多跨平台开源软件的首选构建系统,如KDE、Kdevelop和hypertable等。
下载:
版本:3.29
下载地址:下载 CMake
下载截图:
Visual Studio
版本:2022
下载地址:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)
编译流程
SQLite编译
下载完毕后的文件
解压SQLite压缩包至新的文件夹sqlite3450100
新建空的C++项目
新建项目名为sqliteProject,位置为解压后的文件夹同目录
为头文件和源文件中添加文件,该文件所在位置为解压后文件夹中
修改sqlite3.def文件,在文件最后添加以下内容,并保存
sqlite3_unlock_notify
修改项目属性
打开属性设置后 先将顶部"配置"改为"所有配置",“平台"改为"所有平台”。
然后在左侧选择"配置属性"->“C/C++”->“预处理器”,右侧"预处理器定义"点击最右边的下拉后选"编辑",在弹出的窗口中,把"<不同选项>"改为下面的内容的值,然后点确定。
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY
在左侧选择"配置属性"->“链接器”->“输入”,右侧"模块定义文件"点击最右边的下拉后选"编辑",在弹出的窗口中,输入sqlite3.def后点击确定。
sqlite3.def
在左侧选择"配置属性"->“常规”,右侧"配置类型"改为"静态库(.lib)"后点击应用->确定。
在"解决方案配置"为"Release",“解决方案平台"选项,32位的选"x86”,64位选"x64",
然后右键sqlite项目->“生成”,在项目位置的Release文件夹下会生成sqlite.lib
显示上述内容即生成成功了,在项目文件的 x64->Release下能看到生成的lib
文件整理
在一步骤生成的【sqlite3450100】目录下新建【bin】【include】【lib】三个目录,然后分别把对应文件拖到目录下 如图所示:
【bin】目录存放生成的sqlite3.exe文件
【include】目录存放生成的sqlite3.h,sqlite3ext.h文件
【lib】目录存放刚刚生成的.lib文件
CMAKE安装
主要对后期PROJ库配置时需要使用
libtiff编译
在下载后的文件夹同级目录下新建对应的build文件夹
cmake-gui 路径选择如下所示,点击tools中的configure进行配置,点击finish:
出现Configuring done表示配置成功
随后点击generate按钮,生成VS项目文件
使用管理员身份打开tiff.sln项目
在"解决方案配置"为"Release",“解决方案平台"选项,32位的选"x86”,64位选"x64",
分别在ALL_BUILD和INSTALL模块鼠标右键选择生成:
如上所示 都没有生成失败,这时候去打开对应目录我这里是 C:\Program Files\tiff:
Curl配置
如果配置有osgeo4w的话不用配置该项
文件下载及解压
找到我的电脑-右键属性-高级系统设置
找到环境变量点开。
新建变量名命名:CURL_HOME 变量值填写对应文件地址路径名。
添加系统变量
cmd中验证
curl命令
curl命令详解及设置代理服务器_curl 代理-CSDN博客
PROJ配置
新建对应的build文件夹
在cmake-gui界面选择PROJ路径:
进行配置设置
会出现报错的情况
对出现的问题进行查看,报错情况如下,原因为:未发现sqlite3依赖库,未找到curl库
GEOS编译
GDAL编译
nmake /f makefile.vc
nmake /f makefile.vc install (生成bin/html/data文件夹)
nmake /f makefile.vc devinstall (生成lib/include文件夹)
编译成功
参考文献
https://cuifeng.blog.csdn.net/article/details/130743707?spm=1001.2014.3001.5502
https://cuifeng.blog.csdn.net/article/details/130742086
https://blog.51cto.com/fkxxgis/9294168?articleABtest=1
https://blog.51cto.com/theonegis/5532901
更多推荐
所有评论(0)