PostGIS安装使用

一个人想着一个人 提交于 2020-01-07 02:44:54

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、安装

sudo apt install postgis postgresql-11-postgis-3

这里需要根据服务器版本选择对应的包,如服务器是最新的12则:

sudo apt install postgis postgresql-12-postgis-3

二、创建数据库mygis使之具备Postgis功能

 使你的OS登陆用户(这里mymotif),成为postgers数据库用户并具备建库权限:

sudo -u postgres psql -c "CREATE USER mymotif WITH PASSWORD 'wxwpxh' CREATEDB ;"

建立mygis数据库:

mymotif@DESKTOP-PRH2A6F:~$ createdb mygis

安装postgis以及其它的一些扩展:

mymotif@DESKTOP-PRH2A6F:~$ sudo -i -u postgres psql mygis
psql (12.0 (Ubuntu 12.0-2.pgdg18.04+1), 服务器 11.5 (Ubuntu 11.5-3.pgdg18.04+1))
输入 "help" 来获取帮助信息.

mygis=# CREATE EXTENSION postgis;
CREATE EXTENSION
mygis=#  CREATE EXTENSION postgis_topology;
CREATE EXTENSION
mygis=# CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION
mygis=# CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION
mygis=# CREATE EXTENSION address_standardizer;
CREATE EXTENSION
mygis=# CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION
mygis=# CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION
mygis=#

授权


mygis=# GRANT ALL PRIVILEGES ON DATABASE mygis TO mymotif;
GRANT
mygis=# GRANT ALL ON schema topology TO mymotif;
GRANT
mygis=# \q

以mymotif用户连接mygis,验证:

mymotif@DESKTOP-PRH2A6F:~$ psql mygis
psql (12.0 (Ubuntu 12.0-2.pgdg18.04+1), 服务器 11.5 (Ubuntu 11.5-3.pgdg18.04+1))
输入 "help" 来获取帮助信息.

rm(st_geometryfromtext('POINT(116.4680989087 39.9486998528)',4326),3857));7961543 39.9486461337)',4326),3857),st_transfor
   st_distance
------------------
 34.5933990100333
(1 行记录)

337,116.4680989087 39.9486998528,116.4682182670 39.9483181633,116.4679312706 39.9482801227))',4326),4527));43 39.94864613
     st_area
------------------
 1101.47601544425
mygis=> select area(circle'((0,0),1)');
       area
------------------
 3.14159265358979

mygis=>  SELECT st_distance(st_transform(st_geometryfromtext('POINT(116.4677961543 39.9486461337)',4326),4527),st_transform(st_geometryfromtext('POINT(116.4680989087 39.9486998528)',4326),4527));
   st_distance
------------------
 26.5520226666734

mygis=> SELECT ST_SetSRID(ST_Point(-87.71,43.741),4326),ST_GeomFromText('POINT(-87.71 43.741)',4326);
                     st_setsrid                     |                  st_geomfromtext
----------------------------------------------------+----------------------------------------------------
 0101000020E61000003D0AD7A370ED55C0022B8716D9DE4540 | 0101000020E61000003D0AD7A370ED55C0022B8716D9DE4540
(1 行记录)

mygis=> SELECT PostGIS_Full_Version();

出现:

                                                                                               postgis_full_version  
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 POSTGIS="3.0.0 r17983" [EXTENSION] PGSQL="110" GEOS="3.7.1-CAPI-1.11.1 27a5e771" SFCGAL="1.3.5" PROJ="Rel. 4.9.3, 15 August 2016" LIBXML="2.9.4" LIBJSON="0.12.1" LIBPROTOBUF="1.2.1" WAGYU="0.4.3 (Internal)" TOPOLOGY
(1 行记录)

(END)                                                                                                                   

这样mygis已经具备PostGis功能,即可以使用PostGis的数据结构、函数、过程等等

三、测试(也是以mymotif用户连接mygis)

1、建立表格(用到了PostGis中point类型)。

mygis=>CREATE TABLE location_city(name varchar(80), location point);

2、插入

mygis=> INSERT INTO location_city VALUES ('San Francisco', '(-194.0, 53.0)'), ('New York', '(-184.0, 43.0)'), ('北京', '(-94.0, 133.0)'), ('Los Angeles', '(-297.0, 63.0)'), ('Chicago', '(-94.0, 283.0)');

3、select

mygis=> SELECT * FROM location_city;
     name      | location
---------------+-----------
 San Francisco | (-194,53)
 New York      | (-184,43)
 北京          | (-94,133)
 Los Angeles   | (-297,63)
 Chicago       | (-94,283)
(5 行记录)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!