首頁 >後端開發 >Python教學 >python gdal教程之:用ogr读写矢量数据

python gdal教程之:用ogr读写矢量数据

黄舟
黄舟原創
2016-12-24 15:59:553565瀏覽

為什麼要用open source?

優點

1.       免費,適合個人與小型公司

2.       強大的發展工具,且尋找使用平台,   拉風!

缺點

1.       沒有內嵌式地理處理器

2.       使用的人少

向量

2.       GDAL地理空間資料抽象化庫:

a)         讀寫柵格資料

b)     python呼叫

相關模組

1.       Numeric:高速的陣列處理,對柵格資料特別重要

2.       NumPy:新一代的Numeric

3.      

或:

from osgeo import ogr

萬能的方法是:

try:

    from osgeo import ogr

資料驅動,也就是初始化一個對象,讓它「知道」某種資料結構。

import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')

資料驅動driver的open()方法傳回一個資料來源物件

open(, )其中為其中0update>是唯讀,為1是可寫

例如:

from osgeo import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')

filename = 'C:/Users/gongs/Bookage /GDAL python/test/ospy_data1/sites.shp'

dataSource = driver.Open(filename,0)

if dataSource is None:

    print 'c not sys'c1 % 'done!'

注意filename一定要寫絕對路徑!

因為一定要用絕對路徑,為了簡化程式碼,常常會使用到os.chdir()

讀取資料層

layer = dataSource.GetLayer(0)

一般ESRI的shapefile都是填0的,如果不填的話預設也是0.

再看看這個資料層裡面有幾個點呢?

n = layer.GetFeatureCount()

print 'feature count:', n

讀出上下左右邊界

extent = layer.GetExtent()

:

print

extent = layer.GetExtent()

:

print

extent, extent'sed ', extent[0], extent[3]

print 'lr:', extent[1], extent[2]

讀取某一要素feature(總算切入正題了),這裡讀取的是一個點

feat = layer.GetFeature(41)

fid = feat.GetField('id')

print fid

feat = layer.GetFeature(0)

print fid

feat = layer.GetFeature(0)

; be a different id

print fid

另外還有依序讀取feature,循環遍歷所有的feature

feat = layer.GetNextFeature()  #讀下一個

🠎while feat:a. ()

later.ResetReading()  #復位

提取feature的幾何形狀

geom = feat.GetGeometryRef()

geom.GetX()

ge

feature.Destroy()

關閉資料來源,相當於檔案系統操作中的關閉檔案

dataSource.Destroy()

讀完了再說怎麼寫

)

但是這個檔案不能已經存在了,否則會出錯

建立新的layer

dataSource.CreateLayer(,CreateLayer(, geom_type=, [srs])🜎範例:

ds2 = driver.CreateDataSource('test.shp')

layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)

要刪除一個shtest) 檔案shp')

要新增一個字段,只能在layer裡面加,而且還不能有資料

新增的字段如果是字串,還要設定寬度

fieldDefn = ogr.FieldDefn('id', ogr.OFTString)

fieldDefn.SetWidth(4)

layer.CreateField(fieldDefn)

加入一個新的feature,首先得完成上一步,把欄位都加入齊了

然後從layer中讀取的feature類型,並建立feature

featureDefn = layer.GetLayerDefn()

feature = ogr.Feature(featureDefn)

設定幾何形狀

feature.SetGeometry() feature.SetField('id', 23)

將feature寫入layer

layer.CreateFeature(feature)

 以上就是python gdal教學之:用ogr讀寫向量資料的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn