Presentation is loading. Please wait.

Presentation is loading. Please wait.

Geography 465 GIS Database Programming

Similar presentations


Presentation on theme: "Geography 465 GIS Database Programming"— Presentation transcript:

1 Geography 465 GIS Database Programming
Getting Started with GIS Database Programming

2 See Geog 465 course web site for Overview and Schedule

3 What is GIS Database Programming?
Geoprocessing - application of GIS operations on a set of data inputs for generating information. Database (DB) programming – the part of geoprocessing focusing on DB manipulation; not quite spatial analysis but almost. Use scripting to automate DB programming

4 Why write scripts? Scripts supply the added benefit of decision making logic and looping functionality Automate a work flow, for example: Copy all incoming data into a geodatabase Perform a project, clip, buffer operation on multiple data sets (iterate) Easily distribute code A script is a self-contained, single file

5 Why use Python for Scripting?
An open-source, object-oriented, scripting language Offers IDE (integrated development environment) with debugging tools Modular, can be broken apart Ability to compile scripts Installed with ArcGIS 9 and ESRI samples provided

6 Writing code in Python Writing Python code
Python command line IDE (integrated development environment) e.g., PythonWin and Komodo Michalis will use Komodo Edit (open source editor - free) IDE allows you to perform all jobs from one location Write, Save, Run, and Debug code

7 PythonWin Interface Script window Interactive window
Write and save code Interactive window Test lines of code Report messages Menus and Toolbars standard and debugging

8 Basics of Python Comment: A non-executable line of code
One number sign (#) for green and italicized Two number signs (##) for gray # Name: Michalis Avraam # Date: January 5, 2009 # Purpose: To buffer a feature class import win32com.client gp = win32com.client.Dispatch(“esriGeoprocessing.GpDispatch.1”) ## gp.Workspace = “C:\\Python_Data\\SanDiego.mdb” Gp.Buffer_analysis (“Freeways”, “BuffFreeway”, 1000) Can comment and uncomment blocks of code

9 Creating Scripts in Python
Use of ArcGIS help system to find: Usage, command syntax, and scripting examples of standard ArcToolbox tools, Usage and syntax of Geoprocessor properties and methods, which are only accessible through scripting

10 Running Python Scripts Three Modes
1) Running scripts in IDE, e.g. PythonWin 2) Running scripts as script tools in ArcGIS 3) Running scripts as embedded model components in ArcGIS

11 (non) Running Scripts in Python
Problem with the schema lock Cannot manipulate with the same file open in ArcGIS and in IDE at the same time

12 Running scripts in PythonWin
Example of a simple script to buffer a feature class # Name: Tim Nyerges # Date: January 5, 2009 # Purpose: To buffer a feature class import win32com.client gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1“ gp.Workspace = "C:\\Python_Data\\SanDiego.mdb” gp.Buffer_analysis ("Freeways", "BufferedFreeways", 1000)

13 Debugging the Code Test code in Python Win (or other IDE)
A check for syntax errors Do not test a script from ArcToolbox Test code in PythonWin, then add it to ArcToolbox

14 Running scripts in PythonWin
Run the script from the script window of PythonWin Check the message in the lower left corner of the interactive window in PythonWin: While the script is running you will see the message “running script <….>.py” The indication of the successful run is the message “Script <….> returned the exit code 0” Display the result in ArcCatalog

15 Running scripts in PythonWin
Example of a simple script to clip a feature class # Name: Tim Nyerges # Date: January 3, 2007 # Purpose: To clip a feature class import win32com.client gp =win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1") gp.Workspace = "C:\\Python_Data\\SanDiego.mdb" gp.Clip_analysis ("MajorAttractions", "SDdowntown", "SDdowntownAttractions")

16 Running scripts in PythonWin
Example of a simple script to buffer and clip a feature class # Name Tim Nyerges # Date: January 5, 2009 # Purpose: To buffer SD freeways first and then to clip the downtown section # of freeways import win32com.client gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1") gp.Workspace = "C:\\Python_Data\\SanDiego.mdb" if gp.Exists(gp.Workspace + "\\bufferedFreeways"): gp.Delete_management(gp.Workspace + "\\bufferedFreeways") gp.Buffer_analysis ("Freeways", "bufferedFreeways", "500") gp.Clip_analysis ("bufferedFreeways", "SDdowntown", "downtownFreeways")

17 Michalis will get you started in labb session… “hands-on” Python and Komodo edit

18 Two different variables
Variables in Python Variables are dynamically typed No declaration required No type assignment required fc = “C:\\ProjectData\\SanDiego.mdb\\Freeways.shp” Variables are case sensitive fc = “Freeways.shp” Fc = 20000 Variables can hold different data types numbers, strings, lists, files Two different variables

19 Numbers Variables can hold numbers and expressions num1 = 1.2

20 Strings Variables can hold strings folder = “c:/Student”
Strings are surrounded in double (“) or single (‘) quotes Pathnames use two back (\\) or one forward (/) slash One backslash (\) is a reserved escape character and a line continuation character

21 Strings Strings can be combined together gdbPath = “c:\\SanDiego.mdb”
fc = “Roads” fullPath = gdbPath + “\\” + fc Strings are indexed strings are zero-based from the left and one-based from the right fc = “Streets.shp” fc[0] ---> “S” # S is in the 0 position fc[1:3] ---> “tr” # start at 1st, up to not including 3rd fc[:-4] ---> “Streets” # get rid of the last 4 charaters C:\SanDiego.mdb\Roads”

22 Lists Variables can hold lists Lists are indexed numList = [1, 2, 3]
fcList = [“Roads”, “Streets”, “Parcels”, “Zipcodes”] Lists are indexed fc1 = fcList[1] fc2 = fcList[0:2] > “Roads”, “Streets” fc3 = fcList[0:-1] > “Roads”, “Streets”, “Parcels” fc4 = fcList[2:] > “Parcels”, “Zipcodes” ---> “Streets”

23 Variable naming conventions
Upper case versus lower case First word lower case, capitalize each successive word tableFieldName = “Street” - Acronym at the beginning, use lower case letters gdbPath = “C:\\SanDiego.mdb” Acronym in the middle or at the end, use upper case letters inputFC = “Streets.shp” Avoid special characters (for example / \ & % # !) Use descriptive variable names

24 Line continuation Line continuation characters
Parentheses ( ), brackets [ ], and braces { } Backslash \ Indentation is automatic fcList = [“Roads”, “Climate”, “Streams”, “Zipcodes”, “Coastlines”] distanceValues = 100, 200, 300, 400, 500, \ 1000, 1500 gp.Buffer_analysis(fcList[2], BuffStreams1000, distanceValues[5])


Download ppt "Geography 465 GIS Database Programming"

Similar presentations


Ads by Google