暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

空间数据库 | PostGIS安装和数据导入与查看

Snake与Gis 2021-07-31
2781

PostGIS

PostGIS是通过向PostgreSQL添加对空间数据类型、空间索引和空间函数的支持,将PostgreSQL数据库管理系统转换为空间数据库。

简单理解来说PostGIS是PostgreSQL的一个插件,能够将PostgreSQL变为强大的空间数据库。

PostGIS0.1于2001年5月发布,具有空间对象存储、空间索引和一些空间函数,它是一个适合存储和检索的数据库,但不适合分析。

随着GOC的"Simple Features for SQL"(SFSQL)规范提供了空间函数规范和”Geometry Engine,Open Source“(GEOS)对SFSQL规范提供了必要的算法,在PostGIS0.8版本中提供了对SFSQL的完整支持。

早期的空间数据存储,会有一大部分开销花在对元数据存储上,为减少这样现象,PostGIS1.0中采用轻量级的描述。后续中PostGIS版本不断的迭代,其在功能和性能上也越发的丰富。

参考:

https://zhuanlan.zhihu.com/p/62034688

PostGIS安装

PostgreSQL安装

由于PostGIS是建立在PostgreSQL之上,因此需要先安装PostgreSQL。

PostgreSQL可在:

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

下载对应的版本,例如9.6。

安装过程中,所有设置都使用默认设置,只是需要设置超级用户postgres的密码。

PostGIS安装

Winodws环境

安装完PostgresSQL后,提示运行Stack Builder,通过该工具安装PostGIS插件。

参考:

https://zhuanlan.zhihu.com/p/62157728

Linux环境

  • Ubuntu

    Ubuntu环境下安装PostGIS,可以参考官方教程。

    参考:https://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS24UbuntuPGSQL10Apt

  • 通用:Docker镜像安装(推荐)

    Docker是一个轻量的虚拟化技术,可以让应用程序和相关依赖打包到一个轻量级和可移植的容器内,通过Linux容器等技术,可以将容器在Linux系统内运行,也可以实现虚拟化。

    简单的理解来说,Docker可以比喻为系统的应用商城,每个容器是App。

    (类似于iPhone的App Store和APP)

    Docker的优点在于轻量化、高效率和标准化,能够减少开发的生命周期,特别是在应用部署和测试环节。

    Docker的缺点在于隔离不彻底和跨平台受限。

    Docer的一般应用场景是在于Web应用的自动化打包和发布、自动化测试和持续集成、服务器环境部署和调整数据库和其他后台应用等。

    Docker介绍:https://www.runoob.com/docker/docker-tutorial.html

    Docker安装:https://www.runoob.com/docker/centos-docker-install.html

    PostGIS镜像安装:https://blog.csdn.net/qq_34817440/article/details/103914574

PgAdmin

PostgreSQL的两个主要管理工具,一个是psql,另一个pgAdmin。

  • psql:命令行查询
  • pgAdmin:图形管理工具

空间数据库创建

运行pgAdmin,创建一个Server,配置PostGIS的服务器地址和密码,以连接数据库。

一般本地的服务器地址为localhost,用户名为postgres,密码为在安装过程中手动设置的密码。

在连接成功后,可以看到有默认的postgres数据库,该库是管理用户数据库,一般不使用。

右键Database,新建数据库,指定数据库的名称和所属用户。

按参考教程新建nyc数据库,可以看到整个数据库的结构如下图所示。

新建nyc数据库目前还仅仅只是一个普通数据库,要将其转变为空间数据库,需要加载PostGIS空间扩展

在Query Tool里,输入以下SQL,即可加载空间扩展插件。

CREATE EXTENSION postgis;
复制

可以通过运行PostGIS函数来确认是否安装空间扩展插件成功。

SELECT postgis_full_version();
复制

空间数据导入

PostGIS Shapefile 手动导入

参考:

https://zhuanlan.zhihu.com/p/62160223

GeoPandas 批量导入

GeoPandas(https://geopandas.org/)是专门处理空间数据的库,可以简单理解为地理信息数据的Pandas库。

可以通过conda或者pip安装。

conda install -c conda-forge geopandas
复制

GeoPandas读取完空间数据,得到GeoDataFrame类型的空间对象,可以通过它的调用to_postgis
方法,将其导入到对应的空间数据库。(一般先要创建数据库引擎,建立与空间数据库的链接)

from sqlalchemy import create_engine
engine = create_engine("postgres://myusername:mypassword@myhost:5432/mydatabase")
gdf.to_postgis("my_table", engine)
复制

参考:

https://geopandas.org/docs/reference/api/geopandas.GeoDataFrame.to_postgis.html

QGIS连接PostGIS

QGIS(https://qgis.org/en/site/)是开源的桌面端GIS处理软件。可在官网免费下载,然后在本地安装。

QGIS可以连接PostGIS数据库,通过创建PostGIS的连接,输入PostGIS所在IP、端口、数据库名和登录口令,即可在QGIS中查看空间数据库的地理空间数据。

文章转载自Snake与Gis,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论