震驚,PostGIS還可以這樣用?。。?/h1>

      網友投稿 1103 2025-04-01

      一、地理數據庫能做什么

      地理數據庫屬于空間數據庫,為地理數據提供了標準的格式和存貯方法,能夠方便迅速地進行檢索、更新和數據分析,最終達到為多種應用服務的目的。地理數據則包括觀測數據、分析測定數據、遙感數據和統計調查數據。地理數據庫已廣泛的應用于單車、導航,旅游、水利,農業、安平城市等應用場景,滲透到人民生活點點滴滴中。

      二、PostGIS功能介紹

      對于如上介紹的使用場景中,地理數據通常存儲為點、線或者多邊形的集合。在PostgreSQL中,已經提供了點、線、多邊形等空間數據類型,但其提供的數據處理方法和性能很難達到GIS的要求,主要表現在:缺乏復雜的空間類型;沒有提供空間分析;沒有提供投影變換功能。為了使得PostgreSQL更好的提供空間信息服務,PostGIS也就應運而生。

      2.1 PostGIS支持數據類型

      PostGIS完全遵循OpenGIS規范,支持OpenGIS中所有空間數據類型:

      a.POINT, LINESTRING, POLYGON, MULTI-POINT,

      b.MULTI-LINESTRING, MULTI-POLYGON,

      c.GEOMETRY COLLECTION

      除了OpenGIS定義的地理數據類型之外,PostGIS還對數據類型進行了擴展,在WKT和WKB數據類型基礎上擴展出EWKT和EWKB數據類型:

      a.EWKT, EWKB(包含了SRID信息的WKT/WKB)

      b.SRID(Spatial Referencing System Identifier):每個空間實例都有一個空間引用標識符 (SRID)。SRID 對應于基于特定橢圓體的空間引用系統,可用于平面球體映射或圓球映射。

      此外,PostGIS還支持柵格數據raster分析,可以基于已有的影像或者衛星數據,實現影像或者衛星數據不同類別的統計分析。

      2.2 PostGIS支持函數類型

      PostGIS常見函數大致可以分為以下六類,對于各函數具體用法參考《PostGIS使用手冊》:

      1.??? 字段處理函數

      a.AddGeometryColumn為已有的數據表增加一個地理幾何數據字段;

      b.DropGeometryColumn刪除一個地理數據字段的;

      c.ST_SetSRID設置SRID值

      2.??? 幾何關系函數

      這類函數描述幾何對象的距離、包含、范圍、相等等幾何關系,常見函數如下:ST_Distance、ST_Equals、ST_Disjoint、ST_Intersects、ST_Touches、ST_Within、 ST_Overlaps、ST_Contains。

      3.??? 讀寫函數

      這類函數主要用于各種數據類型之間的轉換,尤其是Geometry數據類型與其他字符型等數據類型之間的轉換,如ST_AsText、ST_GeomFromText、ST_AsGeoJSON ST_AsHEXEWKB、ST_AsKML、 ST_AsLatLonText。

      4.??? 幾何對象創建函數

      這類函數用于點、線、多變形等幾何對象創建,如ST_GeomFromEWKT、ST_GeomFromEWKB、ST_MakePoint、ST_MakeBox2D、ST_LineFromText、ST_Polygon。

      5.??? 幾何對象編輯函數

      這類函數提供對幾何圖像的平移、翻轉、旋轉、放大等功能,如ST_AddPoint、ST_Reverse、ST_Rotate、ST_Scale、ST_Snap、ST_Transform、ST_Translate、ST_TransScale。

      震驚,PostGIS還可以這樣用!??!

      6.??? 空間關系及測量函數

      這類函數實現幾何對象最遠、最近、長度、面積等計算,如ST_3DClosestPoint、ST_3DDistance、 ST_3DDWithin、ST_3DDFullyWithin、ST_3DIntersects、ST_3DLongestLine、ST_3DMaxDistance、ST_3DShortestLine、ST_Area。

      三、PostGIS的安裝:

      1.1?基礎編譯環境準備:

      GaussDB(DWS)中的PostGIS Extension需使用GCC和G++工具進行編譯安裝。安裝前需確認GCC和G++版本號大于等于4.8.5,且兩個工具可正常使用。具體可通過gcc -v和g++ -v查看相關版本。如上圖所示環境gcc和g++版本為4.3.4,不滿足版本要求,需使用源碼安裝方式進行升級。若集群中沒有低版本gcc和g++編譯器,可以通過掛載操作系統鏡像進行安裝,這里不做贅述。如需要升級則可從如下網站獲取GCC相關安裝包:

      https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz

      https://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.gz

      https://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.gz

      https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz

      此外PostGIS安裝還需要確保zlib、autoconf和automake等工具已正確安裝。

      1.2 PostGIS依賴庫安裝:

      PostGIS依賴Geos、?Proj、?JSON-C、?Libxml2、?Gdal第三方開源工具。安全前首先需要下載Geos、?Proj、?JSON-C、?Libxml2、?Gdal、?PostGIS源碼至$GAUSSHOME目錄。

      安裝時需切換至omm用戶,并檢查GaussDB環境變量已正確加載,且可正常登錄和使用GaussDB環境。具體安裝命令可參考產品文檔,且確保安裝路徑與文檔中給定路徑完全一致,自定義路徑會導致最終庫文件分發失敗。

      在整個安裝過程中,可使用make -sj和make install -sj命令并行加速編譯,-sj命令極低概率性出現安裝錯誤,如果安裝失敗則請使用make和make install進行串行安裝。此外對于ARM物理機,在每個安裝包configure時需要增加如下編譯參數:?--build=aarch64-unknown-linuxgnu,否則會出現安裝失敗。同時,在三方開源庫proj的安裝過程中,可能會報錯$GAUSSHOME/install/proj/bin目錄不存在,可手動創建該目錄再執行proj的安裝。

      安裝成功后截圖大致如下,其中關于get_PlatForm_str.sh不存在的提示信息可直接忽略。???????安裝完成后則需要使用PostGIS_install.sh工具完成PostGIS相關動態鏈接庫在集群節點中的分發。執行方式為:

      sh $GAUSSHOME/share/postgis/PostGIS_install.sh

      如若失敗,可打開PostGIS_install.sh文件分別執行分發命令,確定是哪個文件不存在而導致分發失敗,并進一步分析該庫文件編譯失敗原因。

      四、PostGIS使用:

      目前GaussDB對PostGIS中絕大多數函數均已支持下推至DN處理。因此對于絕大多數地理數據運算,都可以充分利用GaussDB的分布式計算優勢,帶來相比于PostgreSQL近似線性擴展比的性能加速。

      2.1?地理數據的導入:

      PostGIS支持shape格式地理數據導入。因此對于其它地理數據庫平臺數據,如Oracle或者ArcGIS中的地理數據,可先將其導出為shape格式文件,然后使用$GAUSSHOME/bin目錄下的shp2pgsql工具將shape文件轉換為sql文件并進一步導入GaussDB。如果生成sql文件中的地理表定義缺少分布鍵的話,可以手動增加一個id自增的分布鍵,使地理數據均勻分布到各個DN,進而充分利用GaussDB的分布式計算優勢。

      2.2?GIS函數使用demo:

      對于GaussDB支持各GIS函數的具體使用方法,請參考《?PostGIS-2.4.2用戶手冊》。這里給一個簡單的使用demo。

      示例1?:幾何表的創建。

      CREATE TABLE cities ( id integer, city_name varchar(50) );

      SELECT AddGeometryColumn('cities', 'position', 4326, 'POINT', 2);

      示例2:幾何數據的插入。

      INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA');

      INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB');

      INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');

      示例3:計算三個城市間任意兩個城市距離。

      SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;

      執行結果為:???????示例4:查詢query執行計劃,發現執行過程中p1表是廣播到全部DN節點的,因此對于每個DN,其只需要處理自己節點上的p2數據,通過對比本地p2數據與全局p1數據即可完成整個分析,這也是分布式數據庫的優勢所在。

      五、PostGIS性能介紹

      目前市場上的空間數據庫包括MySQL的Spatial Extension、PostgreSQL的PostGIS、Oracle Spatial、ArcGIS的ArcSDE及MongoDB等。對于這幾款數據庫的性能對比,之前有一篇文檔《常用地理數據庫對比測試》有一個比較詳細的對比和介紹。

      從測試數據可以看出,對于點數據,在相同查詢條件下,PostGIS數據庫的空間查詢速度最快。對于線數據,PostGIS則相比于其它數據庫要慢一些,這可能與不同地理數據庫使用不同索引技術有關。

      GaussDB作為分布式數據庫,對PostGIS做了深度適配。目前GaussDB對PostGIS中絕大多數函數均已支持下推至DN處理。因此對于絕大多數地理數據運算,都可以充分利用GaussDB的分布式計算優勢,帶來相比于PostgreSQL近似線性擴展比的性能加速,滿足客戶在大數據場景的地理數據處理和分析需求。

      六、總結

      本篇博文簡單介紹了GaussDB中Postgis的安裝和使用,歡迎廣大讀者和討論。

      想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關注微信公眾號,和您分享最新最全的PB級數倉黑科技,后臺還可獲取眾多學習資料~

      EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS)

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel中△符號是怎么打出來的(excel怎么打±符號)
      下一篇:關于excel 通配符的信息

      相關文章
      亚洲中文字幕无码一去台湾| 久久久久亚洲精品成人网小说 | 亚洲成a∧人片在线观看无码| 亚洲一区中文字幕在线电影网| 色婷婷六月亚洲婷婷丁香| 亚洲午夜福利717| 亚洲一区二区高清| 亚洲狠狠爱综合影院婷婷| 亚洲狠狠婷婷综合久久| 亚洲色精品VR一区区三区| 77777亚洲午夜久久多喷| 国产亚洲玖玖玖在线观看| 亚洲综合无码无在线观看| 亚洲日韩AV一区二区三区中文 | 激情内射亚洲一区二区三区爱妻 | 亚洲av永久无码精品天堂久久| 亚洲免费观看在线视频| 精品亚洲AV无码一区二区| 亚洲一日韩欧美中文字幕在线 | 国产亚洲av片在线观看播放| 亚洲国产日韩在线视频| 久久噜噜噜久久亚洲va久| 亚洲一区二区三区夜色| 亚洲激情校园春色| 色偷偷亚洲女人天堂观看欧| 亚洲人成网亚洲欧洲无码| 日本系列1页亚洲系列| 亚洲视频在线一区二区| 亚洲人成在线播放网站| 亚洲短视频男人的影院| 亚洲成a人片毛片在线| 在线观看日本亚洲一区| 自拍偷自拍亚洲精品偷一| 亚洲麻豆精品国偷自产在线91| 亚洲永久无码3D动漫一区| 亚洲短视频男人的影院| 久久久久精品国产亚洲AV无码| 亚洲精品无码专区| 亚洲一区日韩高清中文字幕亚洲 | 亚洲人成网7777777国产| 无码久久精品国产亚洲Av影片|