地图表达式

下面提供了地图问题的报告表达示例。

所有使用地图的问题(包括地理点、geotrace 和 geoshape)都具有通用的方法和参数,您可以使用这些方法和参数来修改其在报表中的呈现方式。

默认情况下,报告中的地图使用为问题设置的 Web 地图。 如果地图比例设置为 0 或忽略该参数,则地图比例取决于地图中的要素,如下所示:

  • 如果地图上只有一个点要素,则地图比例与为问题设置的比例相匹配。
  • 如果地图上只有一个线要素或面要素,则根据要素的范围确定地图比例。
  • 如果地图上有多个要素,则根据所有要素的范围确定比例。

地图问题支持将 web 地图项目 ID 和地图比例设置为可选参数。 在以下示例中,使用的地图比例尺为 1:100,000:

${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000}

对于所有地图问题,可以使用 rotate 方法来定义正北方向相对于视图的顺时针旋转。 可接受 0 到 360 之间的值。

${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | rotate:90}

如果您将 Web 地图项目 ID 保留为空字符串,则将使用问题的默认底图。 如果将地图比例设置为 0 或忽略此参数,则地图使用为问题设置的默认范围。

mapExtent 方法可用于在报告中显式设置地图范围。 在以下示例中,显示了日本东京的固定地图范围:

${location | mapExtent:139.7:35.6:139.9:35.8:4326}

地图问题还支持适用于图像问题的大小表达式。 可以使用此表达式来控制报表中显示的地图的分辨率,如以下示例所示:

${location | size:400:400}

可以将 mapmapScalesize 表达式配合使用,以提供 web 地图 ID 和地图比例以及地图图像分辨率,如以下示例所示:

${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}

注:

如果在使用任何其他表达式方法时设置地图的大小,则必须将 size 放置在表达式的最后。

如果地图包含大量记录,则可以使用 mapFilters 方法来限制显示的记录。 在以下示例中,where 参数用于过滤仅具有一个图层的 web 地图以显示 POP2000 大于 999999 的记录:

${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"where=POP2000>999999"}

在以下 mapFilters 示例中,第一个参数用于过滤 Cities 图层(图层 id 为 18ece64a1fc-layer-5)以仅显示位于加利福尼亚州的人口最多的前 3 条记录。 第二个参数与第一个参数以冒号分隔,用于过滤 States 图层(图层 id 为 18ece64a1fc-layer-6)以仅显示加利福尼亚州:

${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"'18ece64a1fc-layer-5':where=ST='CA'&orderByFields=POP2000 ASC&resultRecordCount=3":"'18ece64a1fc-layer-6':where=stateName='California'"}

注:

图层 id 是 web 地图 JSON 的要素图层对象的属性。

默认情况下,地图问题使用默认地图符号进行显示,不考虑要素图层中设置的符号系统。 可以使用 drawingInfo 方法来提取和使用存储在特定要素图层中的绘制信息,包括所使用的符号、标注和透明度。 可以通过提供的 URL,在当前图层或特定要素图层中指定此信息。

${location | drawingInfo:"currentLayer"}

${location | drawingInfo:"https://.../FeatureServer/0"}

如果调查不包含地图问题,或如果您希望在没有关联调查的情况下为要素图层创建报告,则仍可以使用 ${$shape} 占位符返回记录的几何。

在摘要部分中,地图问题的表达式会在问题输入中显示多个几何。 要在单个报告中包含其他响应,请提供包含 !important 标记的 where 表达式。 有关详细信息,请参阅其他语法。 以下表达式将显示图层中状态字段值等于 'broken' 的所有几何:

${location | where:"status='broken' !important" | map:"<itemID>" | size:400:300}

注:

在上述示例中,忽略了地图比例。 如果将地图比例设置为 0 或忽略该参数,并且地图包含多个记录,地图对所有记录使用组合范围。

您可以将 where 表达式设置为始终为 true 的语句,以确保显示图层中的每个几何:

${location | where:"1=1 !important"}

这也可以用于显示重复内容中的所有点:

${repeat1.repeatLocation | where:"inspectionId=123 !important" | size:400:300}

$shape 关键字还可用于返回多个地图几何:

${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300}

$map 关键字可用于打印未引用调查问题的地图。

${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}

地理点

对于地理点问题,可以使用表达式来显示问题中的纬度或经度值,具体如下:

${location | getValue:"x"}

${location | getValue:"y"}

无法使用一个表达式来显示两个值;如果需要两个值,则必须使用两个表达式。

提示:

仅当基础要素图层支持 z 值时,才能通过类似表达式来显示高度值:

${location | getValue:"z"}

默认情况下,纬度、经度和高度值将返回调查响应中提供的原始值,不会进行截断。 由于这些值通常比报表中需要的值长得多,请考虑使用 roundtoFixed 表达式将值四舍五入到特定的小数位。

${location | getValue:"x" | round:3}

${location | getValue:"x" | toFixed:3}

默认情况下,这些值为调查的要素图层所使用的空间参考的输出。 可以通过提供其 WKID 将不同的空间参考设置为附加参数:

${location | getValue:"x":4326}

Geotrace 和 geoshape

对于 geotrace 和 geoshape 问题,可以使用 getValue 表达式分别显示线的长度或面的周长:

${polyline1 | getValue:"length":"meters":"planar"}

对于 geoshape 问题,您还可以使用 getValue 表达式来显示面的面积:

${polygon1 | getValue:"area":"hectares":"geodesic"}

单位和计算方法为可选参数。 对于长度,将接受以下单位:

  • feet
  • kilometers
  • meters
  • miles
  • nautical-miles
  • yards

对于面积,将接受以下单位:

  • acres
  • hectares
  • square-miles
  • square-kilometers
  • square-meters
  • square-feet
  • square-yards

或者,可以使用 ArcGIS REST API 支持的 esriSRUnitType 常量esriSRUnit2Type 常量。 在表达式中,对于没有引号的常量,请使用数值代码,如下所示:

${polyline1 | getValue:"length":109002:"geodesic"}

如果未指定单位,则长度的默认值将为 kilometers,面积的默认值将为 square-kilometers

方法可以为 geodesicplanar。 如果未指定方法,则默认使用 geodesic