利用 GeoPandas 与 PostGIS 实现空间数据交互

图片[1]-利用 GeoPandas 与 PostGIS 实现空间数据交互-山海云端论坛

1. 简介

PostGIS 是 PostgreSQL 针对地理空间数据的拓展功能,能够有效管理和固化空间矢量数据,以及进行空间数据分析。而 GeoPandas 是 Python 生态中优秀的空间数据分析处理工具,在与 PostGIS 进行交互方面也提供了相应的功能。

2. GeoPandas 与 PostGIS 进行交互

为了能在 GeoPandas 中与 PostgreSQL 和 PostGIS 建立连接,请确保安装了以下 3 个库:

<code>pip install sqlalchemy psycopg2 geoalchemy2</code>

接下来,我们需要确保 PostgreSQL 中存在可连接的空间数据库。在 pgAdmin 界面内新建数据库,例如命名为 demo。

图片[2]-利用 GeoPandas 与 PostGIS 实现空间数据交互-山海云端论坛
图片[3]-利用 GeoPandas 与 PostGIS 实现空间数据交互-山海云端论坛

在查询工具中执行以下 SQL 语句以将该数据库转换为空间数据库:

<code>CREATE EXTENSION postgis;</code>

现在我们已经准备好在 GeoPandas 中读写 PostGIS 数据表。

2.1 利用 GeoPandas 向 PostGIS 写入数据

以重庆市区县矢量面数据为例,首先导入所需的 GeoPandas 和 SQLAlchemy,然后读取重庆市的 GeoJSON 文件:

<code>import geopandas as gpd from sqlalchemy import create_engine # 读取重庆市区县矢量面数据 chongqing = gpd.read_file("重庆市.geojson")</code>

接下来,演示如何通过 GeoPandas 将矢量信息表推送到 PostGIS,使用到的 API 是 to_postgis()

<code># 创建与数据库的连接 engine = create_engine("postgresql://username:password@host:port/database_name") # 将 GeoDataFrame 写入 PostGIS 数据库 chongqing.to_postgis(name="chongqing_counties", con=engine, if_exists="replace", index=False)</code>
2.2 利用 GeoPandas 从 PostGIS 读取数据

从 PostGIS 中读取数据需要使用 read_postgis() 方法:

<code># 从 PostGIS 中读取数据 chongqing_from_postgis = gpd.read_postgis("SELECT * FROM chongqing_counties", con=engine)</code>

这样,我们就实现了简单的与 PostGIS 的数据交互。

通过以上步骤,我们可以在 GeoPandas 中方便地与 PostGIS 进行空间数据的读写操作。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容