In this chapter, you will work with a set of PostGIS functions and vector datasets. You will first take a look at how to use PostGIS with GPS data—you will import such datasets using ogr2ogr and then compose polylines from point geometries using the ST_MakeLine function.
Then, you will see how PostGIS helps you find and fix invalid geometries with functions such as ST_MakeValid, ST_IsValid, ST_IsValidReason, and ST_IsValidDetails.
You will then learn about one of the most powerful elements of a spatial database, spatial joins. PostGIS provides you with a rich set of operators, such as ST_Intersects, ST_Contains, ST_Covers, ST_Crosses, and ST_DWithin, for this purpose.
After that, you will use the ST_Simplify and ST_SimplifyPreverveTopology functions to simplify (generalize) geometries when you don't need too many details. While this function works well on linear geometries, topological anomalies may be introduced for polygonal ones. In such cases, you should consider using an external GIS tool such as GRASS.
You will then have a tour of PostGIS functions to make distance measurements—ST_Distance, ST_DistanceSphere, and ST_DistanceSpheroid are on the way.
One of the recipes explained in this chapter will guide you through the typical GIS workflow to merge polygons based on a common attribute; you will use the ST_Union function for this purpose.
You will then learn how to clip geometries using the ST_Intersection function, before deep diving into the PostGIS topology in the last recipe that was introduced in version 2.0.