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

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处: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.GDAL(C#)版本下载和引用

    下载编译后的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/

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

                                      

 

时间: 2024-10-27 15:06:50

利用GDAL进行工具开源化改造的相关文章

DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造

本文讲的是DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造[编者的话]海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提升. 一. 舆情平台

DockOne微信分享(一三五):求取一份极致的简单:海量应用容器化改造之路

本文讲的是DockOne微信分享(一三五):求取一份极致的简单:海量应用容器化改造之路[编者的话]公司内部近千个应用,从需求.开发.测试.发布及后期运维都是各自为营,没有一个统一的平台来标准化应用的整个流程,由此,设计一个这样的标准化平台就极其迫切,同时为了享受当前容器化技术带来的福利,我们决定完全基于容器技术来进行全面的应用容器化改造,以下就是我们团队在平台研发及应用容器化改造过程的一些经历和思考向大家分享一下,思虑不周之处,望大家斧正. [3 天烧脑式基于Docker的CI/CD实战训练营

海航生态科技舆情大数据平台容器化改造

文章介绍了海航生态科技舆情大数据平台的容器化改造经验,包括初期技术架构.应用容器化.架构迁移.持续发布与部署. 海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提

免插件实现 WP 的百度熊掌号结构化改造

前言 十月底的时候百度站长平台突然就改版了,毕竟没有参与过内测的小网站主看到这个有点懵逼,然后看了一下原创保护引入到了熊掌号,也就是之前的官方号. 简单看了一下,熊掌号同 MIP 相比门槛更低只要是 HTML5 + HTTPS 就可以兼容,那么大的好事怎么能不凑凑热闹呢! 介绍 熊掌号为百度搜索新产品,其前身是百度官方号,百度熊掌号是站长.自媒体.开发者.商家等各种内容和服务提供者入驻百度的身份账号,该账号可实现包括百度搜索资源平台.百度数据开放平台.百家号自媒体平台.用户运营平台等各类平台的能

利用口碑蜂工具提升企业SEO优化效果

一.SEO优化要注意口碑的优化 提起SEO,很多人想到得就是关键字的排名,其实关键字排名仅仅是SEO优化工作中的最基本形式,搜索引擎经过多年的发展,关键字排名对客户下单的影响程度越来越小,经过董敬一网络营销调研发现,越来越多的客户通过搜索引擎已经不仅仅是为了找到供应商的链接,更多是将搜索引擎作为了解供应商口碑的一个工具. 所以排名第一的网站并不一定比排名第十的网站有更多优势,网络口碑对客户购买的影响正在逐渐加强,调查表明,几乎百分之九十的客户的下单决策,都会被网络上之前的客户评价所影响,所以企业

怎么利用PS曲线工具增加局部对比度

  怎么利用PS曲线工具增加局部对比度          在正式开始本次PS教程前,先介绍教程的要点: 1.色调.对比度和曲线如何工作; 2.如何阅读色调曲线和直方图; 3.如何运用控制点; 4.调整操作顺序; 5.如何利用曲线进行局部对比度调整. Part 1. 动态分布 在创建曲线调整图层后,Adobe Photoshop会提供"直方图",还有一些设置项.这就是所谓的动态分布.首先需要介绍一个概念:每张数码照片都是由无数的像素组成,每个像素都对应的灰度强度值.图片色调动态分布是指图

利用PS计算工具调出别致色彩

在这篇PS教程里,将教大家怎样利用Photoshop计算工具来创建一个新的阿尔法通道,并调整出很别致的图片颜色效果.先看一下原图和调整后的对比吧! 图00 因为照片是纵向的,所以,很不好意思你们要一直滚动鼠标来看这个教程. 图01 图02 步骤1:让我们先来快速浏览一下这张我们要应用这个效果的照片吧.这张照片是一幅加州肉质植物的特写,尽管它本身就已经十分吸引人,但是我觉得我们可以让它更具表现力. 图03 步骤2:我们先简单的说一说利用计算工具来生成一个黑白混合的效果.尽管很多摄影师由于计算工具的

米聊-android5.0或者米UI利用系统清理工具后台清理不死

问题描述 android5.0或者米UI利用系统清理工具后台清理不死 怎么让应用在android5.0或者米UI上利用系统清理工具后台清理不死 解决方案 用services,两个,彼此监听,一个被杀死,另外一个立刻启动.还有一个方法,不是特别好,就是services每秒钟启动自己一次,这样可以避免services被杀死. 解决方案二: 楼上正解,但是每秒启动自己一次的service未必有用,以后说不定硬件升级后清理内存可以在1000ms内完成 解决方案三: 这种一般都需要守护进程,当你的程序被杀

利用z/OS工具识别WebSphere Application Server的CPU资源使用情况

本文将展示如何利用 z/OS® 工具识别各个 WebSphere Application Server 应用程序的 CPU 资源使用情况. IBM WebSphere Application Server 环境常常托管着多个不同类型的企业应用程序,它们受不同的 Java EE 技术支持.这些应用程序通常会并发运行,每个都会消耗与它们执行的工作相对应的系统资源,比如 CPU 周期和内存.在性能测试和生产使用期间,查看每个应用程序(而不是仅查看整个应用服务器)消耗的资源常常很有用. 有许多工具可用于