Python Scripting for ArcGIS
The impetus for writing this book comes from the lessons I've learned from using and teaching geographic information systems (GIS) for over 10 years at several different universities. One of those lessons is that "a little bit of code can go a long way."Those of us who learned our first computer skills back in the days of MS-DOS became familiar with using command prompt to carry out basic tasks. Early versions of ArcGIS for Desktop Advanced (ArcInfo) also relied heavily on a command line interface, in addition to the use of the ARC Macro Language (AML). More recently, however, most software has come to rely on a graphical user interface (GUI) with very limited need to use a command line interface or to write any code. As a result, the majority of current college students taking their first GIS course have never seen any form of code . Although the menu-driven user interface of ArcGIS for Desktop allows for very complicated operations and sophisticated spatial analysis, at some point users will run into tasks that require something more. That's where Python scripting comes in.In a nutshell, Python scripting allows you to automate tasks in ArcGIS that would be very cumbersome using the regular menu-driven interface. For example, consider having to convert 1,000 shapefiles to feature classes in a geodatabase. You could run the appropriate tool 1,000 times, but surely there must be a more efficient and robust way to do this. That's what Python scripting will do and you will need only a handful of lines of code to carry out this task. About halfway through this book, you will write a script that does exactly this.This book is designed to make the power of Python scripting available to those who have no experience in writing code. The book starts with the basics, such as what scripting is and how to write and execute simple lines of code. Following that, the book covers how to write scripts that work with spatial data in ArcGIS for Desktop. A good familiarity with ArcGIS for Desktop is assumed, including managing data in ArcCatalog and carrying out basic tasks in ArcMap, such as manipulating data, creating cartographic output, and running tools. You should also be familiar with the basic concepts of GIS, including coordinate systems, data formats, table operations, and basic spatial analysis methods. If you have some experience in writing code in any language, it will be helpful but is not required.Why Python? A couple of reasons. First, Python is free and open source, meaning it can be freely distributed and shared. Second, it is a powerful and versatile language although still relatively easy to learn. Third, Esri has adopted Python as the preferred language to work with ArcGIS, which is strongly reflected in the functionality introduced in version 10.1.There are numerous introductory textbooks on GIS and tutorials for learning ArcGIS. Most of them include sections on spatial analysis methods and procedures. However, coverage of Python scripts is not very complete. Although there is no lack of good introductory books on Python, most existing books cover Python without targeting a specific application. Python's role as a "glue" language is explained and demonstrated, but most books remain very general when it comes to how Python works with other programs.There is no ArcGIS-specific version of the Python language and so you can start learning Python syntax using any of the general Python books. However, the objects we work with in ArcGIS (such as feature classes, polygons, and geoprocessing tools) are very different from the more generic objects used as examples in most existing titles. This makes it difficult for an experienced ArcGIS user to just pick up a general Python book and start writing scripts for ArcGIS. For an experienced programmer who has previously programmed with ArcGIS in either VBA or C++, such a generic Python reference might suffice<em>but other professionals will benefit greatly from a book that covers Python with a very specific focus on writing scripts for ArcGIS.The primary audience for this book consists of experienced ArcGIS users who want to learn Python but have limited programming or scripting experience. Prior experience with other scripting or programming languages (such as Perl, VBA,  VBScript, Java, or C++) will be helpful but is not required. More experienced programmers will also benefit, but the emphasis is on making Python scripting available to the large number of ArcGIS for Desktop users who want to get more out of the functions of ArcGIS without having to become full-time programmers and learning C++. Readers will, however, be expected to have good overall ArcGIS skills and a basic understanding of geoprocessing procedures.This book is also intended for upper-division undergraduate and graduate courses in GIS. A handful of colleges and universities teach upper-division courses in GIS programming and/or scripting, and this number is expected to increase.This book contains three major parts. Part 1 covers the fundamentals of geoprocessing in ArcGIS for Desktop as well as the fundamentals of the Python language. Depending on your background and experience, you may already be familiar with some or all of this material. Part 2 covers how to write scripts that work with spatial data. This is really the core of the book and includes chapters on executing tools in Python, describing data, and manipulating and creating data, as well as a number of more specialized tasks. Part 3 covers how to create a tool out of your script and how to share your tool with others. By the end of this book, you will be able to create custom tools that use Python scripting to automate basic tasks in ArcGIS for Desktop.Each of the 14 chapters in the book is accompanied by an exercise reinforcing the concepts covered in the chapter. All 14 exercises are included on the Data and Exercises DVD that comes with the book. You should first read the chapter and then complete the accompanying exercise before moving on to the next chapter. Depending on your learning style and familiarity with coding, you can try some of the code in the chapters while you are reading it, but you can also first read the entire chapter and then start the exercise. You should complete the chapters and exercises in order since the concepts introduced in each new chapter build on the previous ones.To do the exercises in this book, you need to have ArcGIS 10.1 for Desktop software installed on your computer, or else download a trial version of the software. See appendix C for instructions on how to download the software. You will need the code printed on the inside back cover of this book to access the download site.This book will teach you techniques to automate tasks in ArcGIS. Perhaps by the end of the book, you will become a Python aficionado or perhaps you will simply be able to save yourself hours of work by using one of the scripts from the book. Whatever the case, beyond the specific skills of writing Python scripts for ArcGIS, you will also learn the basic logic of writing code. This will be helpful beyond the specific task at hand. My hope is that the book will contribute to demystifying what "writing code" really is for those who may be a little intimidated by it. And to show that writing code is not difficult to learn. Coding as an approach to solving problems is not only very powerful but also has widespread applicability. I sincerely hope this book will allow you to experience this versatility of Python coding.Paul A. ZandbergenAlbuquerque, NM USA