Applications of spatial data structures - computer graphics, image processing, and GIS

Traditional books on algorithms and data structures concentrate on onedimensional, linear data. However, multi-dimensional or spatial data is used in more and more application fields, such as computer graphics, image processing, computer aided design, robotics, and geographic information systems. Whereas some selected spatial data structures have been discussed in many application specific books, a work about spatial data structures in general has been missing so far. This gap has now been thoroughly filled by the above two books. The two companion volumes can be used both independently and together. Both books contain a subject index, a name and credit index, hundreds of exercises with solutions or hints to solutions, and a comprehensive bibliography. The first book treats the design and analysis of spatial data structures. After a general introduction, the book is structured based on the main types of data, namely points, rectangles, lines and curves, and volume data. For each data type, a variety of data structures are discussed in detail, together with the algorithms for the insertion, deletion, and search of data items. The second book first summarizes the most important parts of the first book and introduces some basic techniques. Each of the subsequent chapters is then devoted to a group of functionally similar algorithms. These are: conversion between different data structures, computation of geometric properties, operations on images, methods for display, approximation and compression, and distance problems. Readers can easily select the chapters related to their fields of interest, but also let themselves be inspired by techniques used in other fields. In two aspects, the books take a specific focus that is not evident from the titles. First, Samet's approach is basically algorithmic and analytical. Using many well-selected examples and a simple pseudocode language, he makes the reader understand in detail how and why each data structure and each algorithm work. On the other hand, the first-time readers will somewhat be overwhelmed by the wealth of details. An orientation more towards general methods and systems could be desirable especially for the second book. The second aspect is the concentration on one kind of spatial data structure. About half of the first and most of the second book is devoted to the quadtree and its variants. Obviously the quadtree is one of the most used and versatile spatial indexing methods. It stands between the very simple, but inefficient regular grids and complicated structures that are theoretically efficient but difficult to understand and implement. Thus it is well suited to demonstrate the general principles of hierarchical spatial subdivision. Also, Samet is the outstanding expert on quadtrees, to the degree that many parts of the books are carefully adapted and updated exerpts of his earlier publications. Nevertheless, a more balanced presentation would have been possible in many places. An extreme example to illustrate the two points mentioned above is the last chapter of the second book. There, the definition of the QMAT or quadtree medial axis transform leads to interesting algorithmic problems with aesthetically pleasing solutions. However, the rare hints to applications of these concepts are difficult to find among definitions, theorems, and algorithms. In conclusion, each of the two books is an invaluable source of reference for the work with quadtrees and spatial data structures in general. They will also prove useful for an advanced course in data structures and algorithms but more so for the teacher as a deep source of algorithmic ideas than for the student that will need careful guidance. Rather limited also is the use of the books in practical work, where questions such as "what data structure is best for a given application" or "how to develop an algorithm for a new problem" will not find fast answers.