用法
map_layer: company_regions {
feature_key: "ISO_A3"
file: "/map_folder/regions.json"
format: topojson
label: "desired label for chart visualization"
max_zoom_level: 12
min_zoom_level: 2
projection: airy
property_key: "ISO_A3"
property_label_key: "NAME"
}
|
层次结构
map_layer |
默认值
无
接受
地图图层的标识符,以及用于定义地图图层属性的子参数。 |
定义
借助 map_layer 参数,您可以定义自定义地图图层,然后使用该图层在 Looker 中绘制区域数据(例如县或邮政编码)并创建 地图图表。
如果存在地图图层,通常会选择互动式地图可视化图表作为默认地图可视化图表。唯一例外的是美国各州地图,Looker 默认使用静态地图区域图表,因为它使用阿拉斯加和夏威夷的插页。
地图图层可以接受 TopoJSON 或 GeoJSON 文件。
如需详细了解如何创建自定义地图图层文件,请参阅创建自定义地图区域最佳实践页面。
Looker 建议您将自定义地图图层文件的大小保持在 5 MB 以下,以免用户浏览器标签页不堪重负。
内置地图图层
Looker 包含多个内置地图图层。在创建自己的地图图层之前,请检查是否可以使用其中一个内置地图图层:
countries和us_states内置地图图层对国家/地区和州名称使用正确的大小写。数据以区分大小写的方式绘制到地图图层,因此您的数据也必须使用正确的大小写,才能使用这些内置地图图层。例如,如果您的数据集使用小写“new delhi”,则数据将无法正确绘制到使用“New Delhi”的内置地图图层上。
countries- 接受完整的国家/地区名称、ISO 3166-1 alpha-3 三个字母的国家/地区代码或 ISO 3166-1 alpha-2 两个字母的国家/地区代码。请注意,您必须在数据集中仅使用这三个选项中的一个;您不能混用这些选项。如果您的数据使用 ISO 3166-1 alpha-2,请在国家/地区维度的定义中添加
map_layer_name参数,以确保 Looker 将您的数据识别为国家/地区代码,而不会错误地将数据解读为州代码。例如:
dimension: country {
type: string
map_layer_name: countries
sql: ${TABLE}.country ;;
}
uk_postcode_areas- 接受 英国邮政编码区域(例如,利物浦的L、雷德希尔的RH或爱丁堡的EH)。us_states- 接受完整的州名称和两个字母的州缩写。us_counties_fips- 适用于美国县的五字符 FIPS 县代码的字符串字段。此图层仅适用于互动式地图。us_zipcode_tabulation_areas- 适用于五字符美国邮政编码的字符串字段。type: zipcode的维度会自动使用us_zipcode_tabulation_areas地图图层。邮政编码区域基于 2010 年邮政编码制表区域 (ZCTA),因此此地图图层不包含许多邮政编码(例如分配给邮政信箱的邮政编码),这些邮政编码不会直接映射到区域。
指定地图图层
可以使用文件名或网址指定地图的位置。
使用 GeoJSON 文件时,您必须使用 file 或 url 子参数。您还可以选择使用 property_key 和 property_label_key。GeoJSON 文件不支持 feature_key 子参数。添加 GeoJSON 地图图层的一般语法如下:
map_layer: identifier {
file: "/file_path/file_name.geojson" # or use the url subparameter
url: "string" # or use the file subparameter
property_key: "string"
property_label_key: "string"
}
添加 TopoJSON 地图图层的一般语法如下:
map_layer: identifier {
extents_json_url: "string"
feature_key: "string"
file: "/file_path/file_name.json" # or use the url subparameter
format: topojson | vector_tile_region
label: "string"
max_zoom_level: number
min_zoom_level: number
projection: airy # or one of many other choices
property_key: "string"
property_label_key: "string"
url: "string" # or use the file subparameter
}
其中:
| 参数 | 类型 | 说明 |
|---|---|---|
identifier |
字符串 | 您将在 LookML 中引用的地图名称。 |
file |
字符串 | 地图的位置,由 LookML 项目中的 JSON 文件名指定。该文件必须采用 TopoJSON 或 GeoJSON 格式,并使用以下扩展名之一:.json、.geojson 或 .topojson。您必须使用 JSON 文件的完整路径,例如 "/maps/countryobjects.json" 目录中的文件使用 /maps/。如果 JSON 文件位于根目录中,而不是文件夹中,您可以使用单个正斜杠来表示根目录,如下所示:"/countryobjects.json"如果您的项目未启用文件夹,Looker 会在 LookML IDE 文件列表的数据 部分中显示 JSON 文件。如需了解每种情况的 LookML,请参阅本页面后面的示例部分。 |
extents_json_url |
字符串 | 指向 JSON 文件的网址,该文件定义了地图图层中每个可用区域的地理范围。此数据用于自动将地图居中于可用数据,以实现可视化目的。JSON 文件必须是 JSON 对象,其中键是特征的映射值(由 property_key 指定),值是包含四个数字的数组,这些数字表示区域的西经度、南纬度、东经度和北纬度范围。该对象必须包含 property_key 的每个可能值的键。例如,extents_json_url: "https://mycompany.com/mapserver/json-extent.js"。如果使用此参数,您必须使用 url 参数指定地图位置。 |
feature_key |
字符串 | 地图图层引用的 TopoJSON 对象的名称。如果未指定,系统将使用第一个对象。 |
format |
关键字topojson 或 vector_tile_region |
区域信息的数据格式。人们通常使用 topojson。 |
label |
字符串 | 显示在图表配置界面中。 |
max_zoom_level |
数字 | 用于放大地图图层的最大缩放级别,适用于支持缩放的可视化图表。 |
min_zoom_level |
数字 | 用于放大地图图层的最小缩放级别,适用于支持缩放的可视化图表。 |
projection |
关键字 | 在支持多种地理投影的可视化图表中显示时,地图图层的首选地理投影。添加投影参数时,LookML 编辑器会列出许多可用的投影。 |
property_key |
字符串 | 要绘制的 TopoJSON 数据中的属性。TopoJSON 支持每个区域的任意元数据。默认情况下,系统会使用第一个匹配的属性。如果您要绘制特定的元数据属性,请在此处指定。 |
property_label_key |
字符串 | 用于为区域添加标签的 TopoJSON 数据中的属性。当映射值(由 property_key 定义)不太容易理解时,此属性非常有用。 |
url |
字符串 | 地图的位置,由包含地图文件的网址指定。 |
示例
如果可以,请将地图文件添加到项目中,然后使用 file 参数指向该地图文件。
您必须使用 JSON 文件的完整路径。如果您的项目未启用文件夹,Looker 会在 LookML IDE 文件列表的 数据 部分 中显示 JSON 文件。
例如,如果您的项目启用了文件夹,并且您在名为 maps 的目录中有一个名为 my_neighborhoods.json 的自定义地图,则可以使用如下所示的完整路径:
map_layer: neighborhoods {
file: "/maps/my_neighborhoods.json"
}
如果您的项目未使用文件夹,则上传的地图文件会显示在项目的数据 部分中。在这种情况下,您只需提供 my_neighborhoods.json 文件的名称即可:
map_layer: neighborhoods {
file: "my_neighborhoods.json"
}
或者,您可以指定自定义 neighborhoods 地图托管在其他位置,例如 https://wherever.com/my_neighborhoods.json:
map_layer: neighborhoods {
url: "https://wherever.com/my_neighborhoods.json"
}
定义地图图层(通过指定文件或使用 url 参数)后,您可以指定维度的值应与自定义地图上的地理区域相关联。在该维度中,使用 map_layer_name 参数指定您在 map_layer 参数中使用的名称。
dimension: neighborhood {
type: string
map_layer_name: neighborhoods # this is your map layer
sql: ${TABLE}.neighborhood_code
}
当您查询此维度并打开可视化图表部分时,Looker 会使用 neighborhoods JSON 文件绘制数据,如模型文件中的 map_layer 参数中所定义。
注意事项
静态地图(区域)图表
在静态地图(区域)图表中将地图设置为自动依赖于在 LookML 模型中指定map_layer来指定地图图层。如果未设置该参数,用户在选择自动 时会收到错误,但仍可以使用 Looker 的内置地图。
GeoJSON 文件
与 TopoJSON 文件类似,GeoJSON 文件可以使用 .geojson 或 .json 文件名扩展名,但必须包含 GeoJSON 格式的地理数据。使用 GeoJSON 文件时,您必须使用 file 或 url 子参数,并且可以选择使用 property_key 和 property_label_key。
将 map_layer 与 IDE 文件夹搭配使用
如果您的项目启用了 IDE 文件夹,则在为 map_layer 指定项目文件时,需要使用路径:
map_layer: neighborhoods {
file: "/maps/my_neighborhoods.json"
}