Mercurial > mxd2map
annotate contrib/python/foobar.py @ 114:93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Added some sample-scripts for working with MXD-files
author | Stephan Holl <stephan.holl@intevation.de> |
---|---|
date | Wed, 15 Jun 2011 16:13:32 +0200 |
parents | |
children |
rev | line source |
---|---|
114
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
1 # Author: ESRI |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
2 # Date: July 5, 2010 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
3 # Version: ArcGIS 10.0 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
4 # Summary: This script will add a layer file into a map document. The script |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
5 # must be run from within ArcMap because it references the CURRENT |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
6 # map document. The purpose of the script is to create a user |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
7 # friendly tool that allows users to simply add a layer from a list |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
8 # of existing layer files all stored in a common location. A validation |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
9 # script is used to automatically populate two of the parameters. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
10 # The parameters are: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
11 # 1) Browse to a folder that contains layer files. This could be |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
12 # hard coded within the validation script eliminating the need |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
13 # for entering this parameter. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
14 # 2) Select a layer file from the list. This is auto populated |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
15 # using a validation script. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
16 # 3) Select a data frame. This is also auto populated using a |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
17 # validation script. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
18 # 4) Select one of 3 placement positions. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
19 # |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
20 # Note: This script tool will only work if background processing is disabled. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
21 # because CURRENT is being used. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
22 # Note: To run the script from ArcMap either run the script tool from the |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
23 # Catalog window from within ArcMap or add the script tool into the UI |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
24 # via the customize dialog box [Geoprocessing Tools]. |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
25 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
26 import arcpy |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
27 import shlex, subprocess |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
28 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
29 #Helper for executing an external shell-scrip or programm |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
30 def executeCommand(command): |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
31 success = False |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
32 try: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
33 args = shlex.split(command) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
34 p = subprocess.Popen(args) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
35 p.wait() |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
36 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
37 returnCode = p.returncode |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
38 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
39 if (returnCode == 0): |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
40 success = True |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
41 else: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
42 print "Subproccess terminates with %s. This is an error"\ |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
43 % returnCode |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
44 except OSError, err: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
45 success = False |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
46 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
47 return success |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
48 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
49 try: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
50 #Read parameters from dialog |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
51 inputMXD = arcpy.GetParameterAsText(0) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
52 outputMXD = arcpy.GetParameterAsText(1) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
53 template = arcpy.GetParameterAsText(2) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
54 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
55 print "InputMXD: %s,\nOutputMXD: %s" % (inputMXD, outputMXD) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
56 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
57 # execute Java-command for converting |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
58 javacmd = "-Dmapserver.library.name=lib/mapscript -jar mxd-testbed_sh.jar" |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
59 javafiles = "-mxd %s -map %s -template %s " % (inputMXD, outputMXD, template) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
60 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
61 cmd = "java "+ javafiles + javacmd |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
62 print cmd |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
63 executeCommand(cmd) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
64 |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
65 except Exception, e: |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
66 import traceback |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
67 map(arcpy.AddError, traceback.format_exc().split("\n")) |
93699e8f2d1f
contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py:
Stephan Holl <stephan.holl@intevation.de>
parents:
diff
changeset
|
68 arcpy.AddError(str(e)) |