I have a custom script tool that is supposed to set up a map layout, by adjusting the scale bar, north arrow, title, and legend. It is then supposed to reference a bookmark and export the layout as a PDF.
The problem is that when I use this tool in ModelBuilder it references the wrong bookmarks.
I'm using this script tool in ModelBuilder for ArcGIS Pro. This model iterates through Urgent Care centers and its corresponding data one at a time (in alphabetical order by center name). I have bookmarks for every Urgent Care center, so my thought is that, if I can find a way for the model to reference the bookmarks in alphabetical order, then they will correspond with the correct Urgent Care center.
Could this be achieved via a table or list Index, or some kind of loop? Or is there a better way to go about this whole process?
Here is the code from the script tool I am using.
import arcpy
lyr = arcpy.GetParameterAsText(0)
p = arcpy.mp.ArcGISProject("CURRENT")
lyt = p.listLayouts("Layout_King")[0]
scaleBar = lyt.listElements("MAPSURROUND_ELEMENT", "Scale Bar")[0]
mf = scaleBar.mapFrame
scaleBar.elementPositionX = mf.elementPositionX + 0.0
scaleBar.elementPositionY = mf.elementPositionY - 0.5
northArrow = lyt.listElements("MAPSURROUND_ELEMENT", "North Arrow")[0]
mf = northArrow.mapFrame
northArrow.elementPositionX = mf.elementPositionX + 8.8
northArrow.elementPositionY = mf.elementPositionY + 0.7
title = lyt.listElements("TEXT_ELEMENT","Name of Map Text")[0]
mf = lyt.listElements('MAPFRAME_ELEMENT',"Map Frame")[0]
title.elementPositionX = mf.elementPositionX + (mf.elementWidth / 3.7)
title.elementPositionY = mf.elementPositionY + (mf.elementHeight / 0.98)
legend = lyt.listElements("LEGEND_ELEMENT", "Legend")[0]
legend.title = "Legend"
legend.elementPositionX = mf.elementPositionX + 7.7
legend.elementPositionY = mf.elementPositionY + 7.15
aprx = arcpy.mp.ArcGISProject("Current")
lyt = aprx.listLayouts("Layout_King")[0] mf = lyt.listElements("MAPFRAME_ELEMENT")[0]
bkmks = mf.map.listBookmarks("*")
for bkmk in bkmks:
mf.zoomToBookmark(bkmk)
lyt.exportToPDF(r"C:\arcGIS_Shared\Exports" + "\\" + bkmk.name + ".pdf")
Code Formatting the Basics++ would be useful to get the code into shape.
And what does your modelbuilder model do? perhaps it would be way easier to go whole code rather than a combo
I work for an urgent care company and this model creates a table for an urgent care center we have, along with the patient data for that center. The model then geocodes the addresses for the patients and then performs a summarize within using census blocks and the patient geocoded locations. The next step in the model (which I need help with) is a script tool that will create a layout for the center by referencing a bookmark and export it as a PDF.
Hopefully that clarifies what I'm trying to do.
I've read all the web pages on creating script tools, but it is still confusing to know when to use the GetParameterAsText and to know what data type to use when setting the tool parameters