description (rw)

advertisement
MXD, Maps, Layers
arcpy.mapping Classes
Without opening ArcMap, wouldn’t it be nice to
Get or update
MapDocument (MXD) properties
e.g. title, keywords, relative path, author, etc
DataFrame properties
e.g. name, coordinate system, etc.
Layer properties
e.g. name, visibility, data source, symbology, etc.
Layout element properties
e.g. size, position,
Add, remove, move, and update layers
Save MXD or LYR to earlier version for distribution
Build PDF map books
e.g. Export to PDF or insert into existing PDF
arcpy.mapping module
Arcpy.mapping Classes & Functions
4/36
MapDocument Properties
MapDocument – Class / Function
…
NOTE:
Disable background processing when using “CURRENT”
MapDocument Properties & Methods
Properties
activeDataFrame (ro)
activeView (rw)
author (rw)
credits (rw)
dataDrivenPages (ro)
dateExported (ro)
datePrinted (ro)
dateSaved (ro)
description (rw)
filePath (ro)
hyperlinkBase (rw)
relativePaths (rw)
summary (rw)
tags (rw)
title (rw)
(ro) = read-only
(rw) = read-write
Methods
deleteThumbnail()
findAndReplaceWorkspacePaths(
find_workspace_path,
replace_workspace_path,
{validate})
makeThumbnail ()
replaceWorkspaces(
old_workspace_path,
old_workspace_type,
new_workspace_path,
new_workspace_type,
{validate})
save ()
saveACopy(
file_name,
{version})
MapDocument.ActiveView
DataFrame Properties
DataFrame Properties & Methods
Properties
Methods
credits (rw)
panToExtent(extent)
description (rw)
zoomToSelectedFeatures()
displayUnits (rw)
elementHeight (rw)
elementPositionX (rw)
elementPositionY (rw)
elementWidth (rw)
extent (rw)
geographicTransformations (rw)
mapUnits (ro)
name (rw)
referenceScale (rw)
rotation (rw)
scale (rw)
spatialReference (rw)
time (ro)
type (ro)
Find DataFrames in MapDocument
Layer Properties
Find Layers in a DataFrame
i.e. All layers in all DataFrame’s
Layer Class / Function
Layer Class
Layer Function
Layer Properties & Methods
Properties
brightness (rw)
contrast (rw)
credits (rw)
datasetName (rw)
dataSource (rw)
definitionQuery (rw)
description (rw)
isFeatureLayer (ro)
isGroupLayer (ro)
isRasterizingLayer (ro)
isRasterLayer (ro)
labelClasses (rw)
longName (ro)
name (rw)
serviceProperties (ro)
showLabels (rw)
transparency (rw)
visible (rw)
workspacePath (ro)
Methods
findAndReplaceWorkspacePath(
find_workspace_path,
replace_workspace_path,
{validate})
getExtent(
{symbolized_extent})
getSelectedExtent(
{symbolized_extent})
replaceDataSource(
workspace_path,
workspace_type,
dataset_name,
{validate})
save ()
Layer =
saveACopy(
• .lyr file
file_name,
• Layer in
{version})
supports(
layer_property)
Selected properties
DataFrame
Finding a specific layer in a DataFrame
Working with Layers
arcpy.mapping
can’t
Create new map layers in DataFrame or .lyr files from
scratch
Change all layer properties in a script
arcpy.mapping
can
Add lyr file to DataFrame & change selected layer properties
dataSource, definitionQuery, etc. (see “(rw)” on previous slide)
Apply symbology from existing lyr files to existing layers in
DataFrame
Adding a Layer to a DataFrame
Managing Layers in a DataFrame
Function
Description
AddLayer
Add a layer to a data frame within a map document (.mxd) using
simple placement options.
AddLayerToGroup
Add a layer to a group layer within a map document (.mxd) using
simple placement options.
InsertLayer
Insert a layer at a specific location within a data frame or within a
group layer in a map document (.mxd).
MoveLayer
Move a layer to a specific location within a data frame or group layer in
a map document (.mxd).
RemoveLayer
Remove a single layer or group layer from a specific data frame. If
there is more than one layer that meets the criteria, then only the first
layer will be removed unless the script iterates through each layer in a
returned list.
UpdateLayer
Update all layer properties or just the symbology for a layer in a map
document (.mxd) by extracting the information from a source layer.
Fixing broken data sources
Methods for fixing broken data sources
MapDocument.findAndReplaceWorkspacePaths(find_workspace_path,
replace_workspace_path,
{validate})
MapDocument.replaceWorkspaces(old_workspace_path, old_workspace_type,
new_workspace_path, new_workspace_type,
{validate})
Layer.findAndReplaceWorkspacePath(find_workspace_path,
replace_workspace_path,
{validate})
Layer.replaceDataSource(workspace_path, workspace_type, dataset_name,
{validate})
TableView.findAndReplaceWorkspacePath(find_workspace_path,
replace_workspace_path,
{validate})
TableView.replaceDataSource(workspace_path, workspace_type, dataset_name,
{validate})
Fixing broken data source examples
Update all workspace paths to new folder and save to new mxd.
Update all workspace paths for all the mxd’s in a folder from local system to UNC paths
Page Layout elements
Getting Page Layout Elements
MapSurround Element
Text Element
RefreshActiveView() and RefreshTOC()
After changing the content of a
DataFrame or Page Layout …
arcpy.RefreshActiveView()
After changing items in the Table of
Contents (add, remove, move, update
layers) …
arcpy.RefreshTOC()
Exporting maps to images (jpg)
Exporting maps to PDF
PDFDocument’s
Creating/Opening PDF Documents
PDFDocument.appendPages Example
Working with arcpy.mapping scripts
Python Window has nice help … but pain for
defining/calling functions, debugging, etc.
Edit in PyScripter and
use Load …
Help is not perfect
Should be:
Find the MAPSURROUND_ELEMENT with the name "ScaleBar"
and move it's x position (relative to its anchor point) to the
center of the parentDataFrame. Save this change to the MXD.
Update: ESRI listened to me:
MapDocument, DataFrame, Layer
MapDocument
1:*
DataFrame
MapDocument.ActiveView
= “PAGE_LAYOUT”
DATAFRAME_ELEMENT
MAPSURROUND_ELEMENT
*
Layer
GRAPHIC_ELEMENT
PICTURE_ELEMENT
GRAPHIC_ELEMENT
LEGEND_ELEMENT
Download