gpt4 book ai didi

python - Geopandas 数据框到 GeoJSON 到 Elasticsearch 索引?

转载 作者:行者123 更新时间:2023-12-02 23:45:34 25 4
gpt4 key购买 nike

我有一个与 this question 有关的问题:我对 python 比较陌生,现在已经开始在 Kibana 中进行可视化,我是全新的(因为我以前从未使用过它)。现在我有一个像这样的 pandas datafram geoseries:

    ID      Geometry
0 9417 POLYGON ((229611.185 536552.731, 229611.100 53...
1 3606 POLYGON ((131122.280 460609.117, 131108.312 46...
2 1822 POLYGON ((113160.653 517762.384, 113169.755 51...
3 7325 POLYGON ((196861.725 470370.632, 196869.990 47...
4 9258 POLYGON ((201372.387 579807.340, 201373.195 57...

我想在 kibana 中用这些多边形创建一个 map ,但我真的不知道怎么做。我已经阅读了关于 elasticsearch 和 stackoverflow 的不同部分,但我无法将正确的部分组合在一起。问题是,在我们的项目中,我们希望在 python 中导入数据,对其进行一些预处理,然后将其导出到 kibana。所以有一个 Python - GeoJSON - Elasticsearch [7.6] 过程,我找到的所有文献都不包括所有这 3 个 Assets ,所以我不确定如何继续。

我也确实尝试将文件保存为 GeoJSON,然后通过 Kibana 仪表板将其导入 map 可视化中,如 this instruction说。当我导入数据时,它不会为我的文件提供索引,因此不会可视化我的任何数据。

我确实读过如何无法为整个多边形编制索引,但我应该将其拆分为坐标。我的问题是我找不到在 python 中执行此操作的好方法。我还读到 Elasticsearch 中的索引应该具有正确的地理索引映射。但是,我又一次陷入了从 python 创建这个地理映射的困境。

有人可以帮我 :) 吗?

最佳答案

这应该让你开始:

  1. 导入和初始化
import shapely.geometry
import geopandas
from elasticsearch import Elasticsearch
import json

es = Elasticsearch(['http://localhost:9200'])
geoindex = None
  1. 获取或创建索引(+映射,如果需要)
try:
geoindex = es.indices.get('geoindex')
except Exception:
geoindex = es.indices.create('geoindex', {
"mappings": {
"properties": {
"polygon": {
"type": "geo_shape",
"strategy": "recursive"
}
}
}
})

  1. 转储为 json 并加载回字典(受 this 启发;我怀疑一定有更简洁的方法)
shapely_polygon = shapely.geometry.Polygon([(0, 0), (0, 1), (1, 0)])
geojson_str = geopandas.GeoSeries([shapely_polygon]).to_json()
  1. 迭代并同步到 ES
for feature in json.loads(geojson_str)['features']:
es.index('geoindex', { "polygon": {
"type": "polygon",
"coordinates": feature['geometry']['coordinates']
}}, id=feature['id'])
  1. 验证
count = es.count({}, 'geoindex')
print(count)
  1. 可视化

关于python - Geopandas 数据框到 GeoJSON 到 Elasticsearch 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61499384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com