利用GDAL进行工具开源化改造

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/1.背景    为利于项目实施,团队用AE写过一个插件式的工具集,主要包括了数据入库、数据统计、数据修改、数据发布等功能。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

    为利于项目实施,团队用AE写过一个插件式的工具集,主要包括了数据入库、数据统计、数据修改、数据发布等功能。

    由于arcgis环境的不同,数据库的环境不同,导致工具的版本出现了arcgis10.0,10.1,10.2,以及相对的Oracle版本和mysql版本,从而使维护量直线上升。

    痛定思痛,我们决定采用GDAL来将各工具逐一开源化,并且将不同数据库操作封装成同一个DLL使用,目标是将所有的版本整合成一个通用版本。

2.GDAL简介

    GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式,其抽象数据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform), 大地控制点(GCPs), 元数据(Metadata),栅格波段(Raster Band),颜色表(Color Table),子数据集域(Subdatasets Domain),图像结构域(Image_Structure Domain),XML域(XML:Domains)。它还有一系列命令行工具来进行数据转换和处理。在遥感影像处理领域,GDAL是一个被广泛使用的库。我们所常见的GDAL均是C++版本,不过目前它也有了C#以及python、Java版本。

    这里,我们所用的主要是针对矢量数据(SHP)的处理,所以我们还要用的GDAL的分支, OGR库。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来注册和管理。

3.GDALC#)版本下载和引用

    下载编译后的GDAL地址:http://www.gisinternals.com/sdk/

  

    点击需要下载的DLL集:

   

   

    将下载到的文件bin下的dll拷贝至debug下,此为GDAL运行需要依赖的DLL。进入gdal\csharp目录,将以_csharp结尾的dll拷贝出来,添入引用即可。

4.开发实践

    GDAL对中文支持容易出现问题,

    首先通过设置运行环境支持中文:

  

    其次,对GDAL设置中文编码:

   

    我们将对SHP的常用操作进行了封装,主要为要素的增删查改操作、要素字段的操作、SHP的操作:

  

 

                                                                    -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                    如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                      

 

目录
相关文章
|
JSON 数据安全/隐私保护 数据格式
开源利器:it-tools 项目介绍
作为一名开发人员,我们在日常工作和学习中常常需要使用一系列小工具,如JSON格式化、JSON转表格、当前时间戳、XML格式化、SQL格式化、密码生成以及UUID生成等。通常情况下,我们会在网上搜索各种在线工具来满足这些需求。然而,这些在线工具虽然众多,却分散在各个网站,有些还存在登录和广告等繁琐问题。作为一名经常在编程世界里制造Bug的工程师,难道你不希望拥有一个属于自己的工具集吗?最近,我恰巧发现了一个名为IT-Tools的开源项目,它恰好包含了我们经常使用的所有工具。在本文中,我们将介绍IT-Tools的主要功能,并探讨如何使用Docker进行部署。
853 4
开源利器:it-tools 项目介绍
|
XML 数据管理 Linux
麒麟系统开发笔记(十二):在国产麒麟系统上编译GDAL库、搭建基础开发环境和基础Demo
麒麟系统上做全球北斗定位终端开发,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了山He智能一个项目使用WG。
|
4月前
|
Python
Python 项目及依赖管理工具技术选型
【8月更文挑战第30天】在进行Python项目及依赖管理时,有多种工具可供选择。虚拟环境工具有`virtualenv`和内置的`venv`,可为项目创建独立环境,避免依赖冲突。依赖管理工具有`pip`、`pipenv`和`poetry`,分别用于安装包、管理依赖并确保版本一致性。选型时需考虑项目需求、团队协作、易用性和社区支持等因素。
81 10
|
8月前
|
存储 缓存 安全
Guava:Java开发者的全方位工具库
Guava:Java开发者的全方位工具库
235 0
|
JavaScript
nodejs以往版本
nodejs以往版本
67 0
|
传感器 算法 安全
开源Marlin2.x源代码架构学习笔记
开源Marlin2.x源代码架构学习笔记
852 0
|
Java atlas Apache
数据治理一-Atlas2.1编译踩坑之路
数据治理一-Atlas2.1编译踩坑之路
459 0
|
传感器 API 调度
openHarmony系统简介
今天带大家了解一下openHarmony系统,很多人可能听说过Harmony OS,今天要介绍的openHarmony系统就是Harmony OS的抽象,即基础版的,鸿蒙系统最终要实现的就是脱离安卓系统成为一个独立的系统,目前的环境使得鸿蒙系统仍然需要兼容安卓,故openHarmony诞生了,为了更好的进行过渡,同时也为更好的宣传鸿蒙系统。
934 0
openHarmony系统简介
|
资源调度 前端开发
主流脚手架工具介绍
主流脚手架工具介绍
441 0
|
Java Linux 开发工具
RK3399平台开发系列讲解(系统编译篇)8.6、安卓开发环境的搭建及编译
RK3399平台开发系列讲解(系统编译篇)8.6、安卓开发环境的搭建及编译
231 0