很多選擇。考慮一個多邊形。在大多數GIS程序的第一和最後點被重複以形成封閉,如在多邊形「一」以下,使用numpy的
import numpy as np
a = np.array([[0., 0.], [0., 1000.], [1000., 1000.], [1000., 0.], [ 0., 0.]])
a
array([[ 0., 0.],
[ 0., 1000.],
[ 1000., 1000.],
[ 1000., 0.],
[ 0., 0.]])
用於上述的D型細胞是一個簡單的float64。您可以通過如下分配適當的數據類型轉換爲結構化數組:
b = np.zeros((a.shape[0]), dtype=[('Xs', '<f8'), ('Ys', '<f8')])
b['Xs'] = a[:,0]; b['Ys'] = a[:,1]
b
array([(0.0, 0.0), (0.0, 1000.0), (1000.0, 1000.0), (1000.0, 0.0), (0.0, 0.0)],
dtype=[('Xs', '<f8'), ('Ys', '<f8')])
你可以走一步,產生「recarray」如果你喜歡使用object.property符號與你的對象。
c = b.view(np.recarray)
與均勻D型的標準陣列中,可以訪問使用切片的X值,其中添加通過柱名切片的能力的結構化陣列,最後,與可以使用對象的recarray。財產表示法。
args = [a[:,0], b['Xs'], c.Xs] # ---- get the X coordinates
print('{}\n{}\n{}'.format(*args))
[ 0. 0. 1000. 1000. 0.]
[ 0. 0. 1000. 1000. 0.]
[ 0. 0. 1000. 1000. 0.]
您可以在陣列中得到的唯一點的多邊形質心..
np.mean(a[:-1], axis=0)
array([ 500., 500.])
其實很容易從一個數組獲得獨特的分給予正確的形式
np.unique(b)
array([(0.0, 0.0), (0.0, 1000.0), (1000.0, 0.0), (1000.0, 1000.0)],
dtype=[('Xs', '<f8'), ('Ys', '<f8')])
您可能已經注意到,我在傳統的ndarrays之間來回切換,那些帶有命名字段和recarrays的。那是因爲你可以使用相同的數據,只要你喜歡,就可以用不同的方式查看它。
謝謝,我的直覺也告訴我一個元組聽起來很正確,但我對(a)不瞭解可以做的地圖/操作符類的東西,(b)正如你所說的,有點偏離了事實我不能做tuple_coord [0] = 12.但是我開始認爲這種不便類型 - 反映了座標的本質,因爲它們是相關的,如果一個操作可以改變它,它幾乎總是可能改變另一個。 – levraininjaneer