5. Databases
+
www.postgresql.org
postgis.refractions.net
● Server-based database (not like access)
● Data is entirely separate from user interface
● Inside the database, data stored in schemas
for finer control
6. How to connect to a database
● HOST: localhost, 192.168.3.40, myserver.com
● DATABASE: ??? (your choice)
● USERNAME: user
● PASSWORD: user
● PORT: 5432 (default)
7. Getting spatial data into PostgreSQL
● OGR2OGR (command line)
● SHP2PGSQL (command line)
● SPIT plugin for Quantum GIS
● Essential Parameters:
host, username, password, dbname,
port (as before)
● Additionally: name and location of
shapefile, name of table in database,
coordinate system of data
8. Loading data with SPIT
Create new database with pgadmin3
and connect to it with SPIT in QGIS
10. Database house-keeping
● Each table should have a primary key
● Each spatial table should be recorded in
the geometry_columns table
● Each spatial table should have a spatial
index
CREATE INDEX yourtable_idx ON
yourtable USING
GIST(geometry_column);
11. Querying data
● SQL: Structured Query Language
SELECT some comma de-limited
columns FROM your_table WHERE
some condition is met;
● Use PSQL from command line, PgAdmin3,
or PostgreSQL Manager/SQL Editor
● SQL is case-sensitive for table and column
names, and keywords are usually in
capitals
12. Querying data
● Display on the map using CREATE VIEW
AS:
CREATE VIEW viewname AS SELECT
* FROM united_kingdom_counties
WHERE...
● Add to QGIS using Add Layer/Add
PostGIS layer
13. Spatial Querying
● Find out which county a point is in:
SELECT “PROV3NAME” FROM
united_kingdom_counties WHERE
st_within(geomfromtext('point(-1.4
52.6)', 4326), the_geom);
● Find out the spatial extent of your data:
SELECT st_extent(the_geom) FROM
united_kingdom_counties;
15. Types of Map Server
● cgi program on a web server.
Configuration via text files
● java-based program. Configuration via
web interface
16. The Map File
MAP
NAME "sample"
STATUS ON
SIZE 600 400
EXTENT -180 -90 180 90
UNITS DD
SHAPEPATH "../data"
IMAGECOLOR 255 255 255
WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
END
LAYER
NAME 'global-raster'
TYPE RASTER
STATUS DEFAULT
DATA bluemarble.gif
END
END
17. Checking and Viewing a map file
● SHP2IMG at the command line
shp2img -m
/home/user/leics2010/demo.map
-o /home/user/demo.png
● With a browser
http://localhost.com/cgi-
bin/mapserv?
map=/home/user/leics2010/demo.map
&mode=map
18. Adding new layers to a mapfile
LAYER
NAME "your layer"
STATUS DEFAULT
TYPE POLYGON
DATA "yourshapefile.shp"
CLASS
NAME "your name for this symbology"
STYLE
SYMBOL 0
OUTLINECOLOR 0 0 0
COLOR 207 150 123
END
END
END
19. Connecting to PostgreSQL from Mapserver
LAYER
NAME "UK Counties"
STATUS DEFAULT
TYPE POLYGON
CONNECTIONTYPE POSTGIS
CONNECTION "host=localhost port=5432
dbname=osgis2010 user=user password=user"
DATA "the_geom from united_kingdom_counties"
CLASS
…
END
END
20. Displaying single layers
● Set the Layer status to “ON” rather than
“DEFAULT”
● Specify the layers as part of the URL:
http://localhost/cgi-
bin/mapserv?
map=/home/user/leics2010/demo.
map&layer=counties
22. Web Mapping: Practicalities
● Make the web folder writeable
sudo chown -R user /var/www
sudo chmod -R 755 /var/www
● If asked for a password, it's user
23. Structure of a web page
<html>
<head>
<title> My Home Page
</title>
</head>
<body>
HELLO WORLD!
</body>
</html>
28. Adding Controls
Scale Bars, Permalink
and Mouse Position
Layer Switcher and
Overview Map
29. Base Mapping
● Can use base data from Google, Microsoft,
Yahoo, Openstreetmap, etc
● Specify base layer (not always necessary)
{'isBaseLayer': true}
● Overlay needs to be transparent
{'transparent':true, 'format':
png}
● Change addlayers directive
map.addLayers([layer1,layer2]);
31. And Finally...
Have fun!!!
This work is licenced under the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales License. To
view a copy of this licence, visit http://creativecommons.org/licenses/by-sa/2.0/uk/ or send a letter to Creative
Commons, 171 Second Street, Suite 300, San Francisco, California
94105, USA.
Jo Cook
OA Digital
http://oadigital.net
j.cook@oadigital.net
+44 (0)1524 880212