基于起止时间自动更新道路封锁图层符号的Arcade表达式需求
实现ArcGIS Online「road blocks」图层的动态符号化(Arcade表达式)
需求背景
已发布至ArcGIS Online的「road blocks」点图层,包含Incident ID、start time、end time三个字段,需实现:
- 事件处于进行中(当前时间≥
start time且<end time):点符号显示红色 - 事件已结束(当前时间≥
end time):点符号显示绿色
实现步骤
1. 进入图层符号系统设置
登录ArcGIS Online,找到目标图层并进入**符号系统(Symbology)**配置面板:
- 选择「类型(Type)」为「单一符号(Single Symbol)」
- 点击符号图标进入「编辑符号(Edit Symbol)」界面
2. 用Arcade表达式定义颜色规则
在符号编辑界面的「颜色(Color)」选项中,选择「使用表达式(Use an expression)」,打开Arcade编辑器并输入以下代码:
// 获取当前服务器时间与要素起止时间 var current = Now(); var start = $feature['start time']; var end = $feature['end time']; // 根据时间区间返回对应颜色 if (current >= start && current < end) { return '#FF0000'; // 红色:事件进行中 } else if (current >= end) { return '#00FF00'; // 绿色:事件已结束 } else { return '#CCCCCC'; // 灰色:事件未开始(可按需修改) }
3. 验证并应用配置
- 点击「验证(Validate)」确认表达式无语法错误
- 保存符号配置,图层将自动根据当前时间实时更新要素符号颜色
关键注意事项
- 确保
start time和end time字段的类型为日期时间(Date),否则时间比较会失效 - 可自定义颜色:替换十六进制码,或使用
RGB(255,0,0)这类函数返回颜色值 - 若不需要显示未开始的事件,可在
else分支返回Null或设置透明色
内容的提问来源于stack exchange,提问作者Emtiaj Hoque
相关产品推荐
相关产品推荐

