|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<title>Foo</title> |
|
<meta charset="utf-8" /> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> |
|
<style type='text/css'> |
|
body { |
|
font-family: 'Helvetica'; |
|
letter-spacing:-5px; |
|
background:#000; |
|
background-size:100%; |
|
color:#fff; |
|
margin:0; |
|
padding:0; |
|
font-weight:bold; |
|
} |
|
|
|
h1, h2, h3, p { |
|
margin:0; |
|
} |
|
|
|
em, a { |
|
font-style:normal; |
|
color:#8dbd0c; |
|
} |
|
|
|
a { |
|
background: #34d0e7; |
|
color:#000; |
|
text-decoration:none; |
|
} |
|
|
|
img { |
|
width:100%; |
|
} |
|
|
|
div { |
|
cursor:pointer; |
|
cursor:hand; |
|
position:absolute; |
|
top:0; |
|
left:0; |
|
} |
|
|
|
</style> |
|
<script type='text/javascript'> |
|
window.onload = function() { |
|
var s = document.getElementsByTagName('div'), cur = 0; |
|
if (!s) return; |
|
function go(n) { |
|
cur = n; |
|
var i = 1e3, e = s[n]; |
|
for (var k = 0; k < s.length; k++) s[k].style.display = 'none'; |
|
e.style.display = 'inline-block'; |
|
e.style.fontSize = i + 'px'; |
|
if (e.firstChild.nodeName === 'IMG') { |
|
document.body.style.backgroundImage = 'url(' + e.firstChild.src + ')'; |
|
e.firstChild.style.display = 'none'; |
|
} else { |
|
document.body.style.backgroundImage = ''; |
|
document.body.style.backgroundColor = e.style.backgroundColor; |
|
} |
|
while ( |
|
e.offsetWidth > window.innerWidth || |
|
e.offsetHeight > window.innerHeight) { |
|
e.style.fontSize = (i -= 10) + 'px'; |
|
if (i < 0) break; |
|
} |
|
e.style.marginTop = ((window.innerHeight - e.offsetHeight) / 2) + 'px'; |
|
if (window.location.hash !== n) window.location.hash = n; |
|
document.title = e.textContent || e.innerText; |
|
} |
|
document.onclick = function() { |
|
go(++cur % (s.length)); |
|
}; |
|
document.onkeydown = function(e) { |
|
(e.which === 39) && go(Math.min(s.length - 1, ++cur)); |
|
(e.which === 37) && go(Math.max(0, --cur)); |
|
}; |
|
function parse_hash() { |
|
return Math.max(Math.min( |
|
s.length - 1, |
|
parseInt(window.location.hash.substring(1), 10)), 0); |
|
} |
|
if (window.location.hash) cur = parse_hash() || cur; |
|
window.onhashchange = function() { |
|
var c = parse_hash(); |
|
if (c !== cur) go(c); |
|
}; |
|
|
|
go(cur); |
|
}; |
|
</script></head><body> |
|
<div><h2>welcome to phxgeo</h2> |
|
<h2>june 2013</h2> |
|
</div> |
|
<div><p>Agenda</p> |
|
<ul> |
|
<li>lighting talks</li> |
|
<li>phxgeo direction</li> |
|
<li>mappy hour</li> |
|
</ul> |
|
</div> |
|
<div><p><img src="http://openstreetmap.us/legacy_uploads/2013/02/Screen-Shot-2013-02-08-at-9.51.28-AM.png" alt="SOTMUS"></p> |
|
</div> |
|
<div><p>Videos available! <a href="http://sotm.us">http://sotm.us</a></p> |
|
</div> |
|
<div><p>My Agenda:</p> |
|
<ul> |
|
<li>Vectors and Visualization</li> |
|
<li>Editing OSM</li> |
|
<li>Voxel.js and StreetNameFight</li> |
|
<li>GeoGit and TopoJSON</li> |
|
<li>Geocoding with OSM</li> |
|
</ul> |
|
</div> |
|
<div><p>Vectors: TileMill "2.0"</p> |
|
<p><a href="http://mapbox.com/tilemill/">http://mapbox.com/tilemill/</a></p> |
|
</div> |
|
<div><p>Mapnik + CartoCSS + geojson + magic</p> |
|
</div> |
|
<div><p><iframe class="vine-embed" src="https://vine.co/v/b0DvTPnpPtw/embed/postcard" width="600" height="600" frameborder="0"></iframe><script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script></p> |
|
</div> |
|
<div><p>CartoCSS</p> |
|
<p><code>.border::highlight { |
|
line-color: #FF0; |
|
line-opacity: 0.5; |
|
}</p> |
|
<p>.border::highlight { |
|
line-color: #3F6; |
|
}</code></p> |
|
</div> |
|
<div><p><img src="http://www.mapbox.com/tilemill/assets/manual/symbolizer-2.png" alt=""></p> |
|
</div> |
|
<div><p>New OSM Editor</p> |
|
<ul> |
|
<li>D3</li> |
|
<li>Vectors</li> |
|
<li>simple and intuitive</li> |
|
</ul> |
|
</div> |
|
<div><p><a href="http://osm.org/" target="_new"><a href="http://osm.org/">http://osm.org/</a></a></p> |
|
</div> |
|
<div><p>StreetNameFight</p> |
|
<p><a href="http://streetnamefight.com/fight">http://streetnamefight.com/fight</a></p> |
|
</div> |
|
<div><p>GeoGit</p> |
|
<p><a href="https://github.com/opengeo/GeoGit">https://github.com/opengeo/GeoGit</a></p> |
|
</div> |
|
<div><p>GeoGit is distributed version control for geospatial data</p> |
|
</div> |
|
<div><p>TopoJSON</p> |
|
<p><a href="https://github.com/mbostock/topojson">https://github.com/mbostock/topojson</a></p> |
|
</div> |
|
<div><ul> |
|
<li>GeoJSON with topology!</li> |
|
<li>Shared line segments</li> |
|
<li>80% smaller than GeoJSON</li> |
|
<li>Based on Arc/INFO e00!</li> |
|
</ul> |
|
</div> |
|
<div><p><img src="https://github.com/mbostock/topojson/wiki/example.png" alt=""></p> |
|
</div> |
|
<div><p> 2.2M as a GeoJSON file</p> |
|
<p> 435k as TopoJSON</p> |
|
</div> |
|
<div><p> Geocoding with OSM</p> |
|
</div> |
|
<div><p> ISSUE?</p> |
|
</div> |
|
<div><p> Open Database License (ODbL)</p> |
|
<p> <a href="http://opendatacommons.org/licenses/odbl/">http://opendatacommons.org/licenses/odbl/</a></p> |
|
</div> |
|
<div><p> Are geocoded results produce work from OSM or derivative database?</p> |
|
</div> |
|
<div><p> Produced work doesn't need to be shared back to the project.</p> |
|
</div> |
|
<div><p> Contact:</p> |
|
<p> James Fee |
|
james.fee@urs.com |
|
@cageyjames</p> |
|
</div> |