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ù)庫
主站蜘蛛池模板: 九色视频在线免费观看| AV网站中文| 超碰免费91| 一边摸一边做爽的视频17国产| 精品国产Av电影无码久久久| 日韩欧美国产区| 中文字幕在线一区二区在线| 国产又黄又硬又粗| 日本欧美一二三区色视频| 日韩国产精品无码一区二区三区 | 99在线视频网站| 国产成人欧美| 在线播放精品一区二区啪视频| 亚洲人成电影在线播放| 国产剧情伊人| 国产人前露出系列视频| 久久久久免费精品国产| 美女被操91视频| 欧美亚洲激情| 激情亚洲天堂| 欧美日韩免费在线视频| 国产高清在线精品一区二区三区 | 真人高潮娇喘嗯啊在线观看| 免费看美女自慰的网站| 欧美激情成人网| 中国毛片网| 国产精品99在线观看| 欧美一区二区三区香蕉视| 久久婷婷六月| 国产自在自线午夜精品视频| 伊人网址在线| 一区二区三区国产精品视频| 国产网站免费看| 九九视频免费在线观看| 欧洲av毛片| 高h视频在线| 欧美区国产区| 欧美 国产 人人视频| 欧美不卡视频一区发布| 一本一道波多野结衣av黑人在线| 最新国产网站| 天天综合色天天综合网| 亚洲精品波多野结衣| 精品国产成人国产在线| 人妻无码中文字幕第一区| 久久久亚洲色| 久久9966精品国产免费| a毛片在线| 日韩午夜福利在线观看| 国产 在线视频无码| 亚洲VA中文字幕| 国产精品青青| 国产精品男人的天堂| 狠狠色噜噜狠狠狠狠奇米777 | 亚洲综合色婷婷| h网址在线观看| 中文字幕自拍偷拍| 国国产a国产片免费麻豆| 久久久精品久久久久三级| 国产精品无码影视久久久久久久| 欧美日本二区| 国产美女精品在线| 国产特级毛片| 中文字幕无码av专区久久| 一区二区影院| 亚洲成A人V欧美综合天堂| 天堂va亚洲va欧美va国产| 国产在线日本| 一级毛片网| 精品视频一区在线观看| 国产激情无码一区二区免费| 四虎国产精品永久在线网址| 手机成人午夜在线视频| 黄色三级毛片网站| 亚洲天堂啪啪| 精品亚洲欧美中文字幕在线看| 精品三级网站| 欧美成人日韩| 高清国产在线| 亚洲成人精品| 精品无码专区亚洲| 成人看片欧美一区二区|