PostGIS是PostgreSQL基於OpenGIS中的SFS規範(Simple Feature Specification for SQL)所實作出來的地理物件函式庫,而PostgreSQL則是一個關聯式資料庫的自由軟體(BSD license),
跟PostGIS類似的東西相當於MS SQL Server中的SQL Spatial、Oracle spatial、MySQL spatial。
PostGIS在地理空間運算的實作function非常多,也可以與QGIS等軟體做結合。
PostGIS安裝可以參考官網,各種OS有不同的安裝方法,例如Mac使用Homebrew、Windows則有安裝檔等等。
也可以在DockerHub找PostGIS的image,用Docker啟用一個PostGIS環境,做一些測試。
PostGIS基於PostgreSQL當然可以使用psql或是pgadmin等工具及UI
tool,另外,QGIS對於PostGIS支援程度很高,有興趣者可以多研究喔!
產生一個table
CREATE TABLE tennis (
name VARCHAR(20),
city VARCHAR(10)
);
使用AddGeometryColumn增加空間欄位,指定坐標系統為EPSG:4326 2D。SELECT AddGeometryColumn ('topology','tennis','geom',4326,'POINT',2);
使用ST_GeomFromTextinset資料資料
例如
INSERT INTO topology.tennis(
name, city, geom)
VALUES ('前鎮高中網球場', '高雄市', ST_GeomFromText('POINT(120.318735 22.589452)', 4326));
PostGIS有很多空間格式的function,KML,geojson,GML等等
例如:
select name, city, ST_AsKML(geom) FROM topology.tennis
空間查詢會用到的常見方法舉幾個例子:
其實PostGIS的地理空間運算Funtion非常多,
涵蓋了raster及vector操作,可以參考官方文件喔!
更多PostGIS可以參考
https://www.slideshare.net/mutolisp/postgis-57051746
http://www.postgis.org/docs/
http://ravenonhill.blogspot.tw/2017/12/postgis.html