日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDAL+OGR学习

發(fā)布時間:2023/12/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDAL+OGR学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GDAL+OGR學習

每次寫代碼用Arcpy就得切回python2,很麻煩,故來學習一下gdal+ogr。

gdal庫安裝

直接cmd寫pip intsall gdal會報錯

打開該鏈接gdal庫下載,根據(jù)python版本下載對應版本的包,我的版本是python3.9+64位,按需下載。


將wheel文件復制到相應文件夾再次運行pip install 安裝成功。

使用OGR篩選數(shù)據(jù)

分別是高德POI表type結(jié)構(gòu)和POIshp type的結(jié)構(gòu)

將利用表格內(nèi)含有的POI類型里對shp里的的POI類型進行篩選

#-*- coding:utf-8 -*- #2022.2.10 ''' 將表格里統(tǒng)計的poi進行篩選,然后選出指定區(qū)域內(nèi)的poi類別 ''' import time import pandas as pd from osgeo import ogr import osdef identify(poistr,selectpoilist):if poistr.split(';')[2] in selectpoilist:return 1else:return 0def selectpoi(poitype,lyr):n = lyr.GetFeatureCount()print("共",n,"條poi數(shù)據(jù)")#添加字段defn = lyr.GetLayerDefn()fieldIndex = defn.GetFieldIndex('selectid')if fieldIndex < 0:# 添加字段lyr.CreateField( # 為圖層添加一個selectid字段ogr.FieldDefn('selectid', ogr.OFTInteger,SetPrecision(3)))fieldIndex2 = defn.GetFieldIndex('selectid')if fieldIndex2 > 0:print("字段創(chuàng)建成功:", fieldIndex)m = 0starttime = time.time()for feat in lyr:name = feat.GetField('name')type = feat.GetField('type')#計算r值判斷是否選取,>0則選取,是0則不選if (type.count("|")>0):r=0for i in range(0,type.count("|")):r =r+identify(type.split('|')[i],poitype)else:r=identify(type,poitype)if r>0:feat.SetField('selectid', 1) # 設置字段的值else:feat.SetField('selectid', 0) # 設置字段的值lyr.SetFeature(feat)m=m+1print("正在運行第",m,"條數(shù)據(jù)",feat.GetField('selectid'),name,type)if m==n:break;endtime = time.time()print("運行時間共計",endtime-starttime)if __name__=="__main__":#讀取POI類型表格datapath = r'E:\WHDATA\region_data\jianghan_district\database'poifilename = "./細類別POI.xlsx"poitype = pd.read_excel(poifilename)type = poitype['小類'].to_list()#讀取江漢區(qū)POIshp數(shù)據(jù)in_poishp = os.path.join(datapath,"poi.shp")outpath = os.path.join(datapath,"poi_select.shp")ds = ogr.Open(in_poishp,1)#1表示可寫,0表示只讀lyr = ds.GetLayer()selectpoi(type,lyr)

總結(jié)

以上是生活随笔為你收集整理的GDAL+OGR学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。