利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表

本文主要是介绍利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一步:.shp批量转.geojson

# author: JMY
# 创建时间: 2024/2/26 17:12
# 批量将.shp文件生成geojson文件并转换坐标为3857import os
import geopandas as gpd# 定义输入和输出文件夹路径
input_folder = 'shp文件'
output_folder = 'geojson文件'# 定义输入和输出坐标系
out_proj = 'EPSG:3857'# 获取输入文件夹下所有的 Shapefile 文件
shapefiles = [f for f in os.listdir(input_folder) if f.endswith('.shp')]# 循环处理每个 Shapefile 文件
for index, shapefile in enumerate(shapefiles):print('转换第%d条数据...' % (index+1))# 读取 Shapefile 文件gdf = gpd.read_file(os.path.join(input_folder, shapefile))# 对几何数据进行坐标系转换gdf.to_crs(out_proj, inplace=True)# 构造输出文件名,将 '.shp' 替换为 '.geojson'output_file = os.path.splitext(shapefile)[0] + '.geojson'# 保存为 GeoJSON 文件gdf.to_file(os.path.join(output_folder, output_file), driver='GeoJSON')print('Shapefile 转换为包含 EPSG:3857 坐标系的 GeoJSON 完成!')

第二步:.geojson批量转.csv

# author: JMY
# 创建时间: 2024/2/23 15:16
# 批量将geojson文件生成csv文件import os
import geopandas as gpd
import json# 定义一个函数,用于从几何信息中提取坐标
def extract_coordinates(geom):if geom:return json.dumps(geom.__geo_interface__['coordinates'])else:return None# 输入目录和输出目录路径
input_dir = 'geojson文件'  # GeoJSON 文件所在目录路径
output_dir = 'csv文件'  # CSV 文件保存目录路径# 获取输入目录下的所有 GeoJSON 文件名
file_names = [f for f in os.listdir(input_dir) if f.endswith('.geojson')]# 初始化ID计数器
id_counter = 0for index,file_name in enumerate(file_names):print('插入第%d条数据...' % (index+1))input_file = os.path.join(input_dir, file_name)# 读取 GeoJSON 数据并创建 GeoDataFrame 对象data = gpd.read_file(input_file)# 在DataFrame中插入一个自增的'id'列作为第一列,并累加ID计数器data.insert(0, 'id', range(1 + id_counter, len(data) + id_counter + 1))data.insert(1, 'cun_id', -1)# 提取 'coordinates' 和 'type' 信息data['type'] = data['geometry'].apply(lambda geom: geom.geom_type if geom else None)data['coordinates'] = data['geometry'].apply(extract_coordinates)# 删除原始的 'geometry' 列data = data.drop('geometry', axis=1)# 更新ID计数器id_counter += len(data)# 将所有字段中的空值设置为 nulldata = data.fillna(value='null')# 指定输出文件名(与原始文件同名,只改变后缀名)output_file = os.path.splitext(os.path.basename(input_file))[0] + '.csv'output_full_path = os.path.join(output_dir, output_file)# 导出为 CSV 文件data.to_csv(output_full_path, index=False)print("输出完成......")

第三步:.csv批量插入数据库表

# author: JMY
# 创建时间: 2024/2/23 16:35
# 多个csv文件导入数据库同一张表中import os
import glob
import pandas as pd
import mysql.connector# 建立与MySQL数据库的连接
conn = mysql.connector.connect(host='', # 主机ipuser='', # 账号password='', # 密码database='' # 数据库
)# CSV目录路径
csv_directory = 'csv文件'# 获取目录中的所有CSV文件
csv_files = glob.glob(os.path.join(csv_directory, '*.csv'))# 创建游标对象
cursor = conn.cursor()# 循环处理每个CSV文件
for index,csv_file in enumerate(csv_files):print('插入第%d条数据...'%(index+1))# 读取CSV文件data = pd.read_csv(csv_file, encoding='utf-8')  # 根据实际情况指定编码# 将除了'id'和'cun_id'外的其他字段转换为字符串类型for column in data.columns:if column not in ['id','cun_id']:data[column] = data[column].astype(str)# 构建SQL插入语句table_name = 'village_yjjbnt'  # 表名columns = ', '.join(data.columns)values = ', '.join(['%s'] * len(data.columns))insert_query = f"INSERT INTO {table_name} ({columns}) VALUES ({values})"# 批量插入数据records = data.values.tolist()cursor.executemany(insert_query, records)# 提交事务
conn.commit()# 关闭游标和连接
cursor.close()
conn.close()print("数据导入mysql成功...")

这篇关于利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762393

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映