advanced map automation with python -...
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/14.jpg)
![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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/16.jpg)
![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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/21.jpg)
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 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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/23.jpg)
updateConnectionProperties()
• Method on:
- ArcGISProject class
- LayerFile class
- Map class
![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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/25.jpg)
![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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/27.jpg)
Simple
Graduated
Colors
Graduated
Symbols
Unique
Value
Re
nd
ere
r Typ
es
Symbology RendererLayer
![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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012918/5e459216b74ae045950a7b26/html5/thumbnails/32.jpg)
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