https://OpenBenches.org/ - an open data repository for memorial benches.
OMG! This code is still a bit horrible. Looking at it will make you a bit sad. This is a slightly grubby beta - thrown together to test whether things work, but now we are sharing the blame with all the folks who have contributed so far.
All contributions are welcome. Before making a pull request, please:
- Raise a new issue describing the problem and how you intend to fix it.
- Submit a Pull Request referencing the Issue.
You can get all the data, or partial data, from the API. Data is returned in geoJSON format.
- All Data
https://openbenches.org/data.json/
- Specific Bench
https://openbenches.org/data.json/?bench=123
- That last
/
is required.
- Geographic Area (Haversine)
https://openbenches.org/data.json/?latitude=51.234&longitude=-1.234&radius=20
latitude
andlongitude
in WGS 84.radius
in Kilometres.- A maximum of 20 results are returned.
- That last
/
is required.
- Formats
- By default, the JSON starts with
var benches =
- To get pure JSON, append
format=raw
https://openbenches.org/data.json/?bench=123&format=raw
- By default, the JSON starts with
- Images
- The API doesn't return images. Yet.
This is a simple PHP and MySQL website. No need for node, complicated deploys, or spinning up containerised virtual machines in the cloud.
- PHP 7 or greater.
- MySQL 5.5 or greater with innodb.
- ImageMagick 6.9.4-10 or greater.
You will need to sign up to some external API providers:
- Reverse Geocoding requires an OpenCage API key
- Flickr Import requires a Flickr API key
- Tweeting requires a Twitter Developer API key
Add them to config.php.example
- rename that to config.php
In the /database/
folder you'll find a sample database. All text fields are utf8mb4_unicode_ci
because we live in the future now.
Hopefully, the tables are self explanatory:
benchID
latitude
longitude
address
text representation generated by reverse geocoding. For example "10 Downing Street, London SW1A 2AA, United Kingdom"inscription
description
placeholder. Might be used for comments about the bench.present
placeholder. If a bench has been physically removed, this can be set to false.published
added
datetimeuserID
foreign key
Originally we were going to force people to sign in with Twitter / Facebook / GitHub. But that discourages use - so users are now pseudo-anonymous. Hence this weird structure!
userID
provider
could be Twitter, GitHub, etc.providerID
user's name on the provider's service. Anonymous users stores their IP address.name
their display name. Anonymous users stores the time they added a bench.
We store the original image - smaller images are rendered dynamically.
Media storage can be complicated. Storing thousands of images in a single directory can cause problems on some systems. To get around this, we calculate the SHA1 hash of each image. The image is stored in a subdirectory based on the hash. For example, if the hash is 1A2B3C
, the file will be stored in /photos/1/A/1A2B3C.jpg
mediaID
benchID
userID
sha1
A hash of the file.importURL
If the image was imported from an external source - like Flickr.licence
The default isCC BY-SA 4.0
, imported images may be different.media_type
We allow different types of photo - in the future, we might have other types of media.
At the moment, we only accept photos - of the inscription, the bench, the view from the bench, a panorama, and a VR photosphere.
shortName
Internal ID.longName
Displayed to the user.displayOrder
When rendering a form in HTML, this determines the order they are presented in.
shortName
Internal ID.longName
Displayed to the user.url
For more information.
Everything we do builds on someone else's hard work.
- OpenBenches data are made available under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
- The code powering the website is MIT.
- All photos uploaded by users are CC BY-SA 4.0.
- Benches from Bath are OGL and Powered by Bath: Hacked.
- Logo template by Creative Mania CC BY.
- Twitter integration by CodeBird GPL v3.
- Maps by Leaflet BSD 2-clause "Simplified" License.
- Cluster library by Leaflet MIT.
- Map tiles by MapBox.
- GPS logo by Chinnaking CC BY.
- Panoramic Visualiser by Pannellum MIT.
- JavaScript EXIF reader & image preview by JavaScript Load Image MIT.