1.背景

因为项目需求,需要基于开源项目来对SHP进行相关操作。涉及到的主要功能就是加载SHP读取其中的属性信息和几何信息。于是选择了Sharpmap来进行,在使用中对其相关功能做了初步了解,做个总结。

2.SharpMap 简介

官网地址:http://sharpmap.codeplex.com/

在其中可以下载最新的Sharpmap源码。在官网中可以看到目前最新的更新基本停留在2014年,据闻目前其作者已经入职了esri。

2.1基本功能

(1)符合OpenGIS的简单要素规范,支持点、线、面、多点、多线、多面、集合对象集合等要素集合。

(2)支持常规的地图操作,例如旋转、平移、缩放等。

(3)实时的地图投影转换。

(4)使用异步委托实现效率最大化,可编制展示复杂的地图主体渲染。

(5)支持Web地图展示,支持AJAX地图控件,支持WMS服务。

(6)有很好的接口支持数据格式和图层的扩展。

2.2支持的格式

(1)支持矢量数据格式:例如ESRI Shape File、PostGIS、Oracle、Microsoft SQLServer、SQLite等。

(2)支持栅格数据格式:例如.bmp、.gif、.tif、.png、.dem等格式。

(3)WMS地图服务。

2.3引入的第三方库

BruTile:这是基于C#开发的支持GIS瓦片(tile)的开源代码库地址为:https://github.com/BruTile/BruTile

NetTopoLogySuite:基于.net平台处理GIS空间数据及其空间关系的类库。开源代码库地址为:https://github.com/NetTopologySuite/NetTopologySuite

GeoAPI,实现.net与GIS互操作开源代码库地址为:https://github.com/NetTopologySuite/GeoAPI有兴趣的话可以研究一下。

ProjNET:基于.Net开源的地图投影库,支持基准面转换,支持大地坐标系,地心坐标系以及投影坐标系。开源代码库地址为:http://projnet.codeplex.com/

2.4环境搭建

下载好DLL后,将其引入:

3.几个Demo

3.1添加数据至MapBox

3.2基本工具栏

3.3读取SHP

4.一个扩展问题

SharpMap可以对图层做渲染展示,空间查询,拓扑判断等功能,相关功能在网上均能找到例子。但是对SHP的编辑,SHP的创建目前没有找到合适例子,查看源码也没有找到相关接口,如果有知道如何基于SharpMap做SHP编辑的朋友,还望指教。

这是我在网上找到的关于该问题的一个比较全面的回复:

SharpMap简析的更多相关文章

  1. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  2. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

  3. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  4. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  5. PHP的错误报错级别设置原理简析

    原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices inclu ...

  6. Android 启动过程简析

    首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...

  7. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  8. Java Annotation 及几个常用开源项目注解原理简析

    PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...

  9. 【ACM/ICPC2013】POJ基础图论题简析(一)

    前言:昨天contest4的惨败经历让我懂得要想在ACM领域拿到好成绩,必须要真正的下苦功夫,不能再浪了!暑假还有一半,还有时间!今天找了POJ的分类题库,做了简单题目类型中的图论专题,还剩下二分图和 ...

随机推荐

  1. C++实现简单的单链表

    下面实现的是一个简单的单链表 功能不多,学习使用 #pragma once #include <iostream> using namespace std; class ListEx { ...

  2. WebAPi性能

    提高WebAPi性能   前言 WebAPi作为接口请求的一种服务,当我们请求该服务时我们目标是需要快速获取该服务的数据响应,这种情况在大型项目中尤为常见,此时迫切需要提高WebAPi的响应机制,当然 ...

  3. [转]强大的vim配置文件,让编程更随意

    转自:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有 ...

  4. codeforce 230D Dijsktra

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...

  5. iOS8之后CoreLocation定位的使用

    在Info.plist文件中添加如下配置: //始终允许访问位置信息 (1)NSLocationAlwaysUsageDescription //使用应用程序期间允许访问位置数据 (2)NSLocat ...

  6. 【Linux命令】mysql数据库常用操作命令

    #数据库操作: #建立数据库 create database data_name #删除数据库 drop database data_name #查看: show databases; #表操作: # ...

  7. Jmeter+badboy环境搭建

    [JMeter安装] 1. 访问官网 下载jmeter包 http://jmeter.apache.org/ 2. 解压到安装目录 D:\Program Files (x86)\apache-jmet ...

  8. PHP封装数据库连接

    将数据库连接放在类里面,用的时候直接实例化类. 将数据库地址,用户名,密码做成成员变量 将数据库连接做成成员方法,通过传入的sql语句返回结果集对象 class DBDA{ public $host= ...

  9. Apache Kafka简介与安装(一)

    介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳. 将向 ...

  10. BZOJ.4897.[Thu Summer Camp2016]成绩单(区间DP)

    BZOJ 显然是个区间DP.令\(f[l][r]\)表示全部消掉区间\([l,r]\)的最小花费. 因为是可以通过删掉若干子串来删子序列的,所以并不好直接转移.而花费只与最大最小值有关,所以再令\(g ...