Python Programming for ArcGIS: Part I

31
Python Programming for Arcgis 1 Daniel Sheehan [email protected], [email protected] 9:30AM-12:30PM January 14, 2015 This class was originally developed by David Quinn and taught by David and Daniel in IAP 2010 and 2011.

Transcript of Python Programming for ArcGIS: Part I

Page 1: Python Programming for ArcGIS: Part I

Python Programming for Arcgis 1

Daniel Sheehan [email protected], [email protected]

9:30AM-12:30PM January 14, 2015

This class was originally developed by David Quinn and taught by David and Daniel in IAP

2010 and 2011.

Page 2: Python Programming for ArcGIS: Part I

Arcgis 10.2.2 and Python

• You need a normal install of Arcgis 10.2.2. This install includes Python 2.7 and includes the IDLE interface, which we will use.

• Other installs of Pythons will not have the ‘arcpy’ module and will not work.

Page 3: Python Programming for ArcGIS: Part I

Download data for workshop

• http://web.mit.edu/dsheehan/www/ dataForPythonIAP2015.zip

• http://web.mit.edu/dsheehan/www/ PythonProgrammingforArcgis.pdf

Page 4: Python Programming for ArcGIS: Part I

Goals for the workshop

• Learning enough Python to

– Access Arcgis commands through Python

– Access individual records from attribute table

– Acccess individual geometries for use in geoprocessing

• Develop the ability to record and document your geoprocessing

Page 5: Python Programming for ArcGIS: Part I

Outline

• Introduction to Python and Arcgis

• Programming Principles and Modules

• Model Builder

• Reading and Writing data

Page 6: Python Programming for ArcGIS: Part I

Schedule

Working with Python and geoprocessing tools today, working with attribute tables and individual geometries tomorrow

Page 7: Python Programming for ArcGIS: Part I

Python

Python is a language that lets you work more

quickly and integrate your systems more

effectively 1

Documentation at http://docs.python.org and look

for Python 2.7 (used in Arcgis 10.2.2)

1 http://www.python.org

Page 8: Python Programming for ArcGIS: Part I

Python + Arcgis

• Python can interact with Arcgis and be used to repeat many types of analyses.

• Why Python?

• It is an integral part of Arcgis

• Easy to read syntax

• Large user community

• Useful for scripts to control other programs

Page 9: Python Programming for ArcGIS: Part I

How does Python work with Arcgis

• At Arcgis 10.2.2

– Fully integrated into Arcgis

– Largely Geoprocessing functions

• Automated mapping is not possible, yet

Page 10: Python Programming for ArcGIS: Part I

Logistics

• We will be using the IDLE programming environment

• Windows: START -> Programs -> Arcgis -> Python 2.7 -> IDLE

• We are using Arcgis 10.2.2 on lab computers and assume that you are using 10.2.2 if you are using your own laptop

Page 11: Python Programming for ArcGIS: Part I

Learn by doing

• Try every line of code in the slides

• Create a new file for each different slide to create a record for yourself (optional)

• Use the Python Help and Arcgis Help and ask questions

Page 12: Python Programming for ArcGIS: Part I

Programming concepts

• Variables

• Control Structures (IF statements and FOR loops)

• Functions

Python is case sensitive and reads whitespace for defining programming blocks – use space bar, not tabs.

Page 13: Python Programming for ArcGIS: Part I

The Print Function and Strings

# this is a comment

print “hello world”

“”” Alternative

Commenting

Style “””

Page 14: Python Programming for ArcGIS: Part I

The Print function and Strings

# this is a comment

print (“hello world”)

# this is a variable that contains a string

name = “Daniel”

print (name)

Page 15: Python Programming for ArcGIS: Part I

Integers and Floats

# declare variables

int_sample = 10

float_sample = 10.0

# printing variables

# cast non-string variable as a string using str()

print “The value of this integer is: “ + str(int_sample)

print “The value of this float is: “ + str(float_sample)

Page 16: Python Programming for ArcGIS: Part I

if statement

x = 2

# Condition checks if statement is true

if x == 1:

print ‘x is 1!’

Page 17: Python Programming for ArcGIS: Part I

if / elif / else statement

x = 2 # Condition checks if statement is true if x == 1: print ‘x is 1!’ elif x == 2: print ‘x is 2!’ else: print ‘x is not known’

Page 18: Python Programming for ArcGIS: Part I

for loop

for i in range(3):

# convention is to use 4 spaces to indent

# python reads whitespace at the beginning of a line

print i

Python, like most programming languages, uses arrrays that are

zero based.

Page 19: Python Programming for ArcGIS: Part I

while loop

# define j

j = 1

# ‘while’ less than some condition

while j < 3:

print j

# increment j

j += 1

Page 20: Python Programming for ArcGIS: Part I

Three ways to access a folder

# Accessing a folder

path = “C:\\folderName\\”

path = “C:/folderName/”

path = r”C:\folderName\”

Page 21: Python Programming for ArcGIS: Part I

Importing Modules

Use the import command: # count the number of files in a directory import os path = “c:\\...” files = os.listdir(path) print len(files) A module is a list of Python programs that can be accessed. Commonly used modules are os, sys, glob.

Page 22: Python Programming for ArcGIS: Part I

glob

import glob # use the glob module

path = “C:\\Users\\dsheehan\\desktop\\Python2015current\\”

# loop through all files

ListOfFiles = glob.glob(path + “*”)

for i in ListOfFiles:

print i

Try replacing ‘*’ with ‘*.shp’

Page 23: Python Programming for ArcGIS: Part I

Importing the Arcgis module

At 10.2.2

import arcpy

Page 24: Python Programming for ArcGIS: Part I

Exercise 1: Reading folder contents

• Download zip file from http://web.mit.edu/dsheehan/ dataForPythonIAP2015.zip and unzip

• Using the glob module, print out:

– a list of all of the files

– a list of shapefiles

Page 25: Python Programming for ArcGIS: Part I

Model Builder

Page 26: Python Programming for ArcGIS: Part I

Exercise 2: ModelBuilder

Using ModelBuilder:

• Buffer interstateHighways.shp (500 meters)

– Units of data is meters

• Clip schools.shp with buffer

• Export model as ‘Python’

Page 27: Python Programming for ArcGIS: Part I

Catching exceptions

try:

<your code>

except:

print arcpy.GetMessages()

raise

Page 28: Python Programming for ArcGIS: Part I

Overwriting files

• from arcpy import env

• env.overwriteOutput = True

Page 29: Python Programming for ArcGIS: Part I

Exercise 3: Convert ModelBuilder Code into a loop

• Using the code from ModelBuilder

• Iterate through a loop 5 times, buffering 500 meters, 1000, etc meters

• Intersect cambridgeSchools.shp with buffer and make 5 new pairs of shapefiles

Page 30: Python Programming for ArcGIS: Part I

Writing to a text file

# Create a file (‘w’ means create a new file, ‘a’ appends to an existing file, will create it if it doesn’t already exist)

f = open(“C:\\users\\dsheehan\\test.txt”, ‘w’)

# Write to a file

f.write(“Contents of file” + “\n”)

f.flush() # flushes buffer

f.close() # closes file

Page 31: Python Programming for ArcGIS: Part I

Exercise 4: File Manipulation

Create a folder called “temp_folder”:

• Make 5 text files in this folder called File1.txt, File2.txt, etc.

• Write a string in each file