简介
PostGIS是一个强大的空间数据库扩展,为PostgreSQL数据库添加了地理信息系统(GIS)功能。本教程将指导你在Mac和Linux系统上安装PostGIS。
目录
Mac安装PostGIS
使用Homebrew安装
-
首先,确保你已安装Homebrew。如果没有,请运行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
安装PostgreSQL(如果尚未安装):
brew install postgresql@16
-
安装PostGIS:
brew install postgis@3.4
-
启动PostgreSQL服务:
brew services start postgresql
-
创建一个新的数据库并启用PostGIS扩展:
createdb mydb psql mydb CREATE EXTENSION postgis;
使用Postgres.app安装
-
访问 Postgres.app官网 下载并安装Postgres.app。
-
安装完成后,启动Postgres.app。
-
PostGIS已经包含在Postgres.app中,无需额外安装。
-
打开终端,连接到数据库并启用PostGIS扩展:
psql CREATE EXTENSION postgis;
😭虽然官方说已经包含了,但是我还是报错了
ERROR: Could not open extension control file "/Library/PostgreSQL/16/share/postgresql/extension/postgis.control": No such file or directory.extension "postgis" is not available
ERROR: extension "postgis" is not available
SQL state: 0A000
Detail: Could not open extension control file "/Library/PostgreSQL/16/share/postgresql/extension/postgis.control": No such file or directory.
Hint: The extension must first be installed on the system where PostgreSQL is running.
错误分析
- 这个错误表明 PostgreSQL 无法找到 PostGIS 扩展的控制文件。
- 错误消息指向 PostgreSQL 16 的安装路径,这表明你可能使用的是 EnterpriseDB 提供的 PostgreSQL 安装包,而不是 Postgres.app。
- PostGIS 扩展似乎没有正确安装在你的系统上。
可能的原因
- PostGIS 未安装。
- PostGIS 安装路径与 PostgreSQL 期望的路径不匹配。
- PostgreSQL 和 PostGIS 版本不兼容。
解决方案
-
确认 PostGIS 安装:
sudo find /Library/PostgreSQL -name postgis.control
如果没有找到文件,则需要安装 PostGIS。
但是后来我发现是我的问题
注意
在安装过程中,建议勾选 Stack Builder 选项,这会帮助你后续安装 PostGIS。
安装 PostGIS: 安装完成后,打开 Stack Builder,选择你安装的 PostgreSQL 版本,然后选择 Spatial Extensions 下的 PostGIS,点击 Next 进行安装。🙂🙂🙂
注意上面的路径上面步骤操作结束后postgis的安装包会在这个目录下你需要找到安装包点击安装
安装后
可以看到已经安装成功了。
Linux安装PostGIS
Ubuntu/Debian
-
更新包列表:
sudo apt update
-
安装PostgreSQL和PostGIS:
sudo apt install postgresql postgresql-contrib postgis
-
创建一个新的数据库并启用PostGIS扩展:
sudo -u postgres createdb mydb sudo -u postgres psql mydb CREATE EXTENSION postgis;
CentOS/RHEL
-
安装EPEL仓库(如果尚未安装):
sudo yum install epel-release
-
安装PostgreSQL仓库:
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
-
安装PostgreSQL和PostGIS:
sudo yum install postgresql12-server postgresql12-contrib postgis30_12
-
初始化数据库:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
-
启动并启用PostgreSQL服务:
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
-
创建一个新的数据库并启用PostGIS扩展:
sudo -u postgres createdb mydb sudo -u postgres psql mydb CREATE EXTENSION postgis;
从源代码编译安装
如果你需要特定版本或自定义安装,可以从源代码编译PostGIS:
-
安装必要的依赖:
sudo apt install build-essential postgresql-server-dev-all libgeos-dev libproj-dev libxml2-dev libgdal-dev
-
下载PostGIS源代码:
wget https://download.osgeo.org/postgis/source/postgis-3.1.4.tar.gz tar xvzf postgis-3.1.4.tar.gz cd postgis-3.1.4
-
配置、编译和安装:
./configure make sudo make install
-
在数据库中启用PostGIS扩展:
psql mydb CREATE EXTENSION postgis;
结论
现在你已经成功在Mac或Linux系统上安装了PostGIS。可以开始使用PostGIS的强大功能来处理地理空间数据了😄😄(关于gis部分后面持续更新)。 💡Tips:在生产环境中使用PostGIS时,务必关注安全性配置和性能优化。