现如今,随着很多行业对gis的了解越来越深入,很多关于智慧的标签便纷纷贴上了,比如智慧园区、智慧交通、智慧城市、智慧校园等等诸多的行业深度应用。国内外有很多gis的相关产品,国外有大名鼎鼎的arcgis,国内有超图、mapgis等。作为一位想研究数据制作的技术人,如果想不依赖第三方的库,毕竟国产化,自主可控是未来长期的一个话题。
之前介绍过一款轻量级的gis数据处理工具,1、GeoTools之入门简介、干货!使用Geotools解析shap数据实例等,如果应对一些常见的数据,如shp等的解析需求,完全可以应对。如果想要解析更多的数据,比如cad、gdb等等,geotools的作用就比较捉襟见肘了。
今天介绍一款好用的gis利器:gdal。它不仅能处理更多种类型的数据,而且还是开源的。虽然它是C++开发的库,但是经过编译后,可以支持多种开发语言,比如java、c#、python等等。同时,arcgis等软件底层也是基于gdal来进行开发的,由此,掌握gdal就比较有必要的。它能让你更灵活的处理数据,同时可以跨平台应用。
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,提供对矢量数据的支持。
Gdal的一些资料可以参考网站:https://www.osgeo.cn/gdal/
Gdal的主要特征
GDAL提供栅格数据的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
GDAL使用抽象数据模型(abstract data model)来解析它所支持的数据格式,抽象数据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform), 大地控制点(GCPs), 元数据(Metadata),栅格波段(Raster Band),颜色表(Color Table),子数据集域(Subdatasets Domain),图像结构域(Image_Structure Domain),XML域(XML:Domains)。
GDALMajorObject类:带有元数据的对象。
GDALDdataset类:通常是从一个栅格文件中提取的相关联的栅格波段集合和这些波段的元数据;GDALDdataset也负责所有栅格波段的地理坐标转换(georeferencing transform)和坐标系定义。
GDALDriver类:GDAL会为每一个所支持的文件格式创建一个该类的实体,来管理该文件格式。
GDALDriverManager类:用来管理GDALDriver类。
OGR体系结构
Geometry类:Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB(Well Knows Binary)和WKT(Well Known Text)格式之间的相互转换,以及空间参考系统(投影)。
Spatial Reference类:OGRSpatialReference封装了投影和基准面的定义。
Feature类:OGRFeature封装了一个完整feature的定义,一个完整的feature包括一个geometry和geometry的一系列属性。
Feature Definition类:OGRFeatureDefn里面封装了feature的属性,类型、名称及其默认的空间参考系统等。一个OGRFeatureDefn对象通常与一个层(layer)对应。
Layer类:OGRLayer是一个抽象基类,表示数据源类OGRDataSource里面的一层要素(feature)。
Data Source类:OGRDataSource是一个抽象基类,表示含有OGRLayer对象的一个文件或一个数据库。
Drivers类:OGRSFDriver对应于每一个所支持的矢量文件格式。类OGRSFDriver由类 OGRSFDriverRegistrar来注册和管理。
Gdal资源下载地址
https://www.gisinternals.com/mapmanager.html
总结:今天主要是介绍gdal工具库,它的主要功能,组织结构,先让大家有一个简单的认识,后面在具体在代码层面进行展开。