空間分析「完全覆蓋」判斷

2021-10-19 14:51:33 字數 710 閱讀 4661

「輸入圖形是否被指定圖形完全覆蓋」這個判斷主要利用postgis的st_coveredby函式實現,該函式與另乙個可以判斷圖形重疊關係的函式st_within的區別,官方給出的解釋如下:

因為多邊形邊界並不算多邊形內部,因此st_within為判斷「真包含」,即兩圖形完全覆蓋或者說輸入圖形與指定圖形有任何邊界上的相交,都會判斷為false,不完全覆蓋。

而st_coveredby則為判斷「假包含」,即如果有邊界上的相交,只要輸入圖形沒超出指定圖形邊界,就認為是被完全覆蓋。

以上方法,當指定圖形只有乙個的時候,可以方便實現,可一旦指定圖形有複數個,固然可以利用st_intersects先找到與輸入圖形相交的圖形,再使用st_unions進行合併之後再求交集,但真要在後台使用sql實現有點麻煩,因此我們可以尋找一些別的思路,

一般來說,在判斷空間衝突之後,我們一般是要在前台視覺化出衝突相關的圖形,因此要在介面中返回衝突圖形的geom資訊,既然前台已經拿到這些資訊,我們也可以在這裡也可以通過前台來實現上面複數指定圖形情況下這個複雜的判斷:

前台如果要實現空間分析,可以借助js類庫turf:

可以使用turf的difference方法,將輸入圖形與指定圖形之一求差集,然後將差集與剩下的指定圖形求差集,直到差集為空,若最後差集不為空,則說明不完全覆蓋,否則就是完全覆蓋。

完全覆蓋問題

描述 有一天小董子在玩一種遊戲 用2 1或1 2的骨牌把m n的棋盤完全覆蓋。但他感覺遊戲過於簡單,於是就隨機生成了兩個方塊的位置 可能相同 標記一下,標記後的方塊不用覆蓋。還要注意小董子只有在m n的棋盤能被完全覆蓋後才會進行標記。現在他想知道 如果標記前m n的棋盤能被完全覆蓋,標記後的棋盤是否...

nyoj 328 完全覆蓋

nyoj 328 完全覆蓋 時間限制 2000 ms 記憶體限制 65535 kb難度 3 描述 有一天小董子在玩一種遊戲 用2 1或1 2的骨牌把m n的棋盤完全覆蓋。但他感覺遊戲過於簡單,於是就隨機生成了兩個方塊的位置 可能相同 標記一下,標記後的方塊不用覆蓋。還要注意小董子只有在m n的棋盤能...

區間完全覆蓋問題(貪心)

題意 在乙個矩形的花壇上,中間水平放了一排噴水裝置,澆灌半徑為r,問最少需要多少個裝置可以潤濕整個花壇。將每個裝置轉換成一條線段,就變成了求最少的線段覆蓋整個區間。將各線段左端點從小到大排序 設已覆蓋區間的右端點為ed 每次貪心選擇起點小於ed的線段中右端點最大的那一條,然後更新ed。1 inclu...