首页后端开发Pythonpython如何打开project

python如何打开project

时间2023-06-06 08:31:01发布访客分类Python浏览206
导读:python如何打开project?将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径。演示过程:方式一:脚本中指定好相关参数设置import arcpyimport jsonimport sysimport...

python如何打开project?

将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径。

演示过程:

方式一:脚本中指定好相关参数设置

import arcpy

import json

import sys

import os

import argparse

import re

result = ""

jsontext = { 'success': { } , 'msg': ''}

def checkSavedAprxDatasource(output_aprx_path, mapName, targetDb):

check_result = True

desc = arcpy.Describe(targetDb)

saved_aprx = arcpy.mp.ArcGISProject(output_aprx_path)

for saved_map in saved_aprx.listMaps():

if saved_map.name == mapName:

for lyr in saved_map.listLayers():

if lyr.isFeatureLayer:

# print(lyr.connectionProperties)

if lyr.connectionProperties['workspace_factory'].upper() == 'SDE'.upper(

) and lyr.connectionProperties['connection_info']['instance'] == desc.connectionProperties.instance:

pass

else:

check_result = False

return check_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])

# local pc

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)

for m in aprx.listMaps():

if m.name == mapName:

m.updateConnectionProperties(sourceDb, targetDb)

if os.path.exists(output_aprx_path):

os.remove(output_aprx_path)

aprx.saveACopy(output_aprx_path)

checkResult = checkSavedAprxDatasource(

output_aprx_path, mapName, targetDb)

if checkResult:

jsontext['success'] = True

result = json.dumps(jsontext)

sys.stdout.write(result)

else:

jsontext['success'] = False

jsontext['msg'] = 'Failed to replace data source'

result = json.dumps(jsontext)

sys.stdout.write(result)

except Exception as e:

jsontext['success'] = False

jsontext['msg'] = e.args

result = json.dumps(jsontext)

sys.stdout.write(result)

方式二:使用sys.argv[ ]的形式设置相关参数

(arcgispro-py3) D:\rvt\testaprx> python test.py D:\rvt\testaprx\testaprx.aprx Map D:\rvt\testaprx\Data.gdb D:\rvt\testaprx\testsde.sde D:\rvt\testaprx\output\export5.aprx

import arcpy

import json

import sys

import os

import argparse

import re

result = ""

jsontext = { 'success': { } , 'msg': ''}

def checkSavedAprxDatasource(output_aprx_path, mapName, targetDb):

check_result = True

desc = arcpy.Describe(targetDb)

saved_aprx = arcpy.mp.ArcGISProject(output_aprx_path)

for saved_map in saved_aprx.listMaps():

if saved_map.name == mapName:

for lyr in saved_map.listLayers():

if lyr.isFeatureLayer:

# print(lyr.connectionProperties)

if lyr.connectionProperties['workspace_factory'].upper() == 'SDE'.upper(

) and lyr.connectionProperties['connection_info']['instance'] == desc.connectionProperties.instance:

pass

else:

check_result = False

return check_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)

# local pc

# 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)

for m in aprx.listMaps():

if m.name == mapName:

m.updateConnectionProperties(sourceDb, targetDb)

if os.path.exists(output_aprx_path):

os.remove(output_aprx_path)

aprx.saveACopy(output_aprx_path)

checkResult = checkSavedAprxDatasource(

output_aprx_path, mapName, targetDb)

if checkResult:

jsontext['success'] = True

result = json.dumps(jsontext)

sys.stdout.write(result)

else:

jsontext['success'] = False

jsontext['msg'] = 'Failed to replace data source'

result = json.dumps(jsontext)

sys.stdout.write(result)

except Exception as e:

jsontext['success'] = False

jsontext['msg'] = e.args

result = json.dumps(jsontext)

sys.stdout.write(result)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: python如何打开project
本文地址: https://pptw.com/jishu/63724.html
说出来让更多的人能少交智商税 python中函数的参数可不可以在可变参数后面加一般参数

游客 回复需填写必要信息