`
rocye
  • 浏览: 119927 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ArcEnging 导入shp文件后自定义图层中各要素的颜色

阅读更多

经过前面一段时间狂乱的baidu&google,目前ArcEngine开的项目算是完成了基本的外观,这次解决的问题是从CAD导成shp文件后,先前在CAD中定义的颜色也是可以读取到的,只不过它的Color值是采用的 ACI 规范,需要转换成RGB我们才方便使用。当然主要的问题是MapControl导入shp文件时,它给每个图层中要素的颜色是随机的,不是原图中所定义的颜色,所以我们需要这样在google中搜索"ArcEngine 修改 图层颜色","ArcEngine 自定义要素颜色",又是一阵狂乱的搜索,当然也能找到一些信息,但最后还是在看那个E文的MSDN帮助时找到了解决办法。上面直接有一例子,这里做了一些修改,贴出来:

 

 public static void DefineFeatureColor(IGeoFeatureLayer pGeoFeatureLayer, string fieldName)
        {
            //Make the renderer.
            IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();

            //These properties should be set prior to adding values.
            pUniqueValueRenderer.FieldCount = 1;
            pUniqueValueRenderer.set_Field(0, fieldName);

            IDisplayTable pDisplayTable = pGeoFeatureLayer as IDisplayTable;
            IFeatureCursor pFeatureCursor = pDisplayTable.SearchDisplayTable(null, false) as IFeatureCursor;
            IFeature pFeature = pFeatureCursor.NextFeature();

            bool ValFound;
            int fieldIndex;

            IFields pFields = pFeatureCursor.Fields;
            fieldIndex = pFields.FindField(fieldName);
            while (pFeature != null)
            {
                string classValue = pFeature.get_Value(fieldIndex).ToString();

                IColor color =  ColorUtilities.GetColorByACI(Int16.Parse(classValue));
                IRgbColor rgb = color as  IRgbColor;
                //System.Console.WriteLine("KVL:" + classValue+"-->RGB"+ rgb.Red + "," + rgb.Green + "," + rgb.Blue);

                ISymbol pClassSymbol = getSymbolByShapType(pGeoFeatureLayer.FeatureClass.ShapeType, color);

                //Test to see if this value was added
                //to the renderer. If not, add it.
                ValFound = false;
                for (int i = 0; i <= pUniqueValueRenderer.ValueCount - 1; i++)
                {
                    if (pUniqueValueRenderer.get_Value(i) == classValue)
                    {
                        ValFound = true;
                        break; //Exit the loop if the value was found.
                    }
                }
                //If the value was not found, it is new and it will be added.
                if (ValFound == false)
                {
                    pUniqueValueRenderer.AddValue(classValue, fieldName, pClassSymbol as ISymbol);
                    pUniqueValueRenderer.set_Label(classValue, classValue);
                    pUniqueValueRenderer.set_Symbol(classValue, pClassSymbol as ISymbol);
                }
                pFeature = pFeatureCursor.NextFeature();
            }

            //'** If you didn't use a predefined color ramp
            //'** in a style, use "Custom" here. Otherwise,
            //'** use the name of the color ramp you selected.
            pUniqueValueRenderer.ColorScheme = "Custom";
            ITable pTable = pDisplayTable as ITable;
            bool isString = pTable.Fields.get_Field(fieldIndex).Type == esriFieldType.esriFieldTypeString;
            pUniqueValueRenderer.set_FieldType(0, isString);
            pGeoFeatureLayer.Renderer = pUniqueValueRenderer as IFeatureRenderer;

            //This makes the layer properties symbology tab
            //show the correct interface.
            IUID pUID = new UIDClass();
            pUID.Value = "{683C994E-A17B-11D1-8816-080009EC732A}";
            pGeoFeatureLayer.RendererPropertyPageClassID = pUID as UIDClass;

        }

 

上面的代码大部分来自帮助文档中的例子,做了一些逻辑上的修改,就是把原例子中的Random颜色换成读取要素Color转成RGB再渲染。参数fieldName其实可以不用要,我这里就是"Color"这个字段名。

分享到:
评论

相关推荐

    图层shp文件导入数据库工具

    5. 数据一致性检查:在导入完成后,应进行数据一致性检查,确保所有.shp文件的数据都被正确无误地导入到数据库中,且保持原有的空间关系和属性信息。 总结来说,"图层shp文件导入数据库工具"是一个实用的软件,它...

    vue 导入shp文件展示在地图上

    本篇文章将详细阐述如何在Vue项目中导入SHP文件,并将其内容在地图上进行展示。 首先,我们需要了解SHP文件。它是由Esri公司开发的一种地理空间数据存储格式,包含几何对象、属性数据以及相关的文件。SHX是索引文件...

    SHP导入奥维 步骤.docx

    - 不同的SHP文件可能包含不同类型的地理元素,比如点(Point)、线(LineString)、多边形(Polygon)等,导入后需确保与奥维地图的图层类型匹配。 - 如果SHP文件中的坐标系统与奥维地图默认的不同,需要正确配置...

    c# + AO 将shp文件导入到GeoDatabase中

    该资源主要讲解了如何使用C#和AO(ArcObjects)将SHP文件导入到GeoDatabase中生成一个独立的要素类。 首先,需要了解AO(ArcObjects)是什么?AO是ESRI提供的一组软件开发工具,允许开发者使用ArcGIS功能来创建自己...

    类:要素导出shp文件

    使用 IWorkspaceFactory 接口创建了输出 shp 文件的工作空间后,接着需要将要素类导出到 shp 文件中。使用 IFeatureClassName 接口来设置要素类的名称,然后使用 IWorkspaceName 接口来设置输出 shp 文件的路径。 ...

    Shp导入postgis中的过程

    在实际应用中,Shp 文件导入 PostGIS 中的过程可以根据需要执行多次,以便将多个 Shp 文件导入到 PostGIS 中。在将 Shp 文件导入 PostGIS 中时,需要注意字符编码的转换,以避免数据损失或错误。 Shp 文件导入 ...

    Shp数据导入和导出

    本文将深入探讨如何在imobile for Android环境中进行Shp数据的导入与导出操作。 1. **Shp文件介绍** Shapefile是由Esri公司开发的一种地理信息系统(GIS)文件格式,主要用于存储矢量图形数据,如点、线、多边形等...

    国内各个江河水系图层shp文件.zip

    标题中的“国内各个江河水系图层shp文件.zip”是指一个包含中国各地河流和湖泊地理信息的压缩包。这个压缩文件中包含了不同级别的河流数据以及湖泊数据,以Shapefile(shp)格式存储,这是一种常见的地理信息系统...

    将shp文件导入到MYSQL中

    识别shp文件并转换成SQL,导入到mysql数据库中,已实践

    【数据分享】丝绸之路-天地图专题数据图层shp文件.zip

    结合天地图的服务,这些专题数据图层可以与实时地图无缝对接,用户可以在网页或GIS软件中加载这些shp文件,实现对丝绸之路的精确定位和展示,从而更好地理解其地理分布和历史演变。 shp文件包含的元数据通常包括...

    批量导入shp数据

    SHP文件是一种常见的矢量数据格式,通常包含地图要素如点、线、面等信息。本示例将聚焦于如何利用.NET框架结合Esri的iObjects库来实现这个功能,并通过设置定时任务,每1分钟自动执行一次导入操作。 首先,我们需要...

    Geoserver添加shp地图的方法

    本文将详细介绍如何在geoserver服务器中添加shp类型的地图,从而解决中文乱码和地图图层中中文不显示的问题。 一、设置自定义style 在geoserver中添加shp地图之前,需要先设置自定义style。首先,打开geoserver...

    geoserver发布shp格式的图层 实现步骤(含图).doc

    在IT行业中,地理信息系统(GIS)的使用越来越广泛,而GeoServer是一款开源的GIS服务器,它支持多种数据格式,如Shapefile(SHP),用于发布地图服务。本篇将详细介绍如何利用GeoServer发布SHP格式的图层,帮助你更...

    中国乡镇边界面图层SHP和乡镇点图层SHP

    SHP文件不包含颜色、符号或其他视觉属性,这些通常在关联的DBF、PRJ、SBN和SBX文件中定义。 2. 数据内容: - "中国乡镇边界-prj.dbf":这是一个DBF文件,与SHP文件配合使用,存储了乡镇边界几何对象的属性信息,如...

    ArcGis亚洲shp文件.zip

    1. 数据加载:将下载的ZIP文件解压后,将.shp文件导入ArcGIS,它会自动识别并加载所有关联文件。 2. 属性查询:通过.dbf文件,可以查看并编辑每个地理要素的属性信息,例如国家名称、人口、面积等。 3. 编辑与修改...

    java中读取shp文件数据存入数据库

    shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形,每一个都有他们各自的属性。 shape文件由ESRI开发,一个...

    四川各区县shp文件 矢量.rar

    标题中的“四川各区县shp文件 矢量.rar”表明这是一个包含四川省各个区县地理信息的矢量数据压缩包,格式为SHP。SHP是Esri公司开发的一种空间数据存储格式,常用于地理信息系统(GIS)中,用于表示地理特征如行政...

    用Java读取.shp文件的工程文件

    这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象坐标,并将这些坐标写入新的文件中。下面我们将深入探讨如何用Java处理`.shp`文件以及相关的技术要点。 首先,要读取`.shp`...

    gis加载天地图后,显示shp文件

    在本场景中,“gis加载天地图后,显示shp文件”指的是通过GIS软件将天地图与Shapefile(shp文件)结合,以在地图上呈现特定的地理数据。 Shapefile是Esri公司开发的一种广泛使用的矢量地理数据格式,它包含了点、线...

    shp文件上如何选择地图要素并显示属性信息呢

    SHP 文件中的空间查询和要素选择 SHp 文件是 Shapefile 文件的简称,是一种常用的地理信息系统(GIS)文件格式。它用于存储地理空间数据,包括点、线、面等几何形状的要素和相关的属性信息。在 SHP 文件中,选择...

Global site tag (gtag.js) - Google Analytics