Beyond Google Maps and Mashups
Practicalities

●Download:
www.archaeogeek.com/downloads/leics2010.zip

Save to /home/user and extract
●




/home/user/le...
Installing Quantum GIS plugins




Needed Plugins: Mapserver Export, PostGIS
manager, SPIT
Databases
Databases



                           +
             www.postgresql.org
             postgis.refractions.net
●   Server-...
How to connect to a database


●   HOST: localhost, 192.168.3.40, myserver.com
●   DATABASE: ??? (your choice)
●   USERNAM...
Getting spatial data into PostgreSQL

●   OGR2OGR (command line)
●   SHP2PGSQL (command line)
●   SPIT plugin for Quantum ...
Loading data with SPIT

Create new database with pgadmin3
 and connect to it with SPIT in QGIS
SPIT (continued)




     Make “DB Relation Name” all lower case!!!
Database house-keeping

●   Each table should have a primary key
●   Each spatial table should be recorded in
     the geo...
Querying data
●   SQL: Structured Query Language
    SELECT some comma de-limited
     columns FROM your_table WHERE
     ...
Querying data
●   Display on the map using CREATE VIEW
     AS:
    CREATE VIEW viewname AS SELECT
     * FROM united_king...
Spatial Querying

●   Find out which county a point is in:
    SELECT “PROV3NAME” FROM
      united_kingdom_counties WHERE...
Map Servers
Types of Map Server




●   cgi program on a web server.
      Configuration via text files



●   java-based program. Con...
The Map File
MAP
      NAME "sample"
      STATUS ON
      SIZE 600 400
      EXTENT -180 -90 180 90
      UNITS DD
      ...
Checking and Viewing a map file


●   SHP2IMG at the command line
    shp2img -m
     /home/user/leics2010/demo.map
     -...
Adding new layers to a mapfile
LAYER
  NAME "your layer"
  STATUS DEFAULT
  TYPE POLYGON
  DATA "yourshapefile.shp"
  CLAS...
Connecting to PostgreSQL from Mapserver

LAYER
  NAME "UK Counties"
  STATUS DEFAULT
  TYPE POLYGON
  CONNECTIONTYPE POSTG...
Displaying single layers



●   Set the Layer status to “ON” rather than
     “DEFAULT”
●   Specify the layers as part of ...
Web Mapping
Web Mapping: Practicalities



●   Make the web folder writeable
    sudo chown -R user /var/www
    sudo chmod -R 755 /va...
Structure of a web page

<html>

   <head>
     <title> My Home Page
     </title>
   </head>

   <body>
     HELLO WORLD!...
Scripting


●   SERVER-SIDE:
    php, asp
         <?php
                 phpinfo();
         ?>
●   CLIENT-SIDE:
    java...
Solving Problems using Firefox
OpenLayers
OpenLayers page structure
<html>
   <head>
       <script src="..lib/OpenLayers.js"></script>
       <script type="text/ja...
Adding Controls



                     Scale Bars, Permalink
                     and Mouse Position




Layer Switcher a...
Base Mapping
●   Can use base data from Google, Microsoft,
     Yahoo, Openstreetmap, etc
●   Specify base layer (not alwa...
Beyond OpenLayers

•MapGuide Open Source
http://mapguide.osgeo.org
•Mapfish http://mapfish.org/
•Mapchat http://mapchat.ca...
And Finally...



                                      Have fun!!!




This work is licenced under the Creative Commons A...
Upcoming SlideShare
Loading in …5
×

Worskhop Leicester 2010

1,341 views
1,296 views

Published on

Databases and Web Mapping the Open Source Way

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,341
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Worskhop Leicester 2010

  1. 1. Beyond Google Maps and Mashups
  2. 2. Practicalities ●Download: www.archaeogeek.com/downloads/leics2010.zip Save to /home/user and extract ● /home/user/leics2010 folder should then contain: ● shape_files (folder) demo.map mapserver.html baselayers.html leicester_2010_notes.pdf
  3. 3. Installing Quantum GIS plugins Needed Plugins: Mapserver Export, PostGIS manager, SPIT
  4. 4. Databases
  5. 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. 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. 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. 8. Loading data with SPIT Create new database with pgadmin3 and connect to it with SPIT in QGIS
  9. 9. SPIT (continued) Make “DB Relation Name” all lower case!!!
  10. 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. 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. 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. 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;
  14. 14. Map Servers
  15. 15. Types of Map Server ● cgi program on a web server. Configuration via text files ● java-based program. Configuration via web interface
  16. 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. 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. 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. 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. 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
  21. 21. Web Mapping
  22. 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. 23. Structure of a web page <html> <head> <title> My Home Page </title> </head> <body> HELLO WORLD! </body> </html>
  24. 24. Scripting ● SERVER-SIDE: php, asp <?php phpinfo(); ?> ● CLIENT-SIDE: javascript
  25. 25. Solving Problems using Firefox
  26. 26. OpenLayers
  27. 27. OpenLayers page structure <html> <head> <script src="..lib/OpenLayers.js"></script> <script type="text/javascript"> var map, mylayer; function init() { map = new OpenLayers.Map('map'); mylayer = new OpenLayers.Layer.MapServer( "World Map", "http://localhost/cgi-bin/mapserv.exe", {map: 'C:/world_mapfile.map'}); map.addLayer(mylayer); map.zoomToMaxExtent(); } </script> </head> <body onload="init()"> <div id="map" style="width: 600px; height: 300px"></div> </body> </html>
  28. 28. Adding Controls Scale Bars, Permalink and Mouse Position Layer Switcher and Overview Map
  29. 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]);
  30. 30. Beyond OpenLayers •MapGuide Open Source http://mapguide.osgeo.org •Mapfish http://mapfish.org/ •Mapchat http://mapchat.ca/ •Featureserver http://featureserver.org/
  31. 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

×