geopandas写入postgis

1、直接通过to_sql写入
file_name = os.path.split(file)[1]
print(‘正在写入:’+file)
tbl_name = file_name.split(‘.’)[0] # 表名
map_data = gpd.GeoDataFrame.from_file(file)
spatial_ref = map_data.crs.srs.split(‘:’)[-1]
map_data[‘geometry’] = map_data[‘geometry’].apply(
lambda x: WKTElement(x.wkt, spatial_ref))
# geopandas 的to_sql()方法继承自pandas, 将GeoDataFrame中的数据写入数据库
map_data.to_sql(
name=tbl_name,
con=engine,
if_exists=‘replace’, # 如果表存在,则替换原有表
chunksize=1000, # 设置一次入库大小,防止数据量太大卡顿
# 指定geometry的类型,这里直接指定geometry_type=‘GEOMETRY’,防止MultiPolygon无法写入
dtype={‘geometry’: Geometry(
geometry_type=‘GEOMETRY’, srid=spatial_ref)},
method=‘multi’
)
2、通过to_postgis写入(数据表名称一定要小写)
为了能在geopandas中与postgresql和PostGIS建立连接,请确保以下3个库已经安装:
pip install sqlalchemy psycopg2-binary geoalchemy2

CREATE EXTENSION postgis;并执行,成功之后我们的数据库就变成了空间数据库,支持空间相关的各种功能:
3、读取postgis数据
从PostGIS中读取数据要用到另一个API,对应geopandas的read_postgis(),其主要参数如下:

sql:字符型,对应从空间数据库中提取数据的SQL语句

con:同to_postgis()

geom_col:字符型,用于指定将哪一列作为GeoDataFrame的矢量列

crs:用于指定坐标参考系,同GeoDataFrame的坐标参考系设定方式

index_col:字符型或列表,用于指定将哪些列作为索引

parse_dates:列表,用于预解析时间类型数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值