资源简介

利用Python编程,解决excel直接转面。其中利用程序只需要选择放excel的文件夹,以及输出文件夹,点击运行即可。

资源截图

代码片段和文件信息


#Author 廖超毅

#Date 2017-9-20
#十一月五日修改,解决中文坐标问题
#description 将excel转成面。
#               前提:1.将excel表每一列增加字段名
#                    2.字段名中必须有一个XY字段                   
#                    3.excel格式必须是97-2003的.xls 
#使用时,只需要更改excel存放目录,点集存放目录,面存放目录即可
#注意目录用反斜杠“/”

#import xlrd
#import xlwt
import arcpy
import os
import sys
from arcpy import env
import re

#reload(sys)
#sys.setdefaultencoding( “utf-8“ )

#放excel的文件目录!!!
workspace = “C:/Users/Administrator/Desktop/新建文件夹 (2)“

#输出面的文件目录(这个是最后的输出路径)!!!
filout = “C:/Users/Administrator/Desktop/c/“

#输出点的文件目录!!!
pfilout = “C:/Users/Administrator/Desktop/b/“

arcpy.env.workspace = workspace

nameKey = {}

for rootdirsfiles in os.walk(workspace):

    i = 1
     
    for fl in files:
        
        pfcs = []
        features = []

        print fl+“  “+str(i)

        out1 = “a“+str(i)
    
        #将excel转成dbf
        arcpy.ExcelToTable_conversion(fl out1+“.gdb“)

        out6 = “b“+str(i)
        out7 = “point“+str(i)

        nameKey[out6] = fl[:-4]
        
        cur = arcpy.SearchCursor(out1+“.dbf“)
        count=len([row.getValue(“b“) for row in cur])

        array = arcpy.Array()
        ar = arcpy.Array()
        
        point = arcpy.Point()
        
        del cur
        cur = arcpy.SearchCursor(out1+“.dbf“) 
        ll=1
        gd = -1
        lcy = 35
        sr = arcpy.SpatialReference(“Xian 1980 3 Degree GK Zone 35“)

        for r in cur:
            if(type(r.getValue(“b“)).__name__==‘unicode‘):
                b = r.getValue(“b“).encode(“utf-8“)
                y = r.getValue(“c“).encode(“utf-8“)
                x = r.getValue(“d“).encode(“utf-8“)
                if(b==“ “):
                    b = 0
                else:
                    b=int(r.getValue(“b“).encode(“utf-8“))
                if(y==“ “):
                    y = 0
                else:
                    y=float(r.getValue(“c“).encode(“utf-8“))
                if(x==“ “):
                    x = 0
                else:
                    x=float(r.getValue(“d“).encode(“utf-8“))
            else:
                b = r.getValue(“b“)
                y = r.getValue(“c“)
                x = r.getValue(“d“)
            if(ll == 2):
                lcy = str(x)[0:2]  
            if(gd == -1):
                gd = b
            if(b  == 0):
                if(ll != 1):
   

评论

共有 条评论