Preface |
|
xv | |
Acknowledgments |
|
xxi | |
Editor |
|
xxiii | |
Contributors |
|
xxv | |
Section I Overview |
|
|
|
3 | (16) |
|
1.1 Computer Hardware and Software |
|
|
3 | (2) |
|
|
5 | (2) |
|
|
7 | (2) |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (3) |
|
1.7 Hands-On Experience with Python |
|
|
14 | (2) |
|
|
16 | (1) |
|
|
17 | (2) |
|
2 Object-Oriented Programming |
|
|
19 | (16) |
|
2.1 Programming Language and Python |
|
|
19 | (2) |
|
|
21 | (6) |
|
|
21 | (2) |
|
|
23 | (1) |
|
|
23 | (2) |
|
|
25 | (1) |
|
|
26 | (1) |
|
2.3 Point, Polyline, and Polygon |
|
|
27 | (3) |
|
2.4 Hands-On Experience with Python |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
31 | (4) |
Section II Python Programming |
|
|
|
35 | (26) |
|
3.1 Object-Oriented Support |
|
|
35 | (1) |
|
|
36 | (4) |
|
|
36 | (1) |
|
|
36 | (1) |
|
|
36 | (1) |
|
|
37 | (1) |
|
3.2.5 Multiple Assignments |
|
|
38 | (1) |
|
|
38 | (1) |
|
|
38 | (2) |
|
|
40 | (8) |
|
|
40 | (2) |
|
3.3.2 Composite Data Types |
|
|
42 | (6) |
|
|
48 | (2) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
50 | (3) |
|
|
53 | (1) |
|
|
54 | (2) |
|
3.8 Hands-On Experience with Python |
|
|
56 | (1) |
|
|
56 | (1) |
|
|
57 | (4) |
|
4 Python Language Control Structure, File Input/Output, and Exception Handling |
|
|
61 | (16) |
|
|
61 | (3) |
|
|
64 | (2) |
|
4.3 Other Control Structures |
|
|
66 | (1) |
|
|
67 | (2) |
|
|
69 | (1) |
|
4.6 Hands-On Experience with Python |
|
|
70 | (5) |
|
4.6.1 Find the Longest Distance between Any Two Points |
|
|
70 | (1) |
|
4.6.2 Hands-On Experience: I/O, Create and Read a File |
|
|
70 | (2) |
|
4.6.3 Hands-On Experience: I/O, Flow Control, and File |
|
|
72 | (2) |
|
4.6.4 Hands-On Experience: Input GIS Point Data from Text File |
|
|
74 | (1) |
|
|
75 | (1) |
|
|
75 | (2) |
|
5 Programming Thinking and Vector Data Visualization |
|
|
77 | (20) |
|
5.1 Problem: Visualizing GIS Data |
|
|
77 | (3) |
|
5.2 Transforming Coordinate System |
|
|
80 | (4) |
|
5.2.1 How to Determine Ratio Value? |
|
|
82 | (2) |
|
5.3 Visualizing Vector Data |
|
|
84 | (2) |
|
5.4 Point, Polyline, Polygon |
|
|
86 | (1) |
|
|
87 | (3) |
|
|
88 | (1) |
|
5.5.2 Think in Programming |
|
|
88 | (1) |
|
5.5.3 Match Programming Language Patterns and Structure |
|
|
89 | (1) |
|
|
89 | (1) |
|
5.6 Hands-On Experience with Python |
|
|
90 | (5) |
|
5.6.1 Reading, Parsing, and Analyzing Text File Data |
|
|
90 | (2) |
|
5.6.2 Create GIS Objects and Check Intersection |
|
|
92 | (3) |
|
|
95 | (1) |
|
|
95 | (2) |
|
|
97 | (18) |
|
6.1 Binary Data Manipulation |
|
|
97 | (4) |
|
6.2 Shapefile Introduction |
|
|
101 | (1) |
|
6.3 Shapefile Structure and Interpretation |
|
|
102 | (5) |
|
6.3.1 Main File Structure of a Shapefile |
|
|
102 | (3) |
|
|
102 | (2) |
|
|
104 | (1) |
|
6.3.2 Index File Structure (.shx) |
|
|
105 | (2) |
|
|
107 | (1) |
|
6.4 General Programming Sequence for Handling Shapefiles |
|
|
107 | (1) |
|
6.5 Hands-On Experience with Mini-GIS |
|
|
108 | (5) |
|
6.5.1 Visualize Polylines and Polygons |
|
|
108 | (1) |
|
6.5.2 Interpret Polyline Shapefiles |
|
|
109 | (4) |
|
|
113 | (1) |
|
|
113 | (2) |
|
7 Python Programming Environment |
|
|
115 | (22) |
|
|
115 | (9) |
|
7.1.1 Python Programming Windows |
|
|
115 | (1) |
|
|
115 | (2) |
|
|
115 | (1) |
|
7.1.1.3 File-Based Programming |
|
|
116 | (1) |
|
7.1.2 Python IDE Settings |
|
|
117 | (1) |
|
|
117 | (1) |
|
7.1.2.2 General Setting of the Programming Window |
|
|
118 | (1) |
|
7.1.2.3 Fonts Setup for the Coding |
|
|
118 | (1) |
|
|
118 | (6) |
|
|
120 | (1) |
|
7.1.3.2 Run-Time Exceptions |
|
|
121 | (1) |
|
7.1.3.3 Handling Exceptions |
|
|
122 | (1) |
|
7.1.3.4 Add Exception Handles and Clean-Up Actions to File Read/Write |
|
|
123 | (1) |
|
|
124 | (3) |
|
7.2.1 Module Introduction |
|
|
125 | (1) |
|
|
125 | (1) |
|
7.2.3 System Built-In Modules |
|
|
126 | (1) |
|
7.3 Package Management and Mini-GIS |
|
|
127 | (4) |
|
7.3.1 Regular GIS Data Organization |
|
|
127 | (1) |
|
|
128 | (3) |
|
7.4 Hands-On Experience with Mini-GIS |
|
|
131 | (4) |
|
7.4.1 Package Management and Mini-GIS |
|
|
131 | (1) |
|
7.4.2 Run and Practice the Mini-GIS Package |
|
|
132 | (3) |
|
|
135 | (1) |
|
|
135 | (2) |
|
|
137 | (16) |
|
|
137 | (2) |
|
8.1.1 Centroid of a Triangle |
|
|
137 | (1) |
|
8.1.2 Centroid of a Rectangle |
|
|
137 | (1) |
|
8.1.3 Centroid of a Polygon |
|
|
138 | (1) |
|
|
139 | (2) |
|
8.2.1 Area of a Simple Polygon |
|
|
139 | (1) |
|
8.2.2 Area of a Polygon with Hole(s) |
|
|
140 | (1) |
|
|
141 | (1) |
|
8.3.1 Length of a Straight Line Segment |
|
|
141 | (1) |
|
8.3.2 Length of a Polyline |
|
|
142 | (1) |
|
|
142 | (4) |
|
|
145 | (1) |
|
|
145 | (1) |
|
|
146 | (2) |
|
|
146 | (2) |
|
8.6 Hands-On Experience with Python |
|
|
148 | (2) |
|
8.6.1 Using Python to Draw a Polygon and Calculate the Centroid |
|
|
148 | (1) |
|
8.6.2 Using Python to Draw Polygon and Calculate the Area of Polygon |
|
|
148 | (1) |
|
8.6.3 Using Python to Draw Line Segments and Calculate the Intersection |
|
|
148 | (2) |
|
|
150 | (1) |
|
|
150 | (3) |
Section III Advanced GIS Algorithms and Their Programming in ArcGIS |
|
|
|
153 | (32) |
|
|
153 | (1) |
|
9.2 Introduction to ArcPy Package |
|
|
154 | (4) |
|
9.2.1 ArcPy Functions, Classes, and Modules |
|
|
154 | (1) |
|
9.2.2 Programming with ArcPy in ArcMap |
|
|
155 | (1) |
|
9.2.3 Programming with ArcPy in Python Window outside ArcMap |
|
|
156 | (1) |
|
9.2.4 Using Help Documents |
|
|
157 | (1) |
|
9.3 Automating ArcTools with Python |
|
|
158 | (2) |
|
9.4 Accessing and Editing Data with Cursors |
|
|
160 | (6) |
|
|
160 | (4) |
|
|
164 | (1) |
|
|
164 | (1) |
|
|
165 | (1) |
|
9.5 Describing and Listing Objects |
|
|
166 | (3) |
|
|
166 | (1) |
|
|
167 | (2) |
|
9.6 Manipulating Complex Objects |
|
|
169 | (3) |
|
9.7 Automating Map Production |
|
|
172 | (1) |
|
9.8 Creating ArcTools from Scripts |
|
|
172 | (4) |
|
9.9 Handling Errors and Messages |
|
|
176 | (1) |
|
9.10 External Document and Video Resources |
|
|
177 | (1) |
|
9.11 Implementing Spatial Relationship Calculations Using ArcGIS |
|
|
178 | (2) |
|
|
180 | (2) |
|
|
182 | (3) |
|
|
185 | (22) |
|
|
185 | (1) |
|
10.2 Raster Storage and Compression |
|
|
186 | (3) |
|
|
187 | (1) |
|
|
188 | (1) |
|
|
189 | (2) |
|
|
189 | (1) |
|
|
190 | (1) |
|
|
190 | (1) |
|
|
190 | (1) |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
191 | (1) |
|
|
191 | (1) |
|
|
191 | (1) |
|
10.4 Color Representation and Raster Rendering |
|
|
191 | (5) |
|
10.4.1 Color Representation |
|
|
191 | (3) |
|
|
194 | (2) |
|
|
196 | (2) |
|
10.6 Hands-On Experience with ArcGIS |
|
|
198 | (7) |
|
10.6.1 Hands-On Practice 10.1: Raster Color Renders |
|
|
198 | (1) |
|
10.6.2 Hands-On Practice 10.2: Raster Data Analysis: Find the Area with the Elevation Range between 60 and 100 and the Land Cover Type as "Forest" |
|
|
199 | (1) |
|
10.6.3 Hands-On Practice 10.3. Access the Attribute Information of Raster Dataset and Calculate the Area |
|
|
200 | (5) |
|
|
205 | (1) |
|
|
205 | (2) |
|
11 Network Data Algorithms |
|
|
207 | (16) |
|
11.1 Network Representation |
|
|
207 | (3) |
|
11.1.1 Basics Network Representation |
|
|
207 | (1) |
|
11.1.2 Directed and Undirected Networks |
|
|
207 | (2) |
|
11.1.3 The Adjacency Matrix |
|
|
209 | (1) |
|
11.1.4 Network Representation in GIS |
|
|
209 | (1) |
|
11.2 Finding the Shortest Path |
|
|
210 | (4) |
|
|
210 | (1) |
|
11.2.2 A Brute Force Approach for the Shortest Path Algorithm |
|
|
211 | (1) |
|
11.2.3 Dijkstra Algorithm |
|
|
212 | (2) |
|
11.3 Types of Network Analysis |
|
|
214 | (4) |
|
|
214 | (1) |
|
|
214 | (1) |
|
|
214 | (2) |
|
|
216 | (1) |
|
11.3.5 Vehicle Routing Problem |
|
|
216 | (1) |
|
11.3.6 Location-Allocation |
|
|
217 | (1) |
|
11.4 Hands-On Experience with ArcGIS |
|
|
218 | (3) |
|
|
221 | (1) |
|
|
222 | (1) |
|
12 Surface Data Algorithms |
|
|
223 | (24) |
|
12.1 3D Surface and Data Model |
|
|
223 | (5) |
|
|
223 | (1) |
|
12.1.2 Surface Data Model |
|
|
223 | (5) |
|
|
223 | (2) |
|
|
225 | (3) |
|
12.2 Create Surface Model Data |
|
|
228 | (2) |
|
12.2.1 Create Grid Surface Model |
|
|
228 | (1) |
|
12.2.2 Creating TIN Surface Model |
|
|
229 | (1) |
|
12.2.3 Conversion between TIN and Raster Surface Models |
|
|
229 | (1) |
|
12.3 Surface Data Analysis |
|
|
230 | (6) |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
232 | (2) |
|
12.3.4 Hydrologic Analysis |
|
|
234 | (2) |
|
12.4 Hands-On Experience with ArcGIS |
|
|
236 | (6) |
|
12.4.1 Hands-On Practice 12.1: Conversion among DEM, TIN, and Contours |
|
|
236 | (3) |
|
12.4.2 Hands-On Practice 12.2: Generate Slope and Aspect |
|
|
239 | (1) |
|
12.4.3 Hands-On Practice 12.3: Flow Direction |
|
|
239 | (3) |
|
|
242 | (1) |
|
|
242 | (5) |
Section IV Advanced Topics |
|
|
13 Performance-Improving Techniques |
|
|
247 | (18) |
|
|
247 | (1) |
|
13.2 Disk Access and Memory Management |
|
|
248 | (3) |
|
|
249 | (1) |
|
13.2.2 Comprehensive Consideration |
|
|
249 | (2) |
|
13.3 Parallel Processing and Multithreading |
|
|
251 | (3) |
|
13.3.1 Sequential and Concurrent Execution |
|
|
251 | (1) |
|
|
251 | (1) |
|
13.3.3 Load Multiple Shapefiles Concurrently Using Multithreading |
|
|
252 | (1) |
|
13.3.4 Parallel Processing and Cluster, Grid, and Cloud Computing |
|
|
253 | (1) |
|
13.4 Relationship Calculation and Spatial Index |
|
|
254 | (3) |
|
13.4.1 Bounding Box in GIS |
|
|
255 | (1) |
|
|
256 | (1) |
|
13.5 Hands-On Experience with Mini-GIS |
|
|
257 | (5) |
|
13.5.1 Data Loading with RAM as File Buffer |
|
|
257 | (1) |
|
13.5.2 Data Loading with Multithreading |
|
|
258 | (1) |
|
13.5.3 Bounding Box Checking to Speed Up Intersection |
|
|
258 | (3) |
|
13.5.4 Line Intersection Using R-Tree Index |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
263 | (2) |
|
|
265 | (22) |
|
14.1 Spatial Data Structure |
|
|
265 | (5) |
|
14.1.1 Raster Data Structure in NetCDF/HDF |
|
|
265 | (1) |
|
14.1.2 Application of NetCDF/HDF on Climate Study |
|
|
266 | (4) |
|
14.2 GIS Algorithms and Modeling |
|
|
270 | (5) |
|
|
270 | (1) |
|
|
271 | (1) |
|
14.2.3 Regression Analysis (OLS and GWR) |
|
|
272 | (3) |
|
|
275 | (5) |
|
14.3.1 System Architecture |
|
|
276 | (1) |
|
|
277 | (3) |
|
14.4 Spatiotemporal Thinking and Computing |
|
|
280 | (5) |
|
14.4.1 Problem: Dust Simulation and Computing Challenges |
|
|
280 | (1) |
|
14.4.2 Methodology 1: Utilizing High-Performance Computing to Support Dust Simulation |
|
|
281 | (1) |
|
14.4.3 Methodology 2: Utilizing Spatiotemporal Thinking to Optimize High-Performance Computing |
|
|
281 | (3) |
|
14.4.3.1 Dust Storms' Clustered Characteristics: Scheduling Methods |
|
|
282 | (1) |
|
14.4.3.2 Dust Storms' Space-Time Continuity: Decomposition Method |
|
|
283 | (1) |
|
14.4.3.3 Dust Storm Events Are Isolated: Nested Model |
|
|
284 | (1) |
|
14.4.4 Methodology 3: Utilizing Cloud Computing to Support Dust Storm Forecasting |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
286 | (1) |
References |
|
287 | (4) |
Index |
|
291 | |