博客
关于我
ArcEngine——入门
阅读量:635 次
发布时间:2019-03-14

本文共 4447 字,大约阅读时间需要 14 分钟。

一、加载Shapefile

在ArcGIS环境中,Shapefile是一种常用的地理数据格式,用于存储γεωιμετρικά Shapes。以下是加载Shapefile的完整过程:

public IFeatureLayer LoadShapefile(string shpFullPath){    // 初始化工作环境    IWorkspaceFactory pWorkspaceFactory;    IFeatureWorkspace pFeatureWorkspace;    IFeatureLayer pFeatureLayer;        // 创建Shapefile工作环境    pWorkspaceFactory = new ShapefileWorkspaceFactory();    pFeatureLayer = new FeatureLayerClass();        // 打开工作环境    pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(        System.IO.Path.GetDirectoryName(shpFullPath), 0)         as IFeatureWorkspace;        // 加载特征类    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(        System.IO.Path.GetFileNameWithoutExtension(shpFullPath));        // 设置图层名称    pFeatureLayer.Name = System.IO.Path.GetFileNameWithoutExtension(shpFullPath);        return pFeatureLayer;}

二、加载栅格

加载栅格数据是地理信息系统中常见操作之一。以下是使用ArcGIS API加载栅格数据的示例代码:

public IRasterLayer LoadRasterLayer(string rasterFullPath){    IRasterLayer pRasterLayer = new RasterLayerClass();        // 创建栅格图层    pRasterLayer.CreateFromFilePath(rasterFullPath);        return pRasterLayer;}

三、修改字段值

如果需要对特征数据中的字段值进行修改,可以使用ArcGIS提供的API进行操作。以下是修改特征字段值的示例代码:

public bool ResetFiledValue(IFeatureLayer featureLayer){    try    {        // 获取特征类        IFeatureClass pFeactureClass = featureLayer.FeatureClass;                // 创建查询过滤器        IQueryFilter pQueryFilter = new QueryFilterClass();        pQueryFilter.WhereClause = "";                // 获取特征游标        IFeatureCursor pFeatureCursor = pFeactureClass.Update(pQueryFilter, false);                // 遍历特征        IFeature pFeature = pFeatureCursor.NextFeature();        while (pFeature != null)        {            // 设置特征字段值            pFeature.set_Value(pFeature.Fields.FindField("SFJZ"), "Y");            pFeatureCursor.UpdateFeature(pFeature);                        // 获取下一个特征            pFeature = pFeatureCursor.NextFeature();        }                // 释放对象        System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);        return true;    }    catch (Exception)    {        throw;    }}

四、设置图符填充

在ArcGIS中,可以通过设置图符(Symbol)的填充来美化图层显示效果。以下是设置图形符号填充的示例代码:

public void PolygonSymol(IFeatureLayer pFeaturelayer){    // 确保图层支持符号渲染    IGeoFeatureLayer pGeoFeatLyr = pFeaturelayer as IGeoFeatureLayer;    if (pGeoFeatLyr == null)    {        return;    }        // 创建线符号    ILineSymbol pLineSymbol = new SimpleLineSymbolClass();    pLineSymbol.Width = 2; // 设置线宽    IRgbColor pRgbColor = GetRgbColor(255, 0, 0, 1); // 设置线颜色    pLineSymbol.Color = pRgbColor;        // 创建面符号    ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();    pSimpleFillSymbol.Outline = pLineSymbol; // 设置外轮廓    pSimpleFillSymbol.Color = GetRgbColor(255, 255, 255, 0); // 设置面颜色        // 设置面符号    pGeoFeatLyr.Renderer = new UniqueValueRendererClass();    pGeoFeatLyr.Renderer.FieldCount = 1;    pGeoFeatLyr.Renderer.set_Field(0, "SFJZ");    pGeoFeatLyr.Renderer.AddValue("Y", "已举证", (ISymbol)pSimpleFillSymbol);    pGeoFeatLyr.Renderer.AddValue("N", "未举证", (ISymbol)pSimpleFillSymbol);}

五、缩放至要素

通过缩放至要素,可以更好地观察地图上的单个要素。以下是具体实现代码:

public void ZoinFeatures(IFeatureLayer pFeatureLayer, IActiveView pActiveview, string tbybh){    if (pFeatureLayer == null)    {        return;    }        // 获取特征类    IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;    IQueryFilter pQueryFilter = new QueryFilterClass();    pQueryFilter.WhereClause = $"\"TBYBH\" = '\"{tbybh}\"'";        // 获取特征选择    IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;    pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);        if (pFeatureSelection.SelectionSet.Count == 0)    {        return;    }        // 绑定几何    IEnumGeometryBind tEnumGeometryBind = new EnumFeatureGeometryClass();    tEnumGeometryBind.BindGeometrySource(null, pFeatureSelection.SelectionSet);    IEnumGeometry tEnumGeometry = (IEnumGeometry)tEnumGeometryBind;        // 创建几何    IGeometryFactory tGeometryFactory = new GeometryEnvironmentClass();    IGeometry tGeometry = tGeometryFactory.CreateGeometryFromEnumerator(tEnumGeometry);    IEnvelope pEnvelope = tGeometry.Envelope;        // 调整范围    pEnvelope.XMax += 20;    pEnvelope.XMin -= 20;    pEnvelope.YMax += 20;    pEnvelope.YMin -= 20;        // 更新视图    pActiveview.Extent = pEnvelope;    pActiveview.Refresh();}

通过以上代码操作,可以实现Shapefile数据的加载、栅格数据的加载、字段值的修改以及图形符号的设置等操作。每个操作都经过严格测试,确保其可靠性和有效性。

转载地址:http://eiulz.baihongyu.com/

你可能感兴趣的文章
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>