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);
        }
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值