博客
关于我
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 如何给SQL添加索引
查看>>
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
MySQL 导出数据
查看>>