In this chapter, we will look at how you can use a PostGIS database to store and work with spatial data. In particular, we will cover:
psycopg2 Python database adapter onto your computerpsycopg2 database adapter to access a spatial database from your Python codeThis chapter is intended to be an introduction to using databases in a geospatial application. Chapter 8, Working with Spatial Data, will build on this to perform powerful spatial queries not possible using shapefiles and other geospatial data files.
In a sense, almost any database can be used to store geospatial data: simply convert a geometry to WKT format and store the results in a text column. But while this would allow you to store geospatial data in a database, it wouldn't let you query it in any useful way. All you could do is retrieve the raw WKT text and convert it back to a geometry object, one record at a time.
A spatially-enabled database, on the other hand, is aware of the notion of space, and allows you to work with spatial objects and concepts directly. In particular, a spatially-enabled database allows you to:
geometry columnselect all landmarks within 10 km of the city named "San Francisco"select all cities and their associated countries by joining cities and countries on (city inside country)set "danger_zone" to the intersection of the "flooded_area" and "urban_area" polygonsAs you can imagine, a spatially-enabled database is an extremely powerful tool for working with geospatial data. By using spatial indexes and other optimizations, spatial databases can quickly perform these types of operations and can scale to support vast amounts of data simply not feasible using other data-storage schemes.