[OSM-dev] OSM without segments - prototype
Gabriel Ebner
ge at gabrielebner.at
Thu Aug 16 17:16:57 BST 2007
Over the last few days I've developed working prototypes of the server code and
JOSM that do away with segments and make ways simple lists of nodes.
What would that gain us? First of all, big space savings (I estimate 40%,
I'll post accurate numbers when I'll have imported yesterdays's planet and
exported it again).
Secondly, a major code simplification. There are no more corner cases like
unordered ways and you don't have to keep track of segments which have
effectively become cruft by now. E.g, the split way action in JOSM is now
only half as long (including comments and boilerplate) as before.
The only current use of ways that doesn't fall into the simple list of nodes
are areas with holes. That however could be handled with entities (or any
other sort of superway).
You can get the code from my website:
$ git clone http://www.gabrielebner.at/repos/osm_nosegs/josm.git
$ git clone http://www.gabrielebner.at/repos/osm_nosegs/planet.rb.git
$ git clone http://www.gabrielebner.at/repos/osm_nosegs/rails_port.git
$ cd rails_port; svn co http://svn.openstreetmap.org/sites/rails_port/vendor
Then you just need to run rake db:migrate in the rails_port directory (that
takes about 4 hours on my machine), and you'll have a segments-free database.
Migration should cope with all sorts of ways in the current database, but it
does not convert historical ways. Obviously it also deletes all segments and
their histories.
In this prototype, a way looks like this now:
<way id="123">
<nd id="321"/>
<nd id="322"/>
<nd id="324"/>
<tag k="highway" v="unclassified"/>
</way>
Unfortunately I don't have a server ready to run a demo version of this, so
if you want to try it out, you'll need to do it on your machine.
Things still missing (I'll do the porting should this proposal be adopted;
except for Potlatch and the two controllers as I don't know that code):
- amf_controller.rb and swf_controller.rb
- osmarender
- osm2pgsql
- Potlatch
- JOSM plugins: validator, UtilsPlugin
- export tools (garmin, google earth, ....)
Gabriel.
BTW, is there any reason node tags are stored as a single string? That way,
things like "amenity"="restaurant;name=Gasthaus zur Post" lead to unexpected
results.
More information about the dev
mailing list