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

您的位置:首頁技術文章
文章詳情頁

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

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

本投影界面工具的功能:

準備好.prj投影文件,將輸入文件夾內的WGS84經緯度坐標shp文件,投影為平面文件,成果自動命名為prj_***并新建在輸入文件夾同一路徑下。

下一步目標:

利用pyinstaller或其他打包庫生成exe文件,目前停滯在python2語法、arcpy打包出錯相關問題上。

參考文獻:

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

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

GUI界面示意圖

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

投影文件所在文件夾結構如下:

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

GUI代碼

# -*- coding: utf-8 -*-# =============================================================================# 輸入文件——點選、復制、拖拽# 選擇待投影的文件夾、投影文件所在文件夾# ============================================================================='''Created on Thu Feb 4 16:12:00 2021@author: zhutong''' import wxfrom Def_Projection_common_E import createPrjFile,projection#創建應用程序對象app = wx.App() #自定義窗口類MyFrameclass MyFrame(wx.Frame):def __init__(self):super(MyFrame,self).__init__(None,title='通用經緯度轉平面坐標工具',pos=(600,500),size=(600,300))#Python2語法panel = wx.Panel(parent=self)#創建面板對象self.statictext_shp = wx.StaticText(parent=panel,label='待投影數據所在文件夾',pos=(60,30))#創建靜態文本對象self.statictext_shp = wx.StaticText(parent=panel,label='投影文件所在文件夾',pos=(60,80))#創建靜態文本對象 self.shp_text = wx.TextCtrl(parent=panel,value='',pos=(60,50),size=(350,25))#【文本控件1】open_shp_button = wx.Button(parent=panel, label=’打開’,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=’打開’,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——打開文件夾self.Bind(wx.EVT_BUTTON, self.onButton_opendir, open_prj_button)#綁定事件2——打開文件夾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):#在事件源(控件)上產生特定事件(左鍵單擊)后的處理程序# Create open file dialogopenDirDialog = wx.DirDialog(parent=self, message='選擇一個文件夾', 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__': # #創建窗口對象 frm = MyFrame() # #顯示窗口 frm.Show() #進入主事件循環 app.MainLoop()

功能正確,但提示有冗余報錯

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

平面投影代碼

# coding=utf-8# ---------------------------------------------------------------------------## 為文件夾內所有城市的經緯度shp生成對應的平面shp# 注意文件夾內所有路徑須為英文路徑,python2## ---------------------------------------------------------------------------#注意西安和香港import arcpyimport os,reimport time#os,arcpy文件覆蓋寫arcpy.env.overwriteOutput = True #啟用覆蓋地理處理操作的輸出 inWorkspace = r’D:PythonCode_E3DCM01Data04BackPoiProcess02POIPOI_4’#待投影根目錄【運行前確認修改!】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 ##建立對應投影成果文件夾——絕對路徑中【葉子節點】文件夾前加'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 #返回一個文件在投影文件列表中匹配的投影文件def prjMatch(shp_dir,prjdir):#shp_dir最好為絕對路徑,1文件夾或2文件名匹配投影文件均可行 #打印作為參數輸入的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【有錯誤!】 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中城市名大小寫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##針對文件夾內shp,建立對應所在投影文件夾、并投影#參數:inWorkspace待投影成果根目錄,ini_root(=inWorkspace)新建投影文件夾替換字符用def projection(inWorkspace,prjdir,prjWorkspace):#遞歸函數的參數只能是變量參數global num_shp global num_shp_ok global num_shp_fail file_names = os.listdir(inWorkspace) for file_name in file_names:#文件或文件夾名,不是絕對路徑file_dir = os.path.join(inWorkspace,file_name)#待投影文件的絕對路徑 if os.path.isdir(file_dir):#判斷是否為文件夾 #建立對應投影成果文件夾 prjSubfolder= file_dir.replace(inWorkspace,prjWorkspace) if os.path.exists(prjSubfolder) == False:os.mkdir(prjSubfolder) #inWorkspace = file_dir#將當前文件夾當作根目錄 projection(file_dir,prjdir,prjSubfolder)#遞歸 else: if isShapefile(file_name):print 'file_name:'+file_name#投影成果shp的絕對路徑prj_file_dir = file_dir.replace(inWorkspace,prjWorkspace)#print prj_file_dir#投影文件prj的絕對路徑prjfile_dir = prjMatch(file_dir,prjdir)#print prjfile_dir#如果投影成果不存在(6個文件),再投影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’投影耗時:{:.2f}min’.format((time_end-time_start)/60)

附錄:在python2中調試wxpython,界面一閃而過的解決辦法:

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

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

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 6080yy午夜不卡一二三区久久 | 在线免费观看黄色网址 | 国产人做人爱视频精品 | 欧美高清免费精品国产自 | 国产高清www免费视频 | 精品国产午夜久久久久九九 | 深夜影院一级毛片 | 亚洲视频五区 | 国产日产久久高清欧美一区 | 91精选| 亚洲一区二区三区高清不卡 | 国产毛片一级国语版 | 久久成人黄色 | 国产一级做a爱片久久毛片a | 国产精品亚洲一区二区三区正片 | 黄视频日本 | 国产美女在线一区二区三区 | 欧美一级视频在线观看 | 亚洲午夜精品aaa级久久久久 | 免费国产在线观看不卡 | 亚洲精品国产综合久久一线 | 你懂的亚洲 | 国产制服在线 | 一级做a爰片性色毛片2021 | 日本不卡高清中文字幕免费 | 9i9精品国产免费久久 | 欧美日韩一区二区在线观看视频 | 国产精品成久久久久三级 | 尤物tv| 国产一级黄色大片 | 久久精品区 | 国产精品高清久久久久久久 | 一级毛片aaaaaa视频免费看 | 91免费资源网站入口 | 亚洲成人黄色网址 | 亚洲精品专区一区二区三区 | 国产精品男人的天堂 | 亚洲国产黄色 | 国产精品一区不卡 | 青青青国产依人精品视频 | 国产一区二区免费在线 |