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的擴展列表,當然我們也根據自己的需要只加載部分的擴展。
 
我們現在試着向創建一張內含地理信息幾何類型列的表吧:
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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM