用街机表达来象征场域差异的问题

375
4
08-17-2020 02:44 PM
LindsaySpencer
新贡献者III

好的GIS-ers。我是相对新的街机,所以请善良!我觉得我关注这个问题太久了,正因为如此,我可能忽略了一些非常简单的东西……但我就是想不通!救命! ? ! ?

目标:通过字段数据是否被编辑来表示字段数据。编辑器跟踪和同步处于开启状态

方法:使用$特性之间的差异。创建日期(when i published the data) and $feature.EditDate (this will be identical to CreationDate除非数据已被编辑)作为创建这个符号的关键。我确实有几个在不同场合编辑过的数据点,因此它们的EditDate和CreationDate属性是不同的(在表和控制台功能中验证了这一点)。

表达式1和2:返回所有内容为“未访问”

如果($特性。= $feature.Editor){
var Status = "已访问"
返回状态

其他{
返回“未访问”

__________________________________________________________________

如果(DateDiff (feature.CreationDate, feature.EditDate美元,“分钟”)< = 0){
返回“Not Visited”;

其他{
返回“拜访”;

不分开的

表达式3和4:只有“未访问”特征被符号化,“已访问”特征被聚集到“其他”特征中

国际金融($特性。创建日期!= $feature.EditDate, "Visited", "Not Visited")

___________________________________________________________________

当($特性。创建日期!= $feature.EditDate, "Visited", "Not Visited")

没有呈现

根据创建者和编辑器日期,我尝试了大约4种方法来创建这2个单独的符号,但每种方法都导致了这2个结果中的1个。此外,我还确保表达式读取了正确的字段和正确的数据类型,因为我将它们打印到控制台,并且它们完全是它们应该是的样子。

如果有任何帮助,我将不胜感激!我觉得这应该是一个如此简单的解决方案,但我想不出来!

谢谢你!

0荣誉
4回复
XanderBakker
通过 Esri尊敬的贡献者
Esri尊敬的贡献者

林赛·斯宾塞

事实上,我看不出你的表情有什么问题。我在ArcGIS Online上做了一个测试,使用您的表达式的结果是正确的。既然你在ArcGIS Pro SDK中发布了这篇文章,我假设你正在使用ArcGIS Pro,所以我也做了一个测试,看看是否有什么不同。在本例中,我在FGDB中使用了Utility Network v4,但是编辑器跟踪字段的名称似乎不同($feature。创建日期,$特性。创造者,美元的特性。LASTUPDATE和$feature.UPDATEDBY)。但是,在更改字段名称之后,您的表达式在我的数据上工作得很好。

奇怪的是,在您的例子中,当提供了两个选项(“已访问”和“未访问”)时,会返回第三个选项。

有可能获得(一部分)数据吗?

0荣誉
LindsaySpencer
新贡献者III

Xander赞美上帝!非常感谢你的回复。

回答你的问题-我决定在SDK Pro中发布这个主要是因为我发布了来自Pro的源数据,但是我试图在AGOL中改变Arcade的符号-所以我可能在前面错误地分类了问题。我试图使用AGOL自动生成的字段(当您启用编辑器跟踪生成这些字段时)进行符号化,这些字段在在线发布和跟踪之前是不可用的。

我没有权限在我的组织之外分享数据,但我很乐意分享表格的一部分截图,让大家开始。如果这还不够详细,无法重现错误,我可以在该层中创建一些虚拟数据,将其导出为fgdb并上传到这里。但是,这样做将覆盖所有的时间/日期信息到导出的时间/日期。让我知道,如果有另一种方式为您尝试和复制这个问题!谢谢!

0荣誉
XanderBakker
通过 Esri尊敬的贡献者
Esri尊敬的贡献者

林赛·斯宾塞

因此,您在AGOL中拥有数据,但不能在组织之外共享它。我明白,没问题。由于我无法在Pro或AGOL中重现该问题,如果您可以创建一个不包含任何敏感信息的虚拟数据集,并在AGOL中的一个组中共享该数据集,并使用我的AGOL帐户“xbakker”邀请我加入该组。“我可以看一看。通过这种方式,您将只共享一组虚拟数据(不是公开的,只是与有权访问组的人共享),不需要导出到FGDB并发送,再次发布等等。

从你发布的截图中,我可以看到有访问过和未访问过的情况,应用表达式应该是有效的。但是,如果能够访问虚拟数据来验证一些事情就更好了。

0荣誉
KenBuja
通过 尊敬的贡献者
尊敬的贡献者

只是一个小小的改变就给了我预期的结果。这里的DateDiff将产生负数,因此更改计算器,切换EditDate和CreationDate的位置,或使用Abs函数

如果DateDiff美元的特性创建日期美元的特性EditDate“分钟”= =0如果DateDiff美元的特性EditDate美元的特性创建日期“分钟”< =0如果腹肌DateDiff美元的特性创建日期美元的特性EditDate“分钟”< =0
0荣誉