GeoPandas+DataFrame实现shapefile文件导入PostGIS数据库

首先,确保你的环境已经安装了必要的库。你需要 geopandas, sqlalchemy, psycopg2 (或 psycopg2-binary), 和 geoalchemy2。可以通过以下命令安装:

pip install geopandas sqlalchemy psycopg2-binary geoalchemy2

上代码

python 复制代码
import geopandas as gpd
from sqlalchemy import create_engine
 
# 读取Shapefile
gdf = gpd.read_file('./files/par/par.shp')
 
 
# 如果需要,转换坐标系统至合适的SRID(例如WGS 84的EPSG:4326)
gdf = gdf.to_crs(epsg=4326)
# 设置编码
# gdf.columns = [col.encode('GBK') for col in gdf.columns]
# 检查当前几何列
print("当前活跃几何列:", gdf._geometry_column_name)
print("所有列:", gdf.columns.tolist())
gdf
 
try:
    db_config = {
    "host": "X",       # 例如 "localhost"
    "port": "5432",       # 例如 "5432"
    "database": "postgres",
    "user": "postgres",
    "password": "XX"
    }
 
# 2. 创建SQLAlchemy引擎
# 连接字符串格式:postgresql://用户名:密码@主机:端口/数据库名
    engine = create_engine(f'postgresql://{db_config["user"]}:{db_config["password"]}@{db_config["host"]}:{db_config["port"]}/{db_config["database"]}')
# # 导入数据到PostGIS
    gdf.to_postgis(
        name='传感器数据',  # 数据库中目标表名
        con=engine,
        if_exists='replace',     # 表存在时的操作:'replace'替换,'append'追加,'fail'失败
        index=True              # 不建议将DataFrame索引作为列导入
    )
    print("数据已成功导入PostGIS!")
except Exception as e:
    print(e)

查看结果 可以看到,字段的类型没有完全都转为string

相关推荐
哟哟耶耶4 小时前
Starting again company 03
前端·javascript·vue.js
葡萄城技术团队4 小时前
SpreadJS 赋能在线 Excel:协同编辑与精细化权限管控的技术实现
前端
转转技术团队4 小时前
转转商品中心微前端升级之路
前端
love530love5 小时前
【笔记】解决 ComfyUI 安装节点 ComfyUI-Addoor (葵花宝典)后启动报错:No module named ‘ComfyUI-Addoor’
linux·运维·前端·人工智能·windows·笔记·python
zzywxc7875 小时前
解锁 Rust 开发新可能:从系统内核到 Web 前端的全栈革命
开发语言·前端·python·单片机·嵌入式硬件·rust·scikit-learn
知新坊5 小时前
RustDesk 完整部署教程:支持 Web 管理后台和网页客户端远程,保姆级教学来了!
前端
敲敲了个代码5 小时前
UniApp 多页面编译优化:编译时间从10分钟到1分钟
开发语言·前端·javascript·学习·uni-app
景彬5 小时前
小红书小组件开发 最早踩坑版
前端·微信小程序
mapbar_front6 小时前
今天聊聊面试
前端·面试