999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具設(shè)計(jì)

2021-04-20 08:36:28魏智東李美珍
北京測(cè)繪 2021年3期
關(guān)鍵詞:數(shù)據(jù)庫

魏智東 李美珍

(廣東省國(guó)土資源測(cè)繪院, 廣東 廣州 510500)

0 引言

隨著計(jì)算機(jī)水平的不斷發(fā)展,為適應(yīng)新時(shí)代對(duì)測(cè)繪事業(yè)提出的新需求,測(cè)繪地理信息行業(yè)發(fā)展由原來傳統(tǒng)測(cè)繪逐步邁向數(shù)字化測(cè)繪[1]。地理信息數(shù)據(jù)庫作為數(shù)字化測(cè)繪產(chǎn)品的重要載體,廣泛應(yīng)用在測(cè)繪地理信息產(chǎn)業(yè)中[2]。隨著測(cè)繪地理信息產(chǎn)業(yè)化的不斷發(fā)展,地理信息數(shù)據(jù)庫應(yīng)用也深入到各行各業(yè)中[3]。隨著需求的不斷增加,如何更好地管理地理信息數(shù)據(jù)庫是目前行業(yè)發(fā)展的重要難點(diǎn)。申傳明[4]等人對(duì)如何進(jìn)行空間數(shù)據(jù)庫建設(shè)進(jìn)行探討,提出了空間數(shù)據(jù)庫建庫的方法;劉翔宇,朱大明[5]針對(duì)相同數(shù)據(jù)結(jié)構(gòu)的不同地理數(shù)據(jù)庫,提出使用ArcGIS基于Python提出批量合并矢量數(shù)據(jù)的方法;曹斌[6]提出了基于ArcPy地理信息數(shù)據(jù)批處理辦法;屈鵬[7]基于python介紹了批量處理地理信息數(shù)據(jù)庫要素類的方法;溫樹棟[8]等人通過ArcGIS模型構(gòu)建器,創(chuàng)建了批量裁剪數(shù)據(jù)庫的方法,但是,針對(duì)地理信息數(shù)據(jù)庫不同的存儲(chǔ)格式、要素集與要素類并存等情況,并沒有展開深入的研究。在這樣的基礎(chǔ)下,本文以廣東省2019年基礎(chǔ)性地理國(guó)情監(jiān)測(cè)為例,結(jié)合生產(chǎn)過程中人員任務(wù)分配及任務(wù)區(qū)地理空間數(shù)據(jù)庫提取,基于ArcPy編寫了地理信息數(shù)據(jù)庫批量裁剪工具,用于節(jié)省人員提取自己任務(wù)分區(qū)地理信息數(shù)據(jù)庫,減少人員操作失誤,縮減任務(wù)分工時(shí)間,提高數(shù)據(jù)生產(chǎn)效率,保證了基礎(chǔ)性地理國(guó)情監(jiān)測(cè)順利開展。地理信息數(shù)據(jù)庫批量裁剪工具也可應(yīng)用于其他的項(xiàng)目,大大提高了地理信息數(shù)據(jù)庫批量裁剪工具的生命周期。

1 ArcPy簡(jiǎn)介

ArcPy是python的一個(gè)原生站點(diǎn)包,作為腳本語言嵌入ArcGIS[9],可讓我們基于ArcPy進(jìn)行地理空間數(shù)據(jù)處理分析,ArcPy共分為四大模塊,如圖1所示,其中:Arcpy.mapping自動(dòng)化模塊為用戶提供制圖等相關(guān)函數(shù);Arcpy.sa模塊為用戶提供地理空間分析等相關(guān)函數(shù);Arcpy.na模塊為用戶提供網(wǎng)絡(luò)分析相關(guān)函數(shù);Arcpy.da模塊為用戶提供數(shù)據(jù)訪問等相關(guān)函數(shù)[10],在本次ArcPy地理空間數(shù)據(jù)庫批量裁剪工具設(shè)計(jì)中,主要運(yùn)用了Arcpy.da相關(guān)函數(shù)功能。

圖1 ArcPy四大模塊

2 廣東省2019年基礎(chǔ)性地理國(guó)情監(jiān)測(cè)應(yīng)用實(shí)例

根據(jù)2019年全國(guó)基礎(chǔ)性地理國(guó)情監(jiān)測(cè)實(shí)施方案要求,基礎(chǔ)性地理國(guó)情監(jiān)測(cè)在 “多規(guī)合一”、城市規(guī)劃實(shí)施監(jiān)管、環(huán)境保護(hù)與治理、自然資源管理、空間用途管制等多個(gè)方面得到廣泛應(yīng)用,是我國(guó)生態(tài)文明制度建設(shè)中不可或缺的重要組成部分。根據(jù)《中華人民共和國(guó)國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展第十三個(gè)五年規(guī)劃綱要》《全國(guó)基礎(chǔ)測(cè)繪中長(zhǎng)期規(guī)劃綱要(2015—2030年)》(國(guó)函〔2015〕92號(hào))、《測(cè)繪地理信息事業(yè)“十三五”規(guī)劃》《廣東省基礎(chǔ)測(cè)繪“十三五”規(guī)劃(2016—2020年)》要求和自然資源部對(duì)于2019年基礎(chǔ)性地理國(guó)情監(jiān)測(cè)工作的安排,基礎(chǔ)性地理國(guó)情監(jiān)測(cè)將會(huì)逐年開展,由于基礎(chǔ)性地理國(guó)情監(jiān)測(cè)任務(wù)時(shí)間緊,任務(wù)重,投入人員較多,任務(wù)分工存在一定的難度。為了更好地解決項(xiàng)目前期人員任務(wù)分工問題,基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具可以直接統(tǒng)籌任務(wù)分發(fā),避免每個(gè)作業(yè)人員由于自身水平等原因耗時(shí)耗力,達(dá)到節(jié)省時(shí)間、提高作業(yè)效率的目的。基礎(chǔ)性地理國(guó)情監(jiān)測(cè)作業(yè)圖見圖2所示。

圖2 基礎(chǔ)性地理國(guó)情監(jiān)測(cè)作業(yè)圖

作業(yè)人員根據(jù)自己的任務(wù)范圍進(jìn)行基礎(chǔ)性地理國(guó)情監(jiān)測(cè)數(shù)據(jù)生產(chǎn),首先需要從上一年度基礎(chǔ)性地理國(guó)情成果庫中,提取自己任務(wù)范圍內(nèi)地理國(guó)情矢量數(shù)據(jù),完成第一批數(shù)據(jù)后,才能進(jìn)行下一批數(shù)據(jù)的生產(chǎn)。從生產(chǎn)環(huán)節(jié)中可以得知:每一位作業(yè)人員需要多次從上一年度基礎(chǔ)性地理國(guó)情成果庫提取自己的作業(yè)數(shù)據(jù)。其中,由于上一年度基礎(chǔ)性地理國(guó)情成果庫成果較多,圖層要素達(dá)40多個(gè),若是按照傳統(tǒng)的方式由作業(yè)人員一一提取,耗時(shí)較長(zhǎng),人工操作錯(cuò)誤率較高。基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具可直接按任務(wù)分工將上一年度基礎(chǔ)性地理國(guó)情成果庫分割成每個(gè)作業(yè)人員的作業(yè)數(shù)據(jù)庫,大大地減少任務(wù)分工時(shí)間,提高分工準(zhǔn)確率與基礎(chǔ)性地理國(guó)情監(jiān)測(cè)生產(chǎn)效率。

2.1 基礎(chǔ)性地理國(guó)情監(jiān)測(cè)地理信息數(shù)據(jù)庫

基礎(chǔ)性地理國(guó)情監(jiān)測(cè)地理信息數(shù)據(jù)庫采用文件地理信息數(shù)據(jù)庫的存儲(chǔ)方式進(jìn)行存儲(chǔ),按數(shù)據(jù)集(feature dataset)和要素層(feature class)組織,要素層要素只采用簡(jiǎn)單點(diǎn)、線、面表達(dá),共6個(gè)數(shù)據(jù)集,分別存儲(chǔ)在不同的文件地理信息數(shù)據(jù)庫中,具體存儲(chǔ)情況如表1、表2所示,若是按照現(xiàn)有的裁剪工具,需要對(duì)每一個(gè)要素集內(nèi)的每一個(gè)要素圖層進(jìn)行一一裁剪。這樣操作數(shù)據(jù)庫,容易出現(xiàn)因人員操作失誤而導(dǎo)致數(shù)據(jù)裁剪出現(xiàn)錯(cuò)誤,并且耗時(shí)耗力,本文設(shè)計(jì)的ArcPy地理空間數(shù)據(jù)庫批量裁剪工具可以很好的避免由于人工干預(yù)而造成的錯(cuò)誤,并且效率比一一裁剪數(shù)據(jù)要高。

表1 基礎(chǔ)性地理國(guó)情監(jiān)測(cè)分區(qū)國(guó)情數(shù)據(jù)庫

表2 基礎(chǔ)性地理國(guó)情監(jiān)測(cè)不分區(qū)國(guó)情數(shù)據(jù)庫

2.2 基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具原理

本次設(shè)計(jì)以PyCharm作為python的編譯器,通過PyCharm使用ArcGIS本身安裝的python2.7版本進(jìn)行程序編寫,通過使用ArcPy模板,進(jìn)行基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具設(shè)計(jì)編寫,具體實(shí)現(xiàn)流程如圖3所示。

圖3 基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具原理

2.2.1 基于ArcPy實(shí)現(xiàn)地理空間數(shù)據(jù)庫批量裁剪工具主要代碼

(1) python識(shí)別中文路徑

由于數(shù)據(jù)存儲(chǔ)在中文路徑,因此需要在python加入代碼用于識(shí)別中文字符,便于程序識(shí)別電腦中文路徑,具體實(shí)現(xiàn)代碼如下:

# coding:utf-8

import arcpy

import os

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

(2)基于ArcPy實(shí)現(xiàn)地理空間數(shù)據(jù)庫批量裁剪工具代碼

基于ArcPy實(shí)現(xiàn)地理空間數(shù)據(jù)庫批量裁剪工具使用思路如下:①選擇被裁剪數(shù)據(jù)庫,判斷數(shù)據(jù)庫類型為“文件地理數(shù)據(jù)庫(Geodatabase,GDB)”或“個(gè)人地理數(shù)據(jù)庫(Microsoft Database,MDB)”格式,為后期創(chuàng)建成果數(shù)據(jù)庫做準(zhǔn)備;②判斷被裁剪數(shù)據(jù)庫是否存在要素?cái)?shù)據(jù)集,若存在則遍歷數(shù)據(jù)庫內(nèi)所有的要素?cái)?shù)據(jù)集及其要素類,若不存在,則遍歷被裁剪數(shù)據(jù)庫內(nèi)的要素類;③選擇裁剪要素,并根據(jù)裁剪要素選擇將要用于創(chuàng)建成果數(shù)據(jù)庫命名的字段,遍歷字段獲取字段唯一值;④根據(jù)裁剪要素字段名創(chuàng)建成果數(shù)據(jù)庫,并選擇裁剪要素,對(duì)被裁剪數(shù)據(jù)庫進(jìn)行裁剪,保存在成果數(shù)據(jù)庫中。核心代碼如下:

1)工具箱初始參數(shù)

gdbPath=arcpy.GetParameterAsText(0) #獲取裁剪的數(shù)據(jù)庫路徑

clp_fea=arcpy.GetParameterAsText(1) #選擇裁剪要素圖層

fieldname=arcpy.GetParameterAsText(2) #選擇用于批量裁剪的字段

savepath=arcpy.GetParameterAsText(3) #選擇裁剪數(shù)據(jù)庫保存文件夾

dec=arcpy.Describe(clp_fea) #獲取裁剪要素的詳細(xì)信息

decbana=dec.baseName # 獲取裁剪要素的名稱

arcpy.env.workspace=gdbPath #設(shè)置工作空間

2)根據(jù)裁剪要素及相關(guān)字段獲取屬性唯一值

fielddatalist=[] #列表用于保存遍歷選擇要素某一字段值

#遍歷要素字段屬性唯一值

with arcpy.da.SearchCursor(clp_fea, fieldname) as cursor: # 通過游標(biāo)獲取唯一值

for row in cursor:

if row[0] not in fielddatalist:

fielddatalist.append(row[0])

3)遍歷數(shù)據(jù)庫所有的要素集及要素類

fcf=[] #列表用于保存數(shù)據(jù)庫的要素類

fcs=[] #列表用于保存數(shù)據(jù)庫要素?cái)?shù)據(jù)集

fcs_fc=[] #列表用于保存數(shù)據(jù)庫要素?cái)?shù)據(jù)集及要素類的路徑

fds_fc=[] #列表用于保存數(shù)據(jù)庫要素?cái)?shù)據(jù)集及要素類

fcs_in_fc=[] #列表用于保存數(shù)據(jù)庫要素類路徑

sr='' #初始化,用于保存數(shù)據(jù)庫坐標(biāo)信息

for fds in arcpy.ListDatasets('','')+['']: # 遍歷gdbPath數(shù)據(jù)庫所有要素集及要素類

if not fds=='': #如果數(shù)據(jù)庫存在要素集

fcs.append(fds)

for fc in arcpy.ListFeatureClasses('', '', fds):

fcclip=os.path.join(arcpy.env.workspace,fds,fc)

fcs_fc.append(fcclip)

fdsfc=fds+ ""+ fc

采用SPSS20.0軟件對(duì)本研究數(shù)據(jù)進(jìn)行處理,計(jì)量資料以t檢驗(yàn),(±s)表示,計(jì)數(shù)資料以x2檢驗(yàn),差異有統(tǒng)計(jì)學(xué)意義為P<0.05。

fds_fc.append(fdsfc)

desc=arcpy.Describe(fcclip)

sr=desc.SpatialReference

else: #如果數(shù)據(jù)庫不存在要素集

for fc in arcpy.ListFeatureClasses():

in_fc=arcpy.env.workspace+ ""+ fc

fcf.append(fc)

4)根據(jù)裁剪要素圖層裁剪數(shù)據(jù)庫

i1=0

lengi1=len(fielddatalist)

while i1

GDB=arcpy.CreateFileGDB_management(savepath, fielddatalist[i1]) #創(chuàng)建數(shù)據(jù)庫

i=0

lengi=len(fcs)

while i

arcpy.CreateFeatureDataset_management(GDB, fcs[i], sr) #創(chuàng)建數(shù)據(jù)庫

i+=1

clipfc=arcpy.SelectLayerByAttribute_management(decbana,"NEW_SELECTION", "%s='%s'"% (fieldname, fielddatalist[i1])) #根據(jù)遍歷列表fielddatalist讀取裁剪要素值

if not fcs=='': #數(shù)據(jù)庫要素集裁剪處理

l=0

lengl=len(fds_fc)

while l

savegdbfc=savepath+ ""+ fielddatalist[i1]+".gdb"+ ""+ fds_fc[l]

arcpy.Clip_analysis(fcs_fc[l], clipfc, savegdbfc) #調(diào)用裁剪工具對(duì)數(shù)據(jù)庫裁剪

l+=1

if not fcf=='': #數(shù)據(jù)庫要素圖層裁剪處理

j=0

lengj=len(fcf) #遍歷要素集所有的圖層

while j

savefcf=savepath+ ""+ fielddatalist[i1]+".gdb"+ ""+ fcf[j]

arcpy.Clip_analysis(fcs_in_fc[j], clipfc, savefcf) #調(diào)用裁剪工具對(duì)數(shù)據(jù)庫裁剪

j+=1

i1+=1

2.2.2 基于ArcPy實(shí)現(xiàn)地理空間數(shù)據(jù)庫批量裁剪工具注意事項(xiàng)

(1)被裁剪數(shù)據(jù)庫必須為文件地理信息數(shù)據(jù)庫或個(gè)人地理信息數(shù)據(jù)庫;

(2)裁剪要素必須為面要素,且坐標(biāo)系與被裁剪數(shù)據(jù)庫坐標(biāo)系一致,不然會(huì)由于坐標(biāo)系不一致而導(dǎo)致程序無法正確運(yùn)行;

(3)裁剪要素所選擇的字段不能出現(xiàn)文件命名格式不允許的情況出現(xiàn),例如:“*”或“.”等。

2.2.3 地理空間數(shù)據(jù)庫批量裁剪工具運(yùn)行情況

工具通過ArcMap添加工具箱的方式加入即可,打開工具,選擇被裁剪數(shù)據(jù)庫,裁剪要素,選擇字段,保存文件夾位置,然后運(yùn)行程序,工具運(yùn)行完成,用時(shí)1 min 53 s,工具執(zhí)行完成后,結(jié)果保存在指定的目錄,通過這樣的工具,既可減少由于作業(yè)人員操作誤差而導(dǎo)致的失誤,亦可提高任務(wù)分工效率。

3 結(jié)束語

基礎(chǔ)性地理國(guó)情監(jiān)測(cè)項(xiàng)目是一項(xiàng)關(guān)乎國(guó)家民生的工作,同時(shí)也是一項(xiàng)時(shí)間緊、任務(wù)重、長(zhǎng)期性的工作,如何在生產(chǎn)項(xiàng)目過程中,提高生產(chǎn)效率與降低錯(cuò)誤率,是基礎(chǔ)性地理國(guó)情監(jiān)測(cè)項(xiàng)目生產(chǎn)的重中之重,以廣東省基礎(chǔ)性地理國(guó)情監(jiān)測(cè)項(xiàng)目為例,每年投入人數(shù)不少于200人,在人員眾多、工作量繁重的情況下,使用基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具將人員解放出來,由專門的工作人員進(jìn)行任務(wù)分配與溝通,采用1對(duì)多的工作模式,大大地提高了工作效率。總之,本文研究總結(jié)如下:

(1)通過基于ArcPy地理空間數(shù)據(jù)庫批量裁剪工具可以將繁重的地理信息數(shù)據(jù)庫按區(qū)域提取工作交由計(jì)算機(jī)自動(dòng)完成,減少人員干預(yù),提高裁剪正確性,工具不僅可以在基礎(chǔ)性地理國(guó)情監(jiān)測(cè)項(xiàng)目中使用,也可應(yīng)用到其他測(cè)繪地理信息項(xiàng)目。

(2)本文所設(shè)計(jì)工具在使用過程中,需在ArcMap工程文件的環(huán)境下方可運(yùn)行,并且被裁剪數(shù)據(jù)庫與裁剪要素?cái)?shù)據(jù)兩者坐標(biāo)系統(tǒng)必須相同,不然無法得出正確的結(jié)果,未來將工具封裝為單獨(dú)運(yùn)行的程序,做到不依賴于ArcMap工程文件運(yùn)行。

(3)本文所設(shè)計(jì)的工具,僅對(duì)數(shù)據(jù)存儲(chǔ)為個(gè)人地理信息數(shù)據(jù)庫及文件地理信息數(shù)據(jù)庫格式的矢量地理信息數(shù)據(jù)庫有用,對(duì)其他數(shù)據(jù)存儲(chǔ)格式的矢量數(shù)據(jù)以及柵格數(shù)據(jù)尚未完善,后期將嘗試加入自動(dòng)矢量數(shù)據(jù)與柵格數(shù)據(jù),根據(jù)輸入數(shù)據(jù)類型,實(shí)現(xiàn)自動(dòng)化處理流程。

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 91黄视频在线观看| 欧美精品亚洲精品日韩专| 精品国产成人国产在线| 国产高清无码麻豆精品| 亚洲天堂色色人体| 呦女精品网站| 国产一级毛片yw| 成年女人a毛片免费视频| 国产精品久久久久婷婷五月| 2020久久国产综合精品swag| 欧美国产中文| 亚洲欧美日韩成人在线| 亚洲色偷偷偷鲁综合| 日本在线亚洲| 国产麻豆福利av在线播放| 91国语视频| 久久国产精品77777| 91欧美亚洲国产五月天| 亚洲一区二区约美女探花| 国产精品黄色片| 无码区日韩专区免费系列| 老司机久久99久久精品播放| 91无码人妻精品一区二区蜜桃| 999精品色在线观看| 97国产在线视频| 色婷婷久久| 日韩区欧美国产区在线观看| 亚洲综合精品第一页| 欧美在线观看不卡| 精品国产中文一级毛片在线看| 国产成人精品无码一区二| 国产精品自在拍首页视频8| 精品国产Av电影无码久久久| 日韩中文欧美| 国产福利拍拍拍| 无码精品国产dvd在线观看9久| 国产农村1级毛片| 91国内外精品自在线播放| 亚洲aaa视频| 91久久偷偷做嫩草影院| 久久国产成人精品国产成人亚洲| 欧美亚洲国产精品第一页| 亚洲美女一级毛片| av在线无码浏览| 婷婷亚洲视频| 中文字幕色站| 伊人久久大线影院首页| 9cao视频精品| 91日本在线观看亚洲精品| 国产综合精品一区二区| 91亚洲免费| 99re视频在线| 免费一级无码在线网站| 国产极品美女在线播放| 好紧太爽了视频免费无码| 97精品国产高清久久久久蜜芽| 国产精品思思热在线| 久久一日本道色综合久久| 精品亚洲国产成人AV| 99草精品视频| 色综合激情网| 欧美国产综合色视频| 91精品啪在线观看国产| 欧美黄网在线| 亚洲永久视频| 国产国产人成免费视频77777 | 热热久久狠狠偷偷色男同| 高清欧美性猛交XXXX黑人猛交| 久久久国产精品无码专区| 国产经典在线观看一区| 亚洲天堂2014| 精品夜恋影院亚洲欧洲| 午夜精品影院| 老色鬼久久亚洲AV综合| 久久精品女人天堂aaa| 国内精品九九久久久精品| 国产精品污视频| 国产成人综合亚洲欧美在| 午夜视频免费试看| 国产九九精品视频| 久久精品人人做人人综合试看| 日韩天堂视频|