Top Banner
Advanced Map Automation with Python Brooke Reams
32

Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Jan 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Advanced Map Automation with PythonBrooke Reams

Page 2: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Topics

• Use Cases

• Guidelines

• ArcMap vs. Pro

• Demos

- Import Documents to ArcGIS Pro

- Update Join Table Primary Key

- Update Data Sources

- Modify symbology

Page 3: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map Automation Use Cases

map automation

• Generate report

- Layers, data sources, extents

• Update or replace data sources

• Find/replace text/picture elements

• Automate map creation for

daily/weekly situation reports

- Hurricanes, wildfires, flooding, etc

• Create a map book

- Map pages + title page, table of

contents, tabular info, etc

Page 4: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map Automation Guidelines

Must work with

*existing* maps

and/or layer files

"CURRENT"

or

Reference a project

on disk or use

CURRENT key word

Author all objects

with a unique name

– use wildcard

Page 5: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map Automation – ArcMap vs. Pro

• Objects (and concepts)

• Sub Module Name

• API Design

• Python Version

Page 6: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Objects (and concepts)

Map Document

ArcMap

2D Only

Data Frame

Single Layout

Pro

ArcGIS Project

2D & 3D

Multiple Layouts

Map Frame

Map

Page 7: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map

ArcGIS Project

Page 8: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map

Frame

Layout

Map

Frame

ArcGIS Project

Page 9: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Sub Module Name

Pro

arcpy.mp

ArcMap

arcpy.mapping

Page 10: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

arcpy.mp API

• Get map

layer’s data

source

Page 11: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

arcpy.mp

• Get map layer’s data source

# Create ArcGISProject objectaprx = arcpy.mp.ArcGISProject("CURRENT")

# Get Government Services mapmap = aprx.listMaps("Govern*")[0]

# Get Police Stations layerlyr = map.listLayers("Police*")[0]

# Print layer's data sourceprint (lyr.dataSource)

D:\DEMO\LGIM.gdb\PoliceStations

Page 12: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

API Design

Functions

ArcMap Pro

Methods

Page 13: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Python Version

Pro

Python 3.x

ArcMap

Python 2.x

Page 14: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data
Page 15: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Map Automation – ArcMap vs. Pro

• Objects (and concepts)

• Sub Module Name

• API Design

• Python Version

Page 16: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data
Page 17: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Import Documents to ArcGIS Pro

.mxd

.3dd.sxd

.aprx.aprx

.aprx

.aprx

Import existing documents to Pro with arcpy.mp

• importDocument – method of the ArcGIS Project Class

Page 18: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Import

Documents to

ArcGIS Pro

Image Source: http://www.newsheadlines.com.ng

Page 19: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

connectionProperties

• Property

• Layer & Table Classes

• Read/Write

• Returns Dictionary

import arcpy, pprint

aprx = arcpy.mp.ArcGISProject("D:\Demo\TaxMap.aprx")map = aprx.listMaps("Parcel Map")[0]lyr = map.listLayers("Parcels")[0]pprint.pprint(lyr.connectionProperties)

>>> {'connection_info': {'database': 'C:\\Data\\LocalGovernment.gdb'},

'dataset': 'Parcels',

'workspace_factory': 'File Geodatabase'}

.shp

.gdb

.sde

Workspace Type

Joins & Relates

Page 20: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

connectionProperties

• File Geodatabase

• SDE Geodatabase

>>> {'connection_info': {'authentication_mode': 'OSA',

'database': 'LocalGovernment',

'db_connection_properties': 'breams\\sqlexpress',

'dbclient': 'sqlserver',

'instance': 'sde:sqlserver:breams\\sqlexpress',

'server': 'breams',

'version': 'dbo.DEFAULT'},

'dataset': 'LocalGovernment.DBO.Parcels',

'workspace_factory': 'SDE'}

>>> {'connection_info': {'database': 'C:\\Data\\LocalGovernment.gdb'},

'dataset': 'Parcels',

'workspace_factory': 'File Geodatabase'}

Page 21: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

connectionProperties

• Layer that participates in a join

>>> {'cardinality': 'one_to_many',

'destination': {'connection_info': {'database': 'C:\\DATA\\LocalGovernment.gdb'},

'dataset': 'ParkRecComment',

'workspace_factory': 'File Geodatabase'},

'foreign_key': 'FACILITYID',

'join_forward': False,

'join_type': 'left_outer_join',

'primary_key': 'FACILITYID',

'source': {'connection_info': {'database': 'C:\\DATA\\LocalGovernment.gdb'},

'dataset': 'Park',

'workspace_factory': 'File Geodatabase'}}

• Layer that does NOT participate in a join

>>> {'connection_info': {'database': 'C:\\Data\\LocalGovernment.gdb'},

'dataset': 'Parcels',

'workspace_factory': 'File Geodatabase'}

Page 22: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Update Primary

Key

Image Source: https://blog.malwarebytes.com

Page 23: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

updateConnectionProperties()

• Method on:

- ArcGISProject class

- LayerFile class

- Map class

Page 24: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Update Data

Sources

Image Source: https://blog.malwarebytes.com

Page 25: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data
Page 26: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Symbology with arcpy.mp

• New at Pro 1.4

• Change layer renderer type:

- GraduateColorsRenderer

- GraduatedSymbolsRenderer

- SimpleRenderer

- UniqueValueRenderer

• Change renderer properties

• Change symbols!!!

Page 27: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Simple

Graduated

Colors

Graduated

Symbols

Unique

Value

Re

nd

ere

r Typ

es

Symbology RendererLayer

Page 28: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Modify

Symbology

Image Source: http://www.colorbrewer.com

Page 29: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Review

• Map automation guidelines

• Migrating from ArcMap to Pro

• Import Documents to Pro

• Update connection properties

• Modify symbology

Page 30: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Questions?

Page 31: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Please Take Our Survey on the Esri Events App!

Select the session

you attended

Scroll down to find

the survey

Complete Answers

and Select “Submit”

Download the Esri Events

app and find your event

Page 32: Advanced Map Automation with Python - Esriproceedings.esri.com/library/userconf/fed17/papers/fed_43.pdf · Map Automation Use Cases map automation •Generate report-Layers, data

Print Your Certificate of Attendance

Print stations located in the 140 Concourse

Monday

12:30 PM – 6:30 PM

GIS Solutions Expo,

Hall B

5:15 PM– 6:30 PM

Expo Social,

Hall B

Tuesday

10:45 AM– 5:15 PM

GIS Solutions Expo,

Hall B

6:30 PM– 9:30 PM

Networking Reception,

Smithsonian National Air

and Space Museum