FeatureService.UpdateFeatures() 与 MgLayer.UpdateFeatures()的区别

简介:


在MapGuide开发中你可能注意到有两个相关的函数可以用来更新数据,他们是FeatureService.UpdateFetures() 和 MgLayer.UpdateFeatures(),那么这两个函数有什么区别吗?大家先看下面两段代码:

 

首先看使用FeatureService.UpdateFeatures的代码片段:

MgMap map = new MgMap(siteConnection);
map.Open(resService, "Sheboygan");

MgLayer layer = map.GetLayers().GetItem("Parcels") as MgLayer;
MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
commands.Add(new MgDeleteFeatures("Parcels", selectString));
MgResourceIdentifier resId = new MgResourceIdentifier("Library://Exercise/Data/Parcels.FeatureSource");
featService.UpdateFeatures(resId, commands, false);

 

还有这个使用MgLayer.UpdateFeatures()的代码片段:

MgMap map = new MgMap(siteConnection);
map.Open(resService, "Sheboygan");

MgLayer layer = map.GetLayers().GetItem("Parcels") as MgLayer;
MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
commands.Add(new MgDeleteFeatures("Parcels", selectString));
layer.UpdateFeatures(commands);

 

这两段代码都是没问题的。实际上对于Parcel这样可以表示成图层的数据源来说,这两段代码是等效的。第一种FeatureService.UpdateFeature()是更底层的API,适用于MapGuide OpenSource 1.0以来的所有版本。为了简化图层对应的数据源的操作,比如在某图层上增加一些要素,后来的MapGuide版本中提供了新的API -- MgLayer.UpdateFeature(). 不过从概念上来讲,图层本身并不包含数据,图层只是数据源的一种表现形式,真正的数据是保存在数据源Datasource里面的。所以这个新API的实现也是调用了底层MgFeatureService.UpdateFeatures()而已。对于可以表现为图层的数据源的更新,这两种方法都可以。

 

但对于不能表现为图层的数据源的更新,那就只能用MgFeatureService了,比如你需要对数据源中的某个数据表进行操作,而这个数据表没有Geometry字段不能表示为图层,那就只能用MgFeatureService了。总结,如果为了兼容那么就用MgFeatureService.UpdateFeatures(). 。如果为了简单就用MgLayer.UpdateFeatures().

 

题外话,对于这样的纯数据表的操作,你当然可以用ADO.NET的纯数据库操作方法,不过FDO(MgFeatureServier)也没问题哦,FDO其实也是一种数据库访问层,无论是对GIS数据源还是普通的数据源而言,FDO都可以的 :)

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2013/01/22/2870907.html ,如需转载请自行联系原作者
相关文章
|
自然语言处理 关系型数据库 MySQL
mysql 全文搜索功能优缺点
mysql 全文搜索功能优缺点
|
API
【vue2项目总结】——接口配置
【vue2项目总结】——接口配置
433 0
|
编译器
unsigned long int 和 unsigned long一样吗?
unsigned 代表的是无符号的整形数
540 0
|
算法 安全 API
Zipline 3.0 中文文档(二)(2)
Zipline 3.0 中文文档(二)
331 3
|
机器学习/深度学习 人工智能
SalUn:基于梯度权重显著性的机器反学习方法,实现图像分类和生成的精确反学习
【4月更文挑战第29天】SalUn是一种新的机器反学习方法,专注于图像分类和生成的精确反学习。通过关注权重的梯度显著性,SalUn能更准确、高效地从模型中移除特定数据影响,提高反学习精度并保持稳定性。适用于多种任务,包括图像生成,且在条件扩散模型中表现优越。但计算权重梯度的需求可能限制其在大规模模型的应用,且在数据高度相关时效果可能不理想。[链接](https://arxiv.org/abs/2310.12508)
409 1
|
存储 监控 安全
5 天学会阿里云 RPA:安全性与合规性
随着数字化转型的加速,机器人流程自动化(RPA)技术在各个行业中得到了广泛应用。阿里云 RPA 作为一种领先的 RPA 解决方案,不仅提供了高效的业务流程自动化能力,还高度重视安全性与合规性。在本文中,我们将深入探讨阿里云 RPA 在安全性与合规性方面的优势和措施。
|
编解码 人工智能 数据中心
中国陆地生态系统服务价值空间分布数据集
中国陆地生态系统服务价值空间分布数据集
364 0
中国陆地生态系统服务价值空间分布数据集
Qt 5——Qt消息机制和事件(二)
Qt 5——Qt消息机制和事件(二)
433 0
BUUCTF 大白 1
BUUCTF 大白 1
472 0
|
JavaScript 前端开发 UED
(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况
(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况
380 0