【下集】meta分割一切segment-anything 衛(wèi)星遙感影像,建筑物輪廓提取(下)

我們要完成基于segment-anything建筑物矢量數(shù)據(jù)的提取。要解決下面3個問題:
1、準(zhǔn)備一張有經(jīng)緯度信息的圖片,圖片的4點經(jīng)緯度。
2、獲取segment-anything生成的mask點
3、將mask點轉(zhuǎn)換成經(jīng)緯度坐標(biāo)。
注意:因為經(jīng)過了多次轉(zhuǎn)換,最后結(jié)果會有一定的偏差。
一、經(jīng)緯度信息的圖片
使用geobuilding [快照]-[左側(cè)快照] 導(dǎo)出地圖快照,并且有4點坐標(biāo)。

下面是導(dǎo)出的,快照圖片,我們來提取這個區(qū)域的矢量。
對應(yīng)的4點坐標(biāo)是:
[[121.430832338,31.1898182841],[121.43891127,31.1898182841],[121.43891127,31.1851553423],[121.430832338,31.1851553423]]

二、獲取segment-anything mask點序列
由于我沒有部署segment-anything,后臺有不少up主私信,都比較關(guān)注本集內(nèi)容。這里直接使用segment-anything.com官網(wǎng)進行mask點序列獲取。
首先打開chrome瀏覽器控制臺,然后上傳上面的地圖快照圖片。
首先查看官網(wǎng)給前端返回了哪些數(shù)據(jù),可以看到返回了mask掩模數(shù)組。這里面encodedMask應(yīng)該就是mask點序列。

通過分析代碼,得到了這個點序列是一個svg數(shù)組。

三、將mask點序列轉(zhuǎn)換成經(jīng)緯度數(shù)據(jù)
svg點序列---<轉(zhuǎn)1>-->圖片像素px點序列---<轉(zhuǎn)2>-->經(jīng)緯度
<轉(zhuǎn)1> 將svg點轉(zhuǎn)換成相對于圖片的px坐標(biāo)。有很多開源的方法都可以轉(zhuǎn)換得到。
<轉(zhuǎn)2> 前面提到已知了圖片的4點坐標(biāo)(分別是左上、右上、右下、左下)。
如果是正南正北,可以使用經(jīng)緯度加減法,去計算每個px對應(yīng)的經(jīng)緯度。
算法在mapbox和three.js都有找到,這里不再直接貼代碼。也可以詢問chatgpt來獲取答案。
經(jīng)過轉(zhuǎn)換我們得到了經(jīng)緯度信息,將這些數(shù)據(jù)導(dǎo)入到geobuilding中,如下

放大對比下,可以看到衛(wèi)星圖上的轉(zhuǎn)換后的經(jīng)緯度輪廓和segment-anything識別的結(jié)果一致。


將其中一個輪廓設(shè)置高度,得到白模建筑物??梢钥吹絪egment-anything將這個建筑物的樓體和樓頂都識別在了一起。
