在Elastic Stack 7.5.0的Elastic Maps中,使用GeoJSON+矩形过滤器
很抱歉投稿晚了(深感歉意)。
这是 Elastic Stack (Elasticsearch) Advent Calendar 2019 的第四天文章。
虽然我平时没怎么接触这个服务,但我想在我在 Qiita 的初稿中提及到所谓的地理信息系统(GIS),我已经有5年左右没有接触了,平时主要从事搜索和自然语言处理领域。如果有我没有深入研究的地方,请指正。
太长不看
-
- Elastic Maps は docker-compose でシュッと試せる
-
- 7.5.0 では kibana.yml であれこれしたりゴリゴリクエリ書かなくても、KibanaのGUI上でかなりの操作が完結できる。
- 色んなデータソースをさくっとマッピングして集計できるのがスゴみ
弹性地图是什么?
以下是对公式(https://www.elastic.co/jp/products/maps)的概述说明:
Kibana的地图应用程序可以将多个不同索引显示为多层图层,在一个视图中。通过将多个索引图层叠加在同一张地图上,可以实时批量搜索和过滤。在安全运营中心,可以同时监视静态服务器位置信息和动态攻击位置信息。如果有感兴趣的信息,可以放大地图,显示高精度的详细信息作为独立的文档。
在Web服务中,当提到地图时,我会立即想到Google地图和Yahoo地图。在显示地图的网站上,我认为这些地图广泛被使用,包括外观的定制。
然而,当我们想要结合多个数据源,并进行筛选和汇总时,我们需要组合几个API来进行实现。使用Elastic Maps,这样的用例似乎可以轻松实现。在这里,我将尝试将与正在逐年增加的“灾害”有关的一些信息进行地图映射。
首先建立环境
使用Elastic Stack 可以提供Docker镜像。在您喜欢的环境中创建并启动以下文件。
作为前提条件,我们将以最基本的设置启动Elasticsearch和Kibana的开发(试用)版本7.5.0。
如果您想从GitHub上迅速获取,请点击这里。
version: '2.2'
services:
# https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
environment:
- discovery.type=single-node
- cluster.name=es-docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
# https://www.elastic.co/guide/en/kibana/7.5/docker.html
kibana:
image: docker.elastic.co/kibana/kibana:7.5.0
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
networks:
- elastic
volumes:
data01:
driver: local
networks:
elastic:
driver: bridge
elasticsearch.hosts: "http://elasticsearch:9200"
server.host: "0.0.0.0"
i18n.locale: "ja-JP"
在放置了两个文件的目录中,执行 docker-compose up 命令后,将完成从下载镜像到创建Docker网络等操作,然后可以通过浏览器访问 Kibana。
$ docker-compose up
Creating network "esac2019-elasticsearch-kibana-750_elastic" with driver "bridge"
Creating volume "esac2019-elasticsearch-kibana-750_data01" with local driver
Creating esac2019-elasticsearch-kibana-750_elasticsearch_1 ... done
Creating esac2019-elasticsearch-kibana-750_kibana_1 ... done
...
向地图上添加数据
为了根据今年肆虐的台风19号的路径信息,选择逃离附近的合适地点,我们将对紧急避难所和AED设施的信息进行地图标注。所需的GeoJSON数据将从以下网站获取。
国立情报学研究所 数字台风
G空间信息中心 指定紧急避难场所数据
G空间信息中心 AED数据
G空间信息中心 根据都道府县划分的1公里网格
精简数据
在使用筛选器时,关键是在GeoJSON导入时提前指定“工具提示中显示的字段”。例如,当加载台风19号的信息时,我已经指定了压力、时间和风速,例如可以将其限制在“风速超过40m”的条件下,在地图上显示。只需在KQL中指定条件。这也很方便。
可以将通过画面创建的过滤器,以Elasticsearch的查询DSL形式进行编辑和细节调整。通过自定义数据映射并叠加过滤器,可以拓展无限可能。
结束
弹性地图(Elastic Maps)是一个非常好的产品,除了安全分析、基于地图数据的日志分析、位置信息监控和商业分析,以及地理空间分析之外,它在与Elasticsearch的结合上也表现出色。久违地接触地图服务,深深感受到世界变得更加便利了。而且,Kibana实在是太好用了,如果想要进行一些分析,先尝试进入Kibana吧!
请在真正需要使用时,请务必在确认和验证Elastic Stack的设置和所使用数据的权利和许可之后使用。(免责声明)