SlideShare uma empresa Scribd logo
1 de 201
Baixar para ler 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 fill 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://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   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.flickr.com/map?
             &fLat=39.9227&fLon=116.4694&zl=6
OpenAerialMap   http://openaerialmap.org
GeoCommons Finder!   http://geocommons.com
GeoCommons Finder!   http://finder.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;,file,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 Efficiency 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://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
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
Classification
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

Mais conteúdo relacionado

Destaque

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

Destaque (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
 

Semelhante a Beyond Googlemaps - Andrew Turner

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
 
Leaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailLeaflet JS (GIS) and Capital MetroRail
Leaflet JS (GIS) and Capital MetroRailterrafrost2
 
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
 
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
 
Python And GIS - Beyond Modelbuilder And Pythonwin
Python And GIS - Beyond Modelbuilder And PythonwinPython And GIS - Beyond Modelbuilder And Pythonwin
Python And GIS - Beyond Modelbuilder And PythonwinChad Cooper
 
Pdf editor
Pdf editorPdf editor
Pdf editorbotarj
 
Pdf reader
Pdf readerPdf reader
Pdf readerbotarj
 

Semelhante a 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
 
#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
 
RESTFul IDEAS
RESTFul IDEASRESTFul IDEAS
RESTFul IDEAS
 
Python And GIS - Beyond Modelbuilder And Pythonwin
Python And GIS - Beyond Modelbuilder And PythonwinPython And GIS - Beyond Modelbuilder And Pythonwin
Python And GIS - Beyond Modelbuilder And Pythonwin
 
Pdf editor
Pdf editorPdf editor
Pdf editor
 
Pdf reader
Pdf readerPdf reader
Pdf reader
 

Mais de 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- 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
 
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
 

Mais de 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
 

Último

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

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 fill 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://flickr.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.flickr.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://finder.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://fireeagle.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