UserAndre Castro/maps01: Difference between revisions

From XPUB & Lens-Based wiki
No edit summary
No edit summary
Line 1: Line 1:
=Maps=
==Maps / osm intro==


As is possible to render retrieved data from osm api and then render that data into a static map in svg format, that started to resonate with the work we have been developing with Michael concerning svgs and a drew possibilities for different lines of action.
Having recently found out [http://www.openstreetmap.org/ Open Street Map] I have been finding its  various possibilities. Not only it is a open-source project that allows users to search and find information about place, but also anyone can contribute to the improvement of the maps, and the can easily be retrieved and used, for example to create new maps.


===New Maps===
Thinking about my fascination with maps, specially unconventional maps in which accuracy and compreenshion are not priorities, such as map that friend draws you on a napkin, I started to image what this map could be, what form it could take, what would be its purpose, how it would be displayed and navigated.


Seeing in [http://makingmaps.net/2011/01/31/word-maps-words-on-maps-map-typography/ blog] a map of South America in which a mistake prevented the map-lines from being printed. The fluidity and bordeless of the map said me something about mobility and loosening of geo-policital constraints. [[File:Map-SouthAmerica.jpg|thumb]]
I have been exploring its potential and aiming at creating non-functional maps or trajectories that could open new perspectives on the city space. (situationists echos)
   


I would be great to do a similar thing to a city. What happens when your only referrences are the street names? Does our vision of it changes? Can we still navigate through it? Will it still be possible to go from place A to place B taking this map as a reference?
==New Maps==


This possibility also made sense with a simple idea I had been tinkering with of removing the stree name's suffixes. So in Rotterdam "Nieuwe Binnenweg" will become only "Nieuwe Binnen".
Thinking about my fascination with maps, specially unconventional maps in which accuracy and comprehension are not priorities, such as map that friend draws you on a napkin, I started to imagine what this map could be, what form could it take, what would be its purpose, how it would be displayed and navigated.


So I went on doing so.    
Seeing in [http://makingmaps.net/2011/01/31/word-maps-words-on-maps-map-typography/ Making Maps blog] a map of South America in which a mistake prevented the map-lines from being printed. The fluidity and in nonexistence of border said something about mobility and loosening of geo-political constraints. [[File:Map-SouthAmerica.jpg|thumb]]
 


===retriving osm data===
I would be interesting to do a similar thing to a city map. What happens when your the only references are the street names? Does our vision of the city change? Will it still be possible to go from place A to place B taking the map as a reference?
...
===data manipulation===
...
* [xml-manipulation-code]


===data rendering to svg osmarender===
This possibility also seemed to make sense with a simple idea I had been tinkering with of removing the street-name's suffixes. So in Rotterdam "Nieuwe Binnenweg" will be only represented as "Nieuwe Binnen".
osmararender renders osm data into an svg.
It is constituted of 2 files...
- ...features.xml - one is supposed to edit, to change the apperance of the map
- osmarender - instructs on how the rendering should be done, and is advised not to chnage it.


I have started by altering the features file, so for example: I remove all the elements besides thes the street names, or live only the lines an street names
So I went on doing so.   
 


However when rendering the svg becomes filled with elements which are not present, therefore making it heavy and dificult to go through
===retrieving osm data===


* find coordinates
In [http://www.openstreetmap.org/ openstreetmap.org] go to Export Menu and check the coordinates. they organized as [lat,long, lat++, long++] area[1,3,2,0] or in other works [lat,long, lat++, long++]


* wget that area's data
<source lang="bash">
wget -O data.osm "http://api.openstreetmap.org/api/0.6/map?bbox=4.4552603823670465,51.91739525301985,4.46384345121436,51.920373035178464"
</source>


===Manipulating the Map===


====features file====
* removing the '//area|//circle|//symbol|//caption'
* removing also line | wayMarker tags will produce words-maps 


* changed svgBaseProfie="basic (tinny)
===Manipulation Data===


* background remove - in the svg the tag rect
[[UserAndre Castro/maps01/xmlManipulate | python code]]
<id="background" x="0px" y="0px" height="72.8048679813291px" width="128.000000000004px" class="map-background"/>  
<span style:"background-color=yellow">put text here. Leave code to the other page</span>
if removed we take way the backgorund :)


* borderless


===data rendering to svg osmarender===


====osmarender xsl file====
[http://wiki.openstreetmap.org/wiki/Osmarender Osmararender] renders osm data into an svg.
Currently I am lookingon how to change to osmarander.xsl file so just the elements that are wanted are rendered into the svg. However muhc work needs to be donde here.
It is constituted of 2 files:


* parsing
- osm-map-features-z17.xml - is a kind of preferences file. Has to be edited in order to change the appearance of the map
x = lxml.etree.XSLT(doc)
http://lxml.de/xpathxslt.html#xslt


- osmarender.xls - instructs on how the rendering should be done. Is advised not to change it.


* (To Do: simplify ways - these seem to be made of several layers of unecessary grey )


* To Do: remove background
I have started by altering the features file. For example: I remove all the elements besides the street names, or leave only lines and street names


<span style="background-color:yellow">(Not sure yet)</span> It seems that when rendering, the svg becomes filled with elements which are no longer present (removed in the features-z17.xml file, therefore making it heavy and dificult to go through


Next step it to apply XSLT stylesheets to XML documents using xsltproc


==============
<source lang="bash">
The rule file is an xml file that specifies the drawing rules.  
xsltproc osm-map-features-z17.xml > rendered-map.svg
Its basic structure is a list of selection rules containing rendering instructions that are processed sequentially
</source>


Each rule specifies what elements to select based on a matching key/value pair (for example, e="way" k="highway" v="motorway" will select all ways that have a highway tag with a value of motorway). It then specifies what to do with these nodes or segments or ways.
Note: data file should be called data.osm, or otherwise osm-map-features-z17.xml data="data.osm" should be changed to the name to the file name in which is in 


tanttttaaaaaa! the map (svg exported to svg)


[[File: render-exp-04.png]]




===Map Appearance===


---
So far I have been aiming only at rendering a street-names only map. This is are the steps to get to end result


I have recently found open street maps. Not only it is a open-source project that allows users to search and find place, but also anyone to contribute for the improvement of the maps, and it allowing geographical data to be easily retrieved.
I used xpath to parse it and remove the wished visual elements, in this case all, besides the street's name
[[UserAndre Castro/maps01/features_change | changing features file - python code ]]
 
* I also changed the svgBaseProfile.This can be set to full, basic of tinny(optimized to mobile phones) svgBaseProfie="basic"


* background remove - in the svg the tag rect
I order to to so I had to edit the osmarender.xsl file and commented the background background
<source lang="xml"> <!-- <rect id="background" x="0px" y="0px" height="{$documentHeight}px" width="{$documentWidth}px" class="map-background"/> --> </source> 


I would explore its potential to create non-functional maps or trajectories that could open new perspectives on the city space. (situationists echos)
   


==Map Making using Open Street Map ==
====osmarender xsl file====
Currently I am looking more into how to change to osmarander.xsl file, so that just the elements that are wanted are rendered into the svg.
<span sytle="backgorund-color:yellow">Much work to do here


* installed osmarender
* parsing
x = lxml.etree.XSLT(doc)
http://lxml.de/xpathxslt.html#xslt
</span>




===ask for the geographical data===
===To Do===
 
* find coordinates
In [http://www.openstreetmap.org/ openstreetmap.org] go to Export Menu and check the coordinates. they organized as [lat,long, lat++, long++] area[1,3,2,0] or in other works [lat,long, lat++, long++]
 


* wget that area's data
* remove borders
<source lang="bash">
wget -O data.osm "http://api.openstreetmap.org/api/0.6/map?bbox=4.4552603823670465,51.91739525301985,4.46384345121436,51.920373035178464"
</source>


* make the svg file larger


* <b>[[UserAndre Castro/maps01/xmlManipulate | XML data manipulation]]</b>
* render a bigger area - a whole city




===render the data into an svg===


* mv this data.osm file into the same the osmarender dir


* call osmarender to process the data.osm into a rendered svg image


** osm-map-features-z17.xml tells what to put on the map - <span style="background-color:yellow">CAN BE EDITED</span> in order to change the result
** osmarender.xsl a stylesheet that directs the actual rendering work - DON'T MESS WITH IT!
** xsltproc applies XSLT stylesheets to XML documents.


<source lang="bash">
xsltproc osm-map-features-z17.xml > rendered-map.svg
</source>


tanttttaaaaaa! the map (svg exported to svg)


[[File: render-exp-04.png]]
---


===<span style="background-color:yellow">data filtering</span>===


[http://wiki.openstreetmap.org/wiki/Osmfilter osmfilter] can also be used to include or exclude certain map data
==OLD==





Revision as of 19:55, 27 November 2011

Maps / osm intro

Having recently found out Open Street Map I have been finding its various possibilities. Not only it is a open-source project that allows users to search and find information about place, but also anyone can contribute to the improvement of the maps, and the can easily be retrieved and used, for example to create new maps.


I have been exploring its potential and aiming at creating non-functional maps or trajectories that could open new perspectives on the city space. (situationists echos)


New Maps

Thinking about my fascination with maps, specially unconventional maps in which accuracy and comprehension are not priorities, such as map that friend draws you on a napkin, I started to imagine what this map could be, what form could it take, what would be its purpose, how it would be displayed and navigated.

Seeing in Making Maps blog a map of South America in which a mistake prevented the map-lines from being printed. The fluidity and in nonexistence of border said something about mobility and loosening of geo-political constraints.

Map-SouthAmerica.jpg

I would be interesting to do a similar thing to a city map. What happens when your the only references are the street names? Does our vision of the city change? Will it still be possible to go from place A to place B taking the map as a reference?

This possibility also seemed to make sense with a simple idea I had been tinkering with of removing the street-name's suffixes. So in Rotterdam "Nieuwe Binnenweg" will be only represented as "Nieuwe Binnen".

So I went on doing so.


retrieving osm data

  • find coordinates

In openstreetmap.org go to Export Menu and check the coordinates. they organized as [lat,long, lat++, long++] area[1,3,2,0] or in other works [lat,long, lat++, long++]

  • wget that area's data
wget -O data.osm "http://api.openstreetmap.org/api/0.6/map?bbox=4.4552603823670465,51.91739525301985,4.46384345121436,51.920373035178464"


Manipulation Data

python code put text here. Leave code to the other page


data rendering to svg osmarender

Osmararender renders osm data into an svg. It is constituted of 2 files:

- osm-map-features-z17.xml - is a kind of preferences file. Has to be edited in order to change the appearance of the map

- osmarender.xls - instructs on how the rendering should be done. Is advised not to change it.


I have started by altering the features file. For example: I remove all the elements besides the street names, or leave only lines and street names

(Not sure yet) It seems that when rendering, the svg becomes filled with elements which are no longer present (removed in the features-z17.xml file, therefore making it heavy and dificult to go through

Next step it to apply XSLT stylesheets to XML documents using xsltproc

	
xsltproc osm-map-features-z17.xml > rendered-map.svg

Note: data file should be called data.osm, or otherwise osm-map-features-z17.xml data="data.osm" should be changed to the name to the file name in which is in

tanttttaaaaaa! the map (svg exported to svg)

Render-exp-04.png


Map Appearance

So far I have been aiming only at rendering a street-names only map. This is are the steps to get to end result

I used xpath to parse it and remove the wished visual elements, in this case all, besides the street's name changing features file - python code

  • I also changed the svgBaseProfile.This can be set to full, basic of tinny(optimized to mobile phones) svgBaseProfie="basic"
  • background remove - in the svg the tag rect

I order to to so I had to edit the osmarender.xsl file and commented the background background

 <!-- <rect id="background" x="0px" y="0px" height="{$documentHeight}px" width="{$documentWidth}px" class="map-background"/> -->


osmarender xsl file

Currently I am looking more into how to change to osmarander.xsl file, so that just the elements that are wanted are rendered into the svg. Much work to do here

  • parsing

x = lxml.etree.XSLT(doc) http://lxml.de/xpathxslt.html#xslt


To Do

  • remove borders
  • make the svg file larger
  • render a bigger area - a whole city





---


OLD

  • Info sources:

http://www.use-it.be/europe/docs/OSMmanual/

http://wiki.openstreetmap.org/wiki/Osmarender

Getting Data

Other Possibilities

  • GPS traces
  • Topographic map


OSM Elements

source: http://wiki.openstreetmap.org/wiki/Map_Features

maps are made up of a few simple elements (Data primitives): nodes, ways and relations. Each element may have an arbitrary number of properties (a.k.a. Tags) which are Key-Value pairs (e.g. highway=primary). (All editing interfaces use the elements and allow the input of tags. )


NODE - the basic element, building block. Nodes consist of latitude and longitude (Nodes are needed to define a way, but a node can also be a standalone unconnected point representing something or points of interest (POI). Standalone nodes should always have at least one Tag such as amenity=telephone). Example <node id="25496583" lat="51.5173639" lon="-0.140043" version="1" changeset="203496" user="80n" uid="1238" visible="true" timestamp="2007-01-28T11:40:26Z"><tag k="highway" v="traffic_signals"/> </node>


WAY - ordered interconnection of at least 2 or more nodes can describe a street, footpath, railway line, river, fence, power line, area or building outline. CLOSED WAY - the first and last nodes are identical, enclosing an AREA


Databases and data acess APIs

http://wiki.openstreetmap.org/wiki/Databases_and_data_access_APIs

API

The main API is the method of obtaining OSM data used by editors. Its limitations are that it will only return very small areas <0.25deg square.

This method of obtaining data should therefore be reserved for editing applications

TRAPI=

XAPI - Retrieve Particular Data Request Needs to be edited

To acess data of a given area in http://www.openstreetmap.org/ go to Export Menu and check the coordinates. they organized as [bbox=lat,long, lat++, long++] area[1,3,2,0] or in other works [lat,long, lat++, long++]

EXAMPLES:

search all nodes in a small are in west Rotterdam:

wget http://open.mapquestapi.com/xapi/api/0.6/node[bbox=4.4552603823670465,51.91739525301985,4.46384345121436,51.920373035178464] -O rotterdam-west-test.osm


search pub nodes in Rotterdam

wget http://open.mapquestapi.com/xapi/api/0.6/node[amenity=pub][bbox=4.3142405612056836,51.87797066611181,4.588898764319719,51.973245376533505] -O rotterdam-pub-test.osm


search ways in a small area in west Rotterdam:

wget http://open.mapquestapi.com/xapi/api/0.6/way[bbox=4.4552603823670465,51.91739525301985,4.46384345121436,51.920373035178464] -O rotterdam-west-way-test.osm


Ways are where I can gather information about streets

Ways get rendered as streets/railways/footpaths/canals etc according to the tag(s) indicating what type of way it is. Ways are contiguous and non-branching. (You can get from beginning to end by following segments of the way, without "jumping" or backtracing)


eg: <tag k="addr:street" v="Mauritsstraat"/>


eg:

 <way id="5090250" visible="true" timestamp="2009-01-19T19:07:25Z" version="8" changeset="816806" user="Blumpsy" uid="64226">
   <nd ref="822403"/>
   <nd ref="21533912"/>
   <nd ref="821601"/>
   <nd ref="21533910"/>
   <nd ref="135791608"/>
   <nd ref="333725784"/>
   <nd ref="333725781"/>
   <nd ref="333725774"/>
   <nd ref="333725776"/>
   <nd ref="823771"/>
   <tag k="highway" v="unclassified"/>
   <tag k="name" v="Clipstone Street"/>
   <tag k="oneway" v="yes"/>
 </way>


All Elements

All elements (nodes, ways and relations) that match the given filter predicates can be requested using the following URL:

http://www.informationfreeway.org/api/0.6/*[...]

This returns an xml document containing nodes, ways and relations that match the search terms. For each matching way the nodes and referenced by that way are also returned. Likewise, for each matching relation the ways and nodes referenced by that relation are also returned.

Source: http://wiki.openstreetmap.org/wiki/Xapi


relevant links

http://derickrethans.nl/what-is-openstreetmap.html Good explanation of OSM project

http://weait.com/content/openstreetmap-planet-file

http://derickrethans.nl/spatial-indexes-data-sqlite.html

osm Frameworks

Deploying your own Slippy Map

Pyrender-map rendering framework, programmed in Python

Osmfilter

PythonOsmApi

Databases and data acess APIs

http://wiki.openstreetmap.org/wiki/Databases_and_data_access_APIs

xpath tutorials

http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/index.html#intro

http://www.w3schools.com/xpath/default.asp

http://lxml.de/