在ArcGIS Online中使用街机根据属性值设置线颜色

230
8
跳到解决方案
01-05-2023 10:26 PM
标签(3)
Keiran_Bray
通过
新贡献者II

晚上,

我目前正在做一个项目,我需要根据两个值来象征一条人行道折线,

第一个值用于设置符号类型,使用独特的值,如铺设,密封,混凝土等

第二个值用于设置基于步道条件值的颜色,范围为0-5,根据特定条件值,即0-0.99,1-1.99....,

到目前为止,我已经能够在ArcGIS Pro中实现这一点,使用基于这篇文章的属性驱动符号://www.gobook3.com/t5/commercial-blog/color-me-impressed-with-attribute-driven-symbology/ba-..。

这很好,但是在ArcGIS Online发布这个功能层时,这并没有遇到,我发现了一些帖子,参考了如何在弹出窗口中使用类似于下面的东西来处理文本:

Var CD = $feature.condition

if (cd >= 0 && cd <= 0.99){返回"#38A800"}
if (cd >= 1 && cd <= 1.99){返回"#7ACB00"}
if (cd >= 2 && cd <= 2.99){返回"#CEEE00"}
if (cd >= 3 && cd <= 3.99){返回"#FFFF73"}
if (cd >= 4 && cd <= 4.99){返回"#FF6600"}
if (cd == 5){返回"#FF0000"}

但是当我试图在ArcGIS Online或ArcGIS Pro中设置这个时,使用“根据属性变化符号”并设置表达式来改变符号颜色:

keiran_bray_0 - 1672985965196. - png

我也尝试过使用when()函数,但也不能让它工作

是否有可能设置符号类型和使用街机设置折线颜色基于特定的整数值?

标签(4)
0荣誉
1解决方案

接受的解决方案
jcarlson
通过 MVP荣誉贡献者
MVP荣誉贡献者

这是有可能,但它将是单调乏味的

Pro中的“根据属性改变颜色”设置只适用于数值,它会根据数字和颜色渐变来缩放颜色。这些值也不能很好地转换为图例。正如你所发现的,这些并不适用于AGOL。

你真正想做的是创造独特的符号基于两个字段。AGOL不会让你这样做,把事情分类;只能使用带数值的多个字段,而不能使用两个分类字段。

你能做的最好的事情就是把符号学建立在表达式的基础上:

Var CD = $feature.conditionvar cd_cat = When( cd >= 0 && cd <= 0.99, 'good', cd >= 1 && cd <= 1.99, 'fair', cd >= 2 && cd <= 2.99, 'adequate', cd >= 3 && cd <= 3.99, 'poor', cd >= 4 && cd <= 4.99, 'bad', cd == 5, 'just the worst', 'no value' ) return `${$feature.surface} - ${cd_cat}`

但是你会遇到一些问题。首先,如果您有5种表面类型和6种条件,则可能需要配置30个惟一符号。就像我说的,很乏味。

其次,在AGOL中,您只能为值配置符号呈现在数据中。因此,在30个潜在组合中,如果在配置符号时只有一半存在,那么您将无法为其余组合设置符号。如果其中一个后来出现,它将不会被正确地符号化,您将需要打开层来调整符号化以捕获新类型。

对于第二点有一个变通办法,你可以在ArcGIS Pro中设置非当前值的符号并从那里保存web地图,但这仍然会很繁琐。

另一方面,如果不对其他字段进行分类,AGOL可以从一个字段中获取颜色,从数字字段中获取宽度,但这可能不是您想要的映射。

——乔什·卡尔森
肯德尔县GIS

在原帖子中查看解决方案

8回答说
RussRoberts
通过 Esri杰出贡献者
Esri杰出贡献者

你能分享一个专业项目的样本吗?

0荣誉
RussRoberts
通过 Esri杰出贡献者
Esri杰出贡献者

我做了一个快速潜水,并能够创建一个网络地图使用类似的表达式,但它确实需要一些手动网络地图JSON更改。看起来Pro正在编写一个不在CIM规范中的属性,而这正是JSAPI所期望的。

示例中,我将轮廓设置在一个具有原始覆盖的点上https://jsapi.maps.arcgis.com/apps/mapviewer/index.html?webmap=03d01db03bae43cb8b629a02997dcaaa

使用线条的示例

https://jsapi.maps.arcgis.com/apps/mapviewer/index.html?webmap=7e72420e21a443818091ffb8d2cea9bb

0荣誉
jcarlson
通过 MVP荣誉贡献者
MVP荣誉贡献者

这是有可能,但它将是单调乏味的

Pro中的“根据属性改变颜色”设置只适用于数值,它会根据数字和颜色渐变来缩放颜色。这些值也不能很好地转换为图例。正如你所发现的,这些并不适用于AGOL。

你真正想做的是创造独特的符号基于两个字段。AGOL不会让你这样做,把事情分类;只能使用带数值的多个字段,而不能使用两个分类字段。

你能做的最好的事情就是把符号学建立在表达式的基础上:

Var CD = $feature.conditionvar cd_cat = When( cd >= 0 && cd <= 0.99, 'good', cd >= 1 && cd <= 1.99, 'fair', cd >= 2 && cd <= 2.99, 'adequate', cd >= 3 && cd <= 3.99, 'poor', cd >= 4 && cd <= 4.99, 'bad', cd == 5, 'just the worst', 'no value' ) return `${$feature.surface} - ${cd_cat}`

但是你会遇到一些问题。首先,如果您有5种表面类型和6种条件,则可能需要配置30个惟一符号。就像我说的,很乏味。

其次,在AGOL中,您只能为值配置符号呈现在数据中。因此,在30个潜在组合中,如果在配置符号时只有一半存在,那么您将无法为其余组合设置符号。如果其中一个后来出现,它将不会被正确地符号化,您将需要打开层来调整符号化以捕获新类型。

对于第二点有一个变通办法,你可以在ArcGIS Pro中设置非当前值的符号并从那里保存web地图,但这仍然会很繁琐。

另一方面,如果不对其他字段进行分类,AGOL可以从一个字段中获取颜色,从数字字段中获取宽度,但这可能不是您想要的映射。

——乔什·卡尔森
肯德尔县GIS
JenniferAcunto
Esri贡献者

供您参考-在AGOL的最新更新之一中,您现在可以设置数据中不存在的特征符号。只需在唯一符号编辑器中单击加号图标来添加值和标签,然后像往常一样设置样式。

2023 - 01 - 09 - _6 36 - 08. jpg

——珍
jcarlson
通过 MVP荣誉贡献者
MVP荣誉贡献者

哦,太激动人心了!谢谢你的提醒!

——乔什·卡尔森
肯德尔县GIS
0荣誉
VanessaSimps
通过
临时贡献者II

我们正在尝试使用这个,但是,看到我的同事的帖子在这里。感觉这并没有像预期的那样工作吗?有人看到我同事看到的东西吗?

//www.gobook3.com/t5/arcgis-online-questions/arcade-statement-for-symbology-not-quot-sticki..。

0荣誉
Keiran_Bray
通过
新贡献者II

嘿,谢谢大家,本周我会再看一下上面的内容,我有一种感觉,不管我想用哪种方式去做,它都会有点乏味,@JenniferAcunto我可能会看一下还有另一种选择,

我会及时更新我的发现,

干杯

Keiran

0荣誉
Keiran_Bray
通过
新贡献者II

谢谢@jcarlson@JenniferAcunto这满足了我们需要展示的东西,并没有变得乏味,现在看起来很好,

再次感谢大家,

Keiran

0荣誉