1. 简介

SharpMap是基于.net2.0的GIS系统。支持多种.NET开发语言(C# C++ 等)。使用属性数据作为注记。符合OpenGIS的简单要素规范(OpenGIS Simple Features Specification),支持点、线、面、多点、多线、多面、几何对象集合等要素类型)。可使用代理(delegates)编制复杂主题地图。能实时投影。支持使用Http Handler生成地图。支持AJAX地图控件。支持WMS1.3.0服务。支持数据格式扩展。支持图层扩展。

2. 下载SharpMap

下载地址:http://sharpmap.codeplex.com/SourceControl/latest

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

Trunk目录下有三个Visual Studio项目文件,即SharpMap.sln、SharpMap.VS2008.sln、SharpMap.VS2010.sln,分别对应VS2005、VS2008、VS2010三个版本。

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

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

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

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

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

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

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

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

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

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

二、地图Map类

Map是装载地图图层Layer的容器。用户可以通过创建Map对象的实例来得到地图,并通过GetMap方法来得到渲染(render)后的地图图形。

实例:

构造一个地图对象,代码

SharpMap.Map myMap = new SharpMap.Map();
myMap.MinimumZoom = 100; //最小缩放
myMap.BackgroundColor = Color.White;
SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("My layer");
string shpLayerFullPath = @"C:\data\Lotlines.shp";
myLayer.DataSource = new ShapeFile(shpLayerFullPath);
myLayer.FillStyle = new SolidBrush(Color.FromArgb(240, 240, 240));
myLayer.OutlineStyle = new Pen(Color.Blue, 1);
myLayer.Style.Line.Width = 2;
myLayer.Style.Line.Color = Color.Black;
myLayer.Style.Line.EndCap = System.Drawing.Drawing2D.LineCap.Round;
myLayer.Style.Line.StartCap = layRailroad.LineStyle.EndCap;
myLayer.Style.Line.DashPattern = new float[]{4.0f, 2.0f};
myLayer.Style.EnableOutline = true;
myLayer.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
myLayer.MaxVisible = 40000;
myMap.Layers.Add(myLayer);
myMap.Center = new SharpMap.Geometries.Point(725000, 6180000);
myMap.Zoom = 1200;
myMap.Size = new System.Drawing.Size(300, 200);
System.Drawing.Image imgMap = myMap.GetMap();

  

Map类的数据成员、属性、方法和事件

三、地图控件MapImage类

四、图层类

五、绘制渲染类Rendering

六、样式类Style

七、数据类Data

八、几何对象类Geometry

九、Windows应用程序开发——WinFormSamples

十、Windows应用程序开发——DemoWinForm

十一、数据源扩展与图层对象扩展

>>与GPSMap对比

开发语言:C#  -  Java

开发平台:Windows  -  Android

Map  -   Map

MapImage  -  MapControl

Layer  -  Layer

Rendering  -  Render

Style  -  ?

Data(PostGIS空间数据库)  -  Dataset(SQLite数据库)

Geometry  -  Cargeometry

D:\Documents\Visual Studio 2008\Projects\sharpmap-78712\Trunk\SharpMap.VS2008.sln

 d:\Documents\Visual Studio 2008\Projects\MySharpMap\MySharpMap\

注:参考书籍:陈真,何津,余瑞, 《GIS软件SharpMap源码解析及应用》,2012,3.

SharpMap源代码解析的更多相关文章

  1. Spring源代码解析

    Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.itey ...

  2. Arrays.sort源代码解析

    Java Arrays.sort源代码解析 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类 ...

  3. Spring源代码解析(收藏)

    Spring源代码解析(收藏)   Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的 ...

  4. volley源代码解析(七)--终于目的之Response<T>

    在上篇文章中,我们终于通过网络,获取到了HttpResponse对象 HttpResponse是android包里面的一个类.然后为了更高的扩展性,我们在BasicNetwork类里面看到.Volle ...

  5. Cocos2d-x源代码解析(1)——地图模块(3)

    接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInf ...

  6. Android EventBus源代码解析 带你深入理解EventBus

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:[张鸿洋的博客] 上一篇带大家初步了解了EventBus ...

  7. 源代码解析Android中View的layout布局过程

    Android中的Veiw从内存中到呈如今UI界面上须要依次经历三个阶段:量算 -> 布局 -> 画图,关于View的量算.布局.画图的整体机制可參见博文 < Android中Vie ...

  8. Android xUtils3源代码解析之网络模块

    本文已授权微信公众号<非著名程序猿>原创首发,转载请务必注明出处. xUtils3源代码解析系列 一. Android xUtils3源代码解析之网络模块 二. Android xUtil ...

  9. Android View体系(八)从源代码解析View的layout和draw流程

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源 ...

随机推荐

  1. 【342】Linear Regression by Python

    Reference: 用scikit-learn和pandas学习线性回归 首先获取数据存储在 pandas.DataFrame 中,获取途径(CSV 文件.Numpy 创建) 将数据分成 X 和 y ...

  2. 01Tensorflow学习之Tensorflow基本介绍

    1 tensorflow简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基 ...

  3. Fb,tw等emoji相关

    最近处理fb  emoji,查了下相关的资料.记录于此 twitter blog 关于:https://blog.twitter.com/developer/en_us/a/2014/open-sou ...

  4. maven 项目 编码

    今天在DOS下执行mvn compile命令时报错说缺少必要符号,事实上根本就没有缺少,但何以如此呢,为啥eclipse在编译时就没有这问题呢? 原因是编码的问题造成的! eclipse在编译的使用使 ...

  5. webdriver简介及浏览器的驱动

     1.webdriver概述:  webdriver(selenium2=selenium1+webdriver)是一种用于web应用程序的自动化测试工具,它提供了一套友好的API,与selenium ...

  6. javascript,排列组合

    输入参数 ‘abc',输出所有组合 ['abc','acb','bac','bca','cab','cba'] 思路:分为3列,第一列为  a, b,c :第二列为a,b,c出去第一列选中过后的,比如 ...

  7. ALTER数据库

    alter table dbo.Sheet1$ alter column UserId int null

  8. 如何使用eclipse搭建maven环境以及常见的错误

    这篇博客适合零基础学习maven,搭建maven以及运行项目,常见的错误,我会在结尾写出说明白,看是否和大家的错误一样,或者文章的括号注释部分也会写出一些注意点. 第一步:就是下载maven,以及配置 ...

  9. phpStudy5——php导入其他php文件(php文件的引入)

    前言: 通过前边几个例子,相信大家都会有一个疑惑了,就是每个请求数据库的php页面,都要写一次连接数据库的代码,这个肯定是有违代码复用原则的.那么怎么解决这个问题呢? 在php中可以通过include ...

  10. C++,坑...

    如果使用const全局变量,记得声明处的引用处都加extern. uint32_t等,t代表是typedef的,在stdint.h头文件里,C99后引入,记得先测试再用. accept函数的参数,记得 ...