本文介紹基於ArcMap軟體,實現在指定區域自動生成隨機點的方法。
在GIS應用中,我們時常需要在研究區域內進行地理資料的隨機取樣;而取樣點的位置往往需要在結合實際情況的前提下,用計算機隨機生成。這一操作在ArcMap軟體中就可以非常方便地進行。
已知現有如下一景柵格影像,我們需要在這一影像對應的位置中,隨機生成若干點作為取樣點。
另一方面,我們還已知該柵格影像對應的空間範圍的面要素向量圖層,如下圖所示。其中,由於該柵格影像存在無效值NoData,因此可以看到柵格影像是沒有完全遮蓋向量圖層的。
接下來,就可以開始隨機點的選取。在軟體中依次選擇“Data Management Tools.tbx”→“Sampling”→“Creat Random Points”。
彈出如下所示的介面。
這個工具的引數有很多,我們逐一介紹。“Output Location”為生成點要素的儲存路徑,“Output Point Feature Class”為生成點要素的名稱;“Constraining Feature Class (optional)”為我們生成隨機點的範圍——這一項為可選項,如果我們選擇了這一項,那麼隨機點就會在這一項所選的點、線或面向量要素範圍內生成;如果我們不選擇這一項,就可以在下一項“Constraining Extent (optional)”中選擇我們的柵格影像作為範圍。“Number of Points [value or field] (optional)”為生成點的個數,如果我們選中“Long”,那麼就直接輸入整數即可;如果我們選中“Field”,那麼就依據“Constraining Feature Class (optional)”這一項所選的點、線或面向量要素的屬性表中某一個欄位作為點的個數;這裡還需要注意,如果我們在“Constraining Feature Class (optional)”這一項選中了包含多個要素的要素集,那麼“Long”所輸入的點的個數其實是該要素集下屬每1個要素中所生成的點的個數(這裡大家看不明白也沒關係,我們在後面會用一些例子來說明)。“Minimum Allowed Distance [value or field] (optional)”表示所生成點之間的最小距離,同樣是可以用直接輸入距離或者用向量要素的屬性表欄位來賦值。最後一個勾選項表示是否將輸出的隨機點結果作為一個整體的要素——如果不勾選此項,那麼輸出的隨機點要素集中,每1個點就相當於是1個要素;如果勾選此項,那麼輸出的隨機點要素集中,所有點整體相當於是1個要素;如果勾選了這一項,就將啟用最後一個輸入框,表示如果將多個點整體當作1個要素的話,該要素最多可以含有多少個點。
接下來,我們就透過幾個例項來探究一下上述引數的具體含義。
首先,第一個例子,我們就按照上圖所示的引數設定執行該工具,得到結果如下所示。
可以看到,我們雖然在“Long”中設定了點的個數是100
,但是實際生成的隨機點個數遠遠不止100
個;這是因為,前面我們也提到:如果在“Constraining Feature Class (optional)”這一項選中了包含多個要素的要素集,那麼“Long”所輸入的點的個數其實是該要素集下屬每1個要素中所生成的點的個數。
在剛剛的例子中,我們“Constraining Feature Class (optional)”這一項選所用的面向量要素圖層如下所示,可以看到其是一個包含有9個省(9個要素)的要素集;那麼結合我們前面介紹的,在“Long”中設定了點的個數是100
,實際上是在每1個省份(每1個要素)中生成100
個點,因此最終得到的整體結果是900
個點,從而導致我們的隨機點結果看起來就這麼密集。
我們將這個9個省的面向量要素圖層和剛剛生成的隨機點向量要素放在一起看,大家就看得更清楚了——每個省都是100
個點,但由於內蒙古地區面積大,因此這裡100
個點就看起來比較疏鬆;而寧夏(下圖中紅色區域)由於面積小,所以100
個點在這裡就顯得尤為密集。
接下來,第二個例子,我們按照下圖所示的引數設定執行該工具。
其中,我們選擇用向量圖層的屬性表欄位來作為約束每1個行政區(每1個要素集)中生成隨機點的個數。這裡我們就選擇用下圖所示的這個欄位作為輸入欄位。
得到的結果如下所示。可以看到,內蒙古的該欄位數值為15
,其所生成的點就是15
個;而寧夏該欄位的數值為64
,因此其所生成的點看起來依然是密密麻麻的。
清楚了以上規則,就可以更好地進行隨機點自動生成的操作了。