Top Banner

Click here to load reader

Python Map Automation - Beyond the Basics of · PDF fileCreate new MXD based on web map ... -Download sample scripts ... UC, Python

Aug 07, 2018




  • Technical Workshops |

    Esri International User Conference San Diego, California

    Python Map Automation Beyond the Basics of arcpy.mapping

    Jeff Barrette Jeff Moulds

    July 24, 2012

  • What is map scripting (arcpy.mapping)?

    A python scripting API that allows you to: - Manage map documents, layer files, and the content

    within them - Automate the exporting and printing of map documents - Automate map production and create PDF map books

    - Extend Data Driven Pages

    A simple way to publish mapping tasks to the server environment

  • Basic rules

    Reference an MXD using a path or current keyword - When using CURRENT

    - Always run in foreground - May need to refresh (e.g., RefreshActiveView\TOC)

    Uniquely name all the objects you want to reference Pre-author MXDs with all possible elements

    - Cant create new objects (e.g., north arrow, data frames) - Author the extra elements off the page - No "New Map" function, so keep an empty MXD available

    This is not a replacement for ArcObjects we are trying to draw a line in the sand

    Us You

    The Line

  • Jeff Barrette

    Sample Application

  • Whats new at 10.1

    Whats new Mapping Whats new for automating map workflows (

  • Whats new in 10.1: cloning elements

    You can now clone text and graphic elements This allows you to automate things like dynamic tables Example: vertl = arcpy.mapping.ListLayoutElements(

    mxd, GRAPHIC_ELEMENT, VerticalLine)[0]

    vertl.elementPositionX = xPos;

    vertl.elementPositionY = 4

    vert1.elementHeight = 3

    for line in range(1, numColumns+1):

    vert_clone = vertLine.clone("_clone")

    xPos = xPos + colWidth

    vert_clone.elementPositionX = xPos

  • Whats new in 10.1: symbology classes

    Layer.symbologyType r/o : string Returns:


    Layer.symbology r/o : Symbology Class Example:

    if lyr.symbologyType == GRADUATED_COLORS: lyr.symbology.numClasses = 10 lyr.symbology.valueField = POP2007

    General notes, can NOT change: - Symbology class - Individual symbols use arcpy.mapping.UpdateLayer - Classification methods

  • Deployment - arcpy.mapping and Python Add-Ins

    ArcGIS 10.1 Python Add-Ins - Add-in deployment of mapping

    tools - Mechanism for deploying ArcMap

    customizations - Online help: - Take mouse input, respond to app

    events - FinishDrawing, DPP PageChange,


    Python Add-in Wizard Download from:

    Related Session: Migrating your VBA applications to Desktop Add-ins

  • Whats new in 10.1: legend items

    A referenced legend item in a .style file can then be used to update already existing legend items in a layout.

    Example: mxd = arcpy.mapping.MapDocument("current")

    legend = arcpy.mapping.ListLayoutElements(mxd, "LEGEND_ELEMENT")[0]

    styleItem = arcpy.mapping.ListStyleItems(

    "USER_STYLE", "Legend Items", "MyNewStyle")[0]

    for lyr in legend.listLegendItemLayers():

    legend.updateItem(lyr, styleItem)

  • Authoring geoprocessing tasks with Python scripts

    Things to consider help topic: Before import arcpy path = rC:\Project\maps ... arcpy.mapping.ExportToPDF(mxd, path + "\\output.pdf")

    After import arcpy path = arcpy.env.scratchWorkspace

    ... arcpy.mapping.ExportToPDF(mxd, path + "\\output.pdf") arcpy.SetParameterAsText(1,path + "\\output.pdf")

    Related Session: Geoprocessing with ArcGIS for Server

  • New functions in 10.1 for server publishing and printing

    - CreateMapSDDraft - Automate publishing map documents to map services

    Map document arcpy.mapping Map service

    - ConvertWebMapToMapDocument - Use with the ArcGIS web APIs for advanced web map printing


    Web application High-quality output (e.g. PDF) arcpy.mapping

  • Server printing out-of-the-box

    ArcGIS Server 10.1 and the ArcGIS web APIs support effortless web map printing via print services.

    - Out-of-the-box print service and template maps ship with Server - Print services sample:

  • High quality server printing with arcpy.mapping

    Build customized versions of the new print services built into 10.1 server

    New arcpy.mapping method for converting Web Maps to MapDocuments: ConvertWebMapToMapDocument ()

    ConvertWebMapToMapDocument (webmap_json, {template_mxd}, {notes_gdb}, {extra_conversion_options})

  • High quality server printing with arcpy.mapping

    Convert the web map to a map document Full capabilities of arcpy.mapping on the document

    - Modify content (e.g. replace service layers with high quality local vector data)

    - Export using custom options - Export data driven pages - Export to PDF and insert additional pages

    Return the output file (PDF, PNG, etc.) or map book Online help and examples


    Related Session: Supporting High-Quality Printing in Web Applications with ArcGIS 10.1 for Server

  • Demo: High quality server printing with arcpy.mapping

    Map service tiled cache Vector data

    Print high quality vector layers instead of tiled image cache of service layers Vector layers will be staged in template map documents

  • Demo: High quality server printing with arcpy.mapping Reference the custom arcpy.mapping based GP service

  • Demo: High quality server printing with arcpy.mapping

    Arcpy.mapping code used in custom geoprocessing service

    Get web map JSON

    Export PDF

    Create new MXD based on web map

    Get template MXD

    Remove service layers

    Output file of job

  • High quality server printing with arcpy.mapping

    Use the web help - updated samples and discussion - two new tutorials:

    - Basic high-quality web map printing:

    - Advanced web map printing:

  • Publishing map services with arcpy.mapping

    arcpy.mapping.CreateMapSDDraft Workflow from map document to map service Use python for:

    - Publishing automated analysis results - Scheduled service upgrades - Batch migration from 10.0 to 10.1

    Create SDDraft and edit XML



    Prepare MXDs (arcpy.mapping)


    Stage and Publish Map Service

    (arcpy server GP tools) arcpy.StageService_server() arcpy.UploadServiceDefinition_server()

  • Publishing map services with arcpy.mapping

    Sample: CreateMapSDDraft (arcpy.mapping)

    Reference a MXD

    Stage and publish Map Service

    Create and analyze SDDraft for errors

    Online help:

  • Publishing other service types with python

    Two new functions coming at 10.1 sp1: - arcpy.CreateGPSDDraft()

    - Create geoprocessing services with Python - arcpy.CreateGeocodeSDDraft()

    - Create geocoding services with Python

  • Resources available

    ArcGIS Resource Center (web help) -

    - Alphabetical lists of classes and functions - Detailed discussions - Multiple sample scripts for each class and function topic

    ArcGIS Resource Center (forums) - Map Automation: - Python:

    ArcGIS Online arcpy.mapping / Map Automation group -

    - Download sample scripts

  • Related sessions

    Wednesday 8:30-9:45 Geoprocessing with ArcGIS for Server (Room 4) 8:30-9:45 Introduction to arcpy.mapping (Room 6D) 8:30-9:45 Supporting High-Quality Printing in Web Applications

    for ArcGIS 10.1 for Server (Room 7A/B) 10:15-11:30 Building Map Books (Room 6F) Thursday 8:30-9:45 Geoprocessing with ArcGIS for Server (Room 9) 8:30-9:45 Introduction to arcpy.mapping (Room 8) 8:30-9:45 Supporting High-Quality Printing in Web Applications

    for ArcGIS 10.1 for Server (Room 7A/B) 10:15-11:30 Migrating your VBA Applications to Desktop Add-ins

    (Room 6A) 3:15-4:30 Building Map Books (Room 8)

  • Thank you for attending

    Have fun at UC2012

    Open for Questions

    Please fill out the evaluation:

    First Offering ID: 624

    Second Offering ID: 1796