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

news/2024/7/27 7:38:56/文章来源:https://blog.csdn.net/UbuntuTouch/article/details/135543065

Elastic 地图(Maps)附带预定义区域,可让你通过指标快速可视化区域。 地图还提供了绘制你自己的区域地图的功能。 你可以使用任何您想要的区域数据,只要你的源数据包含相应区域的标识符即可。

但是,当源数据不包含区域标识符时,如何绘制这些区域呢? 这就是反向地理编码(reverse geocoding)的用武之地。反向地理编码是根据要素的位置为其分配区域标识符的过程。

在本教程中,你将使用反向地理编码按网络流量可视化美国人口普查局综合统计区 (CSA) 区域。

你将学会:

  • 上传自定义区域。
  • 使用 Elasticsearch 丰富处理器进行反向地理编码。
  • 创建地图并通过网络流量可视化 CSA 区域。
  • 完成本教程后,你将拥有一个如下所示的地图:

在本博文的展示中,我将使用最新的 Elastic Stack 8.11 来进行展示。

安装

如果你还没有安装好自己的 Elasticsearch 及 Kibana 的话,请参阅如下的文章来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

在安装的时候,请参照 Elastic Stack 8.x 的文章来进行安装。

步骤一:摄入网路流量数据

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

在本教程中,你将使用 Kibana 附带的 Web 日志示例数据集。 Web日志样本数据集具有经度和纬度。 如果你的网络日志数据不包含经度和纬度,请使用 GeoIP 处理器将 IP 地址转换为 geo_point 字段。

要安装 Web 日志示例数据集,请按照如下的步骤来进行:

这样它就帮我们在 Elasticsearch 中生成一个叫做 kibana_sample_data_logs 的 data stream:

步骤二:索引合并统计区 (CSA) 区域

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

在美国,这种规模通常用人口普查局所谓的综合统计区(combined statistical area - CSA)来衡量。 CSA 大致相当于人们直观地认为他们居住在哪个城市地区。它不一定与州或城市的边界一致。

CSA 通常共享相同的电信提供商和广告网络。 新的快餐特许经营权扩展到 CSA,而不是特定的城市或直辖市。 基本上,同一个 CSA 商店里的人在同一个宜家 (IKEA)。

要获取 CSA 边界数据,我们到地址 Census Bureau’s website 下载数据 cb_2018_us_csa_500k.zip,并解压改文件。

$ pwd
/Users/liuxg/data/csa
$ ls 
cb_2018_us_csa_500k.cpg            cb_2018_us_csa_500k.shp.ea.iso.xml
cb_2018_us_csa_500k.dbf            cb_2018_us_csa_500k.shp.iso.xml
cb_2018_us_csa_500k.prj            cb_2018_us_csa_500k.shx
cb_2018_us_csa_500k.shp            cb_2018_us_csa_500k.zip

我们接下来使用 Kibana 来上传 CSA 数据:

在上面:

  • 使用文件选择器从 CSA shapefile 文件夹中选择 .shp 文件
  • 使用 .dbf 文件选择器从 CSA shapefile 文件夹中选择 .dbf 文件
  • 使用 .prj 文件选择器从 CSA shapefile 文件夹中选择 .prj 文件
  • 使用 .shx 文件选择器从 CSA shapefile 文件夹中选择 .shx 文件

设置索引名称为 csa,并点击 Import file:

这样,我们就得到了如上图所示的地图。我们可以在 Kibana 中来查看 csa 索引的字段信息:

GET csa/_mapping

上面的命令显示:

{"csa": {"mappings": {"_meta": {"created_by": "file-data-visualizer"},"properties": {"AFFGEOID": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"ALAND": {"type": "long"},"AWATER": {"type": "long"},"CSAFP": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"GEOID": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"LSAD": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"NAME": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"geometry": {"type": "geo_shape"}}}}
}

上面有一个字段的名称为 geometry。它是一个类型为 geo_shape 的字段。

步骤三:反向地理编码

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

我们根据官方文档,创建一个如下的 enrichment policy:

PUT /_enrich/policy/csa_lookup
{"geo_match": {"indices": "csa","match_field": "geometry","enrich_fields": [ "GEOID", "NAME"]}
}

接着,我们执行如下的 policy:

POST /_enrich/policy/csa_lookup/_execute

创建摄取管道,请运行:

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"}}]
}

更新现有数据,请运行:

POST kibana_sample_data_logs/_update_by_query?pipeline=lonlat-to-csa

在运行完上面的命令后,我们可以针对索引来进行查看:

如上所示,我们可以看到一个被丰富的 csa 数据字段。它含有 GEIOD 及 NAME 子字段。

如果你想针对新添加的文档也进行同样的流程,你可以把这个 pipeline 添加到索引的设置中去:

PUT kibana_sample_data_logs/_settings
{"index": {"default_pipeline": "lonlat-to-csa"}
}

可视化

我们可以在 Discover 中来展现数据:

从上面我们可以看出来,有的数据含有 csa.GEOID,csa.NAME,但是有的数据不含有这两项。

按网络流量可视化组合统计区域 (CSA) 区域

从上面的可视化图中,我们可以看到它显示的图和之前的还是有些不一样。

恭喜! 你已完成本教程并掌握了可视化自定义区域的秘诀。 你现在可以尝试使用自己的数据复制相同的分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_925471.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端安全专题

xss (Cross Site Scripting) 跨站脚本攻击 原理 通常指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。 常见攻击类型 存储型XSS 攻击者将恶意的 JavaScript 脚本存储在网站…

模板设计模式-实例

在软件开发中,有时也会遇到类似的情况,某个方法的实现需要多个步骤(类似“请客”),其 中有些步骤是固定的(类似“点单”和“买单”),而有些步骤并不固定,存在可变性&…

redis之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程,4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

【GitHub项目推荐--一行命令下载全网视频】【转载】

项目地址:https://github.com/soimort/you-get 首先声明,请不要使用该项目从事违法活动哦~仅供学习使用! 解决痛点 如果你上网的时候看了一些东西不错,想下载下来,或者在线观看喜欢的视频,但是没有找到网…

Android Studio 如何设置中文

Android Studio 是一个为 Adndroid 平台开发程序的集成开发环境(IDE)。 如何安装中文插件 在 Jetbrains 家族的插件市场上,是能够搜到语言包插件的,正常情况下安装之后只需要重启即可享受中文界面,可AndroidStudio 中…

物联网介绍

阅读引言: 本文从多方面叙述物联网的定义以及在物联网当中的各种通信的介绍。 一、物联网的定义 1.1 通用的定义 物联网(Internet of Things,IOT;也称为Web of Things)是指通过各种信息传感设 备,如传感器、…

Vue3-TS中的接口-泛型-自定义类型

1首先一般在src下新建types文件夹&#xff0c;用来存放接口类型 2定义一个接口&#xff0c;用于限制person对象的具体属性 当需要用这个类型形成数组时&#xff0c;有2种写法 export type Persons Array<PersonInter> export type Persons PersonInter[] 3在文件中使…

【目标跟踪】跨相机如何匹配像素

文章目录 前言一、计算思路二、代码三、结果 前言 本本篇博客介绍一种非常简单粗暴的方法&#xff0c;做到跨相机像素匹配。已知各相机内外参&#xff0c;计算共视区域像素投影&#xff08;不需要计算图像特征&#xff09;。废话不多说&#xff0c;直接来&#xff0c;见下图。…

C#--核心

CSharp核心知识点学习 学习内容有&#xff1a; 绪论&#xff1a;面向对象的概念 Lesson1&#xff1a;类和对象 练习&#xff1a; Lesson2&#xff1a;封装--成员变量和访问修饰符 练习: Lesson3:封装--成员方法 Lesson4&#xff1a;封装--构造函数和析构函数 知识点四 垃圾回收…

git主分支合并到本地分支起冲突的解决办法

1.原因&#xff1a;一个项目几个人共同承担&#xff0c;难免有交叉的部分&#xff0c;这个时候交叉部分的提交就会导致冲突 2.方法&#xff1a;点开该类手动进行更改&#xff1a; 一般会有两种情况&#xff1a;一个是更改&#xff0c;一个是冲突(IDEA右上角会显示)&#xff1b;…

meter报OOM错误,如何解决?

根据在之前的压测过程碰到的问题&#xff0c;今天稍微总结总结&#xff0c;以后方便自己查找。 一、单台Mac进行压测时候&#xff0c;压测客户端Jmeter启动超过2000个线程&#xff0c;Jmeter报OOM错误&#xff0c;如何解决&#xff1f; 解答&#xff1a;单台Mac配置内存为8G&…

详解java中ArrayList

目录 前言 一、ArrayList是什么 二、ArrayList使用 1、ArrayList的构造 2 、ArrayList常见操作 3、 ArrayList的遍历 4、 ArrayList的扩容机制 三、来个练习 前言 当你看到这篇文章我觉得很好笑&#xff0c;因为我开始也不懂ArrayList现在轮到你了&#xff0c;嘻嘻嘻&am…

GRE隧道(初级VPN)配置步骤

一、拓朴图&#xff1a; 要求&#xff1a;1、PC1 和 PC2 能访问充当互联网接口地址的ISP环回口地址8.8.8.8 2、PC1 和 PC2 走GRE隧道互通 二、配置步骤&#xff1a; 1、配置IP 2、R1、R2 配置nat&#xff0c;代理内网地址通过G0/0/0口上外网 acl 2000rule permit source a…

Nginx配置负载均衡实例

Nginx配置反向代理实例二 提醒一下&#xff1a;下面实例讲解是在Mac系统演示的&#xff1b; 负载均衡实例实现的效果 浏览器地址栏输入地址http://192.168.0.101/test/a.html&#xff0c;刷新页面进行多次请求&#xff0c;负载均衡效果&#xff0c;平均分配到8080端口服务和8…

iOS解决内存泄漏工具

在iOS应用中&#xff0c;有一些工具和技术可以帮助识别和解决内存泄漏问题。以下是一些常用的工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.Instruments&#xff1a; Instruments 是Xcode中…

分布式搜索引擎--认识

elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 。 elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack&#xff08;ELK&#xff09;。被广泛…

行为型设计模式——备忘录模式

备忘录模式 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便地回到一个特定的历史步骤&#xff0c;当新的状态无效或者存在问题时&#xff0c;可以使用暂时存储起来的备忘录将状态复原&#xff0c;很多软件都提供了撤销&#xff08;Undo&#xff09;操作…

使用mamba替换conda和anaconda配置环境安装软件

使用mamba替换miniconda和anaconda&#xff0c;原因是速度更快&#xff0c;无论是创建新环境还是激活环境 conda、mamba、anaconda都是蟒蛇的意思… 下载mambaforge wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh ba…

基于Matlab/Simulink开发自动驾驶的解决方案

文章目录 处理自动驾驶数据 仿真自动驾驶场景 设计感知算法 设计规划和控制算法 生成代码和部署算法 集成和测试 参考文献 使用 MATLAB/Simulink开发自动驾驶&#xff0c;能够深入建模真实世界的行为、减少车辆测试并验证嵌入式软件的功能&#xff0c;从而推进自动驾驶感…

Mybatis 常用条件语句,大于小于、if、for、模糊搜索、case when、choose

大于小于 方法1&#xff1a; > 大于 &#xff0c; < 小于 <if test"startTime ! null ">and a.create_time > #{startTime} </if> <if test"endTime ! null ">and a.create_time < #{endTime} </if> 方法2(建议写这…