The “How” of Geo
Andrew Turner
FortiusOne - GeoCommons

andrew@fortiusone.com
http://highearthorbit.com
Who is @ajturner?
Airships
Vehicle Simulation
Astrium EADS
Vehicle Simulation
Convergence
Convergence   uLocate WHERE
Where 2.0:                         August 2008


The State of the
Geospatial Web




An O’Reilly Radar Report
By Andrew Tu...
Geo Community
Overview
Fast Overview
A Brief History
  of Mapping *




                  *IANAH
StoryMapping
Emphemeral Maps   http://maps.google.com
Meaning
Meaning
Navigation
Compass
1492 - Columbus sails
   the ocean blue
Cartographic Renaissance
So geographers, in Afric maps,
With savage pictures fill their gaps,
And o’er unhabitable downs
Place elephants for want of...
Ortelius Atlas
Exploration
Travel Guides
Driving Guides
GIS
Internet Maps
2005 - Google slips the
        map
urban renewal
    participatory web



  2005 - Google slips the
          map
                        mobile computing
GP...
HousingMaps   http://housingmaps.com
Slippy Maps
      &
Spinny Globes
GoogleMaps   http://maps.google.com
Interactivity   http://maps.google.com
Design
Usability
http://maps.google.com/maps?f=q&hl=en&geocode=&q=Cape+Town&ie=UTF8&ll=-33.938803,18.486214&spn=0.182293,0.331306&z=12




...
http://maps.google.com/maps?f=q&hl=en&geocode=&q=Cape+Town&ie=UTF8&ll=-33.938803,18.486214&spn=0.182293,0.331306&z=12




...
Brighton, UK
Brighton, UK
Data Ownership and
           Access
Data Ownership and
           Access
Technology Limitations
Technology Limitations
Where Next?
              http://flickr.com/photos/loupiote/25426957
Storage
id       name      rating    lat      lon
10045    Vibe Bar    4.3     52.81    0.295
10046   Half Moon    3.8     53.432 ...
id       name      rating    lat      lon
10045    Vibe Bar    4.3     52.81    0.295
10046   Half Moon    3.8     53.432 ...
SELECT name,latitude,longitude, acos(SIN( PI()* 40.7383040 /180 )*SIN( PI()*latitude/180 )
)+(cos(PI()* 40.7383040 /180)*C...
SELECT the_geom
FROM geom_table
WHERE ST_Distance(the_geom, GeomFromText('POINT(0.02839 51.50807)', -1)) < 100
SELECT the_geom
FROM geom_table
WHERE the_geom && 'BOX3D(0.02 51,0.03 52)'::box3d
  AND
ST_Distance(the_geom, GeomFromText...
SpatiaLite
SQLite + Spatial Types




              http://www.gaia-gis.it/spatialite/
GeoHash



          http://geohash.org/
GeoHash



          http://geohash.org/
GeoHash
SELECT name
FROM pubs
WHERE geohash LIKE quot;GCPUV%quot;




                              http://geohash.org/
GeoHash
SELECT name
FROM pubs
WHERE geohash LIKE quot;GCPUVR%quot;
OR geohash LIKE quot;GCPVJ2%quot;




                 ...
Data
GeoNames   http://geonames.org
GeoNames   http://geonames.org
Implicit GeoData   http://geocodr.net
Implicit GeoData   http://geocodr.net
OpenStreetMap   http://openstreetmap.org
OpenStreetMap   http://openstreetmap.org
Wiki for the World
Flickr OSM   http://www.flickr.com/map?
             &fLat=39.9227&fLon=116.4694&zl=6
Flickr Photos
OpenAerialMap   http://openaerialmap.org
DC CTO   http://data.octo.dc.gov/
GeoCommons Finder!   http://geocommons.com
Sharing
GeoRSS
GeoRSS
GeoRSS


+
GeoRSS


    <georss:point>
+      45.256 -71.92
    </georss:point>
GeoRSS


    <georss:point>
+      45.256 -71.92
    </georss:point>
GeoRSS


    <georss:point>
+      45.256 -71.92
    </georss:point>
RSS / Atom
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<feed xml:lang=quot;en-USquot; xmlns:dc=quot;http://purl...
GeoRSS
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<feed xml:lang=quot;en-USquot; xmlns:dc=quot;http://purl.org...
GeoNames GeoRSS   http://www.geonames.org/rss-to-georss-converter.html
KML
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<kml xmlns=quot;http://earth.google.com/kml/2.2quot;>
  <Placem...
KML Extended Data

 <ExtendedData id=quot;roomsquot;>
     <name>Rooms</name>
     <value>3</value>
 </ExtendedData>
KML Network Links

</NetworkLink>
    <NetworkLink>
    <name><![CDATA[Pubs in London]]></name>
    <Link>
        <href>h...
GeoJSON


{ quot;typequot;: quot;Pointquot;, quot;coordinatesquot;: [100.0, 0.0] }
GeoJSON
{ quot;blogquot;: {
    quot;postsquot;: [
       { quot;typequot;: quot;atom:itemquot;,
         quot;atom:summar...
GeoWeb
Resources

• /places
• /places/89
• /places/89.atom
• /places/89.kml
Web Aligned   http://highearthorbit.com/a-proposal-georss-kml
Formats

HTML : RSS
Formats

HTML : RSS ::
Formats

HTML : RSS :: KML : GeoRSS
Formats

HTML : RSS :: KML : GeoRSS
     Visualization : Syndication
OpenSearch
http://search.org?q={searchTerm}
OpenSearch
http://search.org?q={searchTerm}
OpenSearch-Geo
http://search.org?q={searchTerm}
        &lat={geo:lat}&lon={geo:lon}
OpenSearch-Geo
                              http://maps.google.com/maps?near=43.3+-0.03
                                 ...
OpenSearch-Geo
                              http://maps.google.com/maps?near=43.3+-0.03
                                 ...
OpenSearch-Geo
                              http://maps.google.com/maps?near=43.3+-0.03
                                 ...
OpenSearch-Geo
                              http://maps.google.com/maps?near=43.3+-0.03
                                 ...
OpenSearch-Geo
                              http://maps.google.com/maps?near=43.3+-0.03
                                 ...
Why should I share my data?
GeoStack




           http://flickr.com/photos/alfr3do/7436142/
Create
             Exif   GeoRSS      KML        GPX    Geocoding
GeoStack

                             Publish
        ...
Visualization
Mapstraction
Mapstraction API
<script src=quot;http://maps.google.com/maps?file=api&v=2&key=YOUR_KEYquot; type=quot;text/javascriptquot...
Power of the Swap




var mapstraction = new Mapstraction(‘map’, ‘google’);
Power of the Swap




mapstraction.swap(‘mapstraction’, ‘yahoo’);
Power of the Swap




mapstraction.swap(‘mapstraction’, ‘microsoft’);
Power of the Swap




mapstraction.swap(‘mapstraction’, ‘openstreetmap’);
Overlays
mapstraction.addImageOverlay
  (quot;overquot;,file,opacity,west,south,east,north);

mapstraction.addImageOverlay(...
Filters

mapstraction.removeAllFilters();
mapstraction.addFilter('category', 'eq', 10 );
mapstraction.doFilter();
Filters

mapstraction.removeAllFilters();
mapstraction.addFilter('category', 'eq', 10 );
mapstraction.doFilter();


mapstr...
Sliders
OpenLayers   http://openlayers.org
map = new OpenLayers.Map(quot;mapquot;, {
    maxResolution: 360/512,
        projection: quot;EPSG:4326quot; ,
        nu...
map = new OpenLayers.Map(quot;mapquot;, {
    maxResolution: 360/512,
        projection: quot;EPSG:4326quot; ,
        nu...
<link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div id...
<link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div id...
<link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div id...
<link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div ...
<link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div ...
<link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; />
<div ...
Accessibility
ModestMaps
package {
    public class ModestMapsSample extends Sprite
    {
        private var map:Map;
        public function Mode...
London2012   http://london2012.co.uk
Hurricane Tracking   http://hurricanewiki.org
GeoCommons Maker!   http://maker.geocommons.com
Analysis
WalkScore   http://walkscore.com
MySociety House Price     http://www.mysociety.org/2007/more-travel-maps/

        vs. Travel Time
pgRouting



            http://pgrouting.postlbs.org/
Safe Routing   http://www.ridethecity.com
Fuel Efficiency Routing
Bakery Routing
Cartography
wrp.geothings.net
Maps for Farmers   http://serveyourcountryfood.com
Tiles
Tiles
Tiles
TileCache




TileCache   http://tilecache.org
Image
WMS
Mapnik   TileCache
Image
 CRS




         TileCache   http://tilecache.org
Image
WMS
                                     TMS
Mapnik   TileCache
                                  900913
Image
     ...
Mapstraction Tiles
mapstraction.addTileLayer(quot;http://oakland-1950s.s3.amazonaws.com/{Z}-r{Y}-c{X}.jpgquot;, 80);
New Orleans   http://maps.thinknola.com
EveryBlock   http://everyblock.com
BurningManEarth   http://earth.burningman.org
What is a “Choropleth”?
ColorBrewer   http://www.personal.psu.edu/cab38/
              ColorBrewer/ColorBrewer.html
Read
Public Geodata
     Repository
GeoData Visualization
Thematic Styling
Classification
Styling
Base Data
Comparative Analysis   http://maker.geocommons.com/maps/839
Inspect the Data
Styled KML
Print Maps
Mapnik
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<!DOCTYPE Map>
<Map bgcolor=quot;#b5d0d0quot; srs=quot;+proj=latlon...
OpenCycleMap   http://opencyclemap.org
GPSies   http://gpsies.com/
OpenCycleMap   http://opencyclemap.org
Shenzen Maps
StumbleSafely   http://www.outsideindc.com/stumblesafely
example.mml                                            example.mss

<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>...
Geolocation
GPS
GSM
WiFi
IP Address
Proximity
User Tracking
W3C Geolocation   http://dev.w3.org/geo/api/spec-source.html
navigator.geolocation.getCurrentPosition(function(pos) {
   alert( pos.latitude + quot;, quot; + pos.longitude );
})
interface Geolocation {
   readonly attribute Position lastPosition;

     void getCurrentPosition(in PositionCallback suc...
PlundrDS
GeoClue
Core Location
FireEagle   http://fireeagle.com
geotagging pacers
         M   T   W   Th
geotagging pacers
         M    T       W   Th
         1   23   4
geotagging pacers
         M    T       W   Th
         1   23   4
geotagging pacers
         M    T       W   Th
         1   23   4
geotagging pacers
         M    T       W   Th
         1   23   4
BBC Bangladesh Boat
            Journey
Mobile
Mobline Placemarking
Android Innovations



cab4me
Ambient Location




OmniFocus
UrbanSpoon
VoteReport   http://twittervotereport.com
Navigating Washington   http://navigatingwashington.com
Navigating Washington   http://navigatingwashington.com
Navigating Washington   http://navigatingwashington.com
Ushahidi
Ushahidi
Ushahidi - Gaza   http://labs.aljazeera.net/warongaza/
API




      Dash   http://dash.net
PocketMaps
PocketMaps
height = 11
width = 8.5
margin = .25
dpi = 144

bbox = (45.482882,-73.619899,45.532687,-73.547801)
zoom = 16

o...
GeoWeb




We’re Hiring   Help build the GeoWeb
Asante sana!
  andrew@highearthorbit.com
       highearthorbit.com
      twitter.com/ajturner
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
RefreshDC - The How Of Geo
Upcoming SlideShare
Loading in …5
×

RefreshDC - The How Of Geo

2,005 views
1,931 views

Published on

Talk given to RefreshDC at the January 2009 meeting.

Since I was only given 2 days to prepare, it's an agglomeration of the last couple of talks I've given in Nairobi, FOWA London, and Web2Expo.

The talk is a very broad overview of the current GeoWeb technologies and examples. In future talks I will definitely be focusing more on specific topics to get more in-depth discussion and analysis of tools and techniques.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,005
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
61
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

RefreshDC - The How Of Geo

  1. 1. The “How” of Geo Andrew Turner FortiusOne - GeoCommons andrew@fortiusone.com http://highearthorbit.com
  2. 2. Who is @ajturner?
  3. 3. Airships
  4. 4. Vehicle Simulation
  5. 5. Astrium EADS
  6. 6. Vehicle Simulation
  7. 7. Convergence
  8. 8. Convergence uLocate WHERE
  9. 9. Where 2.0: August 2008 The State of the Geospatial Web An O’Reilly Radar Report By Andrew Turner & Brady Forrest Preface by Tim O’Reilly
  10. 10. Geo Community
  11. 11. Overview
  12. 12. Fast Overview
  13. 13. A Brief History of Mapping * *IANAH
  14. 14. StoryMapping
  15. 15. Emphemeral Maps http://maps.google.com
  16. 16. Meaning
  17. 17. Meaning
  18. 18. Navigation
  19. 19. Compass
  20. 20. 1492 - Columbus sails the ocean blue
  21. 21. Cartographic Renaissance
  22. 22. So geographers, in Afric maps, With savage pictures fill their gaps, And o’er unhabitable downs Place elephants for want of towns. - Jonathan Swift
  23. 23. Ortelius Atlas
  24. 24. Exploration
  25. 25. Travel Guides
  26. 26. Driving Guides
  27. 27. GIS
  28. 28. Internet Maps
  29. 29. 2005 - Google slips the map
  30. 30. urban renewal participatory web 2005 - Google slips the map mobile computing GPS becomes ubiquitous
  31. 31. HousingMaps http://housingmaps.com
  32. 32. Slippy Maps & Spinny Globes
  33. 33. GoogleMaps http://maps.google.com
  34. 34. Interactivity http://maps.google.com
  35. 35. Design
  36. 36. Usability
  37. 37. http://maps.google.com/maps?f=q&hl=en&geocode=&q=Cape+Town&ie=UTF8&ll=-33.938803,18.486214&spn=0.182293,0.331306&z=12 Data Coverage and Quality
  38. 38. http://maps.google.com/maps?f=q&hl=en&geocode=&q=Cape+Town&ie=UTF8&ll=-33.938803,18.486214&spn=0.182293,0.331306&z=12 Data Coverage and Quality http://openstreetmap.org/?lat=-33.9377&lon=18.4745&zoom=12&layers=B000FTF
  39. 39. Brighton, UK
  40. 40. Brighton, UK
  41. 41. Data Ownership and Access
  42. 42. Data Ownership and Access
  43. 43. Technology Limitations
  44. 44. Technology Limitations
  45. 45. Where Next? http://flickr.com/photos/loupiote/25426957
  46. 46. Storage
  47. 47. id name rating lat lon 10045 Vibe Bar 4.3 52.81 0.295 10046 Half Moon 3.8 53.432 0.312 Pub 10047 Windmill 2.6 50.982 0.256 10048 Marquess 1.7 51.023 1.24 oAnglesey Grange 10049 4.5 52.110 0.4562 Pub Coopers 10050 3.5 50.862 0.821 Arms Old 10051 3.2 52.591 0.312 Queens Oxo 10052 1.3 51.93 -0.351 Head Tower 10053 Riverside 3.9 52.18 0.62
  48. 48. id name rating lat lon 10045 Vibe Bar 4.3 52.81 0.295 10046 Half Moon 3.8 53.432 0.312 Pub 10047 Windmill 2.6 50.982 0.256 10048 Marquess 1.7 51.023 1.24 oAnglesey Grange 10049 4.5 52.110 0.4562 Pub Coopers 10050 3.5 50.862 0.821 Arms Old 10051 3.2 52.591 0.312 Queens Oxo 10052 1.3 51.93 -0.351 Head Tower 10053 Riverside 3.9 52.18 0.62
  49. 49. SELECT name,latitude,longitude, acos(SIN( PI()* 40.7383040 /180 )*SIN( PI()*latitude/180 ) )+(cos(PI()* 40.7383040 /180)*COS( PI()*latitude/180) *COS(PI()*longitude/180-PI()* -73.99319 /180) )* 3963.191 AS distance FROM allcountries WHERE 3963.191 * ACOS( (SIN(PI()* 40.7383040 /180)*SIN(PI() * latitude/180)) + (COS(PI()* 40.7383040 /180)*cos(PI()*latitude/180)*COS(PI() * longitude/180-PI()* -73.99319 /180)) ) < = 1.5 ORDER BY 3963.191 * ACOS( (SIN(PI()* 40.7383040 /180)*SIN(PI()*latitude/180)) + (COS(PI()* 40.7383040 /180)*cos(PI()*latitude/180)*COS(PI() * longitude/180-PI()* -73.99319 /180)) )
  50. 50. SELECT the_geom FROM geom_table WHERE ST_Distance(the_geom, GeomFromText('POINT(0.02839 51.50807)', -1)) < 100
  51. 51. SELECT the_geom FROM geom_table WHERE the_geom && 'BOX3D(0.02 51,0.03 52)'::box3d AND ST_Distance(the_geom, GeomFromText('POINT(0.02839 51.50807)', -1)) < 100
  52. 52. SpatiaLite SQLite + Spatial Types http://www.gaia-gis.it/spatialite/
  53. 53. GeoHash http://geohash.org/
  54. 54. GeoHash http://geohash.org/
  55. 55. GeoHash SELECT name FROM pubs WHERE geohash LIKE quot;GCPUV%quot; http://geohash.org/
  56. 56. GeoHash SELECT name FROM pubs WHERE geohash LIKE quot;GCPUVR%quot; OR geohash LIKE quot;GCPVJ2%quot; http://geohash.org/
  57. 57. Data
  58. 58. GeoNames http://geonames.org
  59. 59. GeoNames http://geonames.org
  60. 60. Implicit GeoData http://geocodr.net
  61. 61. Implicit GeoData http://geocodr.net
  62. 62. OpenStreetMap http://openstreetmap.org
  63. 63. OpenStreetMap http://openstreetmap.org
  64. 64. Wiki for the World
  65. 65. Flickr OSM http://www.flickr.com/map? &fLat=39.9227&fLon=116.4694&zl=6
  66. 66. Flickr Photos
  67. 67. OpenAerialMap http://openaerialmap.org
  68. 68. DC CTO http://data.octo.dc.gov/
  69. 69. GeoCommons Finder! http://geocommons.com
  70. 70. Sharing
  71. 71. GeoRSS
  72. 72. GeoRSS
  73. 73. GeoRSS +
  74. 74. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  75. 75. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  76. 76. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  77. 77. RSS / Atom <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <feed xml:lang=quot;en-USquot; xmlns:dc=quot;http://purl.org/dc/elements/1.1/quot; xml:base=quot;http://grwifi.net/feedquot; xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>Grand Rapids WiFi: News, Updated Hotspot Locations, and Comments</title> <id>http://grwifi.net/atom/locations</id> <link href=quot;http://grwifi.net/feedquot; rel=quot;selfquot; type=quot;application/atom+xmlquot;/> <rights>Creative Commons Attribution-NonCommercial-ShareAlike 2.0 http://creativecommons.org/licenses/by-nc-sa/2.0/ </rights> <updated>2007-03-28T17:31:33+00:00</updated> <entry> <id>http://grwifi.net/location/view/skelletones#comment3862</id> <title>Grand Rapids WiFi: Comment on The Euclid</title> <link href=quot;http://grwifi.net/location/view/skelletones#comment3862quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;The Euclidquot;/> <author><name>mari</name></author> <content type=quot;xhtmlquot;><p>i know a local band in kalamazoo called rising vacancy. i was wondering how …/p></content> <published>2007-03-28T17:31:33+00:00</published> </entry> <entry> <id>http://grwifi.net/location/view/bk-east-paris#comment3855</id> <title>Grand Rapids WiFi: Comment on Burger King - East Paris</title> <link href=quot;http://grwifi.net/location/view/bk-east-paris#comment3855quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;Burger King - East Parisquot;/> <author><name>Brandino</name></author> <content type=quot;xhtmlquot;><p>I love burger king </p></content> <published>2007-03-21T16:38:19+00:00</published> </entry> <entry> <id>http://grwifi.net/location/view/common-ground#comment3843</id> <title>Grand Rapids WiFi: Comment on Common Ground Coffee Shop</title> <link href=quot;http://grwifi.net/location/view/common-ground#comment3843quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;Common Ground Coffee Shopquot;/> <author> <name>Rex Cowan</name> </author> <content type=quot;xhtmlquot;> <div xmlns=quot;http://www.w3.org/1999/xhtmlquot;><p>Common Ground is a welcoming place with a warm atmosphere, the clerk I talked to had …</p></ content> <published>2007-03-17T01:45:59+00:00</published> </entry> </feed>
  78. 78. GeoRSS <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <feed xml:lang=quot;en-USquot; xmlns:dc=quot;http://purl.org/dc/elements/1.1/quot; xml:base=quot;http://grwifi.net/feedquot; xmlns:georss=quot;http://www.georss.org/georssquot; xmlns=quot;http:// www.w3.org/2005/Atomquot;> <title>Grand Rapids WiFi: News, Updated Hotspot Locations, and Comments</title> <id>http://grwifi.net/atom/locations</id> <link href=quot;http://grwifi.net/feedquot; rel=quot;selfquot; type=quot;application/atom+xmlquot;/> <rights>Creative Commons Attribution-NonCommercial-ShareAlike 2.0 http://creativecommons.org/licenses/by-nc-sa/2.0/ </rights> <updated>2007-03-28T17:31:33+00:00</updated> <entry> <id>http://grwifi.net/location/view/skelletones#comment3862</id> <title>Grand Rapids WiFi: Comment on The Euclid</title> <link href=quot;http://grwifi.net/location/view/skelletones#comment3862quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;The Euclidquot;/> <author><name>mari</name></author> <georss:point>42.960126 -85.667997</georss:point> <content type=quot;xhtmlquot;><p>i know a local band in kalamazoo called rising vacancy. i was wondering how …/p></content> <published>2007-03-28T17:31:33+00:00</published> </entry> <entry> <id>http://grwifi.net/location/view/bk-east-paris#comment3855</id> <title>Grand Rapids WiFi: Comment on Burger King - East Paris</title> <link href=quot;http://grwifi.net/location/view/bk-east-paris#comment3855quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;Burger King - East Parisquot;/> <author><name>Brandino</name></author> <georss:point>42.911495 -85.568665</georss:point> <content type=quot;xhtmlquot;><p>I love burger king </p></content> <published>2007-03-21T16:38:19+00:00</published> </entry> <entry> <id>http://grwifi.net/location/view/common-ground#comment3843</id> <title>Grand Rapids WiFi: Comment on Common Ground Coffee Shop</title> <link href=quot;http://grwifi.net/location/view/common-ground#comment3843quot; rel=quot;alternatequot; type=quot;text/htmlquot;/> <category term=quot;Common Ground Coffee Shopquot;/> <author> <name>Rex Cowan</name> </author> <georss:point>42.962927 -85.637179</georss:point> <content type=quot;xhtmlquot;> <div xmlns=quot;http://www.w3.org/1999/xhtmlquot;><p>Common Ground is a welcoming place with a warm atmosphere, the clerk I talked to had …</p></content> <published>2007-03-17T01:45:59+00:00</published> </entry> </feed>
  79. 79. GeoNames GeoRSS http://www.geonames.org/rss-to-georss-converter.html
  80. 80. KML <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <kml xmlns=quot;http://earth.google.com/kml/2.2quot;> <Placemark> <name>Simple placemark</name> <description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description> <Point> <coordinates>-122.0822035425683,37.42228990140251,0</coordinates> </Point> </Placemark> </kml>
  81. 81. KML Extended Data <ExtendedData id=quot;roomsquot;> <name>Rooms</name> <value>3</value> </ExtendedData>
  82. 82. KML Network Links </NetworkLink> <NetworkLink> <name><![CDATA[Pubs in London]]></name> <Link> <href>http://maker.geocommons.com/maps/839/overlays/1</href> </Link> </NetworkLink>
  83. 83. GeoJSON { quot;typequot;: quot;Pointquot;, quot;coordinatesquot;: [100.0, 0.0] }
  84. 84. GeoJSON { quot;blogquot;: { quot;postsquot;: [ { quot;typequot;: quot;atom:itemquot;, quot;atom:summaryquot;: quot;post 1quot;, quot;atom:descriptionquot;: quot;i love bloggingquot; }, { quot;typequot;: quot;atom:itemquot;, quot;atom:summaryquot;: quot;post 2 from CAquot;, quot;atom:descriptionquot;: quot;geoblogging in Californiaquot; quot;geometryquot;: { quot;typequot;, quot;Pointquot;, quot;coordinatesquot;: [-120, 40] } }, ], quot;geometryquot;: { quot;typequot;: quot;Polygonquot;, quot;coordinatesquot;: [[[-121, 39], [-119, 39], [-119, 41], [-121, 41], [-121, 39]]] } } }
  85. 85. GeoWeb
  86. 86. Resources • /places • /places/89 • /places/89.atom • /places/89.kml
  87. 87. Web Aligned http://highearthorbit.com/a-proposal-georss-kml
  88. 88. Formats HTML : RSS
  89. 89. Formats HTML : RSS ::
  90. 90. Formats HTML : RSS :: KML : GeoRSS
  91. 91. Formats HTML : RSS :: KML : GeoRSS Visualization : Syndication
  92. 92. OpenSearch http://search.org?q={searchTerm}
  93. 93. OpenSearch http://search.org?q={searchTerm}
  94. 94. OpenSearch-Geo http://search.org?q={searchTerm} &lat={geo:lat}&lon={geo:lon}
  95. 95. OpenSearch-Geo http://maps.google.com/maps?near=43.3+-0.03 http://local.yahoo.com/?csz=43.3,-0.03 http://upcoming.org/search?lat=43.3&lon=-0.03 http://api.flickr.com/services/photos_public.gne?bbox=-0.03,43.3, -0.04,43.4 http://mapufacture.com/search?lat=43.3&lon=-0.03
  96. 96. OpenSearch-Geo http://maps.google.com/maps?near=43.3+-0.03 http://local.yahoo.com/?csz=43.3,-0.03 http://upcoming.org/search?lat=43.3&lon=-0.03 http://api.flickr.com/services/photos_public.gne?bbox=-0.03,43.3, -0.04,43.4 http://mapufacture.com/search?lat=43.3&lon=-0.03 lat={geo:lat}&lon={geo:lon}&radius={geo:radius}
  97. 97. OpenSearch-Geo http://maps.google.com/maps?near=43.3+-0.03 http://local.yahoo.com/?csz=43.3,-0.03 http://upcoming.org/search?lat=43.3&lon=-0.03 http://api.flickr.com/services/photos_public.gne?bbox=-0.03,43.3, -0.04,43.4 http://mapufacture.com/search?lat=43.3&lon=-0.03 lat={geo:lat}&lon={geo:lon}&radius={geo:radius} bbox={geo:box}
  98. 98. OpenSearch-Geo http://maps.google.com/maps?near=43.3+-0.03 http://local.yahoo.com/?csz=43.3,-0.03 http://upcoming.org/search?lat=43.3&lon=-0.03 http://api.flickr.com/services/photos_public.gne?bbox=-0.03,43.3, -0.04,43.4 http://mapufacture.com/search?lat=43.3&lon=-0.03 lat={geo:lat}&lon={geo:lon}&radius={geo:radius} bbox={geo:box} where={geo:locationString}
  99. 99. OpenSearch-Geo http://maps.google.com/maps?near=43.3+-0.03 http://local.yahoo.com/?csz=43.3,-0.03 http://upcoming.org/search?lat=43.3&lon=-0.03 http://api.flickr.com/services/photos_public.gne?bbox=-0.03,43.3, -0.04,43.4 http://mapufacture.com/search?lat=43.3&lon=-0.03 lat={geo:lat}&lon={geo:lon}&radius={geo:radius} bbox={geo:box} where={geo:locationString} area={geo:polygon}
  100. 100. Why should I share my data?
  101. 101. GeoStack http://flickr.com/photos/alfr3do/7436142/
  102. 102. Create Exif GeoRSS KML GPX Geocoding GeoStack Publish GeoRSS KML Microformats MachineTags Aggregate GML KML GeoRSS WFS GeoJSON Consume
  103. 103. Visualization
  104. 104. Mapstraction
  105. 105. Mapstraction API <script src=quot;http://maps.google.com/maps?file=api&v=2&key=YOUR_KEYquot; type=quot;text/javascriptquot;> </script> <script type=quot;text/javascriptquot; src=quot;mapstraction.jsquot;></script> <div id=quot;mapstractionquot; style=quot;width: 400px; height: 400px;quot;></div> <script type=quot;text/javascriptquot;> var mapstraction = new Mapstraction('mapstraction','google'); var myPoint = new LatLonPoint(37.4041, -122.0081); mapstraction.setCenterAndZoom(myPoint, 10); mapstraction.addControls({ pan: true, zoom: 'small', map_type: true }); </script>
  106. 106. Power of the Swap var mapstraction = new Mapstraction(‘map’, ‘google’);
  107. 107. Power of the Swap mapstraction.swap(‘mapstraction’, ‘yahoo’);
  108. 108. Power of the Swap mapstraction.swap(‘mapstraction’, ‘microsoft’);
  109. 109. Power of the Swap mapstraction.swap(‘mapstraction’, ‘openstreetmap’);
  110. 110. Overlays mapstraction.addImageOverlay (quot;overquot;,file,opacity,west,south,east,north); mapstraction.addImageOverlay(quot;overquot;,quot;images/ santodomingo.pngquot;,50,-70.01544, 18.39777, -69.80567, 18.563517);
  111. 111. Filters mapstraction.removeAllFilters(); mapstraction.addFilter('category', 'eq', 10 ); mapstraction.doFilter();
  112. 112. Filters mapstraction.removeAllFilters(); mapstraction.addFilter('category', 'eq', 10 ); mapstraction.doFilter(); mapstraction.toggleFilter('category', 'eq', 10 );
  113. 113. Sliders
  114. 114. OpenLayers http://openlayers.org
  115. 115. map = new OpenLayers.Map(quot;mapquot;, { maxResolution: 360/512, projection: quot;EPSG:4326quot; , numZoomLevels: 20, minZoomLevel: 0, maxZoomLevel: 19, controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanPanel(), new OpenLayers.Control.ZoomPanel() ] }); var wms = new OpenLayers.Layer.WMS( quot;worldquot;, quot;/cgi-bin/tilecache/tilecache.cgi?quot;, {layers: 'world'} ); map.addLayers([wms]); map.setCenter(new OpenLayers.LonLat(0, 32), 7);
  116. 116. map = new OpenLayers.Map(quot;mapquot;, { maxResolution: 360/512, projection: quot;EPSG:4326quot; , numZoomLevels: 20, minZoomLevel: 0, maxZoomLevel: 19, controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanPanel(), new OpenLayers.Control.ZoomPanel() ] }); var wms = new OpenLayers.Layer.WMS( quot;worldquot;, quot;/cgi-bin/tilecache/tilecache.cgi?quot;, {layers: 'world'} ); map.addLayers([wms]); map.setCenter(new OpenLayers.LonLat(0, 32), 7);
  117. 117. <link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;gray smallmapquot;></div>
  118. 118. <link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;gray smallmapquot;></div> div.gray .olControlZoomPanel { top: 14px; left: 14px; } div.gray .olControlZoomPanel div { background-image: url(img/gray/gray_zoom_horiz.png); height: 18px; width: 18px; } div.gray .olControlZoomPanel .olControlZoomInItemInactive { top: 0px; left: 25px; background-position: 18px 0px; } div.gray .olControlZoomPanel .olControlZoomToMaxExtentItemInactive { top: 0px; left: 0px; background-position: 0px -18px; } div.gray .olControlZoomPanel .olControlZoomOutItemInactive { top: 0px; left: 0px; background-position: 0px 0px; }
  119. 119. <link rel=quot;stylesheetquot; href=quot;../themes/gray.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;gray smallmapquot;></div> div.gray .olControlZoomPanel { top: 14px; left: 14px; } div.gray .olControlZoomPanel div { background-image: url(img/gray/gray_zoom_horiz.png); height: 18px; width: 18px; } div.gray .olControlZoomPanel .olControlZoomInItemInactive { top: 0px; left: 25px; background-position: 18px 0px; } div.gray .olControlZoomPanel .olControlZoomToMaxExtentItemInactive { top: 0px; left: 0px; background-position: 0px -18px; } div.gray .olControlZoomPanel .olControlZoomOutItemInactive { top: 0px; left: 0px; background-position: 0px 0px; }
  120. 120. <link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;hearts smallmapquot;></div>
  121. 121. <link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;hearts smallmapquot;></div> .hearts .olControlZoomPanel div { background-image: url(img/hearts/hearts-zoom.png); } .hearts .olControlPanPanel div { background-image: url(img/hearts/hearts-panel.png); }
  122. 122. <link rel=quot;stylesheetquot; href=quot;../themes/hearts.cssquot; type=quot;text/cssquot; media=quot;screenquot; /> <div id=quot;mapquot; class=quot;hearts smallmapquot;></div> .hearts .olControlZoomPanel div { background-image: url(img/hearts/hearts-zoom.png); } .hearts .olControlPanPanel div { background-image: url(img/hearts/hearts-panel.png); }
  123. 123. Accessibility
  124. 124. ModestMaps
  125. 125. package { public class ModestMapsSample extends Sprite { private var map:Map; public function ModestMapsSample() { map = new TweenMap(stage.stageWidth - 2 * PADDING, stage.stageHeight - 2 * PADDING, true, new MicrosoftRoadMapProvider(), new MapExtent(37.829853, 37.700121, -122.212601, -122.514725)); map.addChild(new MapControls(map)); map.addChild(new ZoomSlider(map)); addChild(map); } } }
  126. 126. London2012 http://london2012.co.uk
  127. 127. Hurricane Tracking http://hurricanewiki.org
  128. 128. GeoCommons Maker! http://maker.geocommons.com
  129. 129. Analysis
  130. 130. WalkScore http://walkscore.com
  131. 131. MySociety House Price http://www.mysociety.org/2007/more-travel-maps/ vs. Travel Time
  132. 132. pgRouting http://pgrouting.postlbs.org/
  133. 133. Safe Routing http://www.ridethecity.com
  134. 134. Fuel Efficiency Routing
  135. 135. Bakery Routing
  136. 136. Cartography
  137. 137. wrp.geothings.net
  138. 138. Maps for Farmers http://serveyourcountryfood.com
  139. 139. Tiles
  140. 140. Tiles
  141. 141. Tiles
  142. 142. TileCache TileCache http://tilecache.org
  143. 143. Image WMS Mapnik TileCache Image CRS TileCache http://tilecache.org
  144. 144. Image WMS TMS Mapnik TileCache 900913 Image (google) CRS TileCache http://tilecache.org
  145. 145. Mapstraction Tiles mapstraction.addTileLayer(quot;http://oakland-1950s.s3.amazonaws.com/{Z}-r{Y}-c{X}.jpgquot;, 80);
  146. 146. New Orleans http://maps.thinknola.com
  147. 147. EveryBlock http://everyblock.com
  148. 148. BurningManEarth http://earth.burningman.org
  149. 149. What is a “Choropleth”?
  150. 150. ColorBrewer http://www.personal.psu.edu/cab38/ ColorBrewer/ColorBrewer.html
  151. 151. Read
  152. 152. Public Geodata Repository
  153. 153. GeoData Visualization
  154. 154. Thematic Styling
  155. 155. Classification
  156. 156. Styling
  157. 157. Base Data
  158. 158. Comparative Analysis http://maker.geocommons.com/maps/839
  159. 159. Inspect the Data
  160. 160. Styled KML
  161. 161. Print Maps
  162. 162. Mapnik
  163. 163. <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <!DOCTYPE Map> <Map bgcolor=quot;#b5d0d0quot; srs=quot;+proj=latlong +datum=WGS84quot;> <Style name=quot;worldquot;> <Rule> <MaxScaleDenominator>250000000000</MaxScaleDenominator> <MinScaleDenominator>6000000</MinScaleDenominator> <PolygonSymbolizer> <CssParameter name=quot;fillquot;>#f2efe9</CssParameter> </PolygonSymbolizer> <LineSymbolizer> <CssParameter name=quot;strokequot;>#b5d0d0</CssParameter> <CssParameter name=quot;stroke-widthquot;>0.5</CssParameter> </LineSymbolizer> </Rule> </Style> <Layer name=quot;worldquot; status=quot;onquot; srs=quot;+proj=latlong +datum=WGS84quot;> <StyleName>world</StyleName> <Datasource> <Parameter name=quot;typequot;>shape</Parameter> <Parameter name=quot;filequot;>/Users/ajturner/Projects/mapnik/world_borders</Parameter> </Datasource> </Layer> </Map> Mapnik http://mapnik.com
  164. 164. OpenCycleMap http://opencyclemap.org
  165. 165. GPSies http://gpsies.com/
  166. 166. OpenCycleMap http://opencyclemap.org
  167. 167. Shenzen Maps
  168. 168. StumbleSafely http://www.outsideindc.com/stumblesafely
  169. 169. example.mml example.mss <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> * { <!DOCTYPE Map> line-width: 1; <Map bgcolor=quot;#b5d0d0quot; srs=quot;...quot;> line-color: #999; <Stylesheet> polygon-fill: #fff; Map { map-bgcolor: #ccc; } } </Stylesheet> <Stylesheet src=quot;example.mssquot;/> *[zoom>=6][zoom<12] { <Layer name=quot;worldquot; status=quot;onquot; srs=quot;...quot;> line-color: #f90; <StyleName>world</StyleName> } <Datasource> #world-borders[zoom<10] NAME <Parameter name=quot;typequot;>shape</Parameter> { <Parameter name=quot;filequot;>...</Parameter> text-fill: #333; </Datasource> } </Layer> </Map> Cascadenick http://code.google.com/p/mapnik-utils/
  170. 170. Geolocation
  171. 171. GPS
  172. 172. GSM
  173. 173. WiFi
  174. 174. IP Address
  175. 175. Proximity
  176. 176. User Tracking
  177. 177. W3C Geolocation http://dev.w3.org/geo/api/spec-source.html
  178. 178. navigator.geolocation.getCurrentPosition(function(pos) { alert( pos.latitude + quot;, quot; + pos.longitude ); })
  179. 179. interface Geolocation { readonly attribute Position lastPosition; void getCurrentPosition(in PositionCallback successCallback); int watchPosition(in PositionCallback successCallback); void clearWatch(in int watchId); };
  180. 180. PlundrDS
  181. 181. GeoClue
  182. 182. Core Location
  183. 183. FireEagle http://fireeagle.com
  184. 184. geotagging pacers M T W Th
  185. 185. geotagging pacers M T W Th 1 23 4
  186. 186. geotagging pacers M T W Th 1 23 4
  187. 187. geotagging pacers M T W Th 1 23 4
  188. 188. geotagging pacers M T W Th 1 23 4
  189. 189. BBC Bangladesh Boat Journey
  190. 190. Mobile
  191. 191. Mobline Placemarking
  192. 192. Android Innovations cab4me
  193. 193. Ambient Location OmniFocus
  194. 194. UrbanSpoon
  195. 195. VoteReport http://twittervotereport.com
  196. 196. Navigating Washington http://navigatingwashington.com
  197. 197. Navigating Washington http://navigatingwashington.com
  198. 198. Navigating Washington http://navigatingwashington.com
  199. 199. Ushahidi
  200. 200. Ushahidi
  201. 201. Ushahidi - Gaza http://labs.aljazeera.net/warongaza/
  202. 202. API Dash http://dash.net
  203. 203. PocketMaps
  204. 204. PocketMaps height = 11 width = 8.5 margin = .25 dpi = 144 bbox = (45.482882,-73.619899,45.532687,-73.547801) zoom = 16 out = quot;montreal_pocketmmap.pdfquot; pm = pocketMMap(height, width, margin, dpi) pm.load_provider('OPEN_STREET_MAP') pm.draw(bbox, zoom) pm.save(out) ruby: http://github.com/ajturner/pocketmaps python: http://aaronland.info/python/pocketMMap
  205. 205. GeoWeb We’re Hiring Help build the GeoWeb
  206. 206. Asante sana! andrew@highearthorbit.com highearthorbit.com twitter.com/ajturner

×