本文主要是介绍Centos7安装PostgreSQL 12.4 + postgis安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Centos7安装PostgreSQL 12.4 + postgis安装
环境:Centos7.8-Mini + PostgreSQL 12.4 +
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
# 立即生效
setenforce 0
方法1)yum源安装PostgreSQL
进入PostgreSQL官网:
https://www.postgresql.org/download/linux/redhat/
根据自己的PostgreSQL版本信息和环境信息完成配置后,就会给出基于yum源的安装方式的安装操作:
Select version:
12
Select platform:
Red Hat Enterprise, CentOS, Scientific or Oracle version 7
Select architecture:
x86_64
Copy, paste and run the relevant parts of the setup script:
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql12-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
注意:yum仓库地址可能会发生变化和调整,早期我安装时生成的地址:
yum install -y https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 后来不存在了,对应目录下只有rpm安装包,没有repo rpm安装包了。
官网重新配置后,发现地址发生了变化,更新为:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm。所以每次安装时,还是直接去官网重新配置和生成吧。
安装PostgreSQL
# 安装PostgreSQL yum仓库
yum install -y https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm (该地址已经不可用了)
# 安装PostgreSQL yum仓库
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#查看yum源的所有PostgreSQL所有版本
cat /etc/yum.repos.d/pgdg-redhat-all.repo |grep PostgreSQL
yum search postgresql
yum search postgresql |grep postgresql12
postgresql12.x86_64 : PostgreSQL client programs and libraries
postgresql12-contrib.x86_64 : Contributed source and binaries distributed with
postgresql12-devel.x86_64 : PostgreSQL development header files and libraries
postgresql12-docs.x86_64 : Extra documentation for PostgreSQL
postgresql12-libs.x86_64 : The shared libraries required for any PostgreSQL
postgresql12-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql12-odbc.x86_64 : PostgreSQL ODBC driver
postgresql12-odbc-debuginfo.x86_64 : Debug information for package
: postgresql12-odbc
postgresql12-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql12-plpython.x86_64 : The Python procedural language for PostgreSQL
postgresql12-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql12-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql12-server.x86_64 : The programs needed to create and run a PostgreSQL
postgresql12-tcl.x86_64 : A Tcl client library for PostgreSQL
postgresql12-test.x86_64 : The test suite distributed with PostgreSQL
# 通过yum安装 PostgreSQL Client packages & PostgreSQL Server packages
yum install -y postgresql12 #可以跳过该步安装、因为下面安装 postgresql12-server 时会自动安装依赖的 postgresql12,如果其他方式安装需要自行确认依赖的安装
yum install -y postgresql12-server
默认安装路径为:/usr/pgsql-12 目录
# contrib 是一些第三方组织贡献出来的一些工具,在日常维护中也很有用,如果需要的话,也可以安装上
yum install -y postgresql12-contrib
方法2)rpm包方式安装PostgreSQL(不推荐该方式,因为后续PostGIS安装如果不通过yum方式安装,其他依赖软件(PostgreSQL,GEOS,SFCGAL,GDAL,PROJ,protobuf-c,json-c)和依赖组件、有版本要求,安装依赖包会非常麻烦。如果只是安装PostgreSQL不安装PostGIS,那么该方式还是可以的)
https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/ 下面不再提供repos,但提供了rpm包,也可以通过rpm安装包进行PostgreSQL的安装,下面目录中寻找自己对应OS和对应PG的版本rpm包
# 下载rpm 12.4安装包
mkdir -p /opt/postgres-12.4-down
cd $_
wget https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm
wget https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/postgresql12-12.4-1PGDG.rhel7.x86_64.rpm
wget https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm
# contrib 是一些第三方组织贡献出来的一些工具,在日常维护中也很有用,如果需要的话,也可以安装上
wget https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm
如果要下载其他OS版本对应的包或者其他版本PostgreSQL的安装包,可以切换对应的目录寻找。PostGIS也同步提供了,如果要安装对应版本的PostGIS、也可以同步下载
# yum localinstall 本地目录安装方式进行安装(如果有其他额外的组件包依赖、该方式安装也会自动安装依赖包解决依赖问题)
yum localinstall -y *.rpm
当然,还有一种方式,也可以用传统的 yum install 方式安装
# 先安装相应依赖,否则后面安装会提示依赖组件不存在
# yum install -y libicu systemd-sysv
安装rpm包(注意:按照这个先后顺序安装,卸载就反序卸载)
rpm -ivh postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql12-12.4-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm
如果要卸载,无需卸载的跳过
rpm -e postgresql12-contrib-12.4-1PGDG.rhel7.x86_64
rpm -e postgresql12-server-12.4-1PGDG.rhel7.x86_64
rpm -e postgresql12-12.4-1PGDG.rhel7.x86_64
rpm -e postgresql12-libs-12.4-1PGDG.rhel7.x86_64
rm -rf /usr/pgsql-12/
rm -rf /var/lib/pgsql/
到此为止,PostgreSQL软件包安装完成。
软件安装后,接下来就是初始化DB、设置自启动和数据库配置修改等操作了
# 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
# 启动服务&设置开机自启动
systemctl start postgresql-12
systemctl enable postgresql-12
Postgresql默认的安装目录是/usr/pgsql-12,而默认的数据目录(PGDATA)是/var/lib/pgsql/12/data/,如果默认数据目录空间不够的话可以修改指定数据目录。
注意:如果初始化数据库的时候使用了自定义数据目录,那么在注册服务(service)前需要修改服务脚本中的默认的PGDATA路径
vim /usr/lib/systemd/system/postgresql-12.service
Environment=PGDATA=/var/lib/pgsql/12/data/
将默认路径改为你自定义数据目录,然后再注册数据库服务并启动:
systemctl daemon-reload //重新加载服务的unit配置文件(服务配置文件修改生效配置)
systemctl enable postgresql-12 //服务自动启动开启
systemctl start postgresql-12 //启动服务
systemctl stop postgresql-12 //停止服务
systemctl disable postgresql-12 //服务自动启动关闭
另外,为了方便数据库管理时使用PG相关命令,可以设置环境变量(非必要步骤、也可以不设置)
su - postgres
vi ~/.bash_profile
export PG_HOME=/usr/pgsql-12
#export PGDATA=$PG_HOME/data
export PGDATA=/var/lib/pgsql/12/data
export PATH=$PG_HOME/bin:$PATH
export LD_LIBRARY_PATH=$PG_HOME/lib
export MANPATH=$PG_HOME/share/man:$MANPATH
# 查看数据库服务状态
systemctl status postgresql-12
[root@localhost postgres-12.4-down]# systemctl status postgresql-12
● postgresql-12.service - PostgreSQL 12 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-09-11 23:59:01 CST; 6min ago
Docs: https://www.postgresql.org/docs/12/static/
Main PID: 2964 (postmaster)
CGroup: /system.slice/postgresql-12.service
├─2964 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
├─2966 postgres: logger
├─2968 postgres: checkpointer
├─2969 postgres: background writer
├─2970 postgres: walwriter
├─2971 postgres: autovacuum launcher
├─2972 postgres: stats collector
└─2973 postgres: logical replication launcher
Sep 11 23:59:01 localhost.localdomain systemd[1]: Starting PostgreSQL 12 database server...
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.454 CST [2964] LOG: starting PostgreSQL 12.4 on x86_64-pc-linux-gnu, compiled by g...), 64-bit
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.459 CST [2964] LOG: listening on IPv6 address "::1", port 5432
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.459 CST [2964] LOG: listening on IPv4 address "127.0.0.1", port 5432
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.461 CST [2964] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.468 CST [2964] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.483 CST [2964] LOG: redirecting log output to logging collector process
Sep 11 23:59:01 localhost.localdomain postmaster[2964]: 2021-09-11 23:59:01.483 CST [2964] HINT: Future log output will appear in directory "log".
Sep 11 23:59:01 localhost.localdomain systemd[1]: Started PostgreSQL 12 database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost postgres-12.4-down]#
查看service文件信息,可以看到两个目录配置(程序目录和数据存储目录)
[Unit]
Description=PostgreSQL 12 database server
Documentation=https://www.postgresql.org/docs/12/static/
After=syslog.target
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
# Note: avoid inserting whitespace in these Environment= lines, or you may
# break postgresql-setup.
# Location of database directory
Environment=PGDATA=/var/lib/pgsql/12/data/
# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog
# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-12/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0
# 修改数据库配置
vim /var/lib/pgsql/12/data/postgresql.conf
listen_addresses = '*'
port = 5432
vim /var/lib/pgsql/12/data/pg_hba.conf
末尾添加下面类容,不限制任何主机并允许远程登录:
host all all 0.0.0.0/0 md5
# 修改后重启数据库
systemctl restart postgresql-12
# 查看服务监听状态
netstat -an |grep 5432
查看相关进程
[root@localhost ~]# ps aux |grep postgres
postgres 3156 0.0 0.1 397424 8832 ? Ss Sep12 1:44 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
postgres 3157 0.0 0.0 252780 960 ? Ss Sep12 0:00 postgres: logger
postgres 3159 0.0 2.3 399848 141164 ? Ss Sep12 0:44 postgres: checkpointer
postgres 3160 0.0 2.3 397572 141492 ? Ss Sep12 2:01 postgres: background writer
postgres 3161 0.0 0.0 397424 4956 ? Ss Sep12 1:30 postgres: walwriter
postgres 3162 0.0 0.0 398108 5840 ? Ss Sep12 1:21 postgres: autovacuum launcher
postgres 3163 0.0 0.0 253884 2464 ? Ss Sep12 5:43 postgres: stats collector
postgres 3164 0.0 0.0 397980 1588 ? Ss Sep12 0:04 postgres: logical replication launcher
root 16601 0.0 0.0 192032 2440 pts/0 S 03:08 0:00 su - postgres
postgres 16602 0.0 0.0 115544 2116 pts/0 S 03:08 0:00 -bash
postgres 17431 0.0 0.0 184696 4240 pts/0 S+ 05:29 0:00 psql -U test -d testdb01
postgres 19879 0.0 0.1 398660 6192 ? Ss 17:09 0:00 postgres: postgres testdb01 [local] idle
root 19931 0.0 0.0 192032 2444 pts/1 S 17:18 0:00 su - postgres
postgres 19932 0.0 0.0 115544 2136 pts/1 S+ 17:18 0:00 -bash
root 20271 0.0 0.0 112808 964 pts/2 S+ 17:46 0:00 grep --color=auto postgres
[root@localhost ~]#
执行pg_config查看配置信息(BINDIR,LIBDIR 等路径配置)
/usr/pgsql-12/bin/pg_config
PostgreSQL 安装后会默认创建一个 postgres 用户
# 切换到 postgres 用户
su - postgres
# 登录数据库shell
psql -U postgres
postgres=# ALTER USER postgres with encrypted password '1q2w3e';
ALTER ROLE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
\q
exit
查看当前连接用户
select * from current_user;
select user;
\du;
执行结果如下:
postgres=# select * from current_user;
current_user
--------------
postgres
(1 row)
postgres=# select user;
user
----------
postgres
(1 row)
postgres=# \du;
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=#
常用操作命令(PostgreSQL常用命令可参考:PostgreSQL常用操作命令_sunny05296的博客-CSDN博客_postgres操作命令)
创建数据库新用户:
postgres=# CREATE USER test WITH PASSWORD '1q2w3e';
注意:语句要以分号结尾,密码要用单引号括起来。
创建用户数据库
postgres=# CREATE DATABASE testdb01 OWNER test;
将数据库的所有权限赋予用户
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb01 TO test;
将数据库 testdb01 权限授权于 test 用户,但此时用户还是没有已存在的、非自己创建的表的读写权限,如果要把库中的其他用户创建的存量表授权给 test 用户读写,仍需要继续授权表操作:
注意:该GRANT授权语句必须在所要操作的数据库里执行 GRANT ALL PRIVILEGES ON all tables in schema public TO test;
例如:
postgres=# \c testdb01
You are now connected to database "testdb01" as user "postgres".
testdb01=# GRANT ALL PRIVILEGES ON all tables in schema public TO test;
GRANT
testdb01=#
如果是对某个单表单独授权,则执行:
GRANT SELECT ON TABLE test01 TO test;
获取当前db中所有的表信息:
select * from pg_tables;
查看用户的所有表(用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)
postgres=# select tablename from pg_tables where schemaname='public';
创建表:
postgres=# create table test01(
id integer not null, name character(255) not null,
price decimal(8,2) not null,
primary key(id)
);
插入数据
postgres=# insert into test01(id,name,price) values (1,'a',11.5),(2,'b',20.3);
查看表结构
\d test01;
查看表的数据
select * from test01;
退出重启数据库后,以用户test登录报错:
-bash-4.2$ psql -U test testdb01
psql: error: could not connect to server: FATAL: Peer authentication failed for user "test"
以postgres用户可以正常登录:
-bash-4.2$ psql -U postgres testdb01
psql (12.4)
Type "help" for help.
testdb01=#
报错原因:
psql的连接建立于Unix Socket上默认使用peer authentication,所以必须要用和数据库用户相同的系统用户进行登录。
还有一种方法,将peer authentiction 改为 md5,并给数据库设置密码。修改配置文件/var/lib/pgsql/12/data/pg_hba.conf,将
local all all peer
local replication all peer
两行配置的peer改成md5,修改后的内容如下:
vim /var/lib/pgsql/12/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all peer
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all peer
local replication all md5
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
host all all 0.0.0.0/0 md5
重启数据库
systemctl restart postgresql-12
su - postgres
-bash-4.2$ psql -U test testdb01
Password for user test:
psql (12.4)
Type "help" for help.
testdb01=>
登录成功
安装postgis
先介绍一下ArcGIS和PostGIS概念:
安装PostgreSQL数据库,创建用户sde,数据库test,架构名sde。ArcGIS就能连接了,但如果要使用,还要安装PostGIS插件,然后执行create extension postgis;这样该库就有了一个空间类型postgis,就可以成功创建要素类了。
有了空间类型postgis以后,再执行create enterprise geodatabase工具来创建Geodatabase模型。完成Geodatabase模型创建后,该库就有了两种空间类型,一种是ArcGIS的st_geometry,一种是PostGIS的geometry。而ArcGIS是可以兼容PostGIS类型的,所以创建要素类时,可以选择使用哪种类型,default就是ArcGIS的st_geometry,而pg_geometry是PostGIS的geometry。
安装postgis
1.安装工具包
yum install -y wget net-tools epel-release
2.安装postgis
yum install -y postgis30_12 postgis30_12-client
3.安装拓展工具
yum install -y ogr_fdw12
yum install -y pgrouting_12
注意:安装是注意版本要和PostgreSQL的版本一致,postgis和拓展工具的版本也要保持一致
4.创建数据库spatial_testdb
# create database spatial_testdb OWNER postgres;
也可以不单独创建,直接使用已有的数据库 testdb01
5.进入指定的数据库安装postgis扩展插件(开启postgis插件)
注意:需要使用 postgres 用户
psql -U postgres testdb01
create extension postgis;
create extension postgis_topology;
-- -- 下面如果没有需求,也可以先不开启,等有需要时再开启
create extension postgis_sfcgal;
create extension ogr_fdw;
create extension fuzzystrmatch;
create extension address_standardizer;
create extension address_standardizer_data_us;
create extension postgis_tiger_geocoder;
create extension postgis_raster;
create extension pgrouting;
create extension pointcloud;
create extension pointcloud_postgis;
扩展说明:
create extension postgis;
-- Enable PostGIS (includes raster)。postgis的基本核心功能,是用于创建空间数据库的扩展插件,仅支持矢量数据扩展,必须在 其他 extension 之前启用
create extension postgis_topology;
-- Enable Topology,拓扑功能的支持(使空间数据库支持拓扑检查)
create extension postgis_sfcgal;
-- Enable PostGIS Advanced 3D and other geoprocessing algorithms, sfcgal not available with all distributions. 使空间数据库支持2D和3D的数据操作
-- 这个 extension 主要是集成了CGAL(Computational Geometry Algorithms Library,计算几何算法库)来进行三维空间数据的空间运算(例如:ST_3DDifference、ST_3DUnion 等),可见是通常空间运算在三维空间上的拓展
create extension ogr_fdw;
-- 使空间数据库支持不同数据库之间的跨库操作
create extension fuzzystrmatch;
-- fuzzy matching needed for Tiger. 使空间数据库支持地理编码的模糊匹配
create extension address_standardizer;
-- rule based standardizer, 使空间数据库支持地址标准化
create extension address_standardizer_data_us;
-- example rule data set, 地址规则化示例数据集
create extension postgis_tiger_geocoder;
-- Enable US Tiger Geocoder. 使空间数据库支持地理编码
create extension postgis_raster;
-- 使空间数据库支持栅格数据扩展
create extension pgrouting;
-- 使空间数据库支持网络分析,包括双向Dijkstra最短路径等10多种功能
create extension pointcloud;
-- 使空间数据库支持点云数据存储
create extension pointcloud_postgis;
-- 使空间数据库支持点云数据操作
移除插件:
drop extension 插件名称;
eg: drop extension postgis;
更新插件:
alter extension 插件名称 update to "版本号";
eg: alter extension postgis update to "3.0.1";
6.验证是否安装成功
SELECT postgis_full_version();
testdb01=# SELECT postgis_full_version();
postgis_full_version
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="3.0.2 2fb2a18" [EXTENSION] PGSQL="120" GEOS="3.8.1-CAPI-1.13.3" PROJ="7.1.1" LIBXML="2.9.1" LIBJSON="0.11" LIBPROTOBUF="1.0.2" WAGYU="0.4.3 (Internal)" TOPOLOGY
(1 row)
testdb01=#
SELECT ST_SetSRID(ST_Point(-87.71, 43.741), 4326), ST_GeomFromText('POINT(-87.71 43.741)', 4326)
8.创建空间数据表
CREATE TABLE geom_test01(id integer not null, name varchar(255), primary key(id));
SELECT AddGeometryColumn('geom_test01', 'zone_geom', 4326, 'POINT', 2);
INSERT INTO geom_test01(id, zone_geom, name) VALUES (1, ST_GeomFromText('POINT(-0.1250 52.500)',4326), 'test');
INSERT INTO geom_test01(id, zone_geom, name) VALUES (2, ST_GeomFromText('POINT(27.91162480 -33.01532)', 4326),'test');
SELECT * FROM geom_test01;
SELECT id, ST_AsText(zone_geom), ST_AsEwkt(zone_geom), ST_X(zone_geom), ST_Y(zone_geom) FROM geom_test01;
testdb01=# SELECT * FROM geom_test01;
id | name | zone_geom
----+------+----------------------------------------------------
1 | test | 0101000020E6100000000000000000C0BF0000000000404A40
2 | test | 0101000020E6100000F8382E3E60E93B40C47C7901F68140C0
(2 rows)
testdb01=# SELECT id, ST_AsText(zone_geom), ST_AsEwkt(zone_geom), ST_X(zone_geom), ST_Y(zone_geom) FROM geom_test01;
id | st_astext | st_asewkt | st_x | st_y
----+-----------------------------+---------------------------------------+------------+-----------
1 | POINT(-0.125 52.5) | SRID=4326;POINT(-0.125 52.5) | -0.125 | 52.5
2 | POINT(27.9116248 -33.01532) | SRID=4326;POINT(27.9116248 -33.01532) | 27.9116248 | -33.01532
(2 rows)
testdb01=#
CREATE TABLE geom_test02(
id integer not null,
zone_geom geometry(point, 4326),
name varchar(255),
primary key(id)
);
INSERT INTO geom_test02(id, zone_geom, name) values (1, st_geomfromtext('point(27.91162480 -33.01532)', 4326), 'aaa');
SELECT * FROM geom_test02;
SELECT id, ST_AsText(zone_geom), ST_AsEwkt(zone_geom), ST_X(zone_geom), ST_Y(zone_geom) FROM geom_test02;
testdb01=# SELECT * FROM geom_test02;
id | zone_geom | name
----+----------------------------------------------------+------
1 | 0101000020E6100000F8382E3E60E93B40C47C7901F68140C0 | aaa
(1 row)
testdb01=# SELECT id, ST_AsText(zone_geom), ST_AsEwkt(zone_geom), ST_X(zone_geom), ST_Y(zone_geom) FROM geom_test02;
id | st_astext | st_asewkt | st_x | st_y
----+-----------------------------+---------------------------------------+------------+-----------
1 | POINT(27.9116248 -33.01532) | SRID=4326;POINT(27.9116248 -33.01532) | 27.9116248 | -33.01532
(1 row)
这篇关于Centos7安装PostgreSQL 12.4 + postgis安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!