aboutsummaryrefslogtreecommitdiffstats

osm@spline Xapi

Aim

We like to rewrite some parts of the XApi needed for our own application. Our aim is not get a full implementation of the Xapi, but to answer only specific requests, at low latency. For this subset of Xapi we want completly cover the original api.

Requests

This is a list of example requests, we want to optimize.

  • xapi.spline.de/api/0.6/node[amenity=*]
  • xapi.spline.de/api/0.6/node[highway=busstop]
  • xapi.spline.de/api/0.6/node[bbox=-6,50,2,61]
  • xapi.spline.de/api/0.6/node[amenity=hospital][bbox=-6,50,2,61]

a more formal description

We serve the node endpoint, but no others. We implment the tag based filtering, for only one tag and a bounding box.

Basic setup

Just execute bootstrap.sh which will install node and everything you need into your local directory. If you don't trust us read the bootstrap.sh. If you have node and npm installed you can just use "npm link src/nodejs/" to install all the dependencies.

Dependencies

For dependencies checkout the package.json file. One special case is the node-postgres lib. Use a patched version: https://github.com/AlexanderS/node-postgres

If you try the libxml branch make sure you have installed libxml for developers.

Database setup

System Message: WARNING/2 (<stdin>, line 52)

Title underline too short.

Database setup
=============

We use postgres 9.* with postgis 1.5. Postgres 9.0 is used because we need some functions on hstores and postgis 1.5 is used for fancy geometry things.

To setup a database you first need a runing postgres 9.0 instance. I hope you know how to do this.

Use

createdb osm

to create a database with name osm. Use

createlang plpgsql osm

to add plpgsql to your database. If you want to create a database user do so:

createuser <username>

Add hstore support for your database:

psql -d osm < /share/contrib/hstore.sql

Add postgis support for your database:

psql -d osm < /share/contrib/postgis-1.5/postgis.sql

Just do:

psql -d osm < /share/contrib/postgis-1.5/spatial_ref_sys.sql

Create the actual schema for osm data. For this step you need osmosis. If your osmosis build is correct there should be a directory named pacakge/scripts where you run:

psql -d osm < pgsql_simple_schema_0.6.sql psql -d osm < pgsql_simple_schema_0.6_linestring.sql

System Message: WARNING/2 (<stdin>, line 90)

Block quote ends without a blank line; unexpected unindent.

Optional/stil to test:

psql -d osm < pgsql_simple_schema_0.6_action.sql psql -d osm < pgsql_simple_schema_0.6_bbox.sql

For documentation on the schema read pgsql_simple.txt.

Import data from xml with:

osmosis --read-xml file="planet.osm.bz2" --wp host="localhost" password="TopSecretPassword" user="insertUserNameHere" database="osm"
Before or after import you may want to create a indexes. Examples below:
CREATE INDEX idx_nodes_tags ON nodes USING GIN(tags); CREATE INDEX idx_nodes_tags ON nodes USING GIST(tags); CREATE INDEX idx_ways_tags ON ways USING GIN(tags); CREATE INDEX idx_ways_tags ON ways USING GIST(tags);