OpenSource GIS 2004 Ottawa, Canada Introduction to PostGIS PostGIS Basics for the New User Paul Ramsey & Chris Hodgson Refractions Research
OpenSource GIS 2004 Ottawa, Canada PostgreSQL 1986 : Postgres project at Berkley –Successor to Ingres –Relational Model –Complex Objects –Extensibility 1995 : Postgres95 adds SQL Support 1996 : Open Source Community
OpenSource GIS 2004 Ottawa, Canada PostGIS PostgreSQL 7.1 (Tuple Toaster) Real GIS Support First Release in 2001 OpenGIS “Simple Features for SQL” Current Release 0.8.2
OpenSource GIS 2004 Ottawa, Canada Why PostGIS? Because Databases are Better than Files! Unified Storage, Management, Access –SQL Everywhere Transactional Integrity –Multiple Users, Multiple Edits
OpenSource GIS 2004 Ottawa, Canada PostGIS Users Data Handlers Unified Access Language (SQL) Unified Metadata Location –GlobeXplorer –i-cubed –Refractions
OpenSource GIS 2004 Ottawa, Canada PostGIS Users Real Time Systems Developers Unified Access Language (SQL) Standard Access Protocols –JDBC –ODBC
OpenSource GIS 2004 Ottawa, Canada Team CIMAR : DARPA Grand Challenge
OpenSource GIS 2004 Ottawa, Canada PostGIS Users Spatial Infrastructures LAN WMS / WFS PostGIS Internet JUMP QGIS WFS Client WMS Client
OpenSource GIS 2004 Ottawa, Canada PostgreSQL Version 7.5 Native Windows Support
OpenSource GIS 2004 Ottawa, Canada Windows PostgreSQL \bin Executables \include Include files for compilation \lib DLL shared library files \share Extensions env.bat Command prompt initdb.bat Initialize \data area pgstart.bat Start the database server
OpenSource GIS 2004 Ottawa, Canada Create a Database createdb postgis –Make the database psql postgis –Connect to the database create, insert, select –Try the database
OpenSource GIS 2004 Ottawa, Canada Load PostGIS PostgreSQL Extension –libpostgis.so –postgis.sql Requires PL/PgSQL createlang plpgsql postgis psql -f postgis.sql postgis psql -f spatial_ref_sys.sql postgis
OpenSource GIS 2004 Ottawa, Canada Simple Spatial SQL POINT(5 5) POINT(5 0) POINT(0 5) POINT(0 0)
OpenSource GIS 2004 Ottawa, Canada Load Shape Files select count(*) from bc_roads select count(*) from bc_voting_areas
OpenSource GIS 2004 Ottawa, Canada bc_pubs
OpenSource GIS 2004 Ottawa, Canada bc_roads
OpenSource GIS 2004 Ottawa, Canada bc_hospitals
OpenSource GIS 2004 Ottawa, Canada bc_municipality
OpenSource GIS 2004 Ottawa, Canada bc_voting_areas
OpenSource GIS 2004 Ottawa, Canada bc_voting_areas
OpenSource GIS 2004 Ottawa, Canada Creating Spatial Indexes
OpenSource GIS 2004 Ottawa, Canada Using Spatial Indexes select gid, name from bc_roads where crosses( the_geom, GeomFromText(‘LINESTRING(…)’,42102) ) select gid, name from bc_roads where crosses( the_geom, GeomFromText(‘LINESTRING(…)’,42102) ) and the_geom && GeomFromText(‘LINESTRING(…)’,42102)
OpenSource GIS 2004 Ottawa, Canada Query Plans
OpenSource GIS 2004 Ottawa, Canada # # CONNECTIONS AND AUTHENTICATION # # - Connection Settings - #listen_addresses = 'localhost'# what IP interface(s) to listen on; # defaults to localhost, '*' = any #port = 5432 max_connections = 100 #superuser_reserved_connections = 2 #rendezvous_name = ''# defaults to the computer name # - Security & Authentication - #authentication_timeout = 60# 1-600, in seconds #ssl = false #password_encryption = true #db_user_namespace = false # # RESOURCE USAGE (except WAL) # # - Memory - shared_buffers = 1000# min 16, at least max_connections*2, 8KB each #work_mem = 1024# min 64, size in KB #maintenance_work_mem = 16384# min 1024, size in KB #max_stack_depth = 2048# min 100, size in KB #vacuum_cost_page_hit = 1# credits #vacuum_cost_page_miss = 10# credits PostgreSQL Optimization
OpenSource GIS 2004 Ottawa, Canada Data Integrity ValidInvalid
OpenSource GIS 2004 Ottawa, Canada Distance Queries select sum(upbc) as unity_voters from bc_voting_areas where the_geom && setsrid( expand(‘POINT(…)’::geometry,2000) ) and distance( the_geom, geomfromtext(‘POINT(…)’, 42102) ) < 2000;
OpenSource GIS 2004 Ottawa, Canada Spatial Joins Associate two tables based on a spatial relationship, rather than an attribute relationship.
OpenSource GIS 2004 Ottawa, Canada select m.name, sum(v.ndp) as ndp, sum(v.lib) as liberal, sum(v.gp) as green, sum(v.upbc) as unity, sum(v.vtotal) as total from bc_voting_areas v, bc_municipality m, where v.the_geom && m.the_geom and intersects(v.the_geom, m.the_geom) group by m.name order by m.name;
OpenSource GIS 2004 Ottawa, Canada Overlays Table on table overlays are possible with the Intersection() function. Our example will only overlay one polygon with another table.
OpenSource GIS 2004 Ottawa, Canada create table pg_voting_areas as select intersection(v.the_geom, m.the_geom) as intersection_geom, area(v.the_geom) as va_area, v.*, m.name from bc_voting_areas v, bc_municipality m where v.the_geom && m.the_geom and intersects(v.the_geom, m.the_geom) and m.name = ‘PRINCE GEORGE’;
OpenSource GIS 2004 Ottawa, Canada Coordinate Projection SRID=42102;MULTILINESTRING(( , )) SRID=4326;MULTILINESTRING(( , ))
OpenSource GIS 2004 Ottawa, Canada Exercises & Questions