DotSpatial学习之路一——简介及基本操作

xiaoxiao2021-02-28  64

DotSpatial简介环境搭建基本操作

DotSpatial简介

官方介绍:DotSpatial是一个NET 4.0的GIS库,具有空间数据读取、绘制、分析、以及扩展等功能。可用于:

在.NET窗体或Web程序下显示地图读写矢量, 网格和栅格数据符号化和标注数据投影读取并显示属性表空间分析读取GPS数据

DotSpatial是开源的GIS地图库,由MapWindow基础上转换而来,因此在功能上继承了原有的功能。个人觉得优缺点如下:

优点 符号系统比较丰富,可以做出复杂的符号 架构合理 模块分离,降低了耦合度 可扩展性强缺点 图形绘制效率较MapWindow低 对较大影像支持不好 支持的投影方式少

对于一般所需的地图功能,DotSpatial基本能满足,因此也不必使用昂贵的商业软件进行二次开发了。

环境搭建

首先在DotSpatial官网下载发布包并解压; 新建一个WinForm工程,添加引用; 工具箱中添加DotSpatial.Controls.dll到常规; 拖动Legend和Map到窗体中,并设置Map的legend属性为legend1;

基本操作

添加数据 添加一个按钮,双击该按钮添加后台代码: private void button1_Click(object sender, EventArgs e) { map1.AddLayers(); } 地图功能 map1.FunctionMode = DotSpatial.Controls.FunctionMode.Pan;//平移 map1.FunctionMode = DotSpatial.Controls.FunctionMode.ZoomIn;//放大 map1.FunctionMode = DotSpatial.Controls.FunctionMode.ZoomOut;//缩小 map1.FunctionMode = DotSpatial.Controls.FunctionMode.Select;//选择 map1.FunctionMode = DotSpatial.Controls.FunctionMode.Info;//要素识别 创建矢量 /// <summary> /// 创建点 /// </summary> private void CreateNewPointLayer() { FeatureSet fs = new FeatureSet(FeatureType.Point); DotSpatial.Topology.Point point0 = new DotSpatial.Topology.Point(0, 0); fs.AddFeature(point0); MapPointLayer layer = new MapPointLayer(fs) { LegendText = "点" }; map1.Layers.Add(layer); } /// <summary> /// 创建线 /// </summary> private void CreateNewLineLayer() { FeatureSet fs = new FeatureSet(FeatureType.Line); List<Coordinate> coords = new List<Coordinate>() { new Coordinate(0,0), new Coordinate(10,10), new Coordinate(20,15) }; LineString line = new LineString(coords); fs.AddFeature(line); MapLineLayer layer = new MapLineLayer(fs) { LegendText = "线" }; map1.Layers.Add(layer); } /// <summary> /// 创建面 /// </summary> private void CreateNewPolygonLayer() { FeatureSet fs = new FeatureSet(FeatureType.Polygon); List<Coordinate> coords = new List<Coordinate>() { new Coordinate(25,25), new Coordinate(35,25), new Coordinate(35,35), new Coordinate(25,35) }; Polygon polygon = new Polygon(coords); fs.AddFeature(polygon); MapPolygonLayer layer = new MapPolygonLayer(fs) { LegendText = "面" }; map1.Layers.Add(layer); }
转载请注明原文地址: https://www.6miu.com/read-55495.html

最新回复(0)