Mastering PostGIS
()
About this ebook
- Learn how you can use PostGIS for spatial data analysis and manipulation
- Optimize your queries and build custom functionalities for your GIS application
- A comprehensive guide with hands-on examples to help you master PostGIS with ease
If you are a GIS developer or analyst who wants to master PostGIS to build efficient, scalable GIS applications, this book is for you. If you want to conduct advanced analysis of spatial data, this book will also help you. The book assumes that you have a working installation of PostGIS in place, and have working experience with PostgreSQL.
Related to Mastering PostGIS
Related ebooks
Learning QGIS - Third Edition Rating: 4 out of 5 stars4/5Practical GIS Rating: 0 out of 5 stars0 ratingsArcGIS By Example Rating: 1 out of 5 stars1/5Developing Mobile Web ArcGIS Applications Rating: 0 out of 5 stars0 ratingsQGIS By Example Rating: 3 out of 5 stars3/5Building Mapping Applications with QGIS Rating: 0 out of 5 stars0 ratingsGeospatial Development By Example with Python Rating: 5 out of 5 stars5/5Leaflet.js Essentials Rating: 4 out of 5 stars4/5Mapbox Cookbook Rating: 0 out of 5 stars0 ratingsLearning R for Geospatial Analysis Rating: 0 out of 5 stars0 ratingsSpatial Analytics with ArcGIS Rating: 0 out of 5 stars0 ratingsElasticsearch Indexing Rating: 0 out of 5 stars0 ratingsBuilding Web Applications with ArcGIS Rating: 5 out of 5 stars5/5Learning QGIS 2.0 Rating: 5 out of 5 stars5/5ArcGIS Blueprints Rating: 4 out of 5 stars4/5Learn D3.js: Create interactive data-driven visualizations for the web with the D3.js library Rating: 0 out of 5 stars0 ratingsTroubleshooting PostgreSQL Rating: 5 out of 5 stars5/5Mastering OpenLayers 3 Rating: 0 out of 5 stars0 ratingsPython Geospatial Analysis Essentials Rating: 0 out of 5 stars0 ratingsMastering PostgreSQL 9.6 Rating: 0 out of 5 stars0 ratingsPostgreSQL Administration Cookbook, 9.5/9.6 Edition Rating: 0 out of 5 stars0 ratingsPython for Google App Engine Rating: 0 out of 5 stars0 ratingsLearning ArcGIS Runtime SDK for .NET Rating: 0 out of 5 stars0 ratingsElasticsearch Blueprints Rating: 0 out of 5 stars0 ratingsLearning D3.js Mapping Rating: 0 out of 5 stars0 ratingsNeo4j Graph Data Modeling Rating: 4 out of 5 stars4/5PostGIS in Action, Third Edition Rating: 0 out of 5 stars0 ratingsPostGIS Cookbook Rating: 0 out of 5 stars0 ratingsQGIS Python Programming Cookbook - Second Edition Rating: 0 out of 5 stars0 ratings
Enterprise Applications For You
Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture Rating: 4 out of 5 stars4/5Scrivener For Dummies Rating: 4 out of 5 stars4/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5ChatGPT Ultimate User Guide - How to Make Money Online Faster and More Precise Using AI Technology Rating: 0 out of 5 stars0 ratingsQuickBooks 2024 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsThe Ridiculously Simple Guide to Google Docs: A Practical Guide to Cloud-Based Word Processing Rating: 0 out of 5 stars0 ratingsThe New Email Revolution: Save Time, Make Money, and Write Emails People Actually Want to Read! Rating: 5 out of 5 stars5/5Excel Formulas That Automate Tasks You No Longer Have Time For Rating: 5 out of 5 stars5/5Bitcoin For Dummies Rating: 4 out of 5 stars4/5Create Income through Self-Publishing: An Author's Approach on Generating Wealth by Self-Publishing Rating: 5 out of 5 stars5/5QuickBooks 2023 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsQuickBooks 2021 For Dummies Rating: 0 out of 5 stars0 ratingsExcel 2019 For Dummies Rating: 3 out of 5 stars3/5Enterprise AI For Dummies Rating: 3 out of 5 stars3/5Excel Formulas and Functions 2020: Excel Academy, #1 Rating: 4 out of 5 stars4/550 Useful Excel Functions: Excel Essentials, #3 Rating: 5 out of 5 stars5/5Excel 2016 For Dummies Rating: 4 out of 5 stars4/5Excel : The Complete Ultimate Comprehensive Step-By-Step Guide To Learn Excel Programming Rating: 0 out of 5 stars0 ratingsEssential Office 365 Third Edition: The Illustrated Guide to Using Microsoft Office Rating: 3 out of 5 stars3/5Microsoft Outlook 2016/2019/365 User Guide Rating: 5 out of 5 stars5/5Learn SQLite in 24 Hours Rating: 0 out of 5 stars0 ratingsChange Management for Beginners: Understanding Change Processes and Actively Shaping Them Rating: 5 out of 5 stars5/5Evernote Essentials Guide (Boxed Set): Evernote Guide For Beginners for Organizing Your Life Rating: 3 out of 5 stars3/5
Reviews for Mastering PostGIS
0 ratings0 reviews
Book preview
Mastering PostGIS - Dominik Mikiewicz
Title Page
Mastering PostGIS
Create, deliver, and consume spatial data using PostGIS
Dominik Mikiewicz
Michal Mackiewicz
Tomasz Nycz
BIRMINGHAM - MUMBAI
Copyright
Mastering PostGIS
Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author(s), nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: May 2017
Production reference: 1260517
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.
ISBN 978-1-78439-164-5
www.packtpub.com
Credits
About the Authors
Dominik Mikiewicz is a senior GIS consultant and the owner of one-person software shop Cartomatic. When not coding, he spends time with wife and kids, trying to make the little ones enjoy mountain trekking. He is also a long-distance cycling and running enthusiast.
Michal Mackiewicz has been working as a software engineer at GIS Support for five years. His main job is to orchestrate various open source geospatial components and creating application-specific GIS systems. PostgreSQL and PostGIS are among his favorite tools, and are used in almost every project. Apart from developing, he also runs PostGIS training courses. When not at work, he volunteers for OpenStreetMap and a local railway preservation society.
Tomasz Nycz is a geographer and cartographer. He initiated the implementation of GIS in the State Fire Service units in Poland. He works with recognized GIS companies in the emergency management industry. In practice, he uses QGIS and PostGIS. He has been an OpenStreetMap contributor for years. He also develops his scientific interests in the use of new technologies in geomorphology and remote sensing. He is also an avid drone pilot and mountain explorer.
About the Reviewers
Eric Pimpler is the founder and owner of GeoSpatial Training Services (geospatialtraining.com) and has over 20 years of experience in implementing and teaching GIS solutions using Esri, Google Earth/Maps, and open source technology. Currently, he focuses on ArcGIS scripting with Python and the development of custom ArcGIS Server web and mobile applications using JavaScript. He is the author of Programming ArcGIS 10.1 with Python Cookbook.
Eric has a bachelor's degree in Geography from Texas A&M University and a master's degree in Applied Geography with a concentration in GIS from Texas State University.
Prashant Verma started his IT carrier in 2011 as a Java developer at Ericsson working in
the telecoms domain. After a couple of years of Java EE experience, he moved into the big data domain, and has worked on almost all the popular big data technologies, such as Hadoop,
Spark, Flume, Mongo, and Cassandra. He has also played with Scala. Currently, he works with QA Infotech as lead data engineer, working on solving e-Learning problems using analytics and machine learning.
Prashant has also worked on Apache Spark for Java Developers as a technical reviewer.
I want to thank Packt Publishing for giving me the chance to review the book, as well as my employer and my family for their patience while I was busy working on this book.
www.PacktPub.com
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@packtpub.com for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www.packtpub.com/mapt
Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Customer Feedback
Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review on this book's Amazon page at https://www.amazon.com/dp/1784391646.
If you'd like to join our team of regular reviewers, you can e-mail us at customerreviews@packtpub.com. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!
Table of Contents
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
Preface
PostGIS is an open source extension of the 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 third-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.
What this book covers
Chapter 1, Importing Spatial Data, will cover simple import procedures to import data to PgSQL/PostGIS.
Chapter 2, Spatial Data Analysis, looks at vector data analysis, and we'll find our way through a rich function set of PostGIS.
Chapter 3, Data Processing - Vector Ops, discusses the functions available for vector data processing.
Chapter 4, Data Processing - Raster Ops, discusses the functions available for raster data processing.
Chapter 5, Exporting Spatial Data, looks into exporting a dataset from PostGIS to other GIS formats.
Chapter 6, ETL Using Node.js, explains how to perform ETL ops using JavaScript in Node.js.
Chapter 7, PostGIS – Creating Simple WebGIS Applications, focuses on publishing PostGIS data with the usage of web platforms.
Chapter 8, PostGIS Topology, we will discusses different PostGIS Topology types and functions that are used to manage topological objects such as faces, edges, and nodes.
Chapter 9, pgRouting, explains the pgRouting extension and its implementations.
What you need for this book
This book will guide you through the installation of all the tools that you need to follow the examples.
Following is the list of software and the download link to work through this book:
PostgreSQL 9.x (https://www.postgresql.org/download/)
PostGIS 2.x (http://postgis.net/install/)
QGIS 2.x (http://www.qgis.org/en/site/forusers/download.html)
ogr2ogr / gdal (http://ogr2gui.ca/)
Manifold 8 (http://manifold.net/updates/downloads.shtml)
SQL SERVER 2016 (https://www.microsoft.com/en-us/sql-server/sql-server-downloads)
pgAdmin 3 (Should be bundled with PostgreSQL, if not https://www.pgadmin.org/download/)
OL3 (https://openlayers.org/download/)
Leaflet (http://leafletjs.com/download.html)
GeoServer 2.9 + with bundled jetty (http://geoserver.org/)
ExtJs (https://www.sencha.com/products/evaluate/)
Node.js (https://nodejs.org/en/download/)
pgRouting (http://pgrouting.org/download.html)
Who this book is for
If you are a GIS developer or analyst who wants to master PostGIS to build efficient, scalable GIS applications, this book is for you. If you want to conduct advanced analysis of spatial data, this book will also help you. The book assumes that you have a working installation of PostGIS in place, and have working experience with PostgreSQL.
Conventions
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: The next lines of code read the link and assign it to the BeautifulSoup function.
A block of code is set as follows:
Any command-line input or output is written as follows:
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: In order to download new modules, we will go to Files | Settings | Project Name | Project Interpreter.
Warnings or important notes appear in a box like this.
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail feedback@packtpub.com, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
You can download the code files by following these steps:
Log in or register to our website using your e-mail address and password.
Hover the mouse pointer on the SUPPORT tab at the top.
Click on Code Downloads & Errata.
Enter the name of the book in the Search box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on Code Download.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/Mastering-Postgis. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
Downloading the color images of this book
We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/MasteringPostgis_ColorImages.pdf.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books-maybe a mistake in the text or the code-we would be grateful if you could report