PostGIS in Action by Regina O.Obe and Leo S. Hsu, provides a good introduction and reference to the PostGIS extensions to the popular Postgres database. It is recommended for anyone intending to use PostGIS. Although the book includes a primer and introductory coverage of SQL and Postgres, someone with limited experience in these areas will probably also require a guide to Postgres.
Postgres has become a popular open source relation database. It offers much of the ease of use that MySQL is known for, but with the functionality and resilience of a more commercial solution. A popular addition to Postgres in the open source geospatial community is that of PostGIS. PostGIS adds a range of geospatial fields and functions.
This is the first book to be published that covers PostGIS in depth, and as such should be a welcome addition to most open source geospatial bookshelves.
The first chapters cover introductions to relational databases and essential geospatial concepts such as vectors and coordinates. Most readers will have some knowledge of relational databases, so this coverage thinner than the geospatial coverage.
After this introduction, the book spends the bulk of its content covering the geospatial extensions that make up PostGIS. These start off simple, but build up to complex functions such as slicing and splicing polygons & polylines, and geometry rotations.
A welcome chapter on performance tuning covers subjects such as the query planner; diagnosing performance problems; indexes; SQL patterns; and optimizing geometries.
A chapter on extensions cover short introductions of the TIGER geocoder, pgRouting, PLs; PL/R; and PL/Python. These introductions are more substantial than similar introductions in other books, and include sample code. They should serve as ‘samplers’ that demonstrate what the extension can do, but most readers will need to look online for more in-depth coverage of these topics. As a user of pgRouting, I did see a welcome piece of news in the section about pgRouting: this is now scheduled to be included as standard in PostGIS 2.1.
The final chapters cover web applications (with OpenLayers, GeoExt, MapServer, and GeoServer); desktop applications (with OpenJUMP, Quantum GIS, uDig, gvSig); and PostGIS Raster. I doubt PostGIS will be used for much raster work, but the PostGIS Raster extension could prove useful for (meta) map tile management.
Appendices cover additional resources (primarily a long annotated list of web sites for information and data); installing/compiling/upgrading; an SQL primer; and a description of PostgreSQL features.
All in all, this book should be a welcome addition to most open source geospatial libraries.