GIS包含的知识点很多,包括数据转换、数据处理、数据分析、数据挖掘、数据展示、数据应用等等。GIS数据可以分为两种大类型,一种是以tiff文件为代表的栅格数据,一种是以shp文件为代表的矢量数据。虽然现在都采用gdb来存储数据,但是依然存在着大量以Excel、CSV甚至txt文件等形式存在的数据。所以学习GIS的第一步,就是学习将其它形式的数据转换为标准的GIS数据。
目前商业GIS已经相对成熟,ESRI的功能强大到令人发指。但是面对不确定的数据格式,还是代码来处理的灵活度更高。现在开源GIS的联盟组织OSGeo功能也非常强大,GDAL、Geos、GeoTiff等库支持绝大多数的矢量、栅格数据的处理,而且完全免费。
网上GDAL、GeoTiff的编译和使用资料很多,但是大多杂乱无章,而且是非常老旧的版本了,与现在新版本的编译方式已经有了很大的区别。但是库函数的编译又是一个非常让人头疼的问题,好多初学者直接就从入门到放弃了。所以本篇将使用近期的开源库版本,手把手教你如何利用开源库,来玩转GIS数据。GeoTiff库是用来创建包含地理信息tiff文件的,这里我们以编译GeoTiff库为例来说明。
- 编译工具以及依赖库下载
在工作开始之前,得先准备好所需的软件。编译GeoTiff需要的依赖包有libtiff,proj4,zlib,curl,sqlite3,看起来还挺多的,实际上这几个差不多是所有开源库都会依赖的基础库,编译好之后,后面的工作就会越来越轻松了。这些库都是用c或者c++编写的,所以少不了预编译软件CMake。下载地址清单:
sqlite3:SQLite Download Page
curl: libcurl - the multiprotocol file transfer library
zlib: zlib Home Site
proj4: Index of /proj/
libtiff: Index of /libtiff/
libgeotiff: Index of /geotiff/libgeotiff/
sqlite3比较特殊,需要下载三个包
创建一个空项目,之后将源文件都导入到工程中,并设置编译类型为静态库
在C/C++ -- 预处理器 – 预处理定义中输入命令: