精华内容
下载资源
问答
  • 地图符号化
    2021-07-20 08:55:09

    arcgis地图符号化

    关于arcgis符号化的问题网络上有很多,如何从自制的符号库(ServerStyle文件)取得符号一直是个问题,但是大多数都没有直接可以使用的代码或者就是只讲原理,搞得大家不明不清,这对于苦心求解的人却实是个痛苦,所以在这里我们直接贴出源代码以供大家参考(仅限唯一值符号化),可直接实现一键符号化(代码取自网络)。

        ///<summary>
        ///获取符号库中符号
        ///</summary>
        ///<param name="sServerStylePath">符号库全路径名称</param>
        ///<param name="sGalleryClassName">GalleryClass名称</param>
        ///<param name="symbolName">符号名称</param>
        ///<returns>符号</returns>
        private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)
        {
            try
            {
                //ServerStyleGallery对象
                IStyleGallery pStyleGaller = new ServerStyleGalleryClass();
                IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;
                IEnumStyleGalleryItem pEnumSyleGalleryItem = null;
                IStyleGalleryItem pStyleGallerItem = null;
                IStyleGalleryClass pStyleGalleryClass = null;
                //使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件
                pStyleGalleryStorage.AddFile(sServerStylePath);
                //遍历ServerGallery中的Class
                for (int i = 0; i < pStyleGaller.ClassCount; i++)
                {
                    pStyleGalleryClass = pStyleGaller.get_Class(i);
                    if (pStyleGalleryClass.Name != sGalleryClassName)
                        continue;
                    //获取EnumStyleGalleryItem对象
                    pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, "");
                    pEnumSyleGalleryItem.Reset();
                    //遍历pEnumSyleGalleryItem
                    pStyleGallerItem = pEnumSyleGalleryItem.Next();
                    while (pStyleGallerItem != null)
                    {
                        if (pStyleGallerItem.Category == symbolName)
                        {
                            //获取符号
                            ISymbol pSymbol = pStyleGallerItem.Item as ISymbol;
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
                            return pSymbol;
                        }
                        pStyleGallerItem = pEnumSyleGalleryItem.Next();
                    }
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
                return null;
            }
            catch (Exception Err)
            {
    
                MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
        }
    
    
    
        ///<summary>
        ///设置要素图层唯一值符号化
        ///</summary>
        ///<param name="pFeatureLayer">图层</param>
        ///<param name="SymbolsType">符号类别</param>
        private void UniqueValueRenderFlyr(IFeatureLayer pFeatureLayer, string SymbolsType)
        {
            try
            {
                //创建UniqueValueRendererClass对象
                IUniqueValueRenderer pUVRender = new UniqueValueRendererClass();
                //获取要素符号
                List<string> pFieldValues = pFeatureFLDMList(pFeatureLayer);
                for (int i = 0; i < pFieldValues.Count; i++)
                {
                    ISymbol pSymbol = new SimpleMarkerSymbolClass();
                    pSymbol = GetSymbol("C:/Users/Administrator/Desktop/符号化/Font/Font/GTWE.ServerStyle", SymbolsType, pFieldValues[i]);
                    //(pSymbol as IMarkerSymbol).Size = 15;
                    //添加唯一值符号化字段值和相对应的符号
                    pUVRender.AddValue(pFieldValues[i], pFieldValues[i], pSymbol);
                }
                //设置唯一值符号化的字段个数和字段名
                pUVRender.FieldCount = 1;
                pUVRender.set_Field(0, "FLDM");
                IGeoFeatureLayer pGFeatureLyr = pFeatureLayer as IGeoFeatureLayer;
                //设置IGeofeatureLayer的Renderer属性
                pGFeatureLyr.Renderer = pUVRender as IFeatureRenderer;
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    
        ///<summary>
        ///设置要素图层FLDM列去重唯一值(相当于数据库某一字段分组去重)
        ///</summary>
        ///<param name="layer"></param>
        private List<string> pFeatureFLDMList(IFeatureLayer layer)
        {
            List<string> pFieldValues = new List<string>();
            IFeatureClass pFeatureClass = layer.FeatureClass;
            IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true);
            //去重获取唯一值
            IDataStatistics pDStatistics = new DataStatistics();
            pDStatistics.Field = "FLDM";
            pDStatistics.Cursor = (ICursor)pFeatureCursor;
            IEnumerator pEnumerator = pDStatistics.UniqueValues;
            while (pEnumerator.MoveNext())
            {
                object myObject = pEnumerator.Current;
                pFieldValues.Add(myObject.ToString());
            }
            return pFieldValues;
        }
    

    以上的三个方法便是主要的函数,至于有什么作用备注里也写的很清楚,那么接下来就是如何调用代码了。

            this.axMapControl1.ReferenceScale = 1000;
            for (int i = 0; i <this.axMapControl1.LayerCount; i++)
            {
                IFeatureLayer pFeatureLayer = this.axMapControl1.get_Layer(i) as IFeatureLayer;
    
                switch (pFeatureLayer.FeatureClass.ShapeType)
                {
                    case esriGeometryType.esriGeometryPoint:
                        UniqueValueRenderFlyr(pFeatureLayer, "Marker Symbols");
                        //MessageBox.Show("点");
                        break;
                    case esriGeometryType.esriGeometryPolyline:
                        UniqueValueRenderFlyr(pFeatureLayer, "Line Symbols");
                        //MessageBox.Show("线");
                        break;
                    case esriGeometryType.esriGeometryPolygon:
                        UniqueValueRenderFlyr(pFeatureLayer, "Fill Symbols");
                        //MessageBox.Show("面");
                        break;
                    default:
                        break;
                }
            }
            this.axMapControl1.Refresh();
            return;
    

    这里我们从axMapControl控件获取要素图层,然后判断图层类别,执行相对于的程序,其中Marker Symbols(点)、Line Symbols(线)、Fill Symbols(填充常用于面)是符号的类别,是固定的参数不能随便更改。最后希望能给大家带来帮助。

    更多相关内容
  • mapnik地图符号化

    2020-05-20 08:54:24
    为giser提供地图符号化的样例,可自家开发定制。压缩包中包含mapnik符号化说明文档、符号化xml示例文件
  • 电子地图符号化参考代码,画点符、画线、面填充
  • 主要包括ArcGIS Engine的地图符号化实例代码和测试数据
  • ArcEngine 地图符号化

    2016-11-24 10:23:01
    ArcEngine 地图符号化总结 是否新手入门
  • 首先分析了已有的关于地图符号库研究的不足之处,在此基础上,基于ArcGIS Engine,采用程序设计和参数设计相结合的方式,对地图符号化模块进行设计,并实现了相关功能:既可对地图中的矢量目标数据(点、线、面、...
  • 地图符号化是当前数字地图研究的重要内容之一.在研究MapServer引用地图符号库实现WebGIS原理的基础上,着重探讨了MapServer的地图符号渲染方式,同时以基础要素为例实现地图的分类符号化,建立基础要素符号库,最后...
  • 首先分析了已有的关于地图符号库研究的不足之处,在此基础上,基于ArcGIS Engine,采用程序设计和参数设计相结合的方式,对地图符号化模块进行设计,并实现了相关功能:既可对地图中的矢量目标数据(点、线、面、...
  • 网络技术-网络基础
  • 地图符号化(ArcEngine)

    热门讨论 2011-05-23 12:46:30
    基于ArcEngine的GIS软件二次开发 实现地图符号化功能(包括点状图层符号化、线状图层符号化、面状图层符号化) 运行前请先将USA文件夹复制到E盘根目录下!
  • 网络游戏-一种基于DCOM技术的地图符号化网络共享服务方法.zip
  • arcgis地图符号化(一)

    万次阅读 2018-09-11 20:49:27
    首先看一下某个字段中含有多少个符号,在属性表中选择...然后选择左侧树需要的图层,如下图右侧所示选择需要符号化的字段。 进入到如下的界面。左侧有Preview预览窗口,100%表示预览的比例,还可以选择其他的预览...

    首先看一下某个字段中含有多少个符号,在属性表中选择【Select By Attributes】,比如我们看一下字段【Type】有哪些唯一值,如下图所示。我们选择【Get Unique Value】,然后会出现该字段中所有的唯一值。

    然后选择左侧树需要的图层,如下图右侧所示选择需要符号化的字段。

    进入到如下的界面。左侧有Preview预览窗口,100%表示预览的比例,还可以选择其他的预览比例。

    下面的layers表示图层,下面有不同按钮,分别是【添加】、【删除】、【上移】、【下移】。Type提供了多种符号化类型,如3D Simple Line Symbol、3D Texture Line Symbol、Cartographic Line Symbol、Hash Line Symbol、Marker Line Symbol、Picture Line Symbol、Simple Line Symbol。下面对线颜色进行配色。选择右边Layers下面某个符号,根据下表所示的CMYK的颜色值进行设置。

    编辑完后选择保存。下面是关键的一点,选择保存到创建的style文件。选择【Style References】,如下图所示,选择【Create New Style】创建一个新的Style文件。

    如下图所示创建新的style文件。用于保存创建好的字段符号化符号。下图中的Name必须与字段中的字段值相互匹配。


                                           更多内容,微信扫二维码关注公众号

                                        


     

    展开全文
  • 用geoserver发布wms服务,用udig为shp文件做符号化,生成sld符号化文件
  • 地图数据符号化

    2021-05-31 16:12:04
    可以自定义多个填充符号,在类别那里设置与属性表字段名相同,如性别,名称则命名为属性数据,如=男,女,可以实现自动匹配(属性——符号系统——类别——与样式中的符号匹配——选择新建的符号库——符号匹配) ...

    自定义——样式管理器——样式——创建新样式
    在这里插入图片描述
    以新建填充符号为例
    选择填充符号,在右边空白处右击新建——填充符号,可以自定义

    可以自定义多个填充符号,在类别那里设置与属性表字段名相同,如性别,名称则命名为属性数据,如=男,女,可以实现自动匹配(属性——符号系统——类别——与样式中的符号匹配——选择新建的符号库——符号匹配)
    

    在这里插入图片描述
    比如标记填充物——标记——编辑符号——选择字符标记(可以选择格网或随机)——点击确定,可以修改符号名称
    在这里插入图片描述
    在这里插入图片描述
    符号选择器里就出现了刚刚制作的样式
    在这里插入图片描述

    展开全文
  • ArcEngine环境下的地图符号化 实现各种地图符号的显示绘制 仅供学习
  • 首先,符号化“树”。然后,对“树”符号使用随机大小。 [1]启动ArcMap,打开【Tree_Start.mxd】; [2]在内容列表中,右键单击【TreeType_1】图层,选择【属性】按钮; [3]打开图层属性窗口,切换到【符号系统】...

    写在前面的话:
    B站搜索“中图地信”便可观看全套71章节详细操作视频(有操作数据获取,同步学习)

    (一)点符号大小、方向随机变化的实现

    随机改变“树”符号大小

    首先,符号化“树”。然后,对“树”符号使用随机大小。

    [1]启动ArcMap,打开【Tree_Start.mxd】;

    [2]在内容列表中,右键单击【TreeType_1】图层,选择【属性】按钮;

    [3]打开图层属性窗口,切换到【符号系统】页,单击【高级】按钮,选择【大小…】,如图 1;

    图片

    图 1 符号高级选项“大小…”

    [4]打开【大小】对话框,单击【按此字段中的值调整点的大小】下拉列表,选择【<随机>】选项,如图 2;

    图 2 符号大小的随机设置

    [5]在随机值部分,设定最小值为10,最大值为50,这些值的设定主要取决于地图比例尺,如图 3;

    图片

    图 3 大小的随机值范围

    [6]连续单击【OK】,查看效果,如图 4。

    图片

    图 4 用10-50的随机大小符号化“树”,但没有旋转

    随机旋转“树”符号

    对“树”符号设置随机大小后,下一步设置“树”符号的随机旋转,以增强真实感。

    [7]在内容列表中,右键点击【TreeType_1】图层,选择【属性】;

    [8]打开图层属性窗口,在【符号系统】页,单击【高级】按钮,选择【旋转(R)…】,如图 5;

    图片

    图 5 符号高级选项旋转设置

    [9]打开【旋转】对话框,单击【按此字段中的角度旋转点(R)】下拉列表,选择【<随机>】选项,如图 6;

    图片

    图 6 旋转的随机设置

    [10]设置旋转样式为【地理(G)】,在随机值部分,设定一个最小和最大旋转角度(默认情况下允许符号被旋转任意角度,这样更适用于树木);

    [11]连续单击【确定】,关闭图层属性窗口,查看地图窗口,效果如图 7。

    图片

    图 7 随机大小和随机旋转角度的“树”符号

    利用这些技术,树看起来更真实。你还可以使用相同的技术来符号化其他要素,比如符号化园区内的石头。

    (二)山体阴影和晕渲的实现

    [1]启动ArcMap,打开【Hillshade_Start.mxd】,如图 8;

    图片

    图 8 原始DEM数据

    [2]打开【ArcToolbox】->【Spatial Analyst工具】->【表面分析】->【山体阴影】工具,输入数据源选择【dem】图层,输出栅格存储在【…Data_Yosemite\Data_Elev\data.gdb】,命名为【dem_hillshade】,其他参数如图 9;

    图片

    图 9 山体阴影工具

    [3]单击【确定】,生成新的栅格数据图层【dem_hillshade】;

    [4]在内容列表中,右键单击【dem_hillshade】图层,选择【属性】;

    [5]打开图层属性窗口,切换到【显示】页,设置图层透明度为35%,如图 10;

    图片

    图 10 山体阴影图层属性

    [6]单击【确定】,关闭图层属性窗口;

    [7]在内容列表中,将【dem_hillshade】图层移至【dem】图层上方,查看地图效果,如图 11;

    图片

    图 11 叠加山体阴影图层

    [8]在内容列表中,右键单击【dem】图层,选择【属性】;

    [9]打开图层属性窗口,切换到【符号系统】页,选择【拉伸】,设置类型为【最值】,选择带有晕渲效果的色带,如图 12;

    图片

    图 12 dem图层属性

    [10]单击【确定】,查看地图效果,如图 13。

    图片

    图 13 山体阴影和晕渲效果

    有些制图者,会把专题数据设置为透明,放在山体阴影图层的上方,而对山体阴影图层做不透明处理,表达出来的效果与上述方法相似。

    (三)光照效果水体的实现

    [1]启动ArcMap,打开【lake_Start.mxd】,如图 14;

    图片

    图 14 加载湖泊面要素类

    [2]在内容列表中,右键单击【湖泊】图层,选择【打开属性表】,弹出属性表窗口,单击【表选项】->【添加字段】;

    图片

    图 15 添加字段

    [3]打开添加字段窗口,输入字段名称【RandomValue】,类型为【短整型】,如图 16,单击【确定】;

    图片

    图 16 添加字段设置

    [4]在属性表中选中【RandomValue】列,右键单击选择【字段计算器】,打开【字段计算器】对话框:

    图片

    图 17 打开字段计算器对话框

    [5]在【字段计算器】对话框张,选择【Python】解析程序,勾选【显示代码块】,在【预逻辑脚本代码】中输入以下内容:

    import numpy.random as R

    def getRandomValue():

      return R.random_integers(1,4)

    注意return语句前缩进两个字符,否则会报错,Python有严格的缩进要求。在底部【RandomValue=】下输入“getRandomValue()”,如图 18所示:

    图片

    图 18 字段计算器

    [6]如果愿意,可以单击【保存(S)…】来保存这个表达式,便于以后使用和修改;

    [7]单击【确定】,执行计算,【RandomValue】字段中随机生成1、2、3、4的值,关闭属性表;

    [1]在内容列表中,右键单击【湖泊】图层,选择【属性】;

    [2]打开图层属性窗口,切换到【符号系统】页,选择【类别->唯一值】,在【值字段】列表中选择【RandomValue】字段,单击【添加所有值】,如图 19所示;

    图片

    图 19 按RandomValue值分类渲染

    [3]在符号栏中右键单击任意符号,选择【所有符号的属性】;

    [4]打开【符号选择器】对话框,单击【编辑符号】;

    [5]打开【符号属性编辑器】窗口,修改填充符号类型为【渐变符号】,在色带上右键单击,选择【属性】,如图 20;

    图片

    图 20 渐变符号属性

    [6]打开【编辑色带】窗口,选择【颜色1】,调整色板颜色,选择深一些的颜色或单击【更多颜色…】自定义颜色,本例中【颜色1】使用RGB(0,168,230)。选择【颜色2】,调整色板颜色,选择深一些的颜色或单击【更多颜色…】自定义颜色,本例中【颜色2】使用RGB(191,233,255),如图 21所示;

    图片

    图 21 编辑色带

    [7]单击【确定】,回到【符号属性编辑器】窗口,右键单击刚刚修改的色带,选择【保存为样式…】,输入名称,便于以后在个人的Style中找到被保存的自定义色带;

    [8]修改间隔为50,百分比为100,角度为135,如图 22;

    图片

    图 22 符号属性编辑器

    [9]单击【轮廓】,弹出【符号选择器】对话框,修改轮廓颜色为【无颜色】;

    [10]连续单击【确定】,回到图层属性窗口【符号系统】页,单击【应用】,可以看到符号显示效果发生变化;

    [11]依次右键单击其他符号,选择【所选符号的属性(S)】,编辑符号,修改渐变填充角度为45度、225度和315度,可以看到每个符号都发生了变化,如图 23所示;

    图片

    图 23 不同渐变角度的填充符号

    [12]单击【确定】,关闭图层属性窗口。最后效果如图 24所示。

    图片

    图 24 水体光照效果

    【补充说明】:第4步的操作,可以替换为VB Script解析程序,字段赋值使用“Fix(Rnd*4)+1”,同样也可以得到随机值从1到4。

    通过光照效果,是不是大大增加了地图的真实感呢?当然,你也可以叠加相应的地形数据,使得效果看起来更加真实。 

    (四)道路融合效果的实现

    下面以城市中道路的叠加和融合为例,介绍单图层、图层组的符号级别使用。

    单图层符号级别

    [1]启动ArcMap,打开【Road_Start.mxd】,右键【单图层】数据框,选择【激活】,可以看到【Roads_All】图层,该图层包含多种类型的道路,如主要高速公路、街道等;;

    [2]放大地图,如图 25所示,可以看到,使用默认的绘制顺序,道路之间会产生冲突;

    图片

    图 25 出现符号冲突的地方

    [3]在内容列表中,右键单击【Roads_All】图层,选择【属性】;

    [4]打开【图层属性】窗口,切换到【符号系统】页,如图 26所示;

    图片

    图 26 道路图层

    [5]单击【高级】,选择【符号级别(L)…】;

    图片

    图 27 在高级里设置符号级别

    [6]打开【符号级别】窗口,在符号级别设置中有两种视图模式,如图 28是缺省模式,勾选【使用下面指定的符号级别来绘制此图层】选项可以启用符号级别绘制。列表中显示了当前图层的所有符号,可以设置道路符号的连接和合并特性,可通过箭头键调整符号绘制顺序,也可以单击【切换到高级视图】,切换到高级视图;

    图片

    图 28 符号级别设置

    [7]如图 29是高级视图,单击多图层符号可查看每个层符号对应的数值,如图 30。在绘制顺序中,数值越小对应的绘制顺序越靠前,即值设置为0的图层最先绘制,值为6的图层最后绘制;

    图片

    图 29 高级视图

    图片

    图 30 多图层符号设置

    [8]按图 30中的数值设置图层绘制顺序,连续单击【确定】,回到地图窗口,道路显示效果如图 31所示。

    图片

    图 31 设置符号级别后的效果

    图层组符号级别

    [1]右键【图层组】数据框,选择【激活】,放大地图,如图 32所示,可以看到,使用默认的绘制顺序,道路之间会产生冲突;

    图片

    图 32 单个道路图层符号化后局部放大效果

    [2]在内容列表中,右键单击【道路图层组】,选择【属性】;

    [3]打开【图层组属性】窗口,切换到【组合】页,如图 33;

    图片

    图 33 工作组图层属性设置

    [4]单击【符号级(S)】进入符号级别设置窗口,如图 34,同样有两种视图模式:缺省视图和高级视图。设置方式与单图层的操作第6至8步一样。

    图片

    图 34 符号级别设置

    展开全文
  • 3 混列线符号3 面符号(填充符号)3.1 简单填充符号3.2 标记填充符号3.3 其他各种填充3.4 线填充符号4 色带4.1 随机色带4.2 多部分色带(组合形式)4.3 预置色带4.4 算法色带5 文本符号 基站,光纤 自定义符号 例如...
  • 在数字地图转换为模拟地图过程中,地图符号化指将已处理好的矢量地图数据恢复成连续图形,并符之以不同的符号表示的过程。 3、符号化原则 按照实际形状确定地图符号的基本形状,以符号的颜色或者形状区分事物的性质...
  • osmdroid基础符号化.zip

    2020-07-16 14:52:43
    开源地图osmdroid的基础符号化,包括文字、点线的符号化的基础示例。可以设置点的显示图片,线条的可以符号化为虚线、实现等。
  • 不知道高德、百度、谷歌、腾讯的地图是怎么配图的。 毕竟这种大型的电子地图,应该不是常规的GIS产品吧。 arcgis中的arcmap应该是很常用的地图呈现软件。很多GIS服务地图应该都是用arcmap配的mxd文件吧。 esri...
  • C++ 地图符号

    2014-06-28 18:51:37
    基于VC++6.0系统自己编写的简单地图符号
  • ArcMap进行专题图符号化

    千次阅读 2021-08-19 16:24:07
    在内容列表中,右键单击【Geo_IN】图层,选择【将符号系统转换为制图表达…】,弹出【将符号系统转换为制图表达】窗口,使用默认选项,单击【转换】,将当前的符号化样式转换为制图表达。在内容列表中,新增一个图层...
  • 信息-电子商务-电子地图符号库设计.pdf
  • AE学习笔记之地图符号化

    千次阅读 2016-09-18 19:18:52
    地图符号化就是对ArcGIS 中加载的地图图层进行渲染,地图图层可以分为点、线、面、三种形式。根据每个图层的图层类型可以分别对点、线、面要素,即MarkerSymbol、LineSymbol、和FillSymbol 进行渲染。  1、点对象 ...
  • 运用C++编程语言绘制一些常用的地图符号,如五角星,实线,虚线等
  • 符号化地图图层

    2021-02-20 14:26:36
    符号化地图图层 ArcGIS Pro 2.7|其他版本 符号系统使用符号表示地图图层的要素和属性。例如,在城市图层中,黑色圆圈可对城市进行符号化。用于符号化每个城市的人口的圆圈大小可能会有所不同。根据可见属性(例如...
  • 第6章地图符号设计 地图符号 地图符号的绘制 地图符号设计 地图符号化过程 地图注记 地图布局 图幅设计 第6章地图符号设计 地图符号是地图语言 是对制图对象的综合 第一次 广义的地图符号的概念是指表示地表各种事物...
  • 基于CorelDRAW VBA的地图制图符号化程序设计
  • vc地图导航 源代码
  • 信息-电子商务-城市旅游电子地图符号库标准及地图表达研究.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,459
精华内容 8,583
关键字:

地图符号化

友情链接: ST7558_v2.3.zip