详解python命令提示符窗口下如何运行python脚本
以arcgispro的python脚本为例在arcgispro自带的python窗口下运行python脚本
需求:
将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径。
示例数据:testaprx_jb51.rar
演示过程:
方式一:脚本中指定好相关参数设置
importarcpy
importjson
importsys
importos
importargparse
importre
result=""
jsontext={'success':{},'msg':''}
defcheckSavedAprxDatasource(output_aprx_path,mapName,targetDb):
check_result=True
desc=arcpy.Describe(targetDb)
saved_aprx=arcpy.mp.ArcGISProject(output_aprx_path)
forsaved_mapinsaved_aprx.listMaps():
ifsaved_map.name==mapName:
forlyrinsaved_map.listLayers():
iflyr.isFeatureLayer:
#print(lyr.connectionProperties)
iflyr.connectionProperties['workspace_factory'].upper()=='SDE'.upper(
)andlyr.connectionProperties['connection_info']['instance']==desc.connectionProperties.instance:
pass
else:
check_result=False
returncheck_result
if__name__=='__main__':
try:
#linux
#aprxPath=str(sys.argv[1])
#mapName=str(sys.argv[2])
#sourceDb=str(sys.argv[3])
#targetDb=str(sys.argv[4])
#output_aprx_path=str(sys.argv[5])
#localpc
aprxPath=r'D:\rvt\testaprx\testaprx.aprx'
mapName='Map'
sourceDb=r'D:\rvt\testaprx\Data.gdb'
targetDb=r'D:\rvt\testaprx\testsde.sde'
output_aprx_path=r'D:\rvt\testaprx\output\export5.aprx'
aprx=arcpy.mp.ArcGISProject(aprxPath)
forminaprx.listMaps():
ifm.name==mapName:
m.updateConnectionProperties(sourceDb,targetDb)
ifos.path.exists(output_aprx_path):
os.remove(output_aprx_path)
aprx.saveACopy(output_aprx_path)
checkResult=checkSavedAprxDatasource(
output_aprx_path,mapName,targetDb)
ifcheckResult:
jsontext['success']=True
result=json.dumps(jsontext)
sys.stdout.write(result)
else:
jsontext['success']=False
jsontext['msg']='Failedtoreplacedatasource'
result=json.dumps(jsontext)
sys.stdout.write(result)
exceptExceptionase:
jsontext['success']=False
jsontext['msg']=e.args
result=json.dumps(jsontext)
sys.stdout.write(result)
方式二:使用sys.argv[]的形式设置相关参数
(arcgispro-py3)D:\rvt\testaprx>pythontest.pyD:\rvt\testaprx\testaprx.aprxMapD:\rvt\testaprx\Data.gdbD:\rvt\testaprx\testsde.sdeD:\rvt\testaprx\output\export5.aprx
importarcpy
importjson
importsys
importos
importargparse
importre
result=""
jsontext={'success':{},'msg':''}
defcheckSavedAprxDatasource(output_aprx_path,mapName,targetDb):
check_result=True
desc=arcpy.Describe(targetDb)
saved_aprx=arcpy.mp.ArcGISProject(output_aprx_path)
forsaved_mapinsaved_aprx.listMaps():
ifsaved_map.name==mapName:
forlyrinsaved_map.listLayers():
iflyr.isFeatureLayer:
#print(lyr.connectionProperties)
iflyr.connectionProperties['workspace_factory'].upper()=='SDE'.upper(
)andlyr.connectionProperties['connection_info']['instance']==desc.connectionProperties.instance:
pass
else:
check_result=False
returncheck_result
if__name__=='__main__':
try:
#linux
aprxPath=str(sys.argv[1])
mapName=str(sys.argv[2])
sourceDb=str(sys.argv[3])
targetDb=str(sys.argv[4])
output_aprx_path=str(sys.argv[5])
print("aprx路径:"+aprxPath)
print("地图视图的名称:"+mapName)
print("当前的数据源路径:"+sourceDb)
print("目标数据源路径:"+targetDb)
print("aprx另存为路径:"+output_aprx_path)
#localpc
#aprxPath=r'D:\rvt\testaprx\testaprx.aprx'
#mapName='Map'
#sourceDb=r'D:\rvt\testaprx\Data.gdb'
#targetDb=r'D:\rvt\testaprx\testsde.sde'
#output_aprx_path=r'D:\rvt\testaprx\output\export5.aprx'
aprx=arcpy.mp.ArcGISProject(aprxPath)
forminaprx.listMaps():
ifm.name==mapName:
m.updateConnectionProperties(sourceDb,targetDb)
ifos.path.exists(output_aprx_path):
os.remove(output_aprx_path)
aprx.saveACopy(output_aprx_path)
checkResult=checkSavedAprxDatasource(
output_aprx_path,mapName,targetDb)
ifcheckResult:
jsontext['success']=True
result=json.dumps(jsontext)
sys.stdout.write(result)
else:
jsontext['success']=False
jsontext['msg']='Failedtoreplacedatasource'
result=json.dumps(jsontext)
sys.stdout.write(result)
exceptExceptionase:
jsontext['success']=False
jsontext['msg']=e.args
result=json.dumps(jsontext)
sys.stdout.write(result)
到此这篇关于详解python命令提示符窗口下如何运行python脚本的文章就介绍到这了,更多相关python命令运行python脚本内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。