今天一不小心点开了Windows任务计划,以前咩有怎么用过,发现还挺好用,于是想到了以前用户的一些问题
1:用户环境使用ArcSDE服务连接,每次运行到一定的负载量(可能是几天),就会很慢,用户就喜欢重启一下ArcSDE服务就可以解决了。
对该问题,我们不去探究用户的环境为什么会慢,既然他重启ArcSDE服务就可以解决问题,那么我们可以使用Windows的任务计划来执行以及写好的ArcSDE服务重启脚本,这样我们就可以定期重启ArcSDE服务来解决该问题了。
只需要写一个简单的bat文件即可
[python] view plaincopyprint?
- -- 关闭ArcSDE服务
- sdemon -o shutdown -i 5151 -p sde
- --等一些时间
- sleep(5)
- --启动ArcSDE服务
- sdemon-o start -i 5151 -p sde
-- 关闭ArcSDE服务 sdemon -o shutdown -i 5151 -p sde --等一些时间 sleep(5) --启动ArcSDE服务 sdemon-o start -i 5151 -p sde
这样就可以来解决用户问题了。
2:有些用户经常会使用GP工具来做一些相关的功能操作,可能有些东西就是机械的对数据进行操作,有些时候可能要等比较长的时间,那么用户就会咨询一下,我是否可以使用自动化的功能,定时来执行相关的GP工具呢?
以前给用户的答复就是不可以,因为这些GP工具不能脱离ArcMap的进程,也就是必须在ArcMap里面执行,这样肯定不可以。
但是当时并没有考虑Python与GP工具的结合,我们完全可以将GP工具写道Python脚本里面来进行相关的批量操作啊!
我们将相关的GP环境比如数据源路径、名称、参数等都写在Python里面,到时候定期执行就可以了。
其实对ArcGIS来说,重复性、必要性的工作比较多
- 定期重建索引
- 定期版本压缩
- 定期分析数据
以下是一个重建索引的例子
[python] view plaincopyprint?
- from arcpy import *
- env.workspace=r'Database ConnectionsConnection to 192.168.100.111.sde'
- for dataset in ListDatasets():
- for fc in ListFeatureClasses("","ALL",dataset):
- RemoveSpatialIndex_management(fc)
- AddSpatialIndex_management(fc)
from arcpy import * env.workspace=r'Database ConnectionsConnection to 192.168.100.111.sde' for dataset in ListDatasets(): for fc in ListFeatureClasses("","ALL",dataset): RemoveSpatialIndex_management(fc) AddSpatialIndex_management(fc)
通过查看任务计划可以查看相关任务是否允许完成或者有问题,如下图可以得到,是不能在非ArcMap环境下执行运行GP工具的
TIPS:对没有写过Python的用户其实并不需要担心什么,如果你有现成的Modelbuilder模型,那么可以使用Export to python Scripts来获得相关的python脚本即可
延伸学习:
在 Linux 中,创建一个 cron 文本文件,其中包含希望脚本运行的日期和时间信息,然后使用 crontab 程序将该文件加载到 cron 中。
例如,以下信息将 Python 脚本(名为 rsysidxdb2.py)设置为在每个星期三晚上 10:00 运行:
0 22 * * 3 /usr/bin/rsysidxdb2.py
有关 cron 的使用信息,请参阅随 Linux 安装提供的 Linux 手册页。
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------