正在加载

使用反向地理编码绘制自定义区域

Elastic Stack Serverless

地图 带有 预定义的区域,允许您通过指标快速可视化区域。地图 还提供映射您自己的区域的功能。您可以使用任何您想要的区域数据,只要您的源数据包含相应区域的标识符即可。

但是,当您的源数据不包含区域标识符时,您如何映射区域?这就是反向地理编码的用武之地。反向地理编码是根据要素的位置向其分配区域标识符的过程。

在本教程中,您将使用反向地理编码通过 Web 流量可视化美国人口普查局联合统计区 (CSA) 区域。

您将学习到

  • 上传自定义区域。
  • 使用 Elasticsearch enrich 处理器进行反向地理编码。
  • 创建地图并通过 Web 流量可视化 CSA 区域。

完成本教程后,您将拥有一张如下所示的地图

Map showing custom regions

GeoIP 是一种将 IP 地址转换为经度和纬度的常用方法。 GeoIP 在全球范围内大致精确到城市级别,在选定国家/地区精确到社区级别。 它不如手机上的实际 GPS 位置那么好,但比仅仅一个国家、州或省份要精确得多。

您将使用 Kibana 自带的 Web 日志示例数据集。 Web 日志示例数据集具有经度和纬度。 如果您的 Web 日志数据不包含经度和纬度,请使用 GeoIP 处理器将 IP 地址转换为 geo_point 字段。

GeoIP 详细程度对于推动决策非常有用。 例如,假设您想根据用户的位置发起营销活动,或者向高管利益相关者展示哪些大都市区正在经历流量激增。

在美国,这种规模通常由人口普查局称为联合统计区 (CSA) 的事物来捕获。 CSA 大致相当于人们直观地认为他们居住在哪个城市区域。 它不一定与州或城市边界重合。

CSA 通常共享相同的电信提供商和广告网络。 新的快餐连锁店扩展到 CSA,而不是特定的城市或市镇。 基本上,同一 CSA 中的人们在同一家 IKEA 购物。

要获取 CSA 边界数据

  1. 转到 人口普查局的网站 并下载 cb_2018_us_csa_500k.zip 文件。

  2. 解压缩 zip 文件。

  3. 在 Kibana 中,转到 地图

  4. 单击 创建地图

  5. 单击 添加图层

  6. 单击 上传文件

  7. 使用文件选择器从 CSA shapefile 文件夹中选择 .shp 文件。

  8. 使用 .dbf 文件选择器从 CSA shapefile 文件夹中选择 .dbf 文件。

  9. 使用 .prj 文件选择器从 CSA shapefile 文件夹中选择 .prj 文件。

  10. 使用 .shx 文件选择器从 CSA shapefile 文件夹中选择 .shx 文件。

  11. 将索引名称设置为 csa,然后单击 导入文件

  12. 导入完成后,单击 添加为文档图层

  13. 添加工具提示字段

    1. 单击 + 添加 以打开字段选择。
    2. 选择 NAMEGEOIDAFFGEOID
    3. 单击 添加
  14. 单击 保留更改

查看地图,您可以了解人口普查局眼中构成大都市区的要素。

Map showing metro area

要通过 Web 日志流量可视化 CSA 区域,Web 日志流量必须包含 CSA 区域标识符。 您将使用 Elasticsearch enrich 处理器将 CSA 区域标识符添加到 Web 日志示例数据集中。 如果您的源数据已经包含区域标识符,则可以跳过此步骤。

  1. 使用导航菜单或 全局搜索字段转到 开发者工具

  2. 控制台 中,创建一个 geo_match enrichment policy

    PUT /_enrich/policy/csa_lookup
    {
      "geo_match": {
        "indices": "csa",
        "match_field": "geometry",
        "enrich_fields": [ "GEOID", "NAME"]
      }
    }
    
  3. 要初始化策略,请运行

    POST /_enrich/policy/csa_lookup/_execute
    
  4. 要创建摄取管道,请运行

    PUT _ingest/pipeline/lonlat-to-csa
    {
      "description": "Reverse geocode longitude-latitude to combined statistical area",
      "processors": [
        {
          "enrich": {
            "field": "geo.coordinates",
            "policy_name": "csa_lookup",
            "target_field": "csa",
            "ignore_missing": true,
            "ignore_failure": true,
            "description": "Lookup the csa identifier"
          }
        },
        {
          "remove": {
            "field": "csa.geometry",
            "ignore_missing": true,
            "ignore_failure": true,
            "description": "Remove the shape field"
          }
        }
      ]
    }
    
  5. 要更新现有数据,请运行

    POST kibana_sample_data_logs/_update_by_query?pipeline=lonlat-to-csa
    
  6. 要在摄取时在新文档上运行管道,请运行

    PUT kibana_sample_data_logs/_settings
    {
      "index": {
        "default_pipeline": "lonlat-to-csa"
      }
    }
    
  7. 转到 Discover

  8. 将数据视图设置为 Kibana 示例数据日志

  9. 打开 时间过滤器,并将时间范围设置为过去 30 天。

  10. 滚动浏览 可用字段 列表,直到找到 csa.GEOID 字段。 您也可以按名称搜索该字段。

  11. 单击 添加图标 以将该字段切换到文档表中。

  12. 找到 csa.NAME 字段并将其添加到您的文档表中。

您的 Web 日志数据现在包含来自匹配的 csa 区域的 csa.GEOIDcsa.NAME 字段。 不包含在 CSA 区域中的 Web 日志流量没有 csa.GEOIDcsa.NAME 字段的值。

View of data in Discover

现在我们的 Web 流量包含 CSA 区域标识符,您将通过 Web 流量可视化 CSA 区域。

  1. 转到 地图

  2. 单击 创建地图

  3. 单击 添加图层

  4. 单击 等值线图

  5. 对于 边界源

    1. 选择 来自 Elasticsearch 的点、线和多边形
    2. 数据视图 设置为 csa
    3. 联接字段 设置为 GEOID
  6. 对于 统计信息源

    1. 数据视图 设置为 Kibana 示例数据日志
    2. 联接字段 设置为 csa.GEOID.keyword
  7. 单击 添加并继续

  8. 滚动到 图层样式 并将 标签 设置为 固定

  9. 单击 保留更改

  10. 保存 地图。

    1. 为地图命名。
    2. 添加到仪表板 下,选择
    3. 单击 保存并添加到库
Final map showing custom regions

恭喜! 您已完成本教程,并获得了可视化自定义区域的方法。 现在您可以尝试使用您自己的数据复制相同的分析。

© . All rights reserved.