map_layer

用法

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 包含多个内置地图图层。在创建自己的地图图层之前,请检查是否可以使用其中一个内置地图图层:

countriesus_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 文件时,您必须使用 fileurl 子参数。您还可以选择使用 property_keyproperty_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 关键字

topojsonvector_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 文件时,您必须使用 fileurl 子参数,并且可以选择使用 property_keyproperty_label_key

map_layer 与 IDE 文件夹搭配使用

如果您的项目启用了 IDE 文件夹,则在为 map_layer 指定项目文件时,需要使用路径:

map_layer: neighborhoods {
  file: "/maps/my_neighborhoods.json"
}