街机表达:从最近的线路特征计算道路等级

103
2
跳到解决方案
12月28日2022下午12:28
SHartholt
通过
偶然的因素

我已经创建了一个街机表达式来自动填充DueDate字段为点特征。当在劳动力中分配一个点时,我想运行一个计算表达式,搜索最近的道路,然后根据最低维护标准填充到期日期(即第1类必须在5天内固定,第2类必须在10天内固定等):

var赋值日期= $feature.赋值日期;var line_fs = FeatureSetByName($datastore, 'Road');line_fs = Intersects(line_fs, Buffer($feature, 15, "Meters"));//循环遍历路段并找到最近的一个var min_dist = 99999 var nearest_RoadClass = null var geo = Geometry($feature) for(var line in line_fs) {var line_geo = Geometry(line) var dist = Distance(geo, line_geo) if(dist < min_dist) {min_dist = dist nearest_RoadClass = line. class} if(IsEmpty(nearest_RoadClass)){返回null;} if (nearest_RoadClass == "Class 1"){返回DateAdd(赋值日期,5,'days');} if (nearest_RoadClass == "Class 2"){返回DateAdd(赋值日期,10,'days');}返回null;}

谁能告诉我为什么离第6类道路最近的点有时会被分配一个截止日期,而不是一个空值?

shartholt_0 - 1672259151202. - png

0荣誉
1解决方案

接受的解决方案
RhettZufelt
通过 常规赛MVP
常规赛MVP

道路功能类有一个名为“类”的列吗?

不确定这是否与它有任何关系,但在机密数据库中有一个循环引用(line_fs)。

line_fs = Intersects(line_fs, Buffer($feature, 15, "Meters"))

不确定是否可以分配一个依赖于自身的值。有时这是可行的,只是不确定在Arcade。

else语句的左花括号也被省略了:

Else {return null}

如果在第16行左右添加一个控制台语句,它在消息中报告了什么?

控制台(nearest_RoadClass)

控制台应该报告“Class 1”,“Class 2”等等。

R_

在原帖子中查看解决方案

0荣誉
2回答
RhettZufelt
通过 常规赛MVP
常规赛MVP

道路功能类有一个名为“类”的列吗?

不确定这是否与它有任何关系,但在机密数据库中有一个循环引用(line_fs)。

line_fs = Intersects(line_fs, Buffer($feature, 15, "Meters"))

不确定是否可以分配一个依赖于自身的值。有时这是可行的,只是不确定在Arcade。

else语句的左花括号也被省略了:

Else {return null}

如果在第16行左右添加一个控制台语句,它在消息中报告了什么?

控制台(nearest_RoadClass)

控制台应该报告“Class 1”,“Class 2”等等。

R_

0荣誉
SHartholt
通过
偶然的因素

谢谢你!我执行了你的建议,并意识到我在我的系列之前忘记了一个花括号如果这句话可能是罪魁祸首!

0荣誉