what is python? python for the non-scripter python ... for the non-scripter.pdf · python for the...
TRANSCRIPT
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 1
1
Python for the Non-Scripter
2
Presentation Overview
• What is Python?
• Python Essentials
• Extra Tidbits
• Using Python in ArcMap
• Label Expression
• Field Calculator
Python For the Non-Scripter
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 2
3
And how does it fit into ArcGIS?
What is Python?
4
Python
Programming language
Object-oriented
Started in early 1990s by Guido van Rossum
Named after Monty Python’s Flying Circus
Free
Quick to learn
Easy to code
Easy to read
Many users (lots of help)
What is Python?
Why Do We Love It?
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 3
5
Python and ArcGIS Desktop
Python is infiltrating ArcMap
– More with each release
Label Expression
Field Calculator
Python Window
6
Python Essentials
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 4
7
Python – the Essentials
Keywords
• Special instructions
• Case sensitive
• Shown in blue in Python window
• Examples:• print
•import
• if
• not
• and
Variables
• Hold a value
• Set on the fly
• Value sets type
• Case sensitive
• No keywords
• Start with letter
• No special characters
Functions
• Action
• Multiply
• Concatenate
• Extract
• Upper case
• Split a list
• HINT:
• Variables are objects
8
Python Window
Command line window in ArcMap
Great place for practicing Python code (and getting help)
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 5
9
Data Types for Variables
VARIABLE
Boolean
• True
• False
String
Number
• Integer
• Float
String
– Text value
– Double quotes (“O&G”)
Number
– Integer (whole number)
– Float (decimal)
Boolean
– True (1)
– False (0)<varname> = <value>
10
Python Syntax: Numbers
Integers and floats
Variable assignment determines type
+ - * /
Don’t forget operator precedence:
– Parentheses
– Exponents
– Multiplication, division
– Addition, subtraction
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 6
11
Python Syntax: Strings
Surrounded by quotes
– Double “”
– Single ‘’
Backslash (\) is a special character
– Escape
12
String Tools
Length
– len()
Concatenation
– +
Repetition
– *
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 7
13
Functions
Typical format: <variable>.<function>()
– “hello”.upper()
Use dir(<object>) to get a list of functions
14
Extra Tidbits
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 8
15
Directory Paths
Cannot use single backslashes in a directory path
Use:
– \\
– /
– r
“C:\\Student\\ICTPython”
“C:/Student/ICTPython”
r“C:\Student\ICTPython”
16
String Indexing
Square brackets [ ]
Index returns single character
0-based
Negative counts backwards from end
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 9
17
String Slicing
Slice returns a substring:
– 2 inputs (simple)
• Start, end
– 3 inputs (extended)
• Start, end, and stride
All inputs are 0-based
Negative inputs count backwards from end
Non-inclusive
18
On-the-Fly Conversion
Convert text and numeric data types on the fly:
– str()
– int()
– float()
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 10
19
Lists
Surrounded by square brackets []
– Elements separated by a comma
Can contain different data types
Can be sliced and indexed like strings
20
Using Python in ArcMap
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 11
21
Label Expression
Switch the Parser to Python
Write the expression
– Combine values
• Add static strings
• Add new lines
– Convert values
• Multiple by conversion factor
All done on-the-fly
– No write access to data required
[CO_NAME] + "\n" + [PROD_CODE]
22
Combination Tricks
E X P R E S S I O N R E S U LT
[PointX] + “, ” + [PointY] 223.43, 5356.5
[County_Name] + “ County, ” +
[State]Harris County, TX
[Company] + “\n” + “[Address]”TeachMeGIS3000 Wilcrest
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 12
23
Field Calculator
Switch the Parser to Python
Write the expression
– Copy values
– Combine values
• Add strings
– Convert values
• Multiple by conversion factor
• Change data types
– QA data
• Set string case
"Submerged Pile" + !OBJNAM!
24
Number Tricks
E X P R E S S I O N R E S U LT
!Elevation_ft! * 0.3048 FeetMeters
!Elevation_m! * 3.2808399 Meters Feet
!Area_km2! * 247.105381 km2 Acres
!Area_acres! * 0.00404685642 Acres km2
round(!PROD! * !Royalty!, 2) $
!Part1! / !Total! %
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 13
25
String Tricks
Built-in Functions
– .upper()
– .lower()
– .title()
– .replace(<findstr>, <replacestr>)
String slicing!Company!.upper()
26
Now Put it All Together
Functions
Field Values
Static Values
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 14
27
SCENARIO:
– Have a string formatted like: nnnn ssss ttt vvvv xxx yyyy
TASK:
– Format in new field as: ttt vvvv xxx yyyy
Example: String Functions
WELL_NAME:
‘1200 RAAA SUA HOLY BEA CALI’
NEW WELL_NAME FIELD:
‘SUA HOLY BEA CALI’
28
Example: String Functions
SOLUTION: " ".join(!WELL_NAME!.split()[2:])
WELL_NAME Column with original data‘1200 RAAA SUA HOLY BEA CALI’
!WELL_NAME!.split()
Splits the string at the spaces and puts the pieces in a list
‘1200’, ‘RAAA’, ‘SUA’ , ‘HOLY’,‘BEA’, ‘CALI’
!WELL_NAME!.split()[2:]
Removes the first 2 values from the list
‘SUA’ , ‘HOLY’,‘BEA’, ‘CALI’
“ ”.join(<list>)Creates a string from the values in <list> separated by a space
‘SUA HOLY BEA CALI’
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 15
29
Help and Resources
• Learning Python
• Python in a Nutshell
Books
• http://support.esri.com
• http://resources.arcgis.com
• http://www.python.org
• http://www.diveintopython.org
Websites
30
Show Codeblock
Advanced Calculations
© 2013 TeachMeGIS All rights reserved.
Revised 05/13 16
31
Show Codeblock Calculations
Write function in Pre-Logic Script Code section
Call function (with inputs) in Expression section
Returned value is written to the table
Expression
Function
32
Pick Non-Null Value
TASK:
– Populate a column with either API or UWI (whichever exists)
PickNonNullString(str(!API!), str(!UWI!))
def PickNonNullString(val1, val2):valOut = val2if val1:valOut = val1
return valOut