下面提供了地图问题的报告表达示例。
所有使用地图的问题(包括地理点、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}
可以将 map、mapScale 和 size 表达式配合使用,以提供 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"}
默认情况下,纬度、经度和高度值将返回调查响应中提供的原始值,不会进行截断。 由于这些值通常比报表中需要的值长得多,请考虑使用 round 或 toFixed 表达式将值四舍五入到特定的小数位。
${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。
方法可以为 geodesic 或 planar。 如果未指定方法,则默认使用 geodesic。