PostgreSQL 与 PostGIS

PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。它起源于伯克利(BSD)的数据库研究计划,目前是最重要的开源数据库产品开发项目之一, 有着非常广泛的用户。

PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力,相当于Oracle的spatial部分。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最著名的开源GIS数据库。

可以说PostGIS是对象-关系型数据库系统PostgreSQL的一个扩展,具有管理空间数据库的能力。

 

 

postgis安装:

(1)将postgis-bundle-pg96-2.3.1x64.zip解压

解压postgis-bundle-pg96-2.3.1x64.zip到没有中文或者空格的目录。

 

(2)修改makepostgisdb_using_extensions.bat文件:set PGINSTALL=C:\Program Files\PostgreSQL\9.6(PostgreSQL的安装路径)

 修改完成后执行脚本文件(bat),开始安装 

OK,到这里为止。PostgreSQL数据库和PostGIS扩展就已经安装完成了。然而我们还是发现了一件事,既然我们的插件已经安装成功了,为何数据库还是不支持geometry 这样的类型。不要着急,并不是我们安装失败了,而且我们没有给这个数据库开启PostGIS扩展。执行如下命名就可以搞定了:


-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D 
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
 

上面的就是PostGIS的扩展列表,当然我们也根据自己的需要只加载部分的扩展。


windows CMD 下使用

psql.exe -U postgres -d postgres -c "CREATE EXTENSION postgis;"

 

我们现在试着向创建一张内含地理信息几何类型列的表吧:

create table t_demo_info (

   id                   int4                 not null,

   name           int2                 not null default 0,

   type            int2                 not null default 0,

   begin_time           timestamp without time zone null,

   end_time             timestamp without time zone null,

   lng                  numeric              null,

   lat                  numeric              null,

   lnglat               geometry             null,

   constraint pk_t_demo_info primary key (id)

);

 

创建成功。

 

4、查看版本

查询PostGIS版本:select postgis_full_version();

查询PostgreSQL版本:select version();

查看PostgreSQL客户端版本:psql –version

查看PostgreSQL版本信息:show server_version;

查看PostgreSQL版本信息(包括小版本号):show server_version_num;

查看PostgreSQL版本信息(包括小版本号):select current_setting(‘server_version_num’);

在这里需要注意的是,select current_setting(‘server_version_num’);返回的是text,如果需要将它转换为Integer,则需要这样写:SELECT current_setting(‘server_version_num’)::integer;

举报

© 著作权归作者所有


1