GeoJSON 是一种用于编码各种地理数据结构的格式。例如:
- {
- "type": "Feature",
- "geometry": {
- "type": "Point",
- "coordinates": [125.6, 10.1]
- },
- "properties": {
- "name": "Dinagat Islands"
- }
- }
GeoJSON 支持以下几何类型:Point、LineString、Polygon、MultiPoint、MultiLineString 和 MultiPolygon。 具有附加属性的几何对象是特征对象。 特征集包含在 FeatureCollection 对象中。GeoJSON 可以用于 Elastic Maps 应用中。
在本教程中,你将构建一个自定义地图,显示两个机场之间的飞行路径,以及该路线上的闪电热点。 你将学会:
摄入 GeoJSON 数据
本教程要求你下载以下 GeoJSON 示例数据文件。 这些文件是你可以上传到 Kibana 并在 Elasticsearch 中建立索引以便在地图中显示的矢量数据类型的很好示例。
这些数据代表了两个真实的机场、两条虚构的飞行路线和虚构的闪电报告。 你可以不需要使用所有这些文件来完成如下的练习。你可以随意使用任意数量的文件,或使用你自己的有效 GeoJSON 文件。
下载后,我们的文件如下:
- $ pwd
- /Users/liuxg/data/geojson
- $ ls
- bangor_international_airport.geojson modified_flight_path.geojson
- lightning_detected.geojson original_flight_path.geojson
- logan_international_airport.geojson
我们首先打开 Maps 应用:
放大美国东北部的新英格兰地区。你正在向该区域添加飞行路径,这会设置地图以便更好地查看数据。
我们首先来上传 logan_international_airport.geojson 这个文件。点击上图中的 Add layer 按钮:
我进一步对这个机场进行定制。我们使用 icon 来表示这个机场。点击上面的 Save & close:
这样我们就得到了 Logan 国际机场的一个坐标点。
按照同样的套路,我们把 Bangor 国际机场也标出来。我们使用 bangor_international_airport.geojson 文件:
这样我们就得到了两个机场的位置图。
我们接下来把闪电分别图添加进来。这次我们使用的是 lightning_detected.geojson:
上面的绿色的点代表闪电发生的位置。
我们接下来把另外的两个路线图也摄入进来:original_flight_path.geojson 及 modified_flight_path.geojson,并以不同的颜色来表示:
如上所示,我们已经成功地把路线图加到地图上了。
接下来,我们添加一个 heatmap 聚合层。
查看 Lightning detected 层,可以清楚地看到闪电击中的位置。 不太清楚的是,某些地区是否比其他地区发生了更多的雷击,换句话说,闪电热点在哪里。 为雷击建立索引的 geo_point 数据的一个优点是你可以对数据执行聚合。
点击上面的 Add layer:
从上面的可视化中,我们可以看出来为啥我们需要重新规划飞行的路线,因为原飞行路线有闪电的发生。
为了能够更好地进行可视化,我们可以把每个图层都修改为自己喜欢的名字:
我们可以通过拖动图层来改变每个图层的顺序以使得更好的展示:
调整过后的图层如下: