GIS雜談:矢量數(shù)據(jù)數(shù)據(jù)庫存儲及發(fā)布
數(shù)據(jù)庫存儲
數(shù)據(jù)庫能夠支持矢量數(shù)據(jù)的存儲,關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫(NoSQL)都支持。常用的關(guān)系型數(shù)據(jù)庫有:mysql、postgresql+postgis、oracle、sql server等;NoSQL數(shù)據(jù)庫常用的是MongoDB;空間數(shù)據(jù)庫(Spatial),同時支持一些常用的空間操作,查詢、分析、統(tǒng)計等;postgis支持的空間操作較全面,參見官方文檔:https://www.postgis.net/docs/reference.html
數(shù)據(jù)入庫
矢量數(shù)據(jù)需要通過工具,或者轉(zhuǎn)換成相應(yīng)的sql語句,才能進(jìn)行入庫操作,主要是涉及到坐標(biāo)數(shù)據(jù)的轉(zhuǎn)換,圖層里的屬性和普通的數(shù)據(jù)字段處理是一致的。
QGIS支持postgresql、ORACLE的空間數(shù)據(jù)導(dǎo)入、導(dǎo)出操作;mysql、sql server等數(shù)據(jù)庫,通過ogr命令行進(jìn)行空間數(shù)據(jù)導(dǎo)入,通過加載圖層支持空間數(shù)據(jù)導(dǎo)出;
ArcMap支持postgresql、ORACLE、sql server中空間數(shù)據(jù)的導(dǎo)入和導(dǎo)出;
通過sql語句的方式,也能夠?qū)崿F(xiàn)空間數(shù)據(jù)的入庫,以postgresql為例,按照WKT的形式組織坐標(biāo),就能夠使用內(nèi)置空間函數(shù)st_geogfromtext,將坐標(biāo)導(dǎo)入到數(shù)據(jù)庫中進(jìn)行存儲;使用st_asgeojson函數(shù),也能夠?qū)?shù)據(jù)表中的數(shù)據(jù),導(dǎo)出成geojson形式。
附:Well-known text (WKT)的坐標(biāo)存儲形式POINT(6 10)LINESTRING(3 4,10 50,20 25)POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))MULTIPOINT((3.5 5.6),(4.8 10.5))MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))POINT ZM (1 1 5 60)POINT M (1 1 80)Well-Known Binary (WKB)是wkt的二進(jìn)制壓縮形式。
矢量數(shù)據(jù)發(fā)布
1.?以文本形式可以打開的矢量數(shù)據(jù),如geojson,可以直接用web服務(wù)器進(jìn)行發(fā)布,如nginx、iis、apache等;
2.?以shp文件形式存儲的矢量數(shù)據(jù),需要借助軟件工具才能夠進(jìn)行發(fā)布,商業(yè)的有Arcgis Server、Supermap iServer等,免費的有Geoserver、Mapserver等;軟件工具發(fā)布的同時,支持通過服務(wù)的形式,對數(shù)據(jù)進(jìn)行查詢、分析和統(tǒng)計等;
3.?以數(shù)據(jù)庫形式存儲的矢量數(shù)據(jù),同時也需要借助以上的軟件工具進(jìn)行發(fā)布;當(dāng)然,數(shù)據(jù)庫支持一系列的sql操作,有后臺開發(fā)能力的,也可以自己開發(fā)后臺服務(wù),通過特定的請求返回相應(yīng)的數(shù)據(jù);