3

I Cannot find what this error means or what could be causing it? Script worked until I added the lines under "Set map label to containing quad name". My environment is ArcGIS 10.1 SP1, Windows 7. Here is my code:

import arcpy
#Define I/O and workspaces
arcpy.env.workspace = "FolderPath"
arcpy.env.overwriteOutput = True
mxd = arcpy.mapping.MapDocument("MXDPath.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
outpath = arcpy.GetParameterAsText(2)
def getAuthCode(lon):
 if lon >= -126.0 and lon < -120.0:
 authCode = 26910 #UTM Zone 10N
 elif lon >= -120.0 and lon < -114.0:
 authCode = 26911 #UTM Zone 11N
 elif lon >= -114.0 and lon < -108.0:
 authCode = 26912 #UTM Zone 12N
 elif lon >= -108.0 and lon < -102.0:
 authCode = 26913 #UTM Zone 13N
 elif lon >= -102.0 and lon < -96.0:
 authCode = 26914 #UTM Zone 14N
 elif lon >= -96.0 and lon < -90.0:
 authCode = 26915 #UTM Zone 15N
 elif lon >= -90.0 and lon < -84.0:
 authCode = 26916 #UTM Zone 16N
 elif lon >= -84.0 and lon < -78.0:
 authCode = 26917 #UTM Zone 17N
 elif lon >= -78.0 and lon < -72.0:
 authCode = 26918 #UTM Zone 18N
 elif lon >= -72.0 and lon < -66.0:
 authCode = 26919 #UTM Zone 19N
 else:
 authCode = 4326 # WGS84
 return authCode
#Create extent/spatial referenece objects
lat = arcpy.GetParameterAsText(0)
lon = arcpy.GetParameterAsText(1)
WGS84 = arcpy.SpatialReference(4326) #Creates spatial reference variable to switch back to later
UTM = arcpy.SpatialReference(getAuthCode(lon))
df.spatialReference = WGS84 #Set spatial reference to WGS84
resetPT = arcpy.Extent(-97.747957, 30.280553, -97.747957, 30.280553)
#Set map label to containing quad name
point = arcpy.Point(lon, lat)
ptGeo = arcpy.PointGeometry(point, WGS84)
quadPath = "LayerPath.lyr"
quadLyr = arcpy.mapping.Layer(quadPath) #arcpy.mapping.ListLayers(mxd)[0]
selectedLyr = arcpy.SelectLayerByLocation_management(quadLyr, "INTERSECT", ptGeo)
cursor = arcpy.da.SearchCursor(selectedLyr, "QUAD_NAME")
quadName = ""
for row in cursor:
 quadName = str(row)
label = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "Label")[0]
label.text = "NWI Map" + "\n" + "Quad: " + quadName[3:-3] + ", TX"
label.elementPositionX = 0.3
label.elementPositionY = 0.3
#Pans to centerpoint and sets scale to 1:12000
extent = arcpy.Extent(lon, lat, lon, lat)
df.panToExtent(extent)
df.spatialReference = UTM #Temporarily set spatial reference to correct UTM zone
df.scale = 12000
arcpy.RefreshActiveView()
#Export map to ES# folder
arcpy.mapping.ExportToPDF(mxd, outpath, resolution=300) #exportToPDF
#Reset extent/spatial reference
df.spatialReference = WGS84 
df.panToExtent(resetPT)
arcpy.RefreshActiveView()
mxd.save()
Hornbydd
44.9k5 gold badges42 silver badges84 bronze badges
asked May 9, 2016 at 23:22
7
  • 1
    Are you running this in the Python Window inside ArcMap or as a Script tool? Commented May 9, 2016 at 23:49
  • I'm running it as a script tool Commented May 9, 2016 at 23:51
  • Is there an error message? That would help a lot. Is FolderPath a substitue for a real path that has been changed to protect your anonymity? Is your layer file "LayerPath.lyr" a full path? if not does it exist in your workspace? Commented May 9, 2016 at 23:52
  • It's in the title "Runtime error: cannot open 'GPL0'". Yes, I took out the full paths Commented May 9, 2016 at 23:54
  • 1
    If the answer provided by @MrBubbles does not resolve this for you, and in future questions, I think you should try to cut your code down to a code snippet that shows the same error before presenting it. That way where to look for the issue becomes more obvious to you and us. Commented May 10, 2016 at 0:34

2 Answers 2

3

Your error is essentially saying that it can't open the layer file due to the manner in which you provided it. Esri loves cryptic errors like that.

If you're running this as a Script Tool, I suspect the issue is with the manner in which you reference the quadPath variable. That's not a normal way to reference a layer file saved on disk. The way you're doing it is what I typically see when people are working with the Python Window, because the Python Window has a built-in list of all the items in the Table of Contents and there it references items in that built-in list according to their namespace.

Try referencing that Layer file using its absolute path instead.

answered May 10, 2016 at 0:11
1

Figured it out. The SelectLayerByLocation method changes the state of the quadLyr object, so instead of assigning the method to selectedLyr I ran the method and then used quadLyr as input for the cursor.

PolyGeo
65.5k29 gold badges115 silver badges349 bronze badges
answered May 10, 2016 at 17:08

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.