属性规则——向下钻取其他层

1261
5
跳到解决方案
06-24-2021 12:29 PM
标签(1)
YinghongLi1
通过
偶然的因素

这是一个场景:

对于一个新创建的特性:

1.得到特征多边形的中心点。

2.使用点来查询特定的层并获得特定的值。这些图层在同一个地图中。

3.在特性的相应字段中输入值。

喜欢使用属性规则来完成这项任务,以便在特性创建期间输入钻取值。不确定是否可行

我们使用Oracle/SDE数据库。

谢谢

0荣誉
3解决方案

接受的解决方案
DavinWalker2
通过 Esri贡献者
Esri贡献者

当然,您可以使用属性计算规则复制交叉特征的值。看看这个ESRI Github回购为例子。

在原帖子中查看解决方案

JohannesLindner
常规赛MVP
//计算规则//触发器:Insert // create centroid var cent = centroid ($feature) //为每个相交的特征类重复此块(更改变量名!)///// var intersect_feature = First(Intersects(FeatureClassByName($map, "FeatureClass"), cent)) var value = null if(intersect_feature != null) {value = intersect_feature. sh = value = null。值}///// //返回值返回{"result": {"attributes": {"Field1": value_1, "Field2": value_2}}}}

祝你有愉快的一天!
约翰内斯

在原帖子中查看解决方案

IamTrash
通过
新贡献者II

据我所知没有。分析是在数据存储或映射级别上完成的,因此只要您正在提取引用数据来更新特性数据,那么引用数据来自何处并不重要。当它们都在同一个地理数据库中时,我已经使用这种方法一次更新了许多功能,但是如果它们不在同一个地理数据库中,更新其中一个参考功能可能是一个问题。

在原帖子中查看解决方案

0荣誉
5回复
DavinWalker2
通过 Esri贡献者
Esri贡献者

当然,您可以使用属性计算规则复制交叉特征的值。看看这个ESRI Github回购为例子。

JohannesLindner
常规赛MVP
//计算规则//触发器:Insert // create centroid var cent = centroid ($feature) //为每个相交的特征类重复此块(更改变量名!)///// var intersect_feature = First(Intersects(FeatureClassByName($map, "FeatureClass"), cent)) var value = null if(intersect_feature != null) {value = intersect_feature. sh = value = null。值}///// //返回值返回{"result": {"attributes": {"Field1": value_1, "Field2": value_2}}}}

祝你有愉快的一天!
约翰内斯
YinghongLi1
通过
偶然的因素

还有一个问题。对钻取操作是否有限制,例如钻取特征类必须在与编辑特征类相同的数据集中?

谢谢……

0荣誉
IamTrash
通过
新贡献者II

据我所知没有。分析是在数据存储或映射级别上完成的,因此只要您正在提取引用数据来更新特性数据,那么引用数据来自何处并不重要。当它们都在同一个地理数据库中时,我已经使用这种方法一次更新了许多功能,但是如果它们不在同一个地理数据库中,更新其中一个参考功能可能是一个问题。

0荣誉
YinghongLi1
通过
偶然的因素

我是说从不同的数据库。我们有自己的数据库,我们编辑,我们有一个公共浏览数据库,我们使用作为参考层。我们向下钻取到浏览数据库中的特征类,以更新编辑数据库中创建的新特征。

根据你的答复,我们应该可以进行钻取操作。我们不能更新浏览数据库。

谢谢……

0荣誉