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();
}
转载于:https://www.cnblogs.com/suncarry/archive/2011/06/04/2072465.html
GIS数据的查找,插入,删除,更新(ArcEngine)相关推荐
- oracle+表的更新日志,测试oracle插入 删除 更新表的日志开销
###############测试插入 删除 更新表的日志开销 创建表 SYS@orcl >create table ssr(id int); 查询表空间,sys默认system,插入数据后此分 ...
- mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
mysql 控制台环境下查询中文数据乱码,插入.更新中文数据不成功 登录mysql密码是加入编码参数--default-character-set,中文用gbk mysql -uroot -pabct ...
- 用DevExpress.Xpo 直接维护后台的 数据表,在这四列中录入的数据,即时插入或更新到关联的数据表中
用DevExpress.Xpo 直接维护后台的 数据表,在这四列中录入的数据,即时插入或更新到关联的数据表中. 步骤: 1.引入DevExpress.Xpo.DLL服务 2.加入这些 using De ...
- mysql利用外连接删除数据_MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新...
1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...
- 使用xom实现xml文件数据的查找,删除,修改(转载)
说明: 1,程序需要安装第三方jar包,即xom的jar包可以在http://www.cafeconleche.org/XOM/找到相关下载链接进行下载 2,程序分为三部分,CreateMapXml. ...
- mysql 删除重复数据_MySQL查找和删除重复数据
如何从MySQL中删除重复数据,只保留一条呢? 假设有如下一个数据表: mysql > SELECT * FROM users; +----+--------+ | id | name | +- ...
- SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)
1.代码实例 代码说明 本例主要说明如何对数据表进行插入.更新和删除操作. 测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64 测试数据说明 测试表为Stude ...
- VC++对Access数据库的操作(查询、插入、更新、删除等)
Microsoft Office Access是由微软发布的关系数据库管理系统.Access数据库常应用于小型软件系统中,比如:生产管理.销售管理.库存管理等各类企业管理软件,其最大的优点是:简单易学 ...
- 批量插入或更新数据(MyBatis-plus框架)
目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础 ...
最新文章
- 双时隙的工作原理_工业内窥镜的原理是什么?有哪些测量方法
- python appium 并行多设备_学会使用python启动多个appium server,然后获取多台设备的driver...
- 看视频笔记1【wpf】
- Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
- android 弹出对话框时显示键盘
- 网管交换机怎么设置?网管交换机设置方法
- mysql 递归实现树形_Mysql实现树形递归查询
- linux date输出到文件,Linux常用命令--ls、cd、date用法
- emoji表情过滤处理
- mysql listagg函数 长度过长_MySQL索引是什么?怎么做?
- SPSS编程-统计自动化-VBA脚本开发
- 计算机术语宏是什么意思,宏(计算机术语)
- 程序员高效出书避坑和实践指南
- 【技巧】SourceInsight如何设置为相对路径
- [Python]提取docx/网页超链接
- 生成100个p元素,隔行变色(红、黄、蓝、绿、紫)
- ROS和ROS2.0到底该用哪个呢?
- 记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
- VUE 表格设置序号
- 笔记:OpenCV之眨眼检测