2013-10-06 140 views
1

我有一個從ArcGIS服務器導出的簡單GIS圖層圖像,現在我想將其轉換回多邊形。 什麼是最好的方法去做呢?將具有簡單形狀的圖像轉換爲多邊形

  1. 寫我自己的腳本(什麼是最好的,則─三角?線/邊緣跟蹤?)
  2. 使用一些工具? (OpenCV的?別的東西嗎?)

png image of polygons (each color represents a different polygon)

+0

在開始在那個方向上進行任何研究之前,試着弄清楚的數據,那個圖像當然是從 – berak

+0

生成的,但這不可能,我必須按照原樣解決它。 – gkdm

回答

1

您展示的圖像是光柵化,所以你不能再回到原來多邊形
但是,通過一些簡單的連接組件分析,您可以提取所有連續的斑點(相同顏色)。這些可以完全由它們的邊界來表示(藍線外的任何東西)。
您的新多邊形現在是這些邊界像素。當然,您可以應用多邊形簡化來減少多邊形中實際節點的數量。 OpenCV有幾個這樣的算法。

0

最好也是最簡單的方法是使用From Raster toolset in ArcGIS。您可能要使用的工具是Raster to Polygon。您可以直接在ArcGIS for Desktop中運行它,或者在Python腳本中調用它。如果您願意,您也可以在ArcGIS for Server中運行它。 ArcGIS的所有許可級別都包含「柵格到多邊形」工具。

請記住,Raster to Polygon會嘗試將圖像的所有部分提取到多邊形,包括邊界,因此您需要進行一些清理操作。希望這與選擇所有邊界特徵(即圖像中的藍色邊界特徵)並刪除它們一樣簡單。

0

雖然Gary的回答使用argGis似乎更好,但如果您只是有這個光柵圖像,您可以通過保持藍色像素(簡單的像素數據上的循環來創建掩膜,甚至可能更改爲Mat mask = orig == cv::Vec3b(255,0,0)然後你可以找到每個輪廓的連通分量,例如使用cv::floodFill`並使用 cv::approxPolyDp來對點進行矢量化處理