最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年04月21日 10:34:27   作者:toto+  
這篇文章主要介紹了python2利用wxpython生成投影界面工具的圖文詳解,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本投影界面工具的功能:

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

下一步目標:

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

參考文獻:

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

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

GUI界面示意圖

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

                 

GUI代碼

# -*- coding: utf-8 -*-
# =============================================================================
#                   輸入文件——點選、復制、拖拽
#                   選擇待投影的文件夾、投影文件所在文件夾
# =============================================================================
"""
Created on Thu Feb  4 16:12:00 2021
@author: zhutong
"""
 
import wx
from Def_Projection_common_E import createPrjFile,projection
#創(chuàng)建應用程序?qū)ο?
app = wx.App()
 
 
#自定義窗口類MyFrame
class MyFrame(wx.Frame):
    
    def __init__(self):
        
        super(MyFrame,self).__init__(None,title="通用經(jīng)緯度轉平面坐標工具",pos=(600,500),size=(600,300))#Python2語法
        
        panel = wx.Panel(parent=self)#創(chuàng)建面板對象
        
        self.statictext_shp = wx.StaticText(parent=panel,label="待投影數(shù)據(jù)所在文件夾",pos=(60,30))#創(chuàng)建靜態(tài)文本對象
        self.statictext_shp = wx.StaticText(parent=panel,label="投影文件所在文件夾",pos=(60,80))#創(chuàng)建靜態(tài)文本對象
 
        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):#在事件源(控件)上產(chǎn)生特定事件(左鍵單擊)后的處理程序        
        # Create open file dialog
        openDirDialog = 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_")#新建投影成果根目錄prjWorkspace
        projection(inWorkspace,prjdir,prjWorkspace)
    
if __name__ == "__main__":
    # #創(chuàng)建窗口對象
    frm = MyFrame()
    # #顯示窗口
    frm.Show()       
    
    #進入主事件循環(huán)
    app.MainLoop()

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

平面投影代碼

# coding=utf-8
# ---------------------------------------------------------------------------
#
#                 為文件夾內(nèi)所有城市的經(jīng)緯度shp生成對應的平面shp
#                   注意文件夾內(nèi)所有路徑須為英文路徑,python2
#
# ---------------------------------------------------------------------------
#注意西安和香港
import arcpy
import os,re
import time
#os,arcpy文件覆蓋寫
arcpy.env.overwriteOutput = True  #啟用覆蓋地理處理操作的輸出
 
inWorkspace = r'D:\PythonCode_E3DCM\01Data\04BackPoiProcess\02POI\POI_4'#待投影根目錄【運行前確認修改!】
prjdir = r'D:\PythonCode_E3DCM\01Data\prjFile'#投影文件所在路徑
 
 
##判斷是否為shp文件
def isShapefile(file_name):
    if ".shp" in file_name and ".xml" not in file_name:
        flag = True
    else:
        flag = False
    return flag
 
##建立對應投影成果文件夾——絕對路徑中【葉子節(jié)點】文件夾前加"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文件名匹配投影文件均可行
    #打印作為參數(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【有錯誤!】
            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 = 0
num_shp_ok = 0
num_shp_fail = 0
##針對文件夾內(nèi)shp,建立對應所在投影文件夾、并投影
#參數(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:#文件或文件夾名,不是絕對路徑
        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 paths
if __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中調(diào)試wxpython,界面一閃而過的解決辦法:

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

相關文章

  • 通過python封裝SQLite3的示例代碼

    通過python封裝SQLite3的示例代碼

    這篇文章主要介紹了使用 Python 封裝 SQLite3 的相關內(nèi)容,包括創(chuàng)建數(shù)據(jù)庫實例、創(chuàng)建表、各種插入(單個、批量、字典等)、刪除(按條件、按 ID 等)、修改(多種方式)、查詢(單條、多條、分頁等)的示例及對應的實現(xiàn)代碼,需要的朋友可以參考下
    2024-11-11
  • Python生成任意波形并存為txt的實現(xiàn)

    Python生成任意波形并存為txt的實現(xiàn)

    本文主要介紹了Python生成任意波形并存為txt的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python處理PDF及生成多層PDF實例代碼

    Python處理PDF及生成多層PDF實例代碼

    Python提供了眾多的PDF支持庫,本篇文章主要介紹了Python處理PDF及生成多層PDF實例代碼,這樣就能夠?qū)崿F(xiàn)圖片掃描上來的內(nèi)容也可以進行內(nèi)容搜索的目標
    2017-04-04
  • python梯度下降算法的實現(xiàn)

    python梯度下降算法的實現(xiàn)

    這篇文章主要為大家詳細介紹了python實現(xiàn)梯度下降算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • python實現(xiàn)字符串字母大小寫轉換的幾種方法

    python實現(xiàn)字符串字母大小寫轉換的幾種方法

    本文主要介紹了python實現(xiàn)字符串字母大小寫轉換的幾種方法,包括islower()、isupper()、istitle()、lower()、casefold()、upper()、capitalize()、title()和swapcase(),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • opencv實現(xiàn)圖片模糊和銳化操作

    opencv實現(xiàn)圖片模糊和銳化操作

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)圖片模糊和銳化操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python實現(xiàn)移動指定圖片到指定目錄

    Python實現(xiàn)移動指定圖片到指定目錄

    這篇文章主要為大家詳細介紹了如何使用Python的os和shutil庫實現(xiàn)自動化查找和移動圖片功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-02-02
  • 淺談django rest jwt vue 跨域問題

    淺談django rest jwt vue 跨域問題

    這篇文章主要介紹了django rest jwt vue 跨域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python編程快速上手——瘋狂填詞程序?qū)崿F(xiàn)方法分析

    Python編程快速上手——瘋狂填詞程序?qū)崿F(xiàn)方法分析

    這篇文章主要介紹了Python瘋狂填詞程序?qū)崿F(xiàn)方法,結合具體案例形式分析了Python填詞算法相關的文件讀寫、正則匹配、數(shù)據(jù)遍歷等操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python 多進程和數(shù)據(jù)傳遞的理解

    Python 多進程和數(shù)據(jù)傳遞的理解

    這篇文章主要介紹了Python 多進程和數(shù)據(jù)傳遞的理解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10

最新評論

米林县| 临颍县| 太康县| 文山县| 隆化县| 界首市| 新宾| 罗定市| 会宁县| 铅山县| 兰州市| 甘谷县| 柘城县| 炉霍县| SHOW| 阿鲁科尔沁旗| 莱阳市| 南川市| 岳阳市| 宜兰县| 通河县| 沭阳县| 淮北市| 广宁县| 金乡县| 桂林市| 湘乡市| 海盐县| 朔州市| 康马县| 老河口市| 长子县| 奈曼旗| 堆龙德庆县| 腾冲县| 天柱县| 南宁市| 淮阳县| 牙克石市| 鹤壁市| 衡东县|