当前位置: 首页 > news >正文

乡镇围栏数据存储ES实践

在这里插入图片描述
空白的是ES渲染的问题,放大后看到几乎没有丢失数据
在这里插入图片描述

1. ES索引建立
PUT /town_fence
{"settings": {"number_of_shards": 1},"mappings": {"properties": {"province": {"type": "keyword"},"city": {"type": "keyword"},"district": {"type": "keyword"},"town": {"type": "keyword"},"fence" : {"type": "geo_shape"}}}
}
2. Python文件解析入ES
# 从excel文件解析乡镇围栏数据至ES中
import pandas as pd
from elasticsearch import helpers, Elasticsearchtown_fence_df = pd.read_csv("../data/town.csv", sep='@', encoding='UTF-8')def init_es_client(es_host):es = Elasticsearch(hosts=[es_host], verify_certs=False)return eses_client = init_es_client("http://127.0.0.1:9200")actions = list()
count = 0for index, item in town_fence_df.iterrows():info = dict()info["province"] = item["province"]info["city"] = item["city"]info["district"] = item["region"]info["town"] = item["town"]# 有的围栏是多块,如天津,分开编号写,否则报多边形自相交异常polygon_parent_arr = item["polyline"].split("|")id_index = 0try:for polygon in polygon_parent_arr:coordinates_parent = []coordinates = []polygon_arr = polygon.split(";")lng_lat_first = []lng_lat_last = []for i in range(0, len(polygon_arr)):lng_lat = polygon_arr[i]lng_lat_arr = lng_lat.split(",")coordinate = [round(float(lng_lat_arr[0]), 6), round(float(lng_lat_arr[1]), 6)]if i == 0:lng_lat_first = coordinateif i == len(polygon_arr) - 1:lng_lat_last = coordinatecoordinates.append(coordinate)# 保证围栏闭合if lng_lat_first[0] != lng_lat_last[0]:coordinates.append(lng_lat_first)coordinates_parent.append(coordinates)info["fence"] = {"type": "Polygon", "coordinates": coordinates_parent}unique_id = str(hash(info["province"] + info["city"] + info["district"] + info["town"]))my_id = unique_id + "_" + str(id_index) if id_index > 0 else unique_idaction = {"_op_type": "index","_index": "town_fence","_id": my_id,"_source": info.copy()}actions.append(action.copy())id_index += 1if len(actions) == 1:try:helpers.bulk(es_client, actions)count += len(actions)print(count)actions.clear()except Exception as e:town_fence_df.loc[index, 'flag'] = Falseactions.clear()except Exception as e:town_fence_df.loc[index, 'flag'] = Falseactions.clear()
if len(actions) > 0:helpers.bulk(es_client, actions)count += len(actions)print(count)actions.clear()town_fence_df[town_fence_df['flag'] == False].to_csv('../data/town_errors.csv', sep='@', encoding='UTF-8', index=False)es_client.close()
3. 数据查询

在这里插入图片描述
欢迎关注公众号 算法小生

相关文章:

  • MySQL之创建高性能的索引(十二)
  • 设计模式(五)结构型模式---适配器模式
  • Unity DOTS技术(三)JobSystem+Burst+批处理
  • Web前端框架:深入探索与实践
  • 51单片机串口通信实现餐厅叫号
  • 数论1---整除
  • paddleocr快速入门:基于python脚本及命令行两种方式实现图片OCR识别
  • Qt 自定义代理类
  • ubuntu下搭建Supervisor
  • prometheus-alert使用
  • 达梦8 内存泄漏泄漏原因分析之一
  • IDM的优势
  • 安卓手机APP开发____持久性工作
  • TimeDao-一篇文章了解清楚Subspace项目
  • ssm324基于javaweb的企业人事信息管理系统+jsp-手把手调试搭建
  • [LeetCode] Wiggle Sort
  • js学习笔记
  • Nodejs和JavaWeb协助开发
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 记一次删除Git记录中的大文件的过程
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 用jQuery怎么做到前后端分离
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #define用法
  • #在 README.md 中生成项目目录结构
  • $(selector).each()和$.each()的区别
  • (day18) leetcode 204.计数质数
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (含笔试题)深度解析数据在内存中的存储
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转)大型网站架构演变和知识体系
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net core控制台应用程序初识
  • .NET Core中的时区转换问题
  • .Net MVC + EF搭建学生管理系统
  • .net 微服务 服务保护 自动重试 Polly
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • ?.的用法
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [APIO2015]巴厘岛的雕塑
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [C++]入门基础(1)
  • [CLickhouse] 学习小计