automating gis with python spring nearc
DESCRIPTION
AUTOMATING GIS WITH PYTHON Spring NEARC. Kristina Grace GIS Analyst May 22, 2012. Topics. Broadband Availability and MassBroadband 123 maps Create and document tools made from Python scripts Script examples error handling tool parameters check if path exists where clause - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/1.jpg)
Kristina GraceGIS Analyst
May 22, 2012
AUTOMATING GIS WITH PYTHONSpring NEARC
![Page 2: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/2.jpg)
2
Topics
• Broadband Availability and MassBroadband 123 maps• Create and document tools made from Python scripts• Script examples
– error handling– tool parameters– check if path exists– where clause– calendar object – ArcToolbox: Conversion and Data Management– turn fields on and off in tables views
• Online build phase map
massbroadband.org
![Page 3: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/3.jpg)
3
Broadband Availability Map
http://mapping.massbroadband.orgx
massbroadband.org
![Page 4: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/4.jpg)
4
Cable Availability Map
massbroadband.org
![Page 5: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/5.jpg)
5
MassBroadband 123
massbroadband.org
![Page 6: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/6.jpg)
Create And Document Tools
6
1. Create script• Python IDLE• use TEMPLATE.py
2. Add scripts to ArcToolboxes• add to tool or toolbox
3. Add description to tools• edit metadata
– keywords– summary– parameter description
massbroadband.org
![Page 7: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/7.jpg)
massbroadband.org7
Error Handling
• processes inside try• error message
formatting inside except
msgs = 'GP ERRORS:\n' + arcpy.GetMessages(2)
arcpy.GetMessages(2)
![Page 8: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/8.jpg)
8
Delete Files And Feature Classes
arcpy.Delete_management(data_element)
arcpy.Delete_management(CWR3LogTbl)
massbroadband.org
![Page 9: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/9.jpg)
9
Check If Path Exists
• Path supported by ArcGIS:
arcpy.Exists("")
• Path not supported by ArcGIS:
os.path.exists("")
if arcpy.Exists(dataset):
# do something
if arcpy.Exists(FC): arcpy.Delete_management(FC)
massbroadband.org
![Page 10: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/10.jpg)
10
Tool Parameters
Param = arcpy.GetParameterAsText(0)
dateChangeParam = arcpy.GetParameterAsText(3)
massbroadband.org
![Page 11: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/11.jpg)
11
Tool Parameters
massbroadband.org
![Page 12: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/12.jpg)
Extract Data For Cost Analysis
12 massbroadband.org
![Page 13: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/13.jpg)
13
Export Feature Classes
arcpy.FeatureClassToFeatureClass_conversion(FC, out_path, out_name)
arcpy.FeatureClassToFeatureClass_conversion(MB123NetworkDSParam + '\\CAI', workGDBParam, CWR3CAIFC)
massbroadband.org
Extract Data For Cost Analysis Script
![Page 14: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/14.jpg)
14
Where Clause
• String variable• Field name needs to be surrounded by quotes• Used in
• arcpy.SelectLayerByAttribute_management()• arcpy.MakeTableView_management()
whereClause = ' "fieldName" >= ' + variable
whereClause = ' "DateChange" >= ' + dateChange
massbroadband.org
![Page 15: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/15.jpg)
15
Where Clause
where_clause = "IncInBuild <> 'N' and IncInBuild <> 'W'"
dateChange = 'date \'' + year + '-' + month + '-' + day + '\''whereClause = ' "DateChange" >= ' + dateChange
massbroadband.org
Extract Data For Cost Analysis Script
![Page 16: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/16.jpg)
16
Turn Fields On And Off
fieldinfo.addField (field_name, new_field_name, visible, split_rule)
fieldinfo.addField(field.name, field.name, 'HIDDEN', '')
massbroadband.org
Extract Data For Cost Analysis Script
![Page 17: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/17.jpg)
17
Join Tables And Feature Classes
arcpy.AddJoin_management(in_layer_or_view, in_field, join_table, join_field, {join_type})
arcpy.AddJoin_management(CWR3LogTblView, "ID",workGDBParam + "\\" + CWR3CAITbl, "CAI_ID",'KEEP_COMMON')
massbroadband.org
Extract Data For Cost Analysis Script
![Page 18: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/18.jpg)
18
Add Fields To Feature Classes
arcpy.AddField_management(table, field_name, {field_type})
arcpy.AddField_management(workGDBParam + "\\" + CWR3LogTblJoinFiber, "Cost", "DOUBLE")
massbroadband.org
Extract Data For Cost Analysis Script
![Page 19: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/19.jpg)
19
Export file gdb tables to DBF
arcpy.CopyRows_management(in_rows, out_table)
arcpy.CopyRows_management(table, file.dbf)
massbroadband.org
Extract Data For Cost Analysis Script
![Page 20: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/20.jpg)
20
Data Archiving Tool
• Set up archive file gdb ahead of time• Set today’s date• Add today’s date to the output feature class when using
Feature Class to Feature Class conversion tool
massbroadband.org
![Page 21: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/21.jpg)
21
Update Maps Tool
massbroadband.org
![Page 22: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/22.jpg)
22
Replace Data Source
CAILayer.replaceDataSource(archiveGDBParam, "FILEGDB_WORKSPACE", 'CAI_' + now.strftime('%Y%m%d'))
layer_name.replaceDataSource(gdb, "FILEGDB_WORKSPACE", new source feature class)
Update Maps Script
massbroadband.org
![Page 23: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/23.jpg)
23
Update Map Elements
massbroadband.org
![Page 24: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/24.jpg)
24
Change Date On Map
mapDate = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "MapDate")[0]
mapDate = arcpy.mapping.ListLayoutElements(map_document, {element_type}, {wildcard})[0]
Update Maps Script
massbroadband.org
![Page 25: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/25.jpg)
25
calendar Object
Update Maps Script • methods - month_name[]• - day_name[]
str(calendar.month_name[int(monthParam)])
calendar.month_name[int(variable)]
massbroadband.org
![Page 26: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/26.jpg)
26
Multi-Map Export Tool
massbroadband.org
![Page 28: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/28.jpg)
28
Online Build Phase Map
massbroadband.org
![Page 29: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/29.jpg)
29
Build Phase Tracker
massbroadband.org
![Page 30: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/30.jpg)
Progress Statistics Tool
30 massbroadband.org
![Page 31: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/31.jpg)
31
Statistics Analysis
arcpy.Statistics_analysis(asset,buildPhaseSJ + "_stats",[[assetPrimaryKey,"COUNT"]], BuildPhaseField)
arcpy.Statistics_analysis(input_data,output_table,[[field,"COUNT"]], case_field)
massbroadband.org
Online Build Phase Tracker Script
![Page 32: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/32.jpg)
32
Statistics Analysis Output
massbroadband.org
Online Build Phase Tracker Script
![Page 33: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/33.jpg)
33
SearchCursor Method
rows = arcpy.SearchCursor(buildPhaseSJ + "_stats")
rows = arcpy.SearchCursor(table_name)
massbroadband.org
Online Build Phase Tracker Script
![Page 34: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/34.jpg)
34
getValue of Row
for row in rows:
if row.getValue(myField.name) == "Build Phase 1":
bp1 = row.getValue(statsField.name)
row.getValue(field.name)
massbroadband.org
Online Build Phase Tracker Script
![Page 35: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/35.jpg)
35
Replace Text in File
fileread = open(JSFileTEMPLATE, 'r')
filetext = fileread.read()
filetext = filetext.replace("BP1CCT",str(bp5))
text.replace(placeholder,new_number)
massbroadband.org
Online Build Phase Tracker Script
![Page 36: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/36.jpg)
36
Review
• Met Python• Learned how to create and document tools
from Python scripts• Saw Python script examples, such as defining
variables and parameters, handling errors, exporting datasets, adding fields, getting field values, summamrizing data and using extra modules such as calendar and os
• Saw Output example online
massbroadband.org
![Page 37: AUTOMATING GIS WITH PYTHON Spring NEARC](https://reader036.vdocument.in/reader036/viewer/2022081422/5681618a550346895dd1260a/html5/thumbnails/37.jpg)
37
Resources
• www.massbroadband.org• http://www.broadbandmap.gov • www.geospatialtraining.com• http://docs.python.org/library
• E-mail: [email protected]
massbroadband.org