Book Image

Mastering PostGIS

By : Dominik Mikiewicz, Michal Mackiewicz , Tomasz Nycz
Book Image

Mastering PostGIS

By: Dominik Mikiewicz, Michal Mackiewicz , Tomasz Nycz

Overview of this book

PostGIS is open source extension onf PostgreSQL object-relational database system that allows GIS objects to be stored and allows querying for information and location services. The aim of this book is to help you master the functionalities offered by PostGIS- from data creation, analysis and output, to ETL and live edits. The book begins with an overview of the key concepts related to spatial database systems and how it applies to Spatial RMDS. You will learn to load different formats into your Postgres instance, investigate the spatial nature of your raster data, and finally export it using built-in functionalities or 3th party tools for backup or representational purposes. Through the course of this book, you will be presented with many examples on how to interact with the database using JavaScript and Node.js. Sample web-based applications interacting with backend PostGIS will also be presented throughout the book, so you can get comfortable with the modern ways of consuming and modifying your spatial data.
Table of Contents (9 chapters)

Spatial relationships


In the previous chapter, one spatial relationship function - the ST_Intersects, was introduced. This is only the beginning of the story; there are many more, finer functions available, to explore the relationships between features more precisely. For more details, read on.

Touching

A geometry is defined as touching when at least its vertex or edge lies on the edge of the reference geometry, but no points are inside its interior.

For example, let's find all the tributaries of the Odra river:

SELECT name,waterway FROM lines WHERE waterway in ('river','stream') AND name != 'Odra' AND ST_Touches( 
   wkb_geometry, 
   (SELECT ST_Collect(wkb_geometry) FROM lines WHERE name = 'Odra') 
   ); 

The ST_Collect is needed for collecting all sections into a single geometry (ST_Touches accepts MultiLineStrings, so there's no need for Union or LineMerge there), and the name != 'Odra' condition is needed to exclude neighbouring sections of the same river.

Crossing

A geometry is defined as...