zoukankan      html  css  js  c++  java
  • SharpMap开发教程——图层标注

    在GIS开发中,根据图层属性字段对要素进行标注(图层标注)是一项常规的、必备的功能。在基于SharpMap开发GIS应用时,也可以方便的实现该功能。

    1、加载Shapefile图层数据

    SharpMap.Layers.VectorLayer vLayer = new SharpMap.Layers.VectorLayer("States");
    vLayer.DataSource = new SharpMap.Data.Providers.ShapeFile("ShpData\Provinces_R.shp", true);
    mapBox1.Map.Layers.Add(vLayer);

    添加图层、设置图层显示样式,详细步骤可参考SharpMap入门教程

    2、添加图层标注

    与一般GIS软件不同,SharpMap的图层标注是以一类特殊的图层(LabelLayer)而存在的。

    SharpMap.Layers.LabelLayer lLayer = new SharpMap.Layers.LabelLayer("labels");
    lLayer.DataSource = vLayer.DataSource;
    lLayer.Enabled = true;
    lLayer.LabelColumn = "name";
    mapBox1.Map.Layers.Add(lLayer);

    创建一个标注图层lLayer,然后指定标注图层的数据源,也就是指定对哪一个矢量图层做标注,再指定标注字段即可。

    3、设置各种图层标注风格

    lLayer.Style = new SharpMap.Styles.LabelStyle();
    lLayer.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
    lLayer.SmoothingMode = SmoothingMode.AntiAlias;
    lLayer.Style.CollisionDetection = true;
    lLayer.Style.ForeColor = Color.DarkBlue;
    lLayer.Style.HorizontalAlignment = LabelStyle.HorizontalAlignmentEnum.Center;
    lLayer.Style.Offset = new PointF(1f,1f);
    lLayer.Style.BackColor = Brushes.White;

    有非常多的参数和方法都可以来设置图层标注风格,参见下图

    图层渲染效果如下

    4、图标标注的旋转角度问题

    有两个参数可以控制图层标注的旋转角度,一是设置LabelLayer的RotationColumn,即指定一个数值型[0,360]的字段,根据字段数值来旋转标注内容的角度,该角度是以正右方向为起始顺时针旋转的夹角;二是设置LabelStyle的Rotation值[0,360],也是以正右方向为起始顺时针旋转的夹角。

    二者在使用效果上有所不同,设置LabelLayer的RotationColumn,可以为每一个要素标注定制一个合适的旋转角度。

    lLayer.RotationColumn = "labelangle";

    其中Shapefile属性表中,内蒙古的labelangle为330,其余为0,效果如下

    而设置设置LabelStyle的Rotation值,则是对图层中的所有标注同步起作用。

    lLayer.Style.Rotation = 30;

    可以看到,所有要素标注都被旋转了30度。其中内蒙古要素的标注,因为两个旋转因素的作用(330+30)而恢复为水平状态。

  • 相关阅读:
    [转]SubVersion 和 CVSNT在Windows下的安装及初步管理
    [Java20071101]JDK配置
    [English20071023]疯狂英语永恒不变的18条黄金法则
    [文摘20071020]富人和穷人的经典差异
    [English20071024]疯狂突破高中句型300句
    [文摘20071017]回家真好 (工作是为了生活)
    [文摘20071020]老婆和老妈掉水里终于有答案啦
    [转]flash与后台数据交换方法整理
    Repeater使用:绑定时 结合 前台JS及后台共享方法
    [文摘20071019]九九重阳节的来历 重阳节传说故事 重阳节的活动习俗 重阳节诗篇
  • 原文地址:https://www.cnblogs.com/hans_gis/p/3731228.html
Copyright © 2011-2022 走看看