python将地理数据导出到postgis

数据格式:

创建test数据库 

注意要选择postgis范本

执行代码

import psycopg2
from psycopg2.extras import RealDictCursor
from shapely.wkt import dumps
from shapely.geometry import Polygon# 数据
data = [{'name': 'a','geom':'104.059962,30.647005;104.06156,30.649142;104.062694,30.650745;104.063921,30.652742;104.064346,30.652746;104.064561,30.652686;104.065495,30.652663;104.059962,30.647005',},{'name': 'b','geom':'104.236258,30.686956;104.234757,30.687411;104.233716,30.687536;104.232814,30.687523;104.231929,30.687296;104.231295,30.686936;104.230775,30.686467;104.229629,30.685142;104.229014,30.684482;104.22838,30.683951;104.227979,30.683657;104.227813,30.683835;104.227269,30.684107;104.227149,30.684118;104.226463,30.684118;104.225964,30.684232;104.225459,30.684294;104.236258,30.686956',},
]# 连接PostgreSQL数据库
connection = psycopg2.connect(dbname="test",user="postgres",password="user",host="localhost",  # 请替换为实际数据库服务器地址port="5432"
)# 创建游标对象
cursor = connection.cursor(cursor_factory=RealDictCursor)# 创建表(如果不存在)
cursor.execute("""CREATE TABLE IF NOT EXISTS keshan (id SERIAL PRIMARY KEY,name VARCHAR(255),geom GEOMETRY(POLYGON, 4326));
""")# 清空keshan表(如果已存在)
cursor.execute("""DELETE FROM keshan;ALTER SEQUENCE keshan_id_seq RESTART WITH 1; -- 重置id序列
""")# 将polyline转换为Polygon对象
def polyline_to_polygon(polyline):points = [(float(x), float(y)) for x, y in [p.split(',') for p in polyline.split(';')]]return Polygon(points)# 插入数据
for district in data:polygon = polyline_to_polygon(district['geom'])wkt = dumps(polygon, rounding_precision=6)# 插入记录cursor.execute("""INSERT INTO keshan (name, geom) VALUES (%s, ST_GeomFromText(%s, 4326))""", (district['name'], wkt))# 提交事务
connection.commit()# 关闭游标和连接
cursor.close()
connection.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TinTin DESTINATION MOON|开发者不容错过的 Web3 线下活动来啦!

还记得去年 9 月 17 日的上海吗?「DESTINATION MOON: Web3 Dev Summit Shanghai 2023」迎来了数百名 Web3 行业爱好者的关注和参与。4 场主题演讲、3 场圆桌讨论,近 20 名创新者、开发者、投资人和研究员围绕公链生态、Layer2 竞争、DID、ZKP、安全等热点…

VsCode中使用Anaconda中的python环境

1、今天在新的电脑上安装了VsCode和Anaconda,但是在VsCode却选择不了python的环境,期望结果是下面这样的 2、接着在网上百度,找到了方法,具体方法如下: 2.1需要先在Extensions中安装python 2.2再使用ctrlshiftP后使用…

基于PHP的音乐网站后台管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 3 1 相关技术 5 1.1 PHP技术 5 1.2 MySQL技术 5 1.3ThinkPHP框架 5 1.4 Apache技术 6 1.5 本章小结 6 2系统分析 7 2.1 功能需求 7 2.2 用例分析 7 2.3系统可行性分析 9 2.4 本章小结 10 3 系统设计 11 3.1 总体设计 11 3.2 数据库设计 12 3.…

简单认证个腾讯音乐人教程

认证腾讯音乐人,尊享尊贵头衔!!你的不凡让世界听见 成功以后可以在QQ音乐、酷狗、全民K歌等等搜到自己歌曲 步骤如下: 首先打开官网:https://y.tencentmusic.com/ 选择音乐人,点击立即入住 如下图点击&…

电脑如何快速生成图片二维码?在线图片生码的制作步骤

多张图片在电脑上如何生成二维码之后预览呢?现在很多场景下都会发现扫码会展现很多的图片,通过手机来获取图片内容,那么图片放入二维码中的制作方法是什么样的呢?下面就通过本篇文章来给大家介绍图片二维码在线制作的方法及步骤&a…

2024年新版CMS内容管理使用,不用回退老版本 使用最新小程序云开发cms内容模型

一,问题描述 最近越来越多的同学找石头哥,说cms用不了,其实是小程序官方最近又搞大动作了,偷偷的升级的云开发cms(内容管理)以下都称cms,不升级不要紧,这一升级,就导致我…

文献学习-14-一种用于高精度微创手术的纤维机器人

Authors: Mohamed E. M. K. Abdelaziz1,2 †, Jinshi Zhao1,3 †, Bruno Gil Rosa1,2 , Hyun-Taek Lee4 , Daniel Simon3,5 , Khushi Vyas1,2 , Bing Li6,7 , Hanifa Koguna3 , Yue Li1 , Ali Anil Demircali3 , Huseyin Uvet8 , Gulsum Gencoglan9,10, Arzu Akcay11,12, Moham…

js运行,控制台显示乱码

"code-runner.executorMap": {"javascript": "C:\\Program Files\\nodejs\\node.exe" //node.js的安装路径} 参考文章:https://blog.csdn.net/m0_63785629/article/details/129432129

无限debugger的几种处理方式

不少网站会在代码中加入‘debugger’,使你F12时一直卡在debugger,这种措施会让新手朋友束手无策。 js中创建debugger的方式有很多,基础的形式有: ①直接创建debugger debugger; ②通过eval创建debugger(在虚拟机中…

VR数字化线上展馆降低企业投入成本和周期

VR云展会是一种全新的展览形式,它利用虚拟现实技术,将实体展览搬到线上,让观众可以在家中就能参观各种展览。这种新型的展览方式有许多亮点,下面就来详细介绍一下。 首先,VR云展会打破了地域限制。传统的实体展览通常只…

Sublime Text for Mac/Win:跨平台编程利器,让代码编辑更高效

在当下这个数字化、信息化的时代,编程已经成为越来越多人的必备技能。而对于编程者来说,一款好的代码编辑器不仅能提升工作效率,还能为创作过程增添乐趣。今天,我要向大家推荐的,就是这样一款强大的跨平台代码编辑器—…

RocketMQ如何保证消息的顺序性?

和Kafka只支持同一个Partition 内的消息的顺序性一样,RocketMQ中的也提供了基于队列(分区)的顺序消费。即同一个队列内的消息可以做到有序,但是不同队列内的消息是无序的! 当我们作为MQ生产者需要发送顺序消息时,需要在send方法中,传入一个MessageQueueSelector。 Mes…