SlideShare a Scribd company logo
1 of 201
Download to read offline
Beyond GoogleMaps
Andrew Turner, Mapufacture & FortiusOne
or...
or...
 Evolved Maps,
desconstructed
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 ļ¬ll their gaps,
And oā€™er unhabitable downs
Place elephants for want of towns.
          - Jonathan Swift
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
GPS becomes
 ubiquitous
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




                        Data Coverage and
                                   Quality
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
Brighton, UK
Brighton, UK
Data Ownership and
           Access
Data Ownership and
           Access
Technology Limitations
Technology Limitations
Where Next?
              http://ļ¬‚ickr.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   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
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
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))
)
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('POINT(0.02839 51.50807)', -1)) < 100
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;




                               http://geohash.org/
Data
GeoNames   http://geonames.org
GeoNames   http://geonames.org
Implicit GeoData   http://geocodr.net
Implicit GeoData   http://geocodr.net
OpenStreetMap   http://openstreetmap.org
OpenStreetMap London   http://openstreetmap.org
Wiki for the World
Flickr OSM   http://www.ļ¬‚ickr.com/map?
             &fLat=39.9227&fLon=116.4694&zl=6
OpenAerialMap   http://openaerialmap.org
GeoCommons Finder!   http://geocommons.com
GeoCommons Finder!   http://ļ¬nder.geocommons.com
Mapufacture   http://mapufacture.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.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>
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>
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;>
  <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>
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>http://maker.geocommons.com/maps/839/overlays/1</href>
    </Link>
</NetworkLink>
GeoJSON


{ quot;typequot;: quot;Pointquot;, quot;coordinatesquot;: [100.0, 0.0] }
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]]]
    }
  }
}
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
Visualization
Mapstraction
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>
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;,ļ¬le,opacity,west,south,east,north);

mapstraction.addImageOverlay(quot;overquot;,quot;images/
santodomingo.pngquot;,50,-70.01544, 18.39777, -69.80567,
18.563517);
Filters

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

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


mapstraction.toggleFilter('category', 'eq', 10 );
Sliders
OpenLayers   http://openlayers.org
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);
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);
<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>
<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;
         }
<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;
         }
<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>
<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);
                 }
<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);
                 }
Accessibility
ModestMaps
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);
        }
    }
}
London2012   http://london2012.co.uk
Hurricane Tracking   http://hurricanewiki.org
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 Efļ¬ciency Routing
Bakery Routing
Cartography
NeoCartography
wrp.geothings.net
BurningManEarth   http://earth.burningman.org
Maps for Farmers   http://serveyourcountryfood.com
Mapnik
<?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
OpenCycleMap   http://opencyclemap.org
OpenCycleMap   http://opencyclemap.org
Shenzen Maps
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/
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
                                  (google)
 CRS




         TileCache   http://tilecache.org
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
Mobile
Mobline Placemarking
uLocate WHERE
uLocate WHERE
Android Innovations



cab4me
Ambient Location




OmniFocus
UrbanSpoon
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

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
Geolocation
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 successCallback);

     int watchPosition(in PositionCallback successCallback);

     void clearWatch(in int watchId);
};
PlundrDS
Crowd Sourced
Crisis Information
FireEagle   http://ļ¬reeagle.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
Nonline
AtomPub
AtomPub


atom             client




                    http://atompub.org/
AtomPub

        resource
atom               client




                      http://atompub.org/
AtomPub

        resource
atom               client
          edit




                      http://atompub.org/
Workspace
<service xmlns:atom=quot;http://www.w3.org/2005/atomquot; xmlns=quot;http://www.w3.org/2007/appquot;>
  <workspace>
    <atom:title>Main Site</atom:title>
   <collection href=quot;http://example.com/maps.atomquot;>
      <atom:title>Example Maps</atom:title>
      <accept>application/vnd.google-earth.kml+xml</accept>
      <accept>application/atom+xml</accept>
    </collection>
    <collection href=quot;http://example.com/places.atomquot;>
      <atom:title>Example Places</atom:title>
      <accept>application/atom+xml</accept>
    </collection>
    <collection href=quot;http://example.com/users.atomquot;>
      <atom:title>Example Users</atom:title>
      <accept>application/atom+xml</accept>
    </collection>
  </workspace>
</service>
places.atom

<feed xmlns:georss=quot;http://www.georss.org/georssquot;
xmlns=quot;http://www.w3.org/2005/Atomquot;>
  <title>Places</title>
  <id>http://example.com/places</id>
  <link type=quot;application/atom+xmlquot;
rel=quot;selfquot; href=quot;http://example.com/places.atomquot;/>
  <link type=quot;application/vnd.google-earth.kml+xmlquot;
rel=quot;alternatequot; href=quot;http://example.com/places.kmlquot;/>
  <link type=quot;text/htmlquot;
rel=quot;alternatequot; href=quot;http://example.com/placesquot;/>
  <updated>2008-03-13T21:30:10Z</updated>
  ...
</feed>
Creating a Resource
user@host:/tmp$ curl -i -X POST 
  -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; 
  -H quot;Content-Type: application/atom+xml;type=entryquot; 
  -H quot;Slug: 600 N Sherwoodquot; 
  -d@test.atom 
  http://example.com/places
Creating a Resource
user@host:/tmp$ curl -i -X POST 
  -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; 
  -H quot;Content-Type: application/atom+xml;type=entryquot; 
  -H quot;Slug: 600 N Sherwoodquot; 
  -d@test.atom 
  http://example.com/places



HTTP/1.1 201 Created
Date: Fri, 14 Mar 2008 04:32:33 GMT
Server: Twisted/2.5.0 TwistedWeb/[twisted.web2, version 0.2.0]
Content-Length: 744
Accept-Ranges: bytes
Location: http://example.com/places/600-n-sherwood
Content-Type: application/atom+xml;type=entry
New Resource
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<entry xmlns=quot;http://www.w3.org/2005/Atomquot;
       xmlns:georss=quot;http://www.georss.org/georssquot;
       xmlns:gml=quot;http://www.opengis.net/gmlquot;>

    <title>Test</title>
    <link href=quot;http://example.com/places/600-n-sherwood.atomquot;
           type=quot;application/atom+xml;type=entryquot; rel=quot;editquot;/>
    <link href=quot;http://example.com/places/600-n-sherwoodquot;
           type=quot;text/htmlquot; rel=quot;alternatequot;/>
    <id>urn:uuid:dfa47428-e9ce-41b4-9f42-c2a3cad9037a</id>
    <updated>2008-03-14T04:32:33Z</updated>
    <summary>Testing placemark</summary>
    <georss:where>
      <gml:Point>
         <gml:pos>-105.084251 40.594463</gml:pos>
      </gml:Point>
    </georss:where>
</entry>
Updating a Resource
sean@lenny:/tmp$ curl -i -X PUT 
 -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; 
 -H quot;Content-Type: application/atom+xml;type=entryquot; 
 -d@test-edit.atom 
 http://example.com/places/600-n-sherwood.atom
Updating a Resource
sean@lenny:/tmp$ curl -i -X PUT 
 -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; 
 -H quot;Content-Type: application/atom+xml;type=entryquot; 
 -d@test-edit.atom 
 http://example.com/places/600-n-sherwood.atom




HTTP/1.1 200 OK
AtomPub
kml
                 client
atom


atom


json
AtomPub
        resource
kml
                   client
atom


atom


json
AtomPub
        resource
kml
          edit
                   client
atom


atom


json
AtomPub
        resource
kml
          edit
                   client
atom


atom


json
AtomPub
        resource
kml
          edit
                   client
atom


atom


json
AtomPub
        resource
kml
          edit
                   client
atom


atom


json
AtomPub
       p1
kml
       p2
atom                      p{1,2,3,4}
             aggregator                client
       p3
atom

       p4
json
AtomPub
       p1
kml
       p2
atom                      p{1,2,3,4}
             aggregator                client
       p3                  edit p1
atom

       p4
json
AtomPub
       p1
kml
       p2
atom                      p{1,2,3,4}
             aggregator                client
       p3                  edit p1
atom

       p4
json
Public Geodata
     Repository
Metadata, Statistics,
        Open Data
GeoData Visualization
Thematic Styling
Classiļ¬cation
Styling
Base Data
Comparative Analysis   http://maker.geocommons.com/maps/839
Inspect the Data
Styled KML
GeoWeb




Weā€™re Hiring   Help build the GeoWeb
Asante sana!
  andrew@highearthorbit.com
       highearthorbit.com
      twitter.com/ajturner

More Related Content

Viewers also liked

Molly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web AppMolly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web AppCarsonified Team
Ā 
Fowa Wrapup
Fowa WrapupFowa Wrapup
Fowa WrapupThijs Weenk
Ā 
Scaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryScaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryCarsonified Team
Ā 
Geospatial technologies
Geospatial technologiesGeospatial technologies
Geospatial technologiesHal Seki
Ā 
Innovation, the future and why nothing is ever simple
Innovation, the future and why nothing is ever simpleInnovation, the future and why nothing is ever simple
Innovation, the future and why nothing is ever simpleCarsonified Team
Ā 
How to survive outside of Silicon Valley
How to survive outside of Silicon ValleyHow to survive outside of Silicon Valley
How to survive outside of Silicon ValleyCarsonified Team
Ā 
Work/life balance or blood, sweat and tears: Which is the startup way?
Work/life balance or blood, sweat and tears: Which is the startup way?Work/life balance or blood, sweat and tears: Which is the startup way?
Work/life balance or blood, sweat and tears: Which is the startup way?Carsonified Team
Ā 
Tara Hunt - Your Social Media Strategy Wont Save You
Tara Hunt - Your Social Media Strategy Wont Save YouTara Hunt - Your Social Media Strategy Wont Save You
Tara Hunt - Your Social Media Strategy Wont Save YouCarsonified Team
Ā 

Viewers also liked (8)

Molly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web AppMolly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Ā 
Fowa Wrapup
Fowa WrapupFowa Wrapup
Fowa Wrapup
Ā 
Scaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryScaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine Wherry
Ā 
Geospatial technologies
Geospatial technologiesGeospatial technologies
Geospatial technologies
Ā 
Innovation, the future and why nothing is ever simple
Innovation, the future and why nothing is ever simpleInnovation, the future and why nothing is ever simple
Innovation, the future and why nothing is ever simple
Ā 
How to survive outside of Silicon Valley
How to survive outside of Silicon ValleyHow to survive outside of Silicon Valley
How to survive outside of Silicon Valley
Ā 
Work/life balance or blood, sweat and tears: Which is the startup way?
Work/life balance or blood, sweat and tears: Which is the startup way?Work/life balance or blood, sweat and tears: Which is the startup way?
Work/life balance or blood, sweat and tears: Which is the startup way?
Ā 
Tara Hunt - Your Social Media Strategy Wont Save You
Tara Hunt - Your Social Media Strategy Wont Save YouTara Hunt - Your Social Media Strategy Wont Save You
Tara Hunt - Your Social Media Strategy Wont Save You
Ā 

Similar to Beyond Googlemaps - Andrew Turner

Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time Geostreamsguest35660bc
Ā 
Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time GeostreamsRaffi Krikorian
Ā 
#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)Raffi Krikorian
Ā 
Illuminated Hacks -- Where 2.0 101 Tutorial
Illuminated Hacks -- Where 2.0 101 TutorialIlluminated Hacks -- Where 2.0 101 Tutorial
Illuminated Hacks -- Where 2.0 101 Tutorialmikel_maron
Ā 
O'Reilly WebCast - Trends And Technologies In Where2.0
O'Reilly WebCast - Trends And Technologies In Where2.0O'Reilly WebCast - Trends And Technologies In Where2.0
O'Reilly WebCast - Trends And Technologies In Where2.0Andrew Turner
Ā 
Where in the world
Where in the worldWhere in the world
Where in the worldMarcus Deglos
Ā 
SPARQL Tutorial
SPARQL TutorialSPARQL Tutorial
SPARQL TutorialLeigh Dodds
Ā 
Leaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailLeaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailterrafrost2
Ā 
Rails Gis Hacks
Rails Gis HacksRails Gis Hacks
Rails Gis HacksShoaib Burq
Ā 
AssetTouchAndTry-20180322
AssetTouchAndTry-20180322AssetTouchAndTry-20180322
AssetTouchAndTry-20180322Takashi Jona
Ā 
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011Tim Wilson
Ā 
Searching the Now
Searching the NowSearching the Now
Searching the Nowlucasjosh
Ā 
CSS 3 Overview
CSS 3 OverviewCSS 3 Overview
CSS 3 OverviewOwen Williams
Ā 
Shkrubbel for Open Web Camp 3
Shkrubbel for Open Web Camp 3Shkrubbel for Open Web Camp 3
Shkrubbel for Open Web Camp 3kitthod
Ā 
Edge trends mizuno-template
Edge trends mizuno-templateEdge trends mizuno-template
Edge trends mizuno-templateshintaro mizuno
Ā 
Sample document
Sample documentSample document
Sample documentarunsethu87
Ā 
Geo distance search with my sql presentation
Geo distance search with my sql presentationGeo distance search with my sql presentation
Geo distance search with my sql presentationGSMboy
Ā 

Similar to Beyond Googlemaps - Andrew Turner (20)

OpenStreetMap (en Zzzinc)
OpenStreetMap (en Zzzinc)OpenStreetMap (en Zzzinc)
OpenStreetMap (en Zzzinc)
Ā 
Maps, mashups and metadata:geospatial standards for access and retrieval
Maps, mashups and metadata:geospatial standards for access and retrievalMaps, mashups and metadata:geospatial standards for access and retrieval
Maps, mashups and metadata:geospatial standards for access and retrieval
Ā 
Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time Geostreams
Ā 
Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time Geostreams
Ā 
#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)
Ā 
Illuminated Hacks -- Where 2.0 101 Tutorial
Illuminated Hacks -- Where 2.0 101 TutorialIlluminated Hacks -- Where 2.0 101 Tutorial
Illuminated Hacks -- Where 2.0 101 Tutorial
Ā 
O'Reilly WebCast - Trends And Technologies In Where2.0
O'Reilly WebCast - Trends And Technologies In Where2.0O'Reilly WebCast - Trends And Technologies In Where2.0
O'Reilly WebCast - Trends And Technologies In Where2.0
Ā 
Where in the world
Where in the worldWhere in the world
Where in the world
Ā 
SPARQL Tutorial
SPARQL TutorialSPARQL Tutorial
SPARQL Tutorial
Ā 
Leaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailLeaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRail
Ā 
Rails Gis Hacks
Rails Gis HacksRails Gis Hacks
Rails Gis Hacks
Ā 
Embedded Metadata working group
Embedded Metadata working groupEmbedded Metadata working group
Embedded Metadata working group
Ā 
AssetTouchAndTry-20180322
AssetTouchAndTry-20180322AssetTouchAndTry-20180322
AssetTouchAndTry-20180322
Ā 
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011
Harbin 哈尔ę»Ø china äø­åœ‹ power point 2011
Ā 
Searching the Now
Searching the NowSearching the Now
Searching the Now
Ā 
CSS 3 Overview
CSS 3 OverviewCSS 3 Overview
CSS 3 Overview
Ā 
Shkrubbel for Open Web Camp 3
Shkrubbel for Open Web Camp 3Shkrubbel for Open Web Camp 3
Shkrubbel for Open Web Camp 3
Ā 
Edge trends mizuno-template
Edge trends mizuno-templateEdge trends mizuno-template
Edge trends mizuno-template
Ā 
Sample document
Sample documentSample document
Sample document
Ā 
Geo distance search with my sql presentation
Geo distance search with my sql presentationGeo distance search with my sql presentation
Geo distance search with my sql presentation
Ā 

More from Carsonified Team

Chris Lea - What does NoSQL Mean for You
Chris Lea - What does NoSQL Mean for YouChris Lea - What does NoSQL Mean for You
Chris Lea - What does NoSQL Mean for YouCarsonified Team
Ā 
Dion Almaer & Ben Galbraith - Build Once, Deploy Everywhere
Dion Almaer & Ben Galbraith - Build Once, Deploy EverywhereDion Almaer & Ben Galbraith - Build Once, Deploy Everywhere
Dion Almaer & Ben Galbraith - Build Once, Deploy EverywhereCarsonified Team
Ā 
Steve Huffman - Lessons learned while at reddit.com
Steve Huffman - Lessons learned while at reddit.comSteve Huffman - Lessons learned while at reddit.com
Steve Huffman - Lessons learned while at reddit.comCarsonified Team
Ā 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItCarsonified Team
Ā 
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure Them
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure ThemMike Mcderment - Marketing Metrics and the Systems You Need to Measure Them
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure ThemCarsonified Team
Ā 
Fred Wilson - The 10 Golden Principles for Successful Web Apps
Fred Wilson - The 10 Golden Principles for Successful Web AppsFred Wilson - The 10 Golden Principles for Successful Web Apps
Fred Wilson - The 10 Golden Principles for Successful Web AppsCarsonified Team
Ā 
Aaron Patzer - How to Take Your Start-up to the Next Level
Aaron Patzer - How to Take Your Start-up to the Next LevelAaron Patzer - How to Take Your Start-up to the Next Level
Aaron Patzer - How to Take Your Start-up to the Next LevelCarsonified Team
Ā 
Taking your Site from One to One Million Users by Kevin Rose
Taking your Site from One to One Million Users by Kevin RoseTaking your Site from One to One Million Users by Kevin Rose
Taking your Site from One to One Million Users by Kevin RoseCarsonified Team
Ā 
The New Marketing, by Ryan Carson
The New Marketing, by Ryan CarsonThe New Marketing, by Ryan Carson
The New Marketing, by Ryan CarsonCarsonified Team
Ā 
FOWA Tour- Andy McLoughlin
FOWA Tour- Andy McLoughlinFOWA Tour- Andy McLoughlin
FOWA Tour- Andy McLoughlinCarsonified Team
Ā 
FOWA Tour- Dorothy Briggs
FOWA Tour- Dorothy BriggsFOWA Tour- Dorothy Briggs
FOWA Tour- Dorothy BriggsCarsonified Team
Ā 
FOWA Tour- Ryan Carson
FOWA Tour- Ryan CarsonFOWA Tour- Ryan Carson
FOWA Tour- Ryan CarsonCarsonified Team
Ā 
FOWA Tour- Roan Lavery
FOWA Tour- Roan LaveryFOWA Tour- Roan Lavery
FOWA Tour- Roan LaveryCarsonified Team
Ā 
FOWA Tour- Graeme Mathieson
FOWA Tour- Graeme MathiesonFOWA Tour- Graeme Mathieson
FOWA Tour- Graeme MathiesonCarsonified Team
Ā 
FOWA Bristol/ Leeds- Dan Rubin
FOWA Bristol/ Leeds- Dan RubinFOWA Bristol/ Leeds- Dan Rubin
FOWA Bristol/ Leeds- Dan RubinCarsonified Team
Ā 
FOWA Bristol- Ian Broom
FOWA Bristol- Ian BroomFOWA Bristol- Ian Broom
FOWA Bristol- Ian BroomCarsonified Team
Ā 
Danny Somekh - FOWD London 2009
Danny Somekh - FOWD London 2009Danny Somekh - FOWD London 2009
Danny Somekh - FOWD London 2009Carsonified Team
Ā 
Brett Welch - FOWD London 2009
Brett Welch - FOWD London 2009Brett Welch - FOWD London 2009
Brett Welch - FOWD London 2009Carsonified Team
Ā 
Meagan Fisher - FOWD London 2009
Meagan Fisher - FOWD London 2009Meagan Fisher - FOWD London 2009
Meagan Fisher - FOWD London 2009Carsonified Team
Ā 
Molly Holzschlag - FOWD London 2009
Molly Holzschlag - FOWD London 2009Molly Holzschlag - FOWD London 2009
Molly Holzschlag - FOWD London 2009Carsonified Team
Ā 

More from Carsonified Team (20)

Chris Lea - What does NoSQL Mean for You
Chris Lea - What does NoSQL Mean for YouChris Lea - What does NoSQL Mean for You
Chris Lea - What does NoSQL Mean for You
Ā 
Dion Almaer & Ben Galbraith - Build Once, Deploy Everywhere
Dion Almaer & Ben Galbraith - Build Once, Deploy EverywhereDion Almaer & Ben Galbraith - Build Once, Deploy Everywhere
Dion Almaer & Ben Galbraith - Build Once, Deploy Everywhere
Ā 
Steve Huffman - Lessons learned while at reddit.com
Steve Huffman - Lessons learned while at reddit.comSteve Huffman - Lessons learned while at reddit.com
Steve Huffman - Lessons learned while at reddit.com
Ā 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do It
Ā 
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure Them
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure ThemMike Mcderment - Marketing Metrics and the Systems You Need to Measure Them
Mike Mcderment - Marketing Metrics and the Systems You Need to Measure Them
Ā 
Fred Wilson - The 10 Golden Principles for Successful Web Apps
Fred Wilson - The 10 Golden Principles for Successful Web AppsFred Wilson - The 10 Golden Principles for Successful Web Apps
Fred Wilson - The 10 Golden Principles for Successful Web Apps
Ā 
Aaron Patzer - How to Take Your Start-up to the Next Level
Aaron Patzer - How to Take Your Start-up to the Next LevelAaron Patzer - How to Take Your Start-up to the Next Level
Aaron Patzer - How to Take Your Start-up to the Next Level
Ā 
Taking your Site from One to One Million Users by Kevin Rose
Taking your Site from One to One Million Users by Kevin RoseTaking your Site from One to One Million Users by Kevin Rose
Taking your Site from One to One Million Users by Kevin Rose
Ā 
The New Marketing, by Ryan Carson
The New Marketing, by Ryan CarsonThe New Marketing, by Ryan Carson
The New Marketing, by Ryan Carson
Ā 
FOWA Tour- Andy McLoughlin
FOWA Tour- Andy McLoughlinFOWA Tour- Andy McLoughlin
FOWA Tour- Andy McLoughlin
Ā 
FOWA Tour- Dorothy Briggs
FOWA Tour- Dorothy BriggsFOWA Tour- Dorothy Briggs
FOWA Tour- Dorothy Briggs
Ā 
FOWA Tour- Ryan Carson
FOWA Tour- Ryan CarsonFOWA Tour- Ryan Carson
FOWA Tour- Ryan Carson
Ā 
FOWA Tour- Roan Lavery
FOWA Tour- Roan LaveryFOWA Tour- Roan Lavery
FOWA Tour- Roan Lavery
Ā 
FOWA Tour- Graeme Mathieson
FOWA Tour- Graeme MathiesonFOWA Tour- Graeme Mathieson
FOWA Tour- Graeme Mathieson
Ā 
FOWA Bristol/ Leeds- Dan Rubin
FOWA Bristol/ Leeds- Dan RubinFOWA Bristol/ Leeds- Dan Rubin
FOWA Bristol/ Leeds- Dan Rubin
Ā 
FOWA Bristol- Ian Broom
FOWA Bristol- Ian BroomFOWA Bristol- Ian Broom
FOWA Bristol- Ian Broom
Ā 
Danny Somekh - FOWD London 2009
Danny Somekh - FOWD London 2009Danny Somekh - FOWD London 2009
Danny Somekh - FOWD London 2009
Ā 
Brett Welch - FOWD London 2009
Brett Welch - FOWD London 2009Brett Welch - FOWD London 2009
Brett Welch - FOWD London 2009
Ā 
Meagan Fisher - FOWD London 2009
Meagan Fisher - FOWD London 2009Meagan Fisher - FOWD London 2009
Meagan Fisher - FOWD London 2009
Ā 
Molly Holzschlag - FOWD London 2009
Molly Holzschlag - FOWD London 2009Molly Holzschlag - FOWD London 2009
Molly Holzschlag - FOWD London 2009
Ā 

Recently uploaded

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhisoniya singh
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024The Digital Insurer
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
Ā 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Ā 

Beyond Googlemaps - Andrew Turner

  • 1. Beyond GoogleMaps Andrew Turner, Mapufacture & FortiusOne
  • 4. A Brief History of Mapping * *IANAH
  • 6. Emphemeral Maps http://maps.google.com
  • 11. 1492 - Columbus sails the ocean blue
  • 13. So geographers, in Afric maps, With savage pictures ļ¬ll their gaps, And oā€™er unhabitable downs Place elephants for want of towns. - Jonathan Swift
  • 18. GIS
  • 20. 2005 - Google slips the map
  • 21. urban renewal participatory web 2005 - Google slips the map mobile computing GPS becomes ubiquitous
  • 22. HousingMaps http://housingmaps.com
  • 23. Slippy Maps & Spinny Globes
  • 24.
  • 25. GoogleMaps http://maps.google.com
  • 26. Interactivity http://maps.google.com
  • 30. 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
  • 37. Where Next? http://ļ¬‚ickr.com/photos/loupiote/25426957
  • 39. 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
  • 40. 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
  • 41.
  • 42. 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)) )
  • 43. SELECT the_geom FROM geom_table WHERE ST_Distance(the_geom, GeomFromText('POINT(0.02839 51.50807)', -1)) < 100
  • 44. 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
  • 45. SpatiaLite SQLite + Spatial Types http://www.gaia-gis.it/spatialite/
  • 46. GeoHash http://geohash.org/
  • 47. GeoHash http://geohash.org/
  • 48. GeoHash SELECT name FROM pubs WHERE geohash LIKE quot;GCPUV%quot; http://geohash.org/
  • 49. GeoHash SELECT name FROM pubs WHERE geohash LIKE quot;GCPUVR%quot; OR geohash LIKE quot;GCPVJ2%quot; http://geohash.org/
  • 50. Data
  • 51. GeoNames http://geonames.org
  • 52. GeoNames http://geonames.org
  • 53. Implicit GeoData http://geocodr.net
  • 54. Implicit GeoData http://geocodr.net
  • 55. OpenStreetMap http://openstreetmap.org
  • 56. OpenStreetMap London http://openstreetmap.org
  • 57. Wiki for the World
  • 58. Flickr OSM http://www.ļ¬‚ickr.com/map? &fLat=39.9227&fLon=116.4694&zl=6
  • 59. OpenAerialMap http://openaerialmap.org
  • 60.
  • 61. GeoCommons Finder! http://geocommons.com
  • 62. GeoCommons Finder! http://ļ¬nder.geocommons.com
  • 63. Mapufacture http://mapufacture.com
  • 68. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  • 69. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  • 70. GeoRSS <georss:point> + 45.256 -71.92 </georss:point>
  • 71. 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>
  • 72. 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>
  • 73. GeoNames GeoRSS http://www.geonames.org/rss-to-georss-converter.html
  • 74. 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>
  • 75. KML Extended Data <ExtendedData id=quot;roomsquot;> <name>Rooms</name> <value>3</value> </ExtendedData>
  • 76. KML Network Links </NetworkLink> <NetworkLink> <name><![CDATA[Pubs in London]]></name> <Link> <href>http://maker.geocommons.com/maps/839/overlays/1</href> </Link> </NetworkLink>
  • 77. GeoJSON { quot;typequot;: quot;Pointquot;, quot;coordinatesquot;: [100.0, 0.0] }
  • 78. 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]]] } } }
  • 80. Resources ā€¢ /places ā€¢ /places/89 ā€¢ /places/89.atom ā€¢ /places/89.kml
  • 81. Web Aligned http://highearthorbit.com/a-proposal-georss-kml
  • 84. Formats HTML : RSS :: KML : GeoRSS
  • 85. Formats HTML : RSS :: KML : GeoRSS Visualization : Syndication
  • 88. 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>
  • 89. Power of the Swap var mapstraction = new Mapstraction(ā€˜mapā€™, ā€˜googleā€™);
  • 90. Power of the Swap mapstraction.swap(ā€˜mapstractionā€™, ā€˜yahooā€™);
  • 91. Power of the Swap mapstraction.swap(ā€˜mapstractionā€™, ā€˜microsoftā€™);
  • 92. Power of the Swap mapstraction.swap(ā€˜mapstractionā€™, ā€˜openstreetmapā€™);
  • 95. Filters mapstraction.removeAllFilters(); mapstraction.addFilter('category', 'eq', 10 ); mapstraction.doFilter(); mapstraction.toggleFilter('category', 'eq', 10 );
  • 97. OpenLayers http://openlayers.org
  • 98. 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);
  • 99. 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);
  • 100. <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>
  • 101. <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; }
  • 102. <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; }
  • 103. <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>
  • 104. <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); }
  • 105. <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); }
  • 107.
  • 108.
  • 109.
  • 111. 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); } } }
  • 112. London2012 http://london2012.co.uk
  • 113. Hurricane Tracking http://hurricanewiki.org
  • 115. WalkScore http://walkscore.com
  • 116. MySociety House Price http://www.mysociety.org/2007/more-travel-maps/ vs. Travel Time
  • 117. pgRouting http://pgrouting.postlbs.org/
  • 118. Safe Routing http://www.ridethecity.com
  • 124.
  • 125. BurningManEarth http://earth.burningman.org
  • 126. Maps for Farmers http://serveyourcountryfood.com
  • 127. Mapnik
  • 128. <?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
  • 129. OpenCycleMap http://opencyclemap.org
  • 130. OpenCycleMap http://opencyclemap.org
  • 132. 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/
  • 133. Tiles
  • 134. Tiles
  • 135. Tiles
  • 136. TileCache TileCache http://tilecache.org
  • 137. Image WMS Mapnik TileCache Image CRS TileCache http://tilecache.org
  • 138. Image WMS TMS Mapnik TileCache 900913 Image (google) CRS TileCache http://tilecache.org
  • 140. New Orleans http://maps.thinknola.com
  • 141. EveryBlock http://everyblock.com
  • 142. Mobile
  • 149. API Dash http://dash.net
  • 151. 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
  • 153. W3C Geolocation http://dev.w3.org/geo/api/spec-source.html
  • 154. navigator.geolocation.getCurrentPosition(function(pos) { alert( pos.latitude + quot;, quot; + pos.longitude ); })
  • 155. interface Geolocation { readonly attribute Position lastPosition; void getCurrentPosition(in PositionCallback successCallback); int watchPosition(in PositionCallback successCallback); void clearWatch(in int watchId); };
  • 156.
  • 158.
  • 160. FireEagle http://ļ¬reeagle.com
  • 161. geotagging pacers M T W Th
  • 162. geotagging pacers M T W Th 1 23 4
  • 163. geotagging pacers M T W Th 1 23 4
  • 164. geotagging pacers M T W Th 1 23 4
  • 165. geotagging pacers M T W Th 1 23 4
  • 168.
  • 170. AtomPub atom client http://atompub.org/
  • 171. AtomPub resource atom client http://atompub.org/
  • 172. AtomPub resource atom client edit http://atompub.org/
  • 173. Workspace <service xmlns:atom=quot;http://www.w3.org/2005/atomquot; xmlns=quot;http://www.w3.org/2007/appquot;> <workspace> <atom:title>Main Site</atom:title> <collection href=quot;http://example.com/maps.atomquot;> <atom:title>Example Maps</atom:title> <accept>application/vnd.google-earth.kml+xml</accept> <accept>application/atom+xml</accept> </collection> <collection href=quot;http://example.com/places.atomquot;> <atom:title>Example Places</atom:title> <accept>application/atom+xml</accept> </collection> <collection href=quot;http://example.com/users.atomquot;> <atom:title>Example Users</atom:title> <accept>application/atom+xml</accept> </collection> </workspace> </service>
  • 174. places.atom <feed xmlns:georss=quot;http://www.georss.org/georssquot; xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>Places</title> <id>http://example.com/places</id> <link type=quot;application/atom+xmlquot; rel=quot;selfquot; href=quot;http://example.com/places.atomquot;/> <link type=quot;application/vnd.google-earth.kml+xmlquot; rel=quot;alternatequot; href=quot;http://example.com/places.kmlquot;/> <link type=quot;text/htmlquot; rel=quot;alternatequot; href=quot;http://example.com/placesquot;/> <updated>2008-03-13T21:30:10Z</updated> ... </feed>
  • 175. Creating a Resource user@host:/tmp$ curl -i -X POST -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; -H quot;Content-Type: application/atom+xml;type=entryquot; -H quot;Slug: 600 N Sherwoodquot; -d@test.atom http://example.com/places
  • 176. Creating a Resource user@host:/tmp$ curl -i -X POST -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; -H quot;Content-Type: application/atom+xml;type=entryquot; -H quot;Slug: 600 N Sherwoodquot; -d@test.atom http://example.com/places HTTP/1.1 201 Created Date: Fri, 14 Mar 2008 04:32:33 GMT Server: Twisted/2.5.0 TwistedWeb/[twisted.web2, version 0.2.0] Content-Length: 744 Accept-Ranges: bytes Location: http://example.com/places/600-n-sherwood Content-Type: application/atom+xml;type=entry
  • 177. New Resource <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <entry xmlns=quot;http://www.w3.org/2005/Atomquot; xmlns:georss=quot;http://www.georss.org/georssquot; xmlns:gml=quot;http://www.opengis.net/gmlquot;> <title>Test</title> <link href=quot;http://example.com/places/600-n-sherwood.atomquot; type=quot;application/atom+xml;type=entryquot; rel=quot;editquot;/> <link href=quot;http://example.com/places/600-n-sherwoodquot; type=quot;text/htmlquot; rel=quot;alternatequot;/> <id>urn:uuid:dfa47428-e9ce-41b4-9f42-c2a3cad9037a</id> <updated>2008-03-14T04:32:33Z</updated> <summary>Testing placemark</summary> <georss:where> <gml:Point> <gml:pos>-105.084251 40.594463</gml:pos> </gml:Point> </georss:where> </entry>
  • 178. Updating a Resource sean@lenny:/tmp$ curl -i -X PUT -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; -H quot;Content-Type: application/atom+xml;type=entryquot; -d@test-edit.atom http://example.com/places/600-n-sherwood.atom
  • 179. Updating a Resource sean@lenny:/tmp$ curl -i -X PUT -H quot;Authorization: Basic YWRtaW46OGZjOGFkZmM=quot; -H quot;Content-Type: application/atom+xml;type=entryquot; -d@test-edit.atom http://example.com/places/600-n-sherwood.atom HTTP/1.1 200 OK
  • 180. AtomPub kml client atom atom json
  • 181. AtomPub resource kml client atom atom json
  • 182. AtomPub resource kml edit client atom atom json
  • 183. AtomPub resource kml edit client atom atom json
  • 184. AtomPub resource kml edit client atom atom json
  • 185. AtomPub resource kml edit client atom atom json
  • 186. AtomPub p1 kml p2 atom p{1,2,3,4} aggregator client p3 atom p4 json
  • 187. AtomPub p1 kml p2 atom p{1,2,3,4} aggregator client p3 edit p1 atom p4 json
  • 188. AtomPub p1 kml p2 atom p{1,2,3,4} aggregator client p3 edit p1 atom p4 json
  • 189.
  • 190. Public Geodata Repository
  • 191. Metadata, Statistics, Open Data
  • 197. Comparative Analysis http://maker.geocommons.com/maps/839
  • 200. GeoWeb Weā€™re Hiring Help build the GeoWeb
  • 201. Asante sana! andrew@highearthorbit.com highearthorbit.com twitter.com/ajturner