Preface What this book covers What you need for this book Who this book is for Conventions Reader feedback Customer support Downloading the example code Downloading the color images of this book Errata Piracy Questions Importing Spatial Data Obtaining test data Setting up the database Importing flat data Importing data using psql Importing data interactively Importing data non-interactively Importing data using pgAdmin Extracting spatial information from flat data Importing shape files using shp2pgsql shp2pgsql in cmd The shp2pgsql GUI version Importing vector data using ogr2ogr Importing GML Importing MIF and TAB Importing KML ogr2ogr GUI (Windows only) Importing data using GIS clients Exporting a shapefile to PostGIS using QGIS and SPIT Exporting shapefile to PostGIS using QGIS and DbManager Exporting spatial data to PostGIS from Manifold GIS Importing OpenStreetMap data Connecting to external data sources with foreign data wrappers Connecting to SQL Server Spatial Connecting to WFS service Loading rasters using raster2pgsql Importing a single raster Importing multiple rasters Importing data with pgrestore Summary Spatial Data Analysis Composing and decomposing geometries Creating points Extracting coordinates from points Composing and decomposing Multi-geometries Multi-geometry decomposition Composing and decomposing LineStrings LineString composition LineString decomposition Composing and decomposing polygons Polygon composition Polygon decomposition Spatial measurement General warning - mind the SRID! Measuring distances between two geometries Measuring the length, area, and perimeter of geometries Line length Polygon perimeter Polygon area Geometry bounding boxes Accessing bounding boxes Creating bounding boxes Using bounding boxes in spatial queries Geometry simplification Geometry validation Simplicity and validity Testing for simplicity and validity Checking for validity Repairing geometry errors Validity constraint Intersecting geometries Nearest feature queries Summary Data Processing - Vector Ops Primer - obtaining and importing OpenStreetMap data Merging geometries Merging polygons Merging MultiLineStrings Slicing geometries Splitting a polygon by LineString Splitting a LineString with another LineString Extracting a section of LineString Buffering and offsetting geometries Offsetting features Creating convex and concave hulls Computing centroids, points-on-surface, and points-on-line Reprojecting geometries Spatial relationships Touching Crossing Overlapping Containing Radius queries Summary Data Processing - Raster Ops Preparing data Processing and analysis Analytic and statistical functions Vector to raster conversion Raster to vector conversion Spatial relationship Metadata Summary Exporting Spatial Data Exporting data using \COPY in psql Exporting data in psql interactively Exporting data in psql non-interactively Exporting data in PgAdmin Exporting vector data using pgsql2shp pgsql2sph command line pgsql2shp gui Exporting vector data using ogr2ogr Exporting KML revisited Exporting SHP Exporting MapInfo TAB and MIF Exporting to SQL Server ogr2ogr GUI Exporting data using GIS clients Exporting data using QGIS Exporting data using Manifold. Outputting rasters using GDAL Outputting raster using psql Exporting data using the PostgreSQL backup functionality Summary ETL Using Node.js Setting up Node.js Making a simple Node.js hello world in the command line Making a simple HTTP server Handshaking with a database using Node.js PgSQL client Retrieving and processing JSON data Importing shapefiles revisited Consuming JSON data Geocoding address data Consuming WFS data Summary PostGIS – Creating Simple WebGIS Applications ExtJS says Hello World Configuring GeoServer web services Importing test data Outputting vector data as WMS services in GeoServer Outputting raster data as WMS services in GeoServer Outputting vector data as WFS services Making use of PgRaster in a simple WMS GetMap handler Consuming WMS Consuming WMS in ol3 Consuming WMS in Leaflet Enabling CORS in Jetty Consuming WFS in ol3 Outputting and consuming GeoJSON Consuming GeoJSON in ol3 Consuming GeoJSON in Leaflet Outputting and consuming TopoJSON Consuming TopoJSON in ol3 Consuming TopoJSON in Leaflet Implementing a simple CRUD application that demonstrates vector editing via web interfaces WebGIS CRUD server in Node.js WebGIS CRUD client Layer manager Drawing tools Analysis tools - buffering Summary PostGIS Topology The conceptual model The data Installation Creating an empty topology Importing Simple Feature data into topology Checking the validity of input geometries Creating a TopoGeometry column and a topology layer Populating a TopoGeometry column from an existing geometry Inspecting and validating a topology Topology validation Accessing the topology data Querying topological elements by a point Locating nodes Locating edges Locating faces Topology editing Adding new elements Creating TopoGeometries Splitting and merging features Splitting features Merging features Updating edge geometry Topology-aware simplification Importing sample data Topology output GML output TopoJSON output Summary pgRouting Installing the pgRouting extension Importing routing data Importing shapefiles Importing OSM data using osm2pgrouting pgRouting algorithms All pairs shortest path Shortest path Shortest path Dijkstra A-Star (A*) K-Dijkstra K-Shortest path Turn restrictions shortest path (TRSP) Driving distance Traveling sales person Handling one-way edges Consuming pgRouting functionality in a web app Summary