经过前面一段时间狂乱的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"这个字段名。
分享到:
相关推荐
5. 数据一致性检查:在导入完成后,应进行数据一致性检查,确保所有.shp文件的数据都被正确无误地导入到数据库中,且保持原有的空间关系和属性信息。 总结来说,"图层shp文件导入数据库工具"是一个实用的软件,它...
本篇文章将详细阐述如何在Vue项目中导入SHP文件,并将其内容在地图上进行展示。 首先,我们需要了解SHP文件。它是由Esri公司开发的一种地理空间数据存储格式,包含几何对象、属性数据以及相关的文件。SHX是索引文件...
- 不同的SHP文件可能包含不同类型的地理元素,比如点(Point)、线(LineString)、多边形(Polygon)等,导入后需确保与奥维地图的图层类型匹配。 - 如果SHP文件中的坐标系统与奥维地图默认的不同,需要正确配置...
该资源主要讲解了如何使用C#和AO(ArcObjects)将SHP文件导入到GeoDatabase中生成一个独立的要素类。 首先,需要了解AO(ArcObjects)是什么?AO是ESRI提供的一组软件开发工具,允许开发者使用ArcGIS功能来创建自己...
本文将深入探讨如何在imobile for Android环境中进行Shp数据的导入与导出操作。 1. **Shp文件介绍** Shapefile是由Esri公司开发的一种地理信息系统(GIS)文件格式,主要用于存储矢量图形数据,如点、线、多边形等...
使用 IWorkspaceFactory 接口创建了输出 shp 文件的工作空间后,接着需要将要素类导出到 shp 文件中。使用 IFeatureClassName 接口来设置要素类的名称,然后使用 IWorkspaceName 接口来设置输出 shp 文件的路径。 ...
在实际应用中,Shp 文件导入 PostGIS 中的过程可以根据需要执行多次,以便将多个 Shp 文件导入到 PostGIS 中。在将 Shp 文件导入 PostGIS 中时,需要注意字符编码的转换,以避免数据损失或错误。 Shp 文件导入 ...
标题中的“国内各个江河水系图层shp文件.zip”是指一个包含中国各地河流和湖泊地理信息的压缩包。这个压缩文件中包含了不同级别的河流数据以及湖泊数据,以Shapefile(shp)格式存储,这是一种常见的地理信息系统...
识别shp文件并转换成SQL,导入到mysql数据库中,已实践
pdf文件
SHP文件是一种常见的矢量数据格式,通常包含地图要素如点、线、面等信息。本示例将聚焦于如何利用.NET框架结合Esri的iObjects库来实现这个功能,并通过设置定时任务,每1分钟自动执行一次导入操作。 首先,我们需要...
这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象坐标,并将这些坐标写入新的文件中。下面我们将深入探讨如何用Java处理`.shp`文件以及相关的技术要点。 首先,要读取`.shp`...
本文将详细介绍如何在geoserver服务器中添加shp类型的地图,从而解决中文乱码和地图图层中中文不显示的问题。 一、设置自定义style 在geoserver中添加shp地图之前,需要先设置自定义style。首先,打开geoserver...
在IT行业中,地理信息系统(GIS)的使用越来越广泛,而GeoServer是一款开源的GIS服务器,它支持多种数据格式,如Shapefile(SHP),用于发布地图服务。本篇将详细介绍如何利用GeoServer发布SHP格式的图层,帮助你更...
SHP文件不包含颜色、符号或其他视觉属性,这些通常在关联的DBF、PRJ、SBN和SBX文件中定义。 2. 数据内容: - "中国乡镇边界-prj.dbf":这是一个DBF文件,与SHP文件配合使用,存储了乡镇边界几何对象的属性信息,如...
标题中的“四川各区县shp文件 矢量.rar”表明这是一个包含四川省各个区县地理信息的矢量数据压缩包,格式为SHP。SHP是Esri公司开发的一种空间数据存储格式,常用于地理信息系统(GIS)中,用于表示地理特征如行政...
结合天地图的服务,这些专题数据图层可以与实时地图无缝对接,用户可以在网页或GIS软件中加载这些shp文件,实现对丝绸之路的精确定位和展示,从而更好地理解其地理分布和历史演变。 shp文件包含的元数据通常包括...
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形,每一个都有他们各自的属性。 shape文件由ESRI开发,一个...
1. 数据加载:将下载的ZIP文件解压后,将.shp文件导入ArcGIS,它会自动识别并加载所有关联文件。 2. 属性查询:通过.dbf文件,可以查看并编辑每个地理要素的属性信息,例如国家名称、人口、面积等。 3. 编辑与修改...
SHP 文件中的空间查询和要素选择 SHp 文件是 Shapefile 文件的简称,是一种常用的地理信息系统(GIS)文件格式。它用于存储地理空间数据,包括点、线、面等几何形状的要素和相关的属性信息。在 SHP 文件中,选择...