详解Linux中PostgreSQL和PostGIS的安装和使用
安装 PostgreSQL
- 更新系统软件包:
bash
sudo apt-get update
sudo apt-get upgrade
- 安装 PostgreSQL:
bash
sudo apt-get install postgresql
- 安装完成后,可以使用下面的命令检查 PostgreSQL 是否成功安装及正在运行:
bash
systemctl status postgresql
安装PostGIS
- 安装PostGIS需要首先安装依赖包,可以使用以下命令安装:
bash
sudo apt-get install libgdal-dev libgeos-dev libproj-dev libjson-c-dev
- 下载并安装PostGIS:
bash
sudo apt-get install postgis
- 安装完成后,可以使用下面的命令检查PostGIS是否成功安装:
bash
psql -U postgres -c "CREATE EXTENSION postgis;CREATE EXTENSION postgis_topology;" template1
使用PostgreSQL和PostGIS
- 创建一个新的数据库并启用PostGIS:
bash
psql -U postgres -c "CREATE DATABASE new_database"
psql -U postgres -d new_database -c "CREATE EXTENSION postgis;CREATE EXTENSION postgis_topology;"
- 导入地图数据到PostGIS中:
bash
shp2pgsql -s 4326 /path/to/shapefile.shp table_name | psql -U postgres -d new_database
这个命令将 shapefile 数据转换成 PostGIS table,并导入到我们之前创建的“new_database”数据库中。
- 查询 PostGIS 数据:
bash
psql -U postgres -d new_database -c "SELECT * FROM table_name"
这个命令会返回所有包含在 PostGIS table 中的数据。
示例
示例1:创建一个新的数据库并导入shapefile数据
假设你有一个名为“roads”的 shapefile 文件(roads.shp),你可以将它导入到名为“gisdb”的数据库中:
psql -U postgres -c "CREATE DATABASE gisdb"
psql -U postgres -d gisdb -c "CREATE EXTENSION postgis;CREATE EXTENSION postgis_topology;"
shp2pgsql -s 4326 /path/to/roads.shp roads | psql -U postgres -d gisdb
以下是其中所有命令的解释:
- 第一个命令用来创建一个名为“gisdb”的数据库。
- 第二个命令用来启用 PostGIS 扩展。
- 第三个命令将 roads.shp 转换为 PostGIS 表格。shp2pgsql 命令用于将 shapefile 文件转换为 PostGIS SQL 语句,然后将这些语句输入到数据库中。这样就可以从地图数据中创建一个 PostGIS 表。
- 最后一个命令用于检查导入的数据是否符合预期。
示例2:查询PostGIS数据
假设你已成功导入上面例子中的道路数据,现在你想发现与一条名为“Main Street”的道路相交的所有道路,可以按如下所示进行查询:
psql -U postgres -d gisdb -c "SELECT * FROM roads WHERE ST_Intersects(geom, (SELECT geom FROM roads WHERE name = 'Main Street'))"
这个命令将查询与名为“Main Street”的道路相交的所有道路。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Linux中PostgreSQL和PostGIS的安装和使用 - Python技术站