代码运行显示SyntaxError: invalid syntax。新手不知道哪里出错了有大神能指导一下吗
贴出代码来呀,不然怎么看呢?
说明有语法错误,具体要看你的代码
# -*- coding:utf-8 -*-
import time
s_time=time.time()
import sys
import arcpy
import xlrd
import xlwt
from xlutils.copy import copy
stdin,stdout,stderr = sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.stdin,sys.stdout,sys.stderr=stdin,stdout,stderr
sys.setdefaultencoding('utf8')
excel=u"鹰潭低压第一次上报.xlsx"
shp=u"鹰潭低压第一次.shp"
jingdu=0.08
out_excel=u"线表.xls"
style =xlwt.XFStyle()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['red']
style.pattern = pattern
def get_xy_list(excel):
data = xlrd.open_workbook(excel)
table = data.sheets()[0]
nrows = table.nrows
xy_list=[]
for i in range(1,nrows):
xy_list.append((table.cell(i,1).value,table.cell(i,3).value,table.cell(i,4).value,table.cell(i,5).value,table.cell(i,6).value))
return xy_list
def export_point(shp,xy_list):
zc_gj={}
arcpy.env.workspace=r"E:\信息技术\管线数据"
xian_list=[]
with arcpy.da.SearchCursor(shp,["SHAPE@","FID","GJ"]) as cursor:
for row in cursor:
for part in row[0]:
part_list=[]
for point in part:
number=0
for i in xy_list:
if pow(pow(float(i[2])-point.X,2)+pow(float(i[3])-point.Y,2),0.5)<=jingdu:
number+=1
pointxx=[i[0],i[1],i[2],i[3],i[4],row[2]]
if number>=1:
if u"三通" in pointxx[1]:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],get_cgj(point,row[1],row[2],shp))
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],0)
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
part_list.append((u"lost!",number,u"×未找到!×",point.X,point.Y,u"lost!",u"lost!"))
xian_list.append(part_list)
print"—————————————————————————————————————————————————————————————"
for i in range(0,len(part_list)-1):
print str(i+1).ljust(5," "),part_list[i][0].ljust(7," "),str(part_list[i][1]).ljust(3," "),part_list[i][2].ljust(8," "),str(part_list[i][3]).ljust(11," "),str(part_list[i][4]).ljust(13," "),str(part_list[i][5]).ljust(6," ")," ",part_list[i+1][0].ljust(7," "),str(part_list[i+1][1]).ljust(3," "),part_list[i+1][2].ljust(8," "),str(part_list[i+1][3]).ljust(11," "),str(part_list[i+1][4]).ljust(13," "),str(part_list[i+1][5]).ljust(6," ")
return xian_list,zc_gj
def write_xx(xian_list,zc_gj,out_excel,excel):
oldwb= xlrd.open_workbook(excel,formatting_info=True)
wb=copy(oldwb)
#wb=xlwt.Workbook(encoding="utf-8")
ws=wb.add_sheet(u"线表1",cell_overwrite_ok=True)
wsgj=wb.add_sheet(u"点管径表",cell_overwrite_ok=True)
titles=[u"图形线编号",u"线内线段编号",
u"起始管点编号",u"图形起始点与点表匹配次数",u"起始点类型",u"起始点X",u"起始点Y",u"起始点管顶高程",u"管径",
u"终止管点编号",u"图形终止点与点表匹配次数",u"终止点类型",u"终止点X",u"终止点Y",u"终止点管顶高程",u"管径",
u"敷设方式",u"材质",u"压力级制",u"数据来源",u'外径(mm)',u'壁厚(mm)',u"管段防腐材料",
u"地址",u"项目编码",u"竣工日期",u"采集人",u"测量单位",u"测量日期",u"备注"]
for i in range(0,len(titles)):
ws.write(0,i,titles[i])
rownumber=1
xian_number=1
for xian in xian_list:
part_number=1
for i in range(0,len(xian)-1):
ws.write(rownumber,0,xian_number)
ws.write(rownumber,1,part_number)
for j in range(0,len(xian[i])):
if xian[i][1]!=1 or xian[i][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2,xian[i][j],style)
else:
ws.write(rownumber,j+2,xian[i][j])
if xian[i+1][1]!=1 or xian[i+1][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j],style)
else:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j])
rownumber+=1
part_number+=1
xian_number+=1
gjnumber=0
for i in sorted(zc_gj):
if zc_gj[i][1]>=0:
wsgj.write(gjnumber,0,i)
wsgj.write(gjnumber,1,zc_gj[i][0])
wsgj.write(gjnumber,2,zc_gj[i][1])
gjnumber+=1
else:
wsgj.write(gjnumber,0,i,style)
wsgj.write(gjnumber,1,zc_gj[i][0],style)
wsgj.write(gjnumber,2,zc_gj[i][1],style)
gjnumber+=1
wb.save(out_excel)
#获取三通次管径数据
def get_cgj(stpoint,FID,gj,shp):
cgjs=[]
temp=[]
with arcpy.da.SearchCursor(shp,["FID","SHAPE@","GJ"]) as cursor:
for row in cursor:
if row[0]==FID:
pass
else:
for part in row[1]:
for point in part:
if point.X==stpoint.X and point.Y==stpoint.Y:
cgjs.append(row[2])
if len(cgjs)==0:
cgj=-1
else:
for i in cgjs:
if i==gj:
pass
else:
temp.append(i)
if len(temp)==0:
cgj=gj
elif len(temp)==1:
cgj=temp[0]
else:
cgj=-2
return cgj
if __name__ == "__main__":
xy_list=get_xy_list(excel)
#for i in xy_list:
#print i[0],i[1],i[2]
xian_list,zc_gj=export_point(shp,xy_list)
write_xx(xian_list,zc_gj,out_excel,excel)
e_time=time.time()
print u"全部工作共耗时:%.2f s!"%(e_time-s_time)
# -*- coding:utf-8 -*-
import time
s_time=time.time()
import sys
import arcpy
import xlrd
import xlwt
from xlutils.copy import copy
stdin,stdout,stderr = sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.stdin,sys.stdout,sys.stderr=stdin,stdout,stderr
sys.setdefaultencoding('utf8')
excel=u"鹰潭低压第一次上报.xlsx"
shp=u"鹰潭低压第一次.shp"
jingdu=0.08
out_excel=u"线表.xls"
style =xlwt.XFStyle()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['red']
style.pattern = pattern
def get_xy_list(excel):
data = xlrd.open_workbook(excel)
table = data.sheets()[0]
nrows = table.nrows
xy_list=[]
for i in range(1,nrows):
xy_list.append((table.cell(i,1).value,table.cell(i,3).value,table.cell(i,4).value,table.cell(i,5).value,table.cell(i,6).value))
return xy_list
def export_point(shp,xy_list):
zc_gj={}
arcpy.env.workspace=r"E:\信息技术\管线数据"
xian_list=[]
with arcpy.da.SearchCursor(shp,["SHAPE@","FID","GJ"]) as cursor:
for row in cursor:
for part in row[0]:
part_list=[]
for point in part:
number=0
for i in xy_list:
if pow(pow(float(i[2])-point.X,2)+pow(float(i[3])-point.Y,2),0.5)<=jingdu:
number+=1
pointxx=[i[0],i[1],i[2],i[3],i[4],row[2]]
if number>=1:
if u"三通" in pointxx[1]:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],get_cgj(point,row[1],row[2],shp))
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],0)
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
part_list.append((u"lost!",number,u"×未找到!×",point.X,point.Y,u"lost!",u"lost!"))
xian_list.append(part_list)
print"—————————————————————————————————————————————————————————————"
for i in range(0,len(part_list)-1):
print str(i+1).ljust(5," "),part_list[i][0].ljust(7," "),str(part_list[i][1]).ljust(3," "),part_list[i][2].ljust(8," "),str(part_list[i][3]).ljust(11," "),str(part_list[i][4]).ljust(13," "),str(part_list[i][5]).ljust(6," ")," ",part_list[i+1][0].ljust(7," "),str(part_list[i+1][1]).ljust(3," "),part_list[i+1][2].ljust(8," "),str(part_list[i+1][3]).ljust(11," "),str(part_list[i+1][4]).ljust(13," "),str(part_list[i+1][5]).ljust(6," ")
return xian_list,zc_gj
def write_xx(xian_list,zc_gj,out_excel,excel):
oldwb= xlrd.open_workbook(excel,formatting_info=True)
wb=copy(oldwb)
#wb=xlwt.Workbook(encoding="utf-8")
ws=wb.add_sheet(u"线表1",cell_overwrite_ok=True)
wsgj=wb.add_sheet(u"点管径表",cell_overwrite_ok=True)
titles=[u"图形线编号",u"线内线段编号",
u"起始管点编号",u"图形起始点与点表匹配次数",u"起始点类型",u"起始点X",u"起始点Y",u"起始点管顶高程",u"管径",
u"终止管点编号",u"图形终止点与点表匹配次数",u"终止点类型",u"终止点X",u"终止点Y",u"终止点管顶高程",u"管径",
u"敷设方式",u"材质",u"压力级制",u"数据来源",u'外径(mm)',u'壁厚(mm)',u"管段防腐材料",
u"地址",u"项目编码",u"竣工日期",u"采集人",u"测量单位",u"测量日期",u"备注"]
for i in range(0,len(titles)):
ws.write(0,i,titles[i])
rownumber=1
xian_number=1
for xian in xian_list:
part_number=1
for i in range(0,len(xian)-1):
ws.write(rownumber,0,xian_number)
ws.write(rownumber,1,part_number)
for j in range(0,len(xian[i])):
if xian[i][1]!=1 or xian[i][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2,xian[i][j],style)
else:
ws.write(rownumber,j+2,xian[i][j])
if xian[i+1][1]!=1 or xian[i+1][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j],style)
else:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j])
rownumber+=1
part_number+=1
xian_number+=1
gjnumber=0
for i in sorted(zc_gj):
if zc_gj[i][1]>=0:
wsgj.write(gjnumber,0,i)
wsgj.write(gjnumber,1,zc_gj[i][0])
wsgj.write(gjnumber,2,zc_gj[i][1])
gjnumber+=1
else:
wsgj.write(gjnumber,0,i,style)
wsgj.write(gjnumber,1,zc_gj[i][0],style)
wsgj.write(gjnumber,2,zc_gj[i][1],style)
gjnumber+=1
wb.save(out_excel)
#获取三通次管径数据
def get_cgj(stpoint,FID,gj,shp):
cgjs=[]
temp=[]
with arcpy.da.SearchCursor(shp,["FID","SHAPE@","GJ"]) as cursor:
for row in cursor:
if row[0]==FID:
pass
else:
for part in row[1]:
for point in part:
if point.X==stpoint.X and point.Y==stpoint.Y:
cgjs.append(row[2])
if len(cgjs)==0:
cgj=-1
else:
for i in cgjs:
if i==gj:
pass
else:
temp.append(i)
if len(temp)==0:
cgj=gj
elif len(temp)==1:
cgj=temp[0]
else:
cgj=-2
return cgj
if __name__ == "__main__":
xy_list=get_xy_list(excel)
#for i in xy_list:
#print i[0],i[1],i[2]
xian_list,zc_gj=export_point(shp,xy_list)
write_xx(xian_list,zc_gj,out_excel,excel)
e_time=time.time()
print u"全部工作共耗时:%.2f s!"%(e_time-s_time)
# -*- coding:utf-8 -*-
import time
s_time=time.time()
import sys
import arcpy
import xlrd
import xlwt
from xlutils.copy import copy
stdin,stdout,stderr = sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.stdin,sys.stdout,sys.stderr=stdin,stdout,stderr
sys.setdefaultencoding('utf8')
excel=u"鹰潭低压第一次上报.xlsx"
shp=u"鹰潭低压第一次.shp"
jingdu=0.08
out_excel=u"线表.xls"
style =xlwt.XFStyle()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['red']
style.pattern = pattern
def get_xy_list(excel):
data = xlrd.open_workbook(excel)
table = data.sheets()[0]
nrows = table.nrows
xy_list=[]
for i in range(1,nrows):
xy_list.append((table.cell(i,1).value,table.cell(i,3).value,table.cell(i,4).value,table.cell(i,5).value,table.cell(i,6).value))
return xy_list
def export_point(shp,xy_list):
zc_gj={}
arcpy.env.workspace=r"E:\信息技术\管线数据"
xian_list=[]
with arcpy.da.SearchCursor(shp,["SHAPE@","FID","GJ"]) as cursor:
for row in cursor:
for part in row[0]:
part_list=[]
for point in part:
number=0
for i in xy_list:
if pow(pow(float(i[2])-point.X,2)+pow(float(i[3])-point.Y,2),0.5)<=jingdu:
number+=1
pointxx=[i[0],i[1],i[2],i[3],i[4],row[2]]
if number>=1:
if u"三通" in pointxx[1]:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],get_cgj(point,row[1],row[2],shp))
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
if pointxx[0] not in zc_gj.items():
zc_gj[pointxx[0]]=(row[2],0)
part_list.append((pointxx[0],number,pointxx[1],pointxx[2],pointxx[3],pointxx[4],pointxx[5]))
else:
part_list.append((u"lost!",number,u"×未找到!×",point.X,point.Y,u"lost!",u"lost!"))
xian_list.append(part_list)
print"—————————————————————————————————————————————————————————————"
for i in range(0,len(part_list)-1):
print str(i+1).ljust(5," "),part_list[i][0].ljust(7," "),str(part_list[i][1]).ljust(3," "),part_list[i][2].ljust(8," "),str(part_list[i][3]).ljust(11," "),str(part_list[i][4]).ljust(13," "),str(part_list[i][5]).ljust(6," ")," ",part_list[i+1][0].ljust(7," "),str(part_list[i+1][1]).ljust(3," "),part_list[i+1][2].ljust(8," "),str(part_list[i+1][3]).ljust(11," "),str(part_list[i+1][4]).ljust(13," "),str(part_list[i+1][5]).ljust(6," ")
return xian_list,zc_gj
def write_xx(xian_list,zc_gj,out_excel,excel):
oldwb= xlrd.open_workbook(excel,formatting_info=True)
wb=copy(oldwb)
#wb=xlwt.Workbook(encoding="utf-8")
ws=wb.add_sheet(u"线表1",cell_overwrite_ok=True)
wsgj=wb.add_sheet(u"点管径表",cell_overwrite_ok=True)
titles=[u"图形线编号",u"线内线段编号",
u"起始管点编号",u"图形起始点与点表匹配次数",u"起始点类型",u"起始点X",u"起始点Y",u"起始点管顶高程",u"管径",
u"终止管点编号",u"图形终止点与点表匹配次数",u"终止点类型",u"终止点X",u"终止点Y",u"终止点管顶高程",u"管径",
u"敷设方式",u"材质",u"压力级制",u"数据来源",u'外径(mm)',u'壁厚(mm)',u"管段防腐材料",
u"地址",u"项目编码",u"竣工日期",u"采集人",u"测量单位",u"测量日期",u"备注"]
for i in range(0,len(titles)):
ws.write(0,i,titles[i])
rownumber=1
xian_number=1
for xian in xian_list:
part_number=1
for i in range(0,len(xian)-1):
ws.write(rownumber,0,xian_number)
ws.write(rownumber,1,part_number)
for j in range(0,len(xian[i])):
if xian[i][1]!=1 or xian[i][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2,xian[i][j],style)
else:
ws.write(rownumber,j+2,xian[i][j])
if xian[i+1][1]!=1 or xian[i+1][j] in["lost!",u"×未找到!×"]:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j],style)
else:
ws.write(rownumber,j+2+len(xian[i]),xian[i+1][j])
rownumber+=1
part_number+=1
xian_number+=1
gjnumber=0
for i in sorted(zc_gj):
if zc_gj[i][1]>=0:
wsgj.write(gjnumber,0,i)
wsgj.write(gjnumber,1,zc_gj[i][0])
wsgj.write(gjnumber,2,zc_gj[i][1])
gjnumber+=1
else:
wsgj.write(gjnumber,0,i,style)
wsgj.write(gjnumber,1,zc_gj[i][0],style)
wsgj.write(gjnumber,2,zc_gj[i][1],style)
gjnumber+=1
wb.save(out_excel)
#获取三通次管径数据
def get_cgj(stpoint,FID,gj,shp):
cgjs=[]
temp=[]
with arcpy.da.SearchCursor(shp,["FID","SHAPE@","GJ"]) as cursor:
for row in cursor:
if row[0]==FID:
pass
else:
for part in row[1]:
for point in part:
if point.X==stpoint.X and point.Y==stpoint.Y:
cgjs.append(row[2])
if len(cgjs)==0:
cgj=-1
else:
for i in cgjs:
if i==gj:
pass
else:
temp.append(i)
if len(temp)==0:
cgj=gj
elif len(temp)==1:
cgj=temp[0]
else:
cgj=-2
return cgj
if __name__ == "__main__":
xy_list=get_xy_list(excel)
#for i in xy_list:
#print i[0],i[1],i[2]
xian_list,zc_gj=export_point(shp,xy_list)
write_xx(xian_list,zc_gj,out_excel,excel)
e_time=time.time()
print u"全部工作共耗时:%.2f s!"%(e_time-s_time)