Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject...
Transcript of Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject...
![Page 1: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/1.jpg)
Python: Working with Feature Data
David WynneGhislain Prince
March 8–11, 2016 | Palm Springs, CA
Esri Developer Summit
![Page 2: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/2.jpg)
Abstract
• Join us as we discuss working with feature data in ArcGIS using ArcPy and the data
access module (arcpy.da). Highlights and demonstrations will include getting the
best performance out of cursors, editing data, working with NumPy arrays to extend
analysis, managing geodatabase objects (including domains, subtypes, versions
and replicas), and easily accessing data across folders and geodatabases.
Cursors Edit sessions
Iterating over data
3rd party libraries (NumPy, pandas)
![Page 3: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/3.jpg)
Cursors
• Cursors provide record-by-record access- Basic necessity for many workflows
1. arcpy.da cursors (added at 10.1)2. ‘Classic’ cursors (date back to 9.0)
• Which one? Unless you have legacy code you don’t want to update, default to arcpy.da cursors
- Superior performance
SearchCursor Read-only accessUpdateCursor Update or delete rowsInsertCursor Insert rows
![Page 4: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/4.jpg)
Cursors
• arcpy.da cursors use lists and tuples- Row values are accessed by index
• Different from ‘classic’ cursors- Work with row objects- Row values are handled using setValue,
getValue properties
![Page 5: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/5.jpg)
with statements
• arcpy.da Cursors support with statements
• with statement- Provide clarity- Other benefits: such as allowing edits on multiple tables in the same workspace
![Page 6: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/6.jpg)
Fields and tokens
• For best performance, use only those fields you need
• Tokens can be also be used- Get only what you need : asking for full
geometry is expensive
![Page 7: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/7.jpg)
esriurl.com/10618Cursors
![Page 8: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/8.jpg)
More on cursors
• Row values are accessed by index• Good for performance, not as good
for code readability
• Alternatively, can convert to a dictionary on the fly
- Access by name
![Page 9: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/9.jpg)
Editor class
• Uses edit sessions and edit operations to manage transactions• Edits are temporary until saved and permanently applied• Can quit an edit session without saving changes
• When do you need to use?- To edit feature classes that participate in a…
- Topology - Geometric network
- Versioned datasets in ArcSDE geodatabases - Some objects and feature classes with class extensions
![Page 10: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/10.jpg)
Editor using a with statement
• Editor supports with statements- Handle appropriate start, stop and abort calls for you
Open an edit session and start an edit operationException—operation is aborted, and
edit session is closed without saving
No exceptions—stop the operation and save and close the edit session
![Page 11: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/11.jpg)
Editor class
• Editor class also includes methods for working with edit sessions and operations
Editor methodsstartEditing({with_undo},
{multiuser_mode})stopEditing(save_changes)startOperation()stopOperation()abortOperation()undoOperation()redoOperation()
![Page 12: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/12.jpg)
esriurl.com/10618
Editing with arcpy.da.Editor
![Page 13: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/13.jpg)
Iterating over data
• Many processes require cataloging or iterating over data• Common theme are arcpy list functions
- Over 30 across arcpy and modules
• arcpy.da list functions:
ListDomains Lists the attribute domains belonging to a geodatabase
ListFieldConflictFilters Lists the fields in a versioned feature class that have field conflict filters applied
ListReplicas Lists the replicas in a workspaceListSubtypes Return a dictionary of the subtypes for a
table or feature classListVersions List the versions in a workspace
![Page 14: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/14.jpg)
Walk
• Traverse a directory structure to find ArcGIS data types• Returns a tuple of three: path, path names, and filenames
• Similar pattern to Python’s os.walk• Comparison:
- Walk: http://esriurl.com/5931 vs. the hard way: http://esriurl.com/5932
![Page 15: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/15.jpg)
esriurl.com/10618Iterating over data
![Page 16: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/16.jpg)
NumPy
• NumPy is a 3rd party Python library for scientific computing- A powerful array object - Sophisticated analysis capabilities
• arcpy.da supports converting tables and feature classes to/from NumPy
• RasterToNumPyArray / NumPyArrayToRaster- Added at 10.0 to support converting rasters to and from numpy arrays
![Page 17: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/17.jpg)
NumPy functions
• arcpy.da provides additional support for tables and feature classes
FunctionFeatureClassToNumPyArray Convert a feature class to an
arrayTableToNumPyArray Convert a table to an arrayNumPyArrayToFeatureClass Convert an array to a Feature
ClassNumPyArrayToTable Convert an array to a TableExtendTable Join an array to a Table
![Page 18: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/18.jpg)
Export to NumPy
• Can convert tables and feature classes into numpy arrays for further analysis
![Page 19: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/19.jpg)
Import from NumPy
• Take the product of your work in numpy and export it back to ArcGIS
• Need to output polygons, lines, multipoints? http://esriurl.com/5862
![Page 20: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/20.jpg)
pandas
• pandas is 3rd party library known for high-performance, easy-to-use data structures and analysis tools
• Added to our stack at 10.4• Added to Pro 1.1 (and to the external Python at 1.0)
![Page 21: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/21.jpg)
esriurl.com/10618
arcpy, numpy and pandas
![Page 22: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/22.jpg)
Please Take Our Survey! – No more memorizing Session ID numbers!!
Download the Esri Events app and find your event
Select the session youattended
Scroll down to the “Feedback” section
Complete Answers,add a Comment,
and Select “Submit”
![Page 23: Python: Working with Feature Data - Esri...Python: Working with Feature Data Author Esri Subject 2016 Esri Developer Summit--Presentation Keywords 2016 Esri Developer Summit--Presentation,](https://reader031.fdocuments.us/reader031/viewer/2022013021/5eced5759515787d420062c1/html5/thumbnails/23.jpg)