python OGR库读取矢量文件——OGR shp操作
生活随笔
收集整理的這篇文章主要介紹了
python OGR库读取矢量文件——OGR shp操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
from osgeo import ogr# **注釋** layer: 圖層(整體)# feature:圖層中的要素(整體下的每個圖層)## 一
```python# 輸入shp文件路徑
inshp = r"E:\out\CPP\20180101\30\CPP_20180101_30_610000.shp"
# 打開輸入shp文件
driver = ogr.GetDriverByName('ESRI Shapefile')
dataSource = driver.Open(inshp, 1) # 等價于 dataSource = ogr.Open(inshp, 1)
# 輸出shp文件路徑
outshp = r"E:\out\CPP\20180101\30\CPP_20180101_30_610000_out.shp"
```
## 二
```python#### 學會使用layer.GetFeature()【見法一】與layer.GetNextFeature()【見法二】 實現相同的功能##### 法一:遍歷layer下的要素
layer = dataSource.GetLayer()
Count = layer.GetFeatureCount()
for i in range(Count):feature = layer.GetFeature(i)[# 其它操作pass# 其它操作]# 遍歷每個要素下的字段for j in range(feature.GetFieldCount()):print(feature.GetField(j))[# 其它操作pass# 其它操作]# 法二:與法一等價
feature = layer.GetNextFeature()
while feature:# 遍歷每個要素下的字段for j in range(feature.GetFieldCount()):print(feature.GetField(j))[# 其它操作pass# 其它操作]feature = layer.GetNextFeature()
```## 三 ``# 空間參考信息三種獲取方式“```python
(1) # *** layer:shp整體圖層
prosrs = layer.GetSpatialRef()
(2)
feature = layer.GetFeature(i) # 在循環內
geom = feature.GetGeometryRef()
prosrs = geom.GetSpatialReference()
(3)
prosrs = osr.SpatialReference()
prosrs.ImportFromEPSG(4326)
```## 四```python
### 創建輸出文件
if os.path.exist(outshp):driver.DeleDataSource(out_shp)
outds = driver.CreateDataSource(out_shp)
outlayer = outds.CreateLayer(out_shp[:-4], srs=prosrs, geom_type = ogr.wkbPolygon)
# 創建出輸要素
outfeature = ogr.Feature(outlayer.GetLayerDefn())
# 創建輸出字段
field_l = ogr.FieldDefn("GRIDCODE", ogr.OFTReal)
outlayer.CreateField(field_l)
```
總結
以上是生活随笔為你收集整理的python OGR库读取矢量文件——OGR shp操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ogr2ogr矢量数据要素格式转换
- 下一篇: HDU 4833 Best Financ