34,79 €
ArcGIS is an industry standard geographic information system from ESRI.This book will show you how to use the Python programming language to create geoprocessing scripts, tools, and shortcuts for the ArcGIS Desktop environment.This book will make you a more effective and efficient GIS professional by showing you how to use the Python programming language with ArcGIS Desktop to automate geoprocessing tasks, manage map documents and layers, find and fix broken data links, edit data in feature classes and tables, and much more."Programming ArcGIS 10.1 with Python Cookbook" starts by covering fundamental Python programming concepts in an ArcGIS Desktop context. Using a how-to instruction style you'll then learn how to use Python to automate common important ArcGIS geoprocessing tasks.In this book you will also cover specific ArcGIS scripting topics which will help save you time and effort when working with ArcGIS. Topics include managing map document files, automating map production and printing, finding and fixing broken data sources, creating custom geoprocessing tools, and working with feature classes and tables, among others.In "Python ArcGIS 10.1 Programming Cookbook" you'll learn how to write geoprocessing scripts using a pragmatic approach designed around an approach of accomplishing specific tasks in a Cookbook style format.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 345
Veröffentlichungsjahr: 2013
Copyright © 2013 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2013
Production Reference: 1120213
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84969-444-5
www.packtpub.com
Cover Image by Sujay Gawand (<[email protected]>)
Author
Eric Pimpler
Reviewers
Alissa Bickar
Ann Stark
Tripp Corbin, CFM, GISP
Acquisition Editor
Andrew Duckworth
Lead Technical Editor
Dayan Hyames
Technical Editor
Lubna Shaikh
Project Coordinator
Amey Sawant
Proofreaders
Chris Brown
Sandra Hopper
Indexer
Tejal Soni
Graphics
Aditi Gajjar
Production Coordinators
Manu Joseph
Nitesh Thakur
Cover Work
Nitesh Thakur
Eric Pimpler is the founder and owner of GeoSpatial Training Services (geospatialtraining.com) and has over 20 years of experience in implementing and teaching GIS solutions using ESRI technology. Currently, Eric focuses on ArcGIS scripting with Python, and the development of custom ArcGIS Server web and mobile applications using JavaScript.
Eric has a Bachelor’s degree in Geography from Texas A&M University and a Master’s of Applied Geography degree with a concentration in GIS from Texas State University.
Alissa Bickar is a GIS Analyst and instructor who has a large interest in geospatial technologies and projects. She has developed various courses as an instructor for GeoSpatial Training Services and has been appointed as the ArcGIS Desktop Training Program Manager with GTS. She is responsible for developing and updating course materials for the program, as well as assisting clients with their course and annual subscriptions.
She has extensive experience in the GIS field as a consultant to federal and local governments, environmental engineering firms, and many clients in the Oil and Gas industry. She also has experience as a college professor and has helped develop GIS and Geography courses for higher education.
Alissa has both a Bachelor’s and Master’s degree in Geography from California University of Pennsylvania.
Ann Stark, a GISP since 2005, has been active in the GIS profession for 15 years. She is passionate about GIS and is an active and engaging member of the GIS community in the Pacific Northwest of the United States, coordinating local user groups and serving as the President of the region’s GIS professional group. She is an enthusiastic teacher who explains how to effectively use Python with ArcGIS and maintains a blog devoted to the topic at GISStudio.wordpress.com. She co-owns a GIS consulting business, called Salish Coast Sciences, which provides strategic planning, process automation, and GIS development services.
To unwind from technology, Ann enjoys spending time with her husband and son at their urban farm in the heart of a city where they seek to live sustainably and as self-sufficiently as an urban farm allows.
Tripp Corbin, CFM, GISP is the CEO and a Co-founder of eGIS Associates, Inc. He has over 20 years of surveying, mapping, and GIS-related experience. Tripp is recognized as an industry expert with a variety of geospatial software packages including Esri, Autodesk, and Trimble products. He holds multiple certifications including Microsoft Certified Professional (MCP), Certified Floodplain Manager (CFM), Certified GIS Professional (GISP), Comptia Certified Technical Trainer (CTT+), and Esri Certified Trainer.
As a GIS Instructor, Tripp has taught students from around the world the power of GIS. He has authored many classes on topics ranging from the beginner level, such as Introduction to GIS, GIS Fundamentals to more advanced topics such as ArcGIS Server Installation, Configurations and Tweaks. Tripp recently helped the University of North Alabama Continuing Studies Center develop an online GIS Analyst Certificate Program.
Tripp believes in giving back to the profession that has given him so much. As a result, he is heavily active in multiple GIS-oriented professional organizations. He is a past President of Georgia, URISA, and was recently the Keynote Speaker for the Georgia Geospatial Conference. Tripp also serves on the URISA International Board of Directors, in addition to being a member of the GISP Application Review committee and an At-Large GITA Southeast Board Member.
Other contributions Tripp has made to the GIS Profession include helping to draft the new Geospatial Technology Competency Model that was adopted by the US Department of Labor, presenting at various conferences and workshops around the US, and providing help to other GIS professionals around the world on various blogs, lists, and forums.
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt’s online digital book library. Here, you can access, read and search across Packt’s entire library of books.
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
ArcGIS is an industry-standard geographic information system from ESRI.
This book will show you how to use the Python programming language to create geoprocessing scripts, tools, and shortcuts for the ArcGIS Desktop environment.
This book will make you a more effective and efficient GIS professional, by showing you how to use the Python programming language with ArcGIS Desktop to automate geoprocessing tasks, manage map documents and layers, find and fix broken data links, edit data in feature classes and tables, and much more.
Programming ArcGIS 10.1 with Python Cookbook starts by covering fundamental Python programming concepts in an ArcGIS Desktop context. Using a how-to instruction style, you'll then learn how to use Python to automate common important ArcGIS geoprocessing tasks.
In this book, you will also cover specific ArcGIS scripting topics that will help save you time and effort when working with ArcGIS. Topics include managing map document files, automating map production and printing, finding and fixing broken data sources, creating custom geoprocessing tools, and working with feature classes and tables, among others.
In Programming ArcGIS 10.1 with Python Cookbook, you'll learn how to write geoprocessing scripts using a pragmatic approach designed around accomplishing specific tasks in a cookbook style format.
Chapter 1, Fundamentals of the Python Language for ArcGIS, will cover many of the basic language constructs found in Python. Initially, you'll learn how to create new Python scripts or edit existing scripts. From there, you'll get into language features, such as adding comments to your code, variables, and the built-in typing systems that makes coding with Python easy and compact. Furthermore, we'll look at the various built-in data-types that Python offers, such as strings, numbers, lists, and dictionaries. In addition to this, we'll cover statements, including decision support and looping structures for making decisions in your code and/or looping through a code block multiple times.
Chapter 2, Writing Basic Geoprocessing Scripts with ArcPy, will teach the basic concepts of the ArcPy Python site package for ArcGIS, including an overview of the basic modules, functions, and classes. The reader will be able write a geoprocessing script using ArcPy with Python.
Chapter 3, Managing Map Documents and Layers, will use the Arcpy Mapping module to manage map document and layer files. You will learn how to add and remove geographic layers from map document files, insert layers into data frames, and move layers around within the map document. The reader will also learn how to update layer properties and symbology.
Chapter 4, Finding and Fixing Broken Data Links, will teach how to generate a list of broken data sources in a map document file and apply various Arcpy Mapping functions to fix these data sources. The reader will learn how to automate the process of fixing data sources across many map documents.
Chapter 5, Automating Map Production and Printing, will teach how to automate the process of creating production-quality maps. These maps can then be printed, exported to image file formats, or exported to PDF files for inclusion in map books.
Chapter 6, Executing Geoprocessing Tools from Scripts, will teach how to write scripts that access and run geoprocessing tools provided by ArcGIS.
Chapter 7, Creating Custom Geoprocessing Tools, will teach how to create custom geoprocessing tools that can be added to ArcGIS and shared with other users. Custom geoprocessing tools are attached to a Python script that process or analyze geographic data in some way.
Chapter 8, Querying and Selecting Data, will teach how to execute the Select by Attribute and Select by Location geoprocessing tools from a script to select features and records. The reader will learn how to construct queries that supply an optional where clause for the Select by Attribute tool. The use of feature layers and table views as temporary datasets will also be covered.
Chapter 9, Using the ArcPy Data Access Module to Select, Insert, and Update Geographic Data and Tables, will teach how to create geoprocessing scripts that select, insert, or update data from geographic data layers and tables. With the new ArcGIS 10.1 Data Access module, geoprocessing scripts can create in-memory tables of data, called cursors, from feature classes and tables. The reader will learn how to create various types of cursors including search, insert, and update
Chapter 10, Listing and Describing GIS Data, will teach how to obtain descriptive information about geographic datasets through the use of the Arcpy Describe function. As the first step in a multi-step process, geoprocessing scripts frequently require that a list of geographic data be generated followed by various geoprocessing operations that can be run against these datasets.
Chapter 11, Customizing the ArcGIS Interface with Add-Ins, will teach how to customize the ArcGIS interface through the creation of Python add-ins. Add-ins provide a way of adding user interface items to ArcGIS Desktop through a modular code base designed to perform specific actions. Interface components can include buttons, tools, toolbars, menus, combo boxes, tool palettes, and application extensions. Add-ins are created using Python scripts and an XML file that define how the user interface should appear.
Chapter 12, Error Handling and Troubleshooting, will teach how to gracefully handle errors and exceptions as they occur while a geoprocessing script is executing. Arcpy and Python errors can be trapped with the Python try/except structure and handled accordingly.
Appendix A, Automating Python Scripts, will teach how to schedule geoprocessing scripts to run at a prescribed time. Many geoprocessing scripts take a long time to fully execute and need to be scheduled to run during non-working hours on a regular basis. The reader will learn how to create batch file containing geoprocessing scripts and execute these at a prescribed time.
Appendix B, Five Things Every GIS Programmer Should Know How to Do with Python, will teach how to write scripts that perform various general purpose tasks with Python. Tasks, such as reading and writing delimited text files, sending e-mails, interacting with FTP servers, creating ZIP files, and reading and writing JSON and XML files are common. Every GIS programmer should know how to write Python scripts that incorporate this functionality.
To complete the exercises in this book, you will need to have installed ArcGIS Desktop 10.1 at either the Basic, Standard, or Advanced license level. Installing ArcGIS Desktop 10.1 will also install Python 2.7 along with the IDLE Python code editor
Programming ArcGIS 10.1 with Python Cookbook is written for GIS professionals who wish to revolutionize their ArcGIS workflow with Python. Whether you are new to ArcGIS or a seasoned professional, you almost certainly spend time each day performing various geoprocessing tasks. This book will teach you how to use the Python programming language to automate these geoprocessing tasks and make you a more efficient and effective GIS professional.
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title in the subject of your message.
If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or e-mail <[email protected]>.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the erratasubmissionform link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors and our ability to bring you valuable content.
You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.
Python supports many of the programming constructs found in other languages. In this chapter, we'll cover many of the basic language constructs found in Python. Initially, we'll cover how to create new Python scripts and edit existing scripts. From there, we'll delve into language features, such as adding comments to your code, creating and assigning data to variables, and built-in variable typing with Python, which makes coding with Python easy and compact.
Next, we'll look at the various built-in data-types that Python offers, such as strings, numbers, lists, and dictionaries. Classes and objects are a fundamental concept in object-oriented programming and in the Python language. We'll introduce you to these complex data structures, which you'll use extensively when you write geoprocessing scripts with ArcGIS.
In addition, we'll cover statements including decision support and looping structures for making decisions in your code and/or looping through a code block multiple times along with with statements, which are used extensively with the new cursor objects in the Arcpy Data Access module. Finally, you'll learn how to access modules that provide additional functionality to the Python language. By the end of this chapter, you will have learned the following:
As I mentioned in the preface, when you install ArcGIS Desktop, Python is also installed along with a tool called IDLE that allows you to write your own code. IDLE stands for Integrated DeveLopment Environment. Because it is available with every ArcGIS Desktop installation, we'll use the IDLE development environment for many of the scripts that we write in this book along with the Python window embedded in ArcGIS Desktop. As you progress as a programmer, you may find other development tools that you prefer over IDLE. You can write your code in any of these tools.
To start the IDLE development environment for Python, you can go to Start | Programs | ArcGIS | Python 2.7 | IDLE. Please note that the version of Python installed with ArcGIS will differ depending upon the ArcGIS version that you have installed. For example, ArcGIS 10.0 uses Python 2.6 while ArcGIS 10.1 uses Python 2.7.
A Python shell window similar to the screenshot will be displayed:
The Python shell window is used for output and error messages generated by scripts. A common mistake for beginners is to assume that the geoprocessing scripts will be written in this shell window. That is not the case. You will need to create a separate code window to hold your scripts.
Although the shell window isn't used to write entire scripts, it can be used to interactively write code and get immediate feedback. ArcGIS has a built-in Python shell window that you can use in much the same way. We'll examine the ArcGIS Python window in the next chapter.
Your scripts will be written in IDLE inside a separate window known as the Python script window. To create a new code window, select File | New Window from the IDLE shell window. A window similar to that in the following screenshot will be displayed:
Your Python scripts will be written inside this new code window. Each script will need to be saved to a local or network drive. By default, scripts are saved with a.py file extension.
Existing Python script files can be opened from Windows Explorer by right-clicking on the file and selecting Edit with IDLE, which brings up a new shell window along with the script loaded in the Python script editor. You can see an example of this in the following screenshot:
In this instance, we have loaded the ListFeatureClasses.py script with IDLE. The code is loaded inside the script window:
Now that the code window is open, you can begin writing or editing code. You can also perform some basic script debugging with the IDLE interface. Debugging is the process of identifying and fixing errors in your code.
Once you've written a geoprocessing script in the IDLE code window or opened an existing script, you can execute the code from the interface. IDLE does provide functionality that allows you to check the syntax of your code before running the script. In the code window, select Run | Check Module to perform a syntax check of your code.
Any syntax errors will be displayed in the shell window. If there aren't any syntax errors, you should just see the prompt in the shell window. While the IDLE interface can be used to check for syntax errors, it doesn't provide a way of checking for logical errors in your code nor does it provide more advanced debugging tools found in other development environments, such as PythonWin or Wingware.
Once you're satisfied that no syntax errors exist in your code, you can run the script. Select Run | Run Module to execute the script:
Any error messages will be written to the shell window along with output from print statements and system-generated messages. The print statement simply outputs a string to the shell window. It is often used for updating the status of a running script or for debugging the code.
