亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python2利用wxpython生成投影界面工具的圖文詳解

瀏覽:2日期:2022-06-21 17:30:32

本投影界面工具的功能:

準(zhǔn)備好.prj投影文件,將輸入文件夾內(nèi)的WGS84經(jīng)緯度坐標(biāo)shp文件,投影為平面文件,成果自動(dòng)命名為prj_***并新建在輸入文件夾同一路徑下。

下一步目標(biāo):

利用pyinstaller或其他打包庫(kù)生成exe文件,目前停滯在python2語(yǔ)法、arcpy打包出錯(cuò)相關(guān)問(wèn)題上。

參考文獻(xiàn):

《Using Py2exe with Arcpy- It can be done easily!》

《如何使用py2exe打包arcpy腳本?》

GUI界面示意圖

python2利用wxpython生成投影界面工具的圖文詳解

投影文件所在文件夾結(jié)構(gòu)如下:

python2利用wxpython生成投影界面工具的圖文詳解 python2利用wxpython生成投影界面工具的圖文詳解

GUI代碼

# -*- coding: utf-8 -*-# =============================================================================# 輸入文件——點(diǎn)選、復(fù)制、拖拽# 選擇待投影的文件夾、投影文件所在文件夾# ============================================================================='''Created on Thu Feb 4 16:12:00 2021@author: zhutong''' import wxfrom Def_Projection_common_E import createPrjFile,projection#創(chuàng)建應(yīng)用程序?qū)ο骯pp = wx.App() #自定義窗口類MyFrameclass MyFrame(wx.Frame):def __init__(self):super(MyFrame,self).__init__(None,title='通用經(jīng)緯度轉(zhuǎn)平面坐標(biāo)工具',pos=(600,500),size=(600,300))#Python2語(yǔ)法panel = wx.Panel(parent=self)#創(chuàng)建面板對(duì)象self.statictext_shp = wx.StaticText(parent=panel,label='待投影數(shù)據(jù)所在文件夾',pos=(60,30))#創(chuàng)建靜態(tài)文本對(duì)象self.statictext_shp = wx.StaticText(parent=panel,label='投影文件所在文件夾',pos=(60,80))#創(chuàng)建靜態(tài)文本對(duì)象 self.shp_text = wx.TextCtrl(parent=panel,value='',pos=(60,50),size=(350,25))#【文本控件1】open_shp_button = wx.Button(parent=panel, label=’打開(kāi)’,pos=(430,50))#【按鈕控件1】 self.prj_text = wx.TextCtrl(parent=panel,value='',pos=(60,100),size=(350,25))#【文本控件2】open_prj_button = wx.Button(parent=panel, label=’打開(kāi)’,pos=(430,100))#【按鈕控件2】projection_button = wx.Button(parent=panel, label=’平面投影’,pos=(150,150),size=(180,30))#【按鈕控件3】self.Bind(wx.EVT_BUTTON, self.onButton_opendir, open_shp_button)#綁定事件1——打開(kāi)文件夾self.Bind(wx.EVT_BUTTON, self.onButton_opendir, open_prj_button)#綁定事件2——打開(kāi)文件夾self.Bind(wx.EVT_BUTTON, self.onButton_projection, projection_button)#綁定事件3——投影 self.Bind(wx.EVT_TEXT, self.inputText, self.shp_text)#綁定事件4——直接在文本框輸入路徑 self.Bind(wx.EVT_TEXT, self.inputText, self.prj_text)#綁定事件4——直接在文本框輸入路徑 def onButton_opendir(self,control):#在事件源(控件)上產(chǎn)生特定事件(左鍵單擊)后的處理程序# Create open file dialogopenDirDialog = wx.DirDialog(parent=self, message='選擇一個(gè)文件夾', defaultPath='', style=wx.DD_DEFAULT_STYLE) openDirDialog.ShowModal()self.path = openDirDialog.GetPath()print(self.path)openDirDialog.Destroy()control.SetValue(self.path)#將路徑顯示在文本框1中 def inputText(self,control):self.path = control.GetValue() def onButton_projection(self,event):inWorkspace = self.shp_text.GetValue()prjdir = self.prj_text.GetValue()prjWorkspace = createPrjFile(inWorkspace,add_str='prj_')#新建投影成果根目錄prjWorkspaceprojection(inWorkspace,prjdir,prjWorkspace) if __name__ == '__main__': # #創(chuàng)建窗口對(duì)象 frm = MyFrame() # #顯示窗口 frm.Show() #進(jìn)入主事件循環(huán) app.MainLoop()

功能正確,但提示有冗余報(bào)錯(cuò)

python2利用wxpython生成投影界面工具的圖文詳解

平面投影代碼

# coding=utf-8# ---------------------------------------------------------------------------## 為文件夾內(nèi)所有城市的經(jīng)緯度shp生成對(duì)應(yīng)的平面shp# 注意文件夾內(nèi)所有路徑須為英文路徑,python2## ---------------------------------------------------------------------------#注意西安和香港import arcpyimport os,reimport time#os,arcpy文件覆蓋寫(xiě)arcpy.env.overwriteOutput = True #啟用覆蓋地理處理操作的輸出 inWorkspace = r’D:PythonCode_E3DCM01Data04BackPoiProcess02POIPOI_4’#待投影根目錄【運(yùn)行前確認(rèn)修改!】prjdir = r’D:PythonCode_E3DCM01DataprjFile’#投影文件所在路徑 ##判斷是否為shp文件def isShapefile(file_name): if '.shp' in file_name and '.xml' not in file_name:flag = True else:flag = False return flag ##建立對(duì)應(yīng)投影成果文件夾——絕對(duì)路徑中【葉子節(jié)點(diǎn)】文件夾前加'add_str'def createPrjFile(file_dir,add_str): dir_name,base_name = os.path.split(file_dir)#如果路徑末有//,則輸出路徑和為空文件名 #print dir_name #print base_name prj_file_dir = os.path.join(dir_name,add_str + base_name) if os.path.exists(prj_file_dir) == False:os.mkdir(prj_file_dir) print prj_file_dir + u' 文件夾新建成功!' return prj_file_dir #返回一個(gè)文件在投影文件列表中匹配的投影文件def prjMatch(shp_dir,prjdir):#shp_dir最好為絕對(duì)路徑,1文件夾或2文件名匹配投影文件均可行 #打印作為參數(shù)輸入的shp路徑 print 'nshp_dir:n' + shp_dir.lower() prjfile_ls = os.listdir(prjdir) #city_ls = [i.replace(suffix,'') for i in os.listdir(prjdir)]#檢查城市名是否有包含的情況,如香港xinggang包含西安xian for prjfile in prjfile_ls: suffix = '.prj'city = prjfile.replace(suffix,'')if city.lower() in shp_dir.lower(): print city #排除特殊城市西安xian【有錯(cuò)誤!】 if ('xian' in shp_dir.lower()) and ('xianggang' not in shp_dir.lower()):print 'xian branch prj'return os.path.join(prjdir,'xian.prj')elif 'xianggang' in shp_dir.lower():print 'xianggang branch prj'return os.path.join(prjdir,'xianggang.prj') else:#忽略shp_dir中城市名大小寫(xiě)prjfile_dir = os.path.join(prjdir,prjfile)print 'Ordinary branch:n' + prjfile_dir + 'n'return prjfile_dir #else: #print 'prj match fail!'#如果列表中的元素是字符串,判斷任一元素不被包含在其他元素中 num_shp = 0num_shp_ok = 0num_shp_fail = 0##針對(duì)文件夾內(nèi)shp,建立對(duì)應(yīng)所在投影文件夾、并投影#參數(shù):inWorkspace待投影成果根目錄,ini_root(=inWorkspace)新建投影文件夾替換字符用def projection(inWorkspace,prjdir,prjWorkspace):#遞歸函數(shù)的參數(shù)只能是變量參數(shù)global num_shp global num_shp_ok global num_shp_fail file_names = os.listdir(inWorkspace) for file_name in file_names:#文件或文件夾名,不是絕對(duì)路徑file_dir = os.path.join(inWorkspace,file_name)#待投影文件的絕對(duì)路徑 if os.path.isdir(file_dir):#判斷是否為文件夾 #建立對(duì)應(yīng)投影成果文件夾 prjSubfolder= file_dir.replace(inWorkspace,prjWorkspace) if os.path.exists(prjSubfolder) == False:os.mkdir(prjSubfolder) #inWorkspace = file_dir#將當(dāng)前文件夾當(dāng)作根目錄 projection(file_dir,prjdir,prjSubfolder)#遞歸 else: if isShapefile(file_name):print 'file_name:'+file_name#投影成果shp的絕對(duì)路徑prj_file_dir = file_dir.replace(inWorkspace,prjWorkspace)#print prj_file_dir#投影文件prj的絕對(duì)路徑prjfile_dir = prjMatch(file_dir,prjdir)#print prjfile_dir#如果投影成果不存在(6個(gè)文件),再投影try: arcpy.Project_management(file_dir, prj_file_dir, prjfile_dir) #prj_file_dir投影成果shp文件的路徑,prjfile_dir投影文件的路徑 num_shp_ok += 1 print file_dir + u'投影成功!'except: num_shp_fail += 1 print file_dir + u'投影失敗!' else:pass#print 'Srange ERROR in: '+file_dir print inWorkspace + u' 文件夾投影完成!'#注意不是局部變量inWorkspace print str(num_shp_ok) + u'shp文件投影成功!' print str(num_shp_ok) + u'shp文件投影失敗!' ## return pathsif __name__ == ’__main__’: time_start=time.time() prjWorkspace = createPrjFile(inWorkspace,add_str='prj_')#新建投影成果根目錄prjWorkspace projection(inWorkspace,prjdir,prjWorkspace) time_end=time.time() print u’投影耗時(shí):{:.2f}min’.format((time_end-time_start)/60)

附錄:在python2中調(diào)試wxpython,界面一閃而過(guò)的解決辦法:

python2利用wxpython生成投影界面工具的圖文詳解

python2利用wxpython生成投影界面工具的圖文詳解

到此這篇關(guān)于python2利用wxpython生成投影界面工具的圖文詳解的文章就介紹到這了,更多相關(guān)python投影界面工具內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品视频一区二区三区四区五区 | 毛片网站在线播放 | 青青青草网站免费视频在线观看 | 国产不卡视频在线 | 国产成人精品免费大全 | 精品国产免费一区二区三区 | 国产特黄特色一级特色大片 | 亚洲91| 成人亚洲精品一区 | 日韩在线视频免费 | 国产精品第一页第一页 | 一级毛片特黄久久免费看 | 日韩黄色网址 | 日本高清在线一区 | 久久se精品一区二区影院 | 视频在线国产 | 国产淫语对白在线视频 | 一区二区播放 | 亚洲精品一区二区 | 亚洲精品主播一区二区三区 | 综合久久综合 | 美女全黄网站免费观看 | 国产乱人乱精一区二区视频密 | 在线观看国产一区 | 仑乱高清在线一级播放 | 三级短视频 | 免费看一级欧美毛片视频 | 成人黄色一级毛片 | 午夜宅男宅女的免费网站 | 久久中文字幕制服丝袜美腿 | 全免费a级毛片免费毛视频 全免费a级毛片免费看 | 51精品视频在线播放观看 | 国产第一草草影院 | 久久久视频在线 | 日本高清www免费视频 | 美女黄网站人色视频免费国产 | 久久一本精品久久精品66 | 国产草比 | chinese调教在线播放 | 91视频最新网站 | 黄色一级一级 |