以arcgispro的python脚本为例在arcgispro自带的python窗口下运行python脚本

需求:

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

示例数据:testaprx_jb51.rar

演示过程:

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

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)

到此这篇关于详解python命令提示符窗口下如何运行python脚本的文章就介绍到这了,更多相关python命令运行python脚本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: 详解python命令提示符窗口下如何运行python脚本

本文地址: http://www.cppcns.com/jiaoben/python/344400.html

python命令提示符窗口在哪里_详解python命令提示符窗口下如何运行python脚本相关推荐

  1. python鸭制作类代码_详解duck typing鸭子类型程序设计与Python的实现示例

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定. 这个概念的名字来源 ...

  2. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  3. python评价指标_详解分类评价指标和回归评价指标以及Python代码实现

    这篇文章介绍的内容是详解分类评价指标和回归评价指标以及Python代码实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下. 1.概念 性能度量(评价)指标,主分为两大类: 1)分类评价 ...

  4. python可变参数的实验性_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  5. python什么是可变参数_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  6. python壁纸高清图片_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  7. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  8. python命令窗口在哪里_详解如何在cmd命令窗口中搭建简单的python开发环境

    详解如何在cmd命令窗口中搭建简单的python开发环境 1.快捷键win+r输入cmd回车调出cmd界面,在命令行输入python回车,显示python命令无法识别 2.登陆python官网http ...

  9. python 安装pandas 权限不够_详解Python学习之安装pandas

    一.python pip的安装与使用 1.pip 是 python 包管理工具,该工具提供了对python 包的查找.下载.安装.卸载的功能. 目前如果你在 python.org 下载最新版本的安装包 ...

最新文章

  1. mysql tmp_table_size_mysql tmp_table_size=256m
  2. 【HTTP协议】超详细的HTTP协议详解
  3. 【Django】用pycharm初学习使用Django
  4. 关于MM的几个经典问题及回答
  5. 计算机视觉--优秀开源方案集锦
  6. 关于六年级定格动画计算机教案,谈定格动画在中小学课堂教学中的开展
  7. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例
  8. 如何编写杂项设备驱动
  9. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...
  10. 用yacc编写的算术运算计算器_10天学会四则运算小计算器设计之第5天
  11. 使用vue-cli3创建项目的时候出错,ERROR command failed: npm install --loglevel error --registry
  12. (转)关于block使用的5点注意事项
  13. 读书笔记:《把时间当作朋友》
  14. cad填充图案乱理石_CAD实用填充图案129种下载_CAD实用填充图案129种官方下载-太平洋下载中心...
  15. Linux自动启动ssh方法
  16. 怎样设置路由器禁用其他设备
  17. 调用微信公众号现金红包接口给用户发送红包
  18. 有关安装vuex报错error found vue@2.6.14及有关vue搭建项目问题
  19. speedoffice(word)如何修改段落间距
  20. 可用的公开 RTSP/ RTMP 在线视频流资源地址

热门文章

  1. visio 转 pdf 裁边 ——使用pdfcrop对PDF裁边
  2. linux关于ftp权限问题
  3. 二十年后的回眸(2)——顺风顺水的前三年
  4. hdu 1280 前m大的数 哈希
  5. fork和vfork,return和exit的理解
  6. Windows Server 2012:服务器虚拟化 学习笔记
  7. Go 导入当前项目下的包
  8. 服务器不安装Excel,实现导出Excel功能
  9. .net 调用 sql server 自定义函数,并输出返回值
  10. 网站设计常用技巧收集