利用PostGIS中的九交模型解決選址問題

1. 問題描述

  • 有一批港口的選址方案,符合標準的選址方案是:港口(線型)的一端必須與湖岸相交,并且港口的所有其他部分都要在湖中。目前有5個選址的方案,這些方案哪些是符合標準的?
file

2. 九交模型介紹

2.1 空間要素的組成部分

  • 首先,定義所有的空間要素都有

    • 內(nèi)部(interior)
    • 邊界(boundary)
    • 外部(exterior)
  • 面:

    file

  • 線:


    file
  • 點:
    I B(為空) E


    file

2.2 九交模型

兩個幾何圖形的空間關系,可以用以下矩陣表示:

file

舉例來說,就是以下的表達方式,點-點、點-線、點-面、線-線、線-面、面-面的空間關系可以依次推導:


file

2.3 一些典型的空間關系

OGC中標準的空間關系

序號 空間關系 中文名稱 pg函數(shù) 解釋 相交關系
1 Contains / Inside 包含 一個幾何圖形的內(nèi)部完全包含了另一個幾何圖形
file
2 Croses 交叉、穿過 一個幾何圖形的內(nèi)部和另一個幾何圖形的邊界和內(nèi)部相交,在不同維度圖形使用,如線和面
file
3 Disjoint 分離 兩個幾何圖形的邊界和內(nèi)部不相交
file
4 Equal 相等 兩個幾何圖形具有相同的邊界和內(nèi)部
file
5 Intersects 相交 兩個幾何圖形沒有分離(Non-Disjoint) 除了分離以外的所有情況
6 Overlaps 重疊 兩個圖形的邊界和內(nèi)部相交(Intersect)
file
7 Touch 接觸 兩個幾何圖形的邊界相交,但是內(nèi)部不相交
file
8 Within 包含于 一個幾何圖形的內(nèi)部和邊界完全在另一個幾何圖形的內(nèi)部
file

2.4 擴展

三維空間拓撲關系
點-點空間關系2種:相離、相等;
點-線空間關系3種:相離、相接、包含于;
點-面空間關系3種:相離、相接、包含于;
點-體空間關系3種:相離、相接、包含于;
線-線空間關系7種:相離、相交、交疊、相等、相接、包含于、包含;
線-面空間關系5種:相離、相接、進入、穿越、包含于;
線-體空間關系5種:相離、相接、進入、穿越、包含于;
面-面空間關系10種:相離、相接、交疊、相等、包含于、包含、覆蓋、被覆蓋、穿越、被穿越;
面-體空間關系8種:相離、相接、交疊、進入、包含于、包含、穿越、被穿越;
體-體空間關系8種:相離、相接、進入、相等、包含于、包含、穿越、被穿越。

3. 如何在PostgreSQL中利用9交模型解決碼頭選址問題?

3.1 分析:

碼頭必須擁有以下特征:

  • 碼頭一端與湖岸相接→B(a)∩B(b) = 0
  • 碼頭在湖中→I(a)∩I(b) = 1
  • 碼頭不在湖以外的地區(qū) → I(a)∩E(b) = F
  • 碼頭的另外一端在湖中 → B(a)∩I(b) = 0

所以整理得到九交滿足的碼頭標準為:1FF00F212

file

3.2 計算過程

    1. 數(shù)據(jù)初始化
CREATE TABLE lakes ( id serial primary key, geom geometry ); --創(chuàng)建帶有坐標的geom表
CREATE TABLE docks ( id serial primary key, good boolean, geom geometry ); --創(chuàng)建碼頭表
INSERT INTO lakes ( geom ) VALUES ( 'POLYGON ((100 200, 140 230, 180 310, 280 310, 390 270, 400 210, 320 140, 215 141, 150 170, 100 200))'); -- 初始化數(shù)值

INSERT INTO docks ( geom, good ) VALUES ('LINESTRING (170 290, 205 272)',true),('LINESTRING (120 215, 176 197)',true),('LINESTRING (290 260, 340 250)',false),('LINESTRING (350 300, 400 320)',false),('LINESTRING (370 230, 420 240)',false),('LINESTRING (370 180, 390 160)',false); --初始化碼頭

file
    1. 進行相交分析
SELECT docks.* FROM docks JOIN lakes ON ST_Intersects(docks.geom, lakes.geom) WHERE ST_Relate(docks.geom, lakes.geom, '1FF00F212');--ST_Intersects先進行求交運算,判斷

4. 9交模型的運算效率如何?

  • 敬請期待

參考博客:
點線面拓撲關系
代數(shù)拓撲
維數(shù)擴展的9交集模型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 如題,以下僅在2D討論 點集拓撲學:通過邊界和內(nèi)部兩個點集的交進行定義。 1.描述的是什么? 拓撲關系。 用來描述...
    麥三刀閱讀 11,463評論 0 2
  • 1. 圖形推理命題形式(3.47) 一組圖 (常見) 兩組圖 (常見) 九宮格 (常見) 分組分類 空間類(折紙盒...
    師從小馬哥閱讀 1,764評論 0 0
  • 空間關系描述是GIS系統(tǒng)的基本功能之一。我在學校學習到的空間關系分為三種:方位關系、距離關系、拓撲關系。今天我要分...
    winar2008閱讀 13,438評論 0 54
  • from PostgreSQL+PostGIS 的使用 一、PostGIS中的幾何類型 PostGIS支持所有O...
    山華水清閱讀 7,115評論 0 5
  • 九月跟老公離婚了,不為別的,因為累。 她是再婚的,老公死的早。重新嫁了個男的吧,恨不得拉泡屎都扯上她。 她老公做個...
    艾米李園閱讀 391評論 0 0

友情鏈接更多精彩內(nèi)容