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 Setting Up Your Environment Understanding GIS Setting up the tools Installing on Linux Installing on Windows Installing on macOS Getting familiar with the software About the software licenses Collecting some data Getting basic data Licenses Accessing satellite data Active remote sensing Passive remote sensing Licenses Using OpenStreetMap OpenStreetMap license Summary Accessing GIS Data With QGIS Accessing raster data Raster data model Rasters are boring Accessing vector data Vector data model Vector topology - the right way Opening tabular layers Understanding map scales Summary Using Vector Data Effectively Using the attribute table SQL in GIS Selecting features in QGIS Preparing our data Writing basic queries Filtering layers Spatial querying Writing advanced queries Modifying the attribute table Removing columns Joining tables Spatial joins Adding attribute data Understanding data providers Summary Creating Digital Maps Styling our data Styling raster data Styling vector data Mapping with categories Graduated mapping Understanding projections Plate Carrée - a simple example Going local with NAD83 / Conus Albers Choosing the right projection Preparing a map Rule-based styling Adding labels Creating additional thematics Creating a map Adding cartographic elements Summary Exporting Your Data Creating a printable map Clipping features Creating a background Removing dangling segments Exporting the map A good way for post-processing - SVG Sharing raw data Vector data exchange formats Shapefile WKT and WKB Markup languages GeoJSON Raster data exchange formats GeoTIFF Clipping rasters Other raster formats Summary Feeding a PostGIS Database A brief overview of databases Relational databases NoSQL databases Spatial databases Importing layers into PostGIS Importing vector data Spatial indexing Importing raster data Visualizing PostGIS layers in QGIS Basic PostGIS queries Summary A PostGIS Overview Customizing the database Securing our database Constraining tables Saving queries Optimizing queries Backing up our data Creating static backups Continuous archiving Summary Spatial Analysis in QGIS Preparing the workspace Laying down the rules Vector analysis Proximity analysis Understanding the overlay tools Towards some neighborhood analysis Building your models Using digital elevation models Filtering based on aspect Calculating walking times Summary Spatial Analysis on Steroids - Using PostGIS Delimiting quiet houses Proximity analysis in PostGIS Precision problems of buffering Querying distances effectively Saving the results Matching the rest of the criteria Counting nearby points Querying rasters Summary A Typical GIS Problem Outlining the problem Raster analysis Multi-criteria evaluation Creating the constraint mask Using fuzzy techniques in GIS Proximity analysis with rasters Fuzzifying crisp data Aggregating the results Calculating statistics Vectorizing suitable areas Using zonal statistics Accessing vector statistics Creating an atlas Summary Showcasing Your Data Spatial data on the web Understanding the basics of the web Spatial servers Using QGIS for publishing Using GeoServer General configuration GeoServer architecture Adding spatial data Tiling your maps Summary Styling Your Data in GeoServer Managing styles Writing SLD styles Styling vector layers Styling waters Styling polygons Creating labels Styling raster layers Using CSS in GeoServer Styling layers with CSS Creating complex styles Styling raster layers Summary Creating a Web Map Understanding the client side of the Web Creating a web page Writing HTML code Styling the elements Scripting your web page Creating web maps with Leaflet Creating a simple map Compositing layers Working with Leaflet plugins Loading raw vector data Styling vectors in Leaflet Annotating attributes with popups Using other projections Summary Appendix