Arcpy平面座標轉經緯度座標

 反思

代碼是實現目標的一種手段,但不是唯一手段,快速實現目標纔是目的,不要因爲手拿錘子(Arcpy)就滿眼都是釘子。有時候更便捷的方式可能就在眼前。

奧卡姆剃刀定律:不要把事情人爲地複雜化!

 

  •  方法1——行得通

使用事先準備好的WGS1984.prj投影文件,投影 (Data Management)

# coding=utf-8
# ---------------------------------------------------------------------------
# CUT_Mecator_To_WGS1984.py
# ---------------------------------------------------------------------------
import arcpy
import os

inWorkspace = u'//172.23.138.222/19q1作業/02TILE/CUT//'#輸入文件result的上級根目錄
#投影文件
prj_file = u'D:/PythonCode_inWork/00源數據批量投影/平面轉經緯度//' + 'WGS1984.prj'
outWorkspace = u'//172.23.138.222/19q1作業/02TILE/CUT_WGS1984//'#投影后成果文件夾路徑

#帶投影城市列表
shps = []
shps_num = 0
files=os.listdir(inWorkspace)
for i in files:
    if '.shp' in i:
        shps_num += 1
        shps.append(i)
print '共{0}個CUT文件——待經緯度轉換!'.format(shps_num)
            
num_ok = 0
num_fail = 0
#新建城市成果文件夾並投影
for shp in shps:
    print shp + u" 座標轉換中..."
    #參數1:待投影文件——裁剪後link&node源數據
    inputfile = inWorkspace + shp
    
    #參數2:投影后輸出成果文件
    WGS1984_outfile = outWorkspace + shp.replace('_M','_D')
   
    # Process: 批量投影
##    try:        
    arcpy.Project_management(inputfile, WGS1984_outfile, prj_file)
    print shp.replace('_M','_D') + u"已成功!"
    num_ok += 1
##    except:
##        print shp + u"投影失敗!請確認!"
##        num_fail += 1

print str(num_ok)+"  ok!"
print str(num_fail)+" fail!"
  •  方法2——簡單粗暴行得通

直接將WGS1984.prj投影文件複製替換,源數據情況不同、此方法需要自行嘗試。

  1. ——準備——好RD_LINK.prj和RD_NODE.prj文件
  2. ——刪除——根目錄下對應城市文件夾中遠prj文件
  3. ——代碼批量複製——到根目錄下對應城市文件夾中
    import shutil,os
    
    source = r"D:\20Q1\00DATA\\"
    destination = r"D:\20Q1\00DATA\ROAD\\" #目標文件夾
    
    city_files = os.listdir(destination)
    
    num = 0
    for city_file in city_files:
        city = city_file.split('_')[0]
        
        #源數據
        LINK_PRJ = source + "RD_LINK.prj"
        NODE_PRJ = source + "RD_NODE.prj"
        
        #目標文件夾
        des_file = destination + city_file
        
        #拷貝
        shutil.copy(LINK_PRJ, des_file)
        shutil.copy(NODE_PRJ, des_file)
        num += 1
    
    print("{}城市投影文件拷貝完成!".format(num))

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章