Download - It Jam 2009
![Page 1: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/1.jpg)
OpenStreetMap and Python
Andrii V. Mishkovskyi
October 27, 2009
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 1 / 23
![Page 2: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/2.jpg)
What is OpenStreetMap?
In short:
The Wikipedia ofMaps
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 2 / 23
![Page 3: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/3.jpg)
What is OpenStreetMap?
FreeCC-by-SAConstantly evolvingEasy to start
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 3 / 23
![Page 4: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/4.jpg)
Languages used
Ruby siteC++ rendering, editors, utilitiesPython rendering, utilitiesJava utilities, editorsPHP wiki
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 4 / 23
![Page 5: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/5.jpg)
Python tools
bulk upload.pyPythonOsmApiCloudMade’s Python APIMapnik
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 5 / 23
![Page 6: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/6.jpg)
Outline
MapnikOther tools
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 6 / 23
![Page 7: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/7.jpg)
Overview
Render toolWritten in C++Boost.Python for bindingsLots of input pluginsPNG, JPG, SVG, PDF output
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 7 / 23
![Page 8: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/8.jpg)
Example, part 1import mapnikmap = mapnik.Map()map.background = mapnik.Color(’steelblue’)rule = mapnik.Rule()rule.symbols.append(
mapnik.PolygonSymbolizer(mapnik.Color(’#f2eff9’)))
rule.symbols.append(mapnik.LineSymbolizer(
mapnik.Color(’rgb(50%,50%,50%)’), 0.1))style = mapnik.Style()style.rules.append(rule)map.append_style(’Base’, style)
![Page 9: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/9.jpg)
Example, part 1import mapnikmap = mapnik.Map()map.background = mapnik.Color(’steelblue’)rule = mapnik.Rule()rule.symbols.append(
mapnik.PolygonSymbolizer(mapnik.Color(’#f2eff9’)))
rule.symbols.append(mapnik.LineSymbolizer(
mapnik.Color(’rgb(50%,50%,50%)’), 0.1))style = mapnik.Style()style.rules.append(rule)map.append_style(’Base’, style)
![Page 10: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/10.jpg)
Example, part 1import mapnikmap = mapnik.Map()map.background = mapnik.Color(’steelblue’)rule = mapnik.Rule()rule.symbols.append(
mapnik.PolygonSymbolizer(mapnik.Color(’#f2eff9’)))
rule.symbols.append(mapnik.LineSymbolizer(
mapnik.Color(’rgb(50%,50%,50%)’), 0.1))style = mapnik.Style()style.rules.append(rule)map.append_style(’Base’, style)
![Page 11: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/11.jpg)
Example, part 1import mapnikmap = mapnik.Map()map.background = mapnik.Color(’steelblue’)rule = mapnik.Rule()rule.symbols.append(
mapnik.PolygonSymbolizer(mapnik.Color(’#f2eff9’)))
rule.symbols.append(mapnik.LineSymbolizer(
mapnik.Color(’rgb(50%,50%,50%)’), 0.1))style = mapnik.Style()style.rules.append(rule)map.append_style(’Base’, style)
![Page 12: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/12.jpg)
Example, part 2
layer = mapnik.Layer(’world’,"+proj=latlong +datum=WGS84")
layer.datasource = mapnik.Shapefile(file=’boundaries.shp’)
layer.styles.append(’Base’)map.layers.append(layer)map.zoom_to_box(layer.envelope())mapnik.render_to_file(map, ’world.png’, ’png’)
![Page 13: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/13.jpg)
Example, part 2
layer = mapnik.Layer(’world’,"+proj=latlong +datum=WGS84")
layer.datasource = mapnik.Shapefile(file=’boundaries.shp’)
layer.styles.append(’Base’)map.layers.append(layer)map.zoom_to_box(layer.envelope())mapnik.render_to_file(map, ’world.png’, ’png’)
![Page 14: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/14.jpg)
Example, part 2
layer = mapnik.Layer(’world’,"+proj=latlong +datum=WGS84")
layer.datasource = mapnik.Shapefile(file=’boundaries.shp’)
layer.styles.append(’Base’)map.layers.append(layer)map.zoom_to_box(layer.envelope())mapnik.render_to_file(map, ’world.png’, ’png’)
![Page 15: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/15.jpg)
Example, part 2
layer = mapnik.Layer(’world’,"+proj=latlong +datum=WGS84")
layer.datasource = mapnik.Shapefile(file=’boundaries.shp’)
layer.styles.append(’Base’)map.layers.append(layer)map.zoom_to_box(layer.envelope())mapnik.render_to_file(map, ’world.png’, ’png’)
![Page 16: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/16.jpg)
Wait for it...
![Page 17: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/17.jpg)
![Page 18: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/18.jpg)
Ta-da!
![Page 19: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/19.jpg)
IRL example, part 1
import mapnikprojection = mapnik.Projection(
"+proj=merc +a=6378137 +b=6378137 ""+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 ""+no_defs +over +lat_ts=0.0 +units=m")
map = mapnik.Map(900, 600)mapnik.load_map(map, ’/path/to/style.xml’)
![Page 20: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/20.jpg)
IRL example, part 1
import mapnikprojection = mapnik.Projection(
"+proj=merc +a=6378137 +b=6378137 ""+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 ""+no_defs +over +lat_ts=0.0 +units=m")
map = mapnik.Map(900, 600)mapnik.load_map(map, ’/path/to/style.xml’)
![Page 21: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/21.jpg)
IRL example, part 1
import mapnikprojection = mapnik.Projection(
"+proj=merc +a=6378137 +b=6378137 ""+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 ""+no_defs +over +lat_ts=0.0 +units=m")
map = mapnik.Map(900, 600)mapnik.load_map(map, ’/path/to/style.xml’)
![Page 22: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/22.jpg)
IRL example, part 1
import mapnikprojection = mapnik.Projection(
"+proj=merc +a=6378137 +b=6378137 ""+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 ""+no_defs +over +lat_ts=0.0 +units=m")
map = mapnik.Map(900, 600)mapnik.load_map(map, ’/path/to/style.xml’)
![Page 23: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/23.jpg)
IRL example, part 2
coords = [(30.44, 50.455), (30.465, 50.459)]coords = [mapnik.Coord(*coord)
for coord in coords]coords = [projection.forward(coord)
for coord in coords]bbox = mapnik.Envelope(*coords)map.zoom_to_box(bbox)mapnik.render_to_file(
map, ’whereweare.png’, ’png’)
![Page 24: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/24.jpg)
IRL example, part 2
coords = [(30.44, 50.455), (30.465, 50.459)]coords = [mapnik.Coord(*coord)
for coord in coords]coords = [projection.forward(coord)
for coord in coords]bbox = mapnik.Envelope(*coords)map.zoom_to_box(bbox)mapnik.render_to_file(
map, ’whereweare.png’, ’png’)
![Page 25: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/25.jpg)
IRL example, part 2
coords = [(30.44, 50.455), (30.465, 50.459)]coords = [mapnik.Coord(*coord)
for coord in coords]coords = [projection.forward(coord)
for coord in coords]bbox = mapnik.Envelope(*coords)map.zoom_to_box(bbox)mapnik.render_to_file(
map, ’whereweare.png’, ’png’)
![Page 26: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/26.jpg)
![Page 27: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/27.jpg)
![Page 28: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/28.jpg)
Styles are cool!
![Page 29: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/29.jpg)
Outline
MapnikOther tools
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 18 / 23
![Page 30: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/30.jpg)
bulk upload.py
Mass imports of dataPerfect overview of working with OSMAPI
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 19 / 23
![Page 31: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/31.jpg)
PythonOsmApi
Thin wrapper over HTTP OSM APIAllows editing OSM data
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 20 / 23
![Page 32: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/32.jpg)
CloudMade API
Shameless plug
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 21 / 23
![Page 33: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/33.jpg)
CloudMade API
Access to CloudMade’s servicesRouting, geocoding, tiles . . .More coming soon
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 21 / 23
![Page 34: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/34.jpg)
So. . .
OpenStreetMap is the biggest datadump everMapnik rulesAPIs ruleLots of work yet to be done
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 22 / 23
![Page 35: It Jam 2009](https://reader034.vdocument.in/reader034/viewer/2022052505/555115fab4c905f10b8b4e31/html5/thumbnails/35.jpg)
Links
osm.orgmapnik.orgcloudmade.comwiki.osm.org
Andrii V. Mishkovskyi () OpenStreetMap and Python October 27, 2009 23 / 23