A tech demo built using Play Framework 2.2 (Java) that imports the CodePoint Open UK postcode dataset and offers a Geocoding RESTful API and a map. It also demonstrates how Google Guice can be integrated in a Play Framework Java application.
Follow @analytically for updates.
- Java 6 or later
- Play Framework 2.2.1
- MongoDB
Edit conf/application.conf
and point it to a MongoDB installation (defaults to localhost:27017
), and execute
play run
Then drop the CodePoint Open CSV (scroll halfway down, 20mb)
files in the codepointopen
directory.
After each file is imported, it will be moved to the codepointopen/done
directory.
Then visit http://localhost:9000 and you should see the welcome screen. Check out the server metrics or the map.
GET http://localhost:9000/latlng/POSTCODE to geocode a UK postcode. Response will be JSON:
{"latitude":51.505615,"longitude":-2.6120315}
- Play Framework 2.2.1, as web framework
- Apache Camel to process and monitor the
codepointopen
directory and to tell the actors about the postcodes (split(body())) - Akka provides a nice concurrency model to process the 1.7 million postcodes in under one minute on modern hardware
- GeoTools converts the eastings/northings to latitude/longitude
- Guice for Dependency Injection (not too much to inject yet though)
- Metrics for metrics
- MongoDB as database with two-dimensional geospatial indexes (see Geospatial Indexing)
- Morphia for 'Object-Document Mapping'
- Leaflet for the map
- Bootstrap and Font Awesome for the UI
Licensed under the WTFPL.
This data contains Ordnance Survey data © Crown copyright and database right 2013. Code-Point Open contains Royal Mail data © Royal Mail copyright and database right 2012. Code-Point Open and ONSPD contains National Statistics data © Crown copyright and database right 2013.
OS data may be used under the terms of the OS OpenData licence.