博客
关于我
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 Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>
Mysql InnoDB 数据更新导致锁表
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>