• GIS数据的查找,插入,删除,更新(ArcEngine)


    1、查找数据

    1)、利用FeaturCursor进行空间查询

    //利用构造的Envelope(矩形框),查找和Envelope相交的FeatureClass的要素集

    //结果数据利用循环FeatureCursor.nextFeature获得

    IEnvelope envelope = new EnvelopeClass();

    envelope.PutCoords(508786, 681196, 513033, 684341);

    //空间查询

    ISpatialFilter spatialFilter = new SpatialFilterClass();

    spatialFilter.Geometry = envelope;

    String shpFld = featureClass.ShapeFieldName;

    spatialFilter.GeometryField = shpFld;

    spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;//相交

    IQueryFilter queryFilter = new QueryFilterClass();

    queryFilter = (IQueryFilter)spatialFilter;

    IFeatureCursor searchCursor = featureClass.Search(queryFilter, true);

    IFeature feature = searchCursor.NextFeature();

    int n = 0;

    while (feature != null){

        n++;

        feature = baseCursor.NextFeature();

    }

    2)、利用FeatureCursor在选择集中进行查询

    IFeatureSelection pFeatureSelectio = pFeatureLayer as IFeatureSelection; 

    ICursor ppCursor;
    pFeatureSelectio.SelectionSet.Search(null, false, out ppCursor);

    IFeatureCursor pFeatureCursor = ppCursor as IFeatureCursor; 

    IFeature pFeature = pFeatureCursor.NextFeature();

    3)、利用FeatureCursor进行属性查询

    IQueryFilter pQueryFilter = new QueryFilterClass();                           

    pQueryFilter.WhereClause = "PROJECTCODE = '" + this.ProjectNumTextBox.Text.Trim() + "'";

    IFeatureCursor pFeatureCursor = LineFeaClass.Search(pQueryFilter, false);                           

    IFeature pFeatureIfExit = pFeatureCursor.NextFeature();

     

    2、 插入数据

    1)、利用Insert Cursors和featureBuffer

    IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
    IFeatureCursor featureCursor = featureClass.Insert(true);
    object featureOID;         
    featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "B Pierce");
    for (int ic = 0; ic < 99; ic++)
     { 
      featureBuffer.Shape = geometry;    
       featureOID = featureCursor.InsertFeature(featureBuffer);
    }
    featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "K Johnston");
    for (int ic = 0; ic < 99; ic++)
    {
         featureBuffer.Shape = geometry
         featureOID = featureCursor.InsertFeature(featureBuffer);
    }
    featureCursor.Flush();

    2)、直接进行数据插入(Feature.Store方法)

     IFeature newLineFeature = LineFeaClass.CreateFeature();                           

    newLineFeature.Shape = pFeature.Shape;
    int ii = newLineFeature.Fields.FindField(AreaZonalName); 

     if (ii > 0)                           

    {                               

    newLineFeature.set_Value(ii, this.AnalysAreaComboBox.Text.Trim());
    }

    newLineFeature.Store();

    3、数据删除 delete 

    IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels");

    IQueryFilter queryFilter = new QueryFilterClass();

    queryFilter.WhereClause = "ZONING_S = 'R'";

    IFeatureCursor updateCursor = featureClass.Update(queryFilter, false);

    IFeature feature = updateCursor.NextFeature();

    int m = 0;

    while (feature != null)

    {

        m++;

        updateCursor.DeleteFeature(feature);

        feature = updateCursor.NextFeature();

    }

    4、 数据更新 update 

    IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels");

    // 属性查询

    IQueryFilter queryFilter = new QueryFilterClass();

    queryFilter.WhereClause = "ZONING_S = 'U'";

    //利用FeatureCursor进行数据更新

    IFeatureCursor updateCursor = featureClass.Update(queryFilter, false);

    int fieldindex = featureClass.FindField("ZONING_S");

    IFeature feature = updateCursor.NextFeature();

    int m = 0;

    while (feature != null)

    {

        m++;

        feature.set_Value(fieldindex, "X");

        updateCursor.UpdateFeature(feature);

        feature = updateCursor.NextFeature();

    }

  • 相关阅读:
    Java 编译器
    ElasticSearch 集群搭建
    致:奋斗路上的自己
    ElasticSearch 简单入门
    char* 和 char* const
    usb虚拟网卡与串口
    usb虚拟网卡与串口
    ethtool处理网卡不断重启
    客车网上订票系统项目--票务管理、前端个人信息修改
    mysql错误号码2003 can't connect to mysql server on 'localhost' (0)解决方案
  • 原文地址:https://www.cnblogs.com/suncarry/p/2072465.html
Copyright © 2020-2023  润新知