arcpytips & tricks · 2016-07-25 · arcpy tips & tricks . clinton dow – geoprocessing...

14
ArcPy Tips & Tricks Clinton Dow – Geoprocessing Product Engineer @ Esri

Upload: others

Post on 25-May-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

ArcPy Tips & Tricks

Clinton Dow – Geoprocessing Product Engineer @ Esri

Page 2: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #1 – ArcPy in an IDEGIS from the comfort of your development environment

• Recommended IDEs- PyCharm- Python Tools for Visual

Studio- Spyder- Eclipse with PyDev- Wingware

Page 3: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #1 – ArcPy in an IDEGIS from the comfort of your development environment

• Integrated Development Environments- Debuggers- Test Frameworks- Coverage- PyLint/pycodestyle- Version Control Integration- Refactoring Tools- Virtual Environment Support- AutoComplete

Page 4: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip # 2 – Decouple Your Tool LogicToolboxes, Python Toolboxes, Interpreters, Command Line, Services…

• Multiple ways to create tools- ArcGIS Toolbox (.tbx)- Python Toolbox (.pyt)- Stand-alone Scripts (.py)- Interactive Python Window

• Test Driven Development• Distutils to create packaged code

SharingInstall into tools as needed

Page 5: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Decouple tool logicModularized Code Demo

Page 6: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Modularize tool logicDistutils demo

Page 7: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #3 – There Must Be A Better Way!Never Underestimate The Python Standard Library!

• Raymond Hettinger- Transforming Code Into Beautiful, Idiomatic Python

- https://www.youtube.com/watch?v=OSGv2VnC0go

- Beyond PEP 8 – Best Practices for Beautiful, Intelligible Code- https://www.youtube.com/watch?v=wf-BqAjZb8M

Page 8: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #4 – Comprehensions with CursorsUsing Pure Python Data Types to Work with Feature Classes

import arcpy

data_path = r"C:\Path\to\feature\class"

def cursor_list_comprehension(path):l = [row for row in arcpy.da.SearchCursor(path, ["SHAPE@", "Language"])]return l

def cursor_dictionary_comprehension(path):d = {row[0]: row[1:] for row in arcpy.da.SearchCursor(path, ["OID@", "MsgText", "Language"])}return d

def cursor_generator_comprehension(path):g = (row for row in arcpy.da.SearchCursor(path, ["SHAPE@", "Language"]))return g

def cursor_generator_statement(path):with arcpy.da.SearchCursor(path, ["OID@", "MsgText"]) as cursor:

for row in cursor:yield str(row[0])

Page 9: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Comprehensions with CursorsComprehensions Demo

Page 10: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #5 – Filter & Map with ComprehensionsUsing Pure Python Data Types to Work with Feature Classes

import arcpy

data_path = r"C:\Path\to\feature\class"

def cursor_comprehension_map(path):# Map function# m = map(lambda x: x[0] + 1.0, [row for row in arcpy.da.SearchCursor(path, ['OID@'])])

m = [row[0] + 1 for row in arcpy.da.SearchCursor(path, ['OID@'])]return m

def cursor_comprehension_filter(path):# Filter function# f = filter(lambda x: x ==1, [row for row in arcpy.da.SearchCursor(path, ['OID@'])])

f = [row for row in arcpy.da.SearchCursor(path, ['OID@']) if row[0] == 1]return f

Page 11: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #6 – Collections ExampleUsing Pure Python Data Types to Work with Feature Classes

from collections import Counterimport arcpy

data_path = r"C:\Users\clin8331\Desktop\Temp\tw.gdb\tw_lang_europe"

def count_field_occurances(data_path):c = Counter()with arcpy.da.SearchCursor(data_path, ["OID@", "Language"]) as cursor:

for row in cursor:c[row[1]] += 1

return c

Page 12: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Tip #7 - Help us make ArcPy better!

• GeoNet- http://geonet.esri.com- https://geonet.esri.com/community/developers/gis-developers/python

• ArcGIS Ideas- http://ideas.arcgis.com

• Conda Support Email- [email protected]

• ArcPy Café- https://arcpy.wordpress.com/

Page 13: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Conclusion

• ArcGIS- Industry-leading GIS Platform- Big push to move towards Python- Really big customers (NASA, ESA, Governments, Fortune 500 companies…)- Lots of opportunity for Python programmers

• ArcPy- Moving from Python 2 to 3- Conda support- Start in ArcGIS Pro if you’re learning

• We are hiring! Talk to me if you are interested in learning more.

Page 14: ArcPyTips & Tricks · 2016-07-25 · ArcPy Tips & Tricks . Clinton Dow – Geoprocessing Product Engineer @ Esri. Tip #1 – ArcPy in an IDE. GIS from the comfort of your development

Thank You!Clinton Dow - Contact Info

[email protected]://lnked.in/cdow