《GIS软件ShapMap源码详解及应用》概述

我喜欢GIS二次开发,即使有的人看不起;我不懂开源GIS,只会点商业的GIS,有的人更加瞧不起。我认为,我不能改变现实这个环境,但可以创造一些价值。找到一本《GIS软件ShapMap源码详解及应用》来学习,我倒要看看开源GIS是什么样子。

当前GIS软件有商业GIS系统及开源GIS系统之分。GIS商用软件功能强 大,有完善的技术支持,提供封装好的、功能强大的类库,基于商用GIS库进 行的二次开发效率高、难度低、资源丰富。但对于小型GIS开发人员,商用 GIS价格过高,对于GIS学习者来说,由于商用GIS产品的源代码是保密的, 无法深入学习GIS底层技术,开发技术含量低,难以深化对GIS的理解;而开 源GIS是完全免费的,其源代码完全公开,可作为非商业用途使用,是开发小 型GIS系统或GIS开发人员学习的宝贵资料。但开源GIS项目的帮助资料通常 很少,且没有强大的技术支持。此外在众多GIS开源代码中,C语言及Java平 台的项目居多,.NET平台的GIS开源项目较少。SharpMap是基于.NET 2. 0平 台用C#语言开发的GIS开源项目,是一套简单易用的小型GIS平台,扩展性 强,可以用于开发网络或桌面GIS应用程序。它支持多种GIS数据格式,支持 空间查询,可渲染出精美地图。(摘自《GIS软件SharpMap源码详解及应用》前言)。

第一章是概述,很多书都是这样子的,如果是我写一本书,先来动手教大家一实例,先不讲什么理论和介绍,可是我没有写书。

1. 1????SharpMap 的特性

SharpMap具有以下特性:

⑴核心特性。

1) 支持多种.NET开发语言,包括C#、VB. NET、C ++/CLI和J#等;我不认为会某种言语就有多了不起,不管哪种语言,精通后,都能解决问题。

2)使用属性数据作为注记;这就是ArcGIS是的注记功能吧,其他软件我不知道,ArcGIS的注记功能是相当强大的。

3)符合 OpenGIS 的简单要素规范(OpenGISSmple Features Specification),支持点、 线、面、多点、多线、多面、几何对象集合等要素类型;我不应该把ArcGIS与其他进行比较,毕竟性质不一样,但我又不了解开源GIS。

4)支持地图旋放及平移;这不是地图浏览的基本操作吗?

5)可使用代理(delegates)编制复杂主题地图;好像很高级,都有代理了。可能与制图表达相似。

6)能实时投影。是ArcGIS中的动态投影吗?

(2)网络地图。(这一块不怎么懂,只做过Flex+ArcGIS Server地图)

1)支持使用Http Handler生成地图;

2)支持AJAX地图控件;

3)支持WMS1.3.0服务。

(3)扩展功能。

1)支持数据格式扩展;

2)支持图层扩展。

这些特性和功用,只有在深入学习后才能深入体会。

1. 2????SharpMap支持的GIS数据格式

SharpMap支持的GIS数据格式包括矢量数据格式、栅格数据格式以及WMS (网络地图服务)格式。

矢量数据格式有:ESRI Shape files format、PostGreSQL/PostGIS、OLEDB (points on-ly)、Microsoft SQL Server、Oracle *、GPX *、Maplnfo File *、TIGER *、S57 *、DGN *、 CSV *、GML *、Interlis 1 *、Interlis 2 *、SQLite 和 ODBC *。

概格数据格式有:Arc/Info ASCII Grid *、Arc/Inf。Binary Grid (.adf) *、Microsoft Windows Device Independent Bitmap (. bmp) *、ESRI ? hdr Labelled *、ENVI ? hdr Labelled Raster *、Envisat Image Product (. nl)????*、Graphics Interchange Format (? gif)????*、GMTCompatible netCDF * ^ GRASS Rasters * > TIFF/GeoTIFF ( . tif)????*、Erdas Imagine(.img) *、Idrisi Raster *、Image Display and Analysis ( WinDisp ) *、JPEG JFIF (.jpg) *、JPEG2000 (.jP2, .j2k) *、JPEG2000 (.jP2, .j2k) *、JPEG2000 (.jP2,.j2k) *、JPEG2000 (.jp2, .j2k) *、Erdas 7.x .LAN and .GIS *、Daylon Leveller Heightfield * v In Memory Raster * N NetCDF * N PCI . aux Labelled * N PCI Geomatics Database File * , Portable Network Graphics (. png)????*、RadarSat2 XML ( product, xml)????*、USGS SDTS DEM ( CATD. DDF) *、Raster Matrix Format (? rsw,? ratw) * x SGI Image Format * , USGS ASCII DEM (. dem) * 和 XI1 Pixmap (. xpm) * 等。

WMS (网络地图服务)格式有:Version 1.0.0、Version 1. 1.1、Version 1.3. 0。网络 地图服务(Web Map Service,WMS)是从地理信息动态产生,具有地理空间位置数据的 地图。地图本身并不是数据,WMS产生的地图一般以图像格式提供,如PNG、GIF或 JGPE;或按 SVG (Scalable Vector Graphics)或 Web CGM (Web Computer Graphics Meta-file)格式提供基于矢量的图形元素。

我只接触过几个常规的格式,有的格式甚至听都没听说过,我想,以后也很难遇到吧。

1.3????SharpMap名称空间概述

命名空间是非常重要的,是对它的宏观把握。

(1) SharpMap名称空间只有一个类(Map类),也是SharpMap的核心。

(2) Converts名称空间提供数据转换服务。

(3) Forms名称空间用于Windows Form编程,包含Maplmage控件。Maplmage空间是 一个简单的User Control (用户控件),用于表达Map对象。

(4) Geometries名称空间包括了 SharpMap要使用到的各种几何类及其接口类,例如 点、线、面等类,是SharpMap的基础之一。所有几何对象都继承自Geometry这个抽象 类,其中定义了几何对象应该具备的公共操作,例如大小、ID、外接矩阵、几何运算等。

(5) Layers名称空间包括了 ILayer接口、Layer集合类等,代表地图的图层。Layer是 一个抽象类,实现了 ILayer接口Layer目前有3个子类,分别是VectorLayer、LabelLayer 和WmsLayer,分别代表3种不同数据类型的图层。

(6)Data名称空间包含了与空间要素相关的类,如FeatureDataSet、FeatureDataTable、 FeatureDataRow s FeatureTableCollection

(7)Data. Providers名称空间包括了 IProvider接口和Shape文件、PostGIS数据访问实 现代码。该名称空间为SharpMap提供数据读(写)支持,通过面向接口的设计,可以方 便地扩展各类数据格式。

(8)Rendering名称空间用于提供绘制空间数据的功能,目前包括矢量绘制对象和几个 专题图绘制对象,该类将几何对象根据其Style设置,绘制到System Drawing. Graphics对象上cj

(9)Styles名称空间主要提供了图层的样式类,例如线样式、点样式、填充样式等。

(10)Utilities名称空间包括Algorithms类(目前仅实现了一个方法)、Providers类(是数据 提供对象Provider的一个Helper类,应用了反射机制)Surrogates类(主要用于系统的Pen和 Brush的序列化)、Tramf〇rm类(提供了从图片坐标到地理坐标的互相变换,即桌面GIS的二次 开发中经常使用的屏幕坐标和地理坐标的转换,主要用于地图的渲染、交互操作等)。

(11 ) Utilities. Spatiallndexing名称空间用于对象的空间索引。

(I2) Web名称空间实现了 HttpHandler和Caching类,用于网络环境D Web. UI.Ajax 提供对Ajax的支持。

不知道为什么,这些名称空间很好理解,或许是之前接触过ArcGIS的命名空间,所以有一种熟悉感觉生成的假象。

1.4????SharpMap中用到的第三方库

SharpMap中用到的第三方库如下:

(1) ProjNET。这是一套基于微软.NET2.0的开源地图投影库,支持基准面转换;支 持大地坐标系、地心坐标系以及投影坐标系。其网址为:http: //projnet. codeplex.com/。

(2) BruTile。这是一套C#i吾言开发的支持GIS瓦片(tile)数据服务的开源代码库。 其网址为:http: //brutile. codeplex. com/。

(3)????NetTopologySuite。这是一套快速、可靠的基于.NET的平台,用于处理GIS空间 数据的拓扑关系,支持对二维线性几何形状进行拓扑运算。其网址为:http: //code, google, com/p/nettopology

(4 ) nunit. framework。这是一套基于.NET的单元测试平台。其网址为: www. nun it. org/

这此都是后绪的,先把SharpMap熟悉一下。

1.5????SharpMap源代码下载????

打开网站 http: //www.codeplex.com/SharpMap,在 "Source Code" 页面下,是项目 各个版本的列表,显示各个版本的更新集编号(Change Set)、发布日期、下载次数以及 更新说明。点击页面右边"Latest Version"文字下的链接Download,可下载最新的项目打 包文件。页面中点击更新集编号,可下载相应版本。下载后文件名为sharpmap - x x x x x.zip,其中x x x x x是一个5位数字,表示当前下载文件的更新号。本书使用版本的 更新集编号是78712,这是一个较稳定的版本,会与最新版有所不同,请读者注意。

下载的压缩文件中,有三个目录:一个是Branches,为SharpMap的一些分支版本; 一个叫BuildProcessTemplates,是一些预定义的项目编译模板;第三个目录Trunk,是包含 项目代码的主目录,也是本书讲述的内容。

Trunk 目录下,有三个 Visual Studio 项目文件,即 SharpMap. sin、SharpMap. VS2008. sin、 SharpMap. VS2010. sin,分别对应 Visual Studio 2005、Visual Studio 2008、Visual Studio 2010 三个版本。本书使用的是SharpMap. VS2010. sin,建议使用VS2010。

Trank目录还包含如下子目录:

(1)????ExtemalReferences。它是项目用到的第三方库文件。

(2)????SharpMap。它是核心项目,包括 Map、Layer、Data、Geometries、Rendering、 Style等主要内容。

(3)????SharpMap. UI。它包括地图控件。

(4)????SharpMap. Extensions。它包括一些数据、图层扩展对象。

(5)????UnitTests。它用于管理单元测试。

(6 ) SharpMap. SqlServerSpatialObjects。空间数据库,底层使用 MS SQL Server 的空间 对象机制。

(7)????PostgisDemoDb、MsSqlSpatialDemoDb。它们是使用 PostGIS、MsSqlSpatila 空间数 据库的例子项目。

(8)????DemoWebSite、DemoWinForm、WinFormSatnples。它们是三个综合实例,第一个 为Wet)应用,其他两个为桌面系统。

(9)????ExampleCodeSnippets。它是 SharpMap 的代码段项目。

时间: 2024-11-10 01:34:06

《GIS软件ShapMap源码详解及应用》概述的相关文章

<<数学传奇>>概述

简介 在网易公开课上看完了蔡天新教授的<<数学传奇>>,课程共10集.分别讲述了古希腊的毕达哥拉斯.波斯(伊朗)的 花拉子密和欧玛尔.海亚姆.中国的秦九韶.英国的牛顿.法国的笛卡尔和庞加莱.德国的高斯.瑞士的欧拉.印度的拉曼纽扬.美国的冯诺依曼. 第 一集 毕达哥拉斯发现了黄金分割和毕达哥拉斯定理.毕达哥拉斯在中国被称为勾股定理,在更高阶的情况下即成为费马大定理(已被英国数学家怀尔斯证明).在 后面的课程中,讲到了赵爽的弦图证明勾股定理(秦九韶一节).古希腊为西方的源头,在数学.哲

2015 数学建模竞赛 入门与提高 读书笔记

<数学建模竞赛入门与提高> 第1章:数学建模概述 近半个多世纪以来,数学已经走进了各大领域,而与其他学科相结合形成交叉学科,首要的关键一步就是建立研究对象的数学模型,并加以计算求解,数学建模和计算机技术在知识经济时代的作用可谓是如虎添翼. 1.1  初入门径--认识数学模型与数学建模 数学建模就是用数学语言描述实际现象的过程,这里的实际现象包含具体的自然现象,也包含抽象的比如顾客对某种商品所取的价值倾向.这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释评价实际现象等内容. 数

排序算法系列:插入排序算法

概述 直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表. – <大话数据结构> 版权说明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 本文作者:Coding-Naga 发表日期: 2016年3月24日 原文链接:http://blog.csdn.net/lemon_tree12138/article/details/50968422 来源:CSDN 更多内容:分类 &

排序算法系列:快速排序算法

概述 在前面说到了两个关于交换排序的算法:冒泡排序与奇偶排序. 本文就来说说交换排序的最后一拍:快速排序算法.之所以说它是快速的原因,不是因为它比其他的排序算法都要快.而是从实践中证明了快速排序在平均性能上的确是比其他算法要快一些,不然快速一说岂不是在乱说? 本文就其原理.过程及实现几个方面讲解一下快速排序算法. 版权声明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Coding-Naga 发表日期:2016年3月1日 链接:http://blog.csdn.n

OpenCASCADE Interpolation - Lagrange

OpenCASCADE Interpolation - Lagrange [email protected] Abstract. Power basis polynomial is the most simple polynomial function. It also be called power series. OpenCASCADE provides basic computation functions for polynomial functions, such as evaluat

悼念传奇,约翰询问&amp;#183;纳什和他的妻子艾丽西亚致敬,创建一个传奇,爱数学

约翰·阅读·纳什的传记.我渴望录制通道 我一直相信数字,无论逻辑方程使我们认为.但这种追求一生的后,我问自己:"这是什么逻辑?谁决定的理由?"我的探索让我从物理到形而上,最后到了妄想症,就这样来回走了一趟. 在事业上我有了重大突破,在生命中我也找到了最重要的人:仅仅有在这样的神奇的爱情方程中,才干找到逻辑或原由来. 今晚我能站在这儿全是你的功劳.你是我成功的因素.也是唯一的因素.谢谢你 这段话是他的传记改遍的电影<漂亮心灵> 也获得了2001年4项奥斯卡奖.  这是里面最有

数学概述

数学被成为科学之王,横贯各个学科.通过对现实规律的客观分析,我们以各种假设为基础,建立数学模型,可以有效的预测物体的时间空间属性. 数学以哲学为基础,从毕达哥拉斯学派到康德的集合论,数学阐述科学,也融汇了哲学中一系列观点.从苏格拉底到柏拉图再到亚里士多德,形成西方哲学,而老子和孔子,孟子也诞生了传统中国的儒雅哲学观.相比而言,西方哲学更加精细和理性,更多的是自由讨论.文艺复兴时期的西方学者,频繁出入于咖啡厅,在那时更多的人把科学作为一种业余,时至今日,各种学术体系庞大繁杂,生活压力和社会价值观的

【分享】近4000份数学学习资源免费分享给大家

一直以来喜欢收集数学类的教程资源,于是费了好大劲从万千合集站上扒拉了下来,总结归类了一下,一共有将近4000本电子书.经测试,均可免费下载,可能会弹出小广告,可不必理会之.[仅供学术学习和交流,请无用于商业用途.]另外,如有可能,还请尽量支持正版纸质书.   数学史(54)     数学史.rar 55.6 MB   数学的起源与发展.rar 4.3 MB   费马大定理—一个困惑了世间智者358年的谜.pdf 9.5 MB   通俗数学名著译丛14-无穷之旅:关于无穷大的文化史.pdf 14.

著名数学大师丘成桐:我们为什么要读数学科普书【有视频】

丘成桐,1949年生,美籍华人,原籍广东省梅州,生于汕头,长于香港.哈佛大学数学教授.他被公认为是近1/4世纪里世界上最有影响的数学家之一,他在29岁时就攻克几何学上的难题「卡比拉猜想」,在1982年获得数学界的「诺贝尔奖」--菲尔兹奖,他是迄今惟一获得该奖的华人. <数学与人文>系列图书是他作为主编的一套数学科普读物,全面解读数学及其历史的发展历程.数学家的奇闻轶事,以采访.传记.轶事.人物.故事.诗歌等形式呈现,内容生动有趣,适合教育工作者.学生和数学爱好者阅读. 数学的发展是很美好的,因

单元测试软件工程概述

软件工程简介 软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面. 在现代社会中,软件应用于多个方面.典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等.同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等.这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活