MapRoulette API Wrapper¶
This project provides a convenient wrapper around the MapRoulette API. You can create and maintain Challenges and Tasks on a local MapRoulette server or on the main MapRoulette dev and production servers.
The MapRoulette Challenge administration API endpoints are protected with HTTP basic authentication. This means that you will need to supply a username and password for most operations to work. If you do not have credentials, contact email@example.com. Passwords are transmitted in plain text, so use a password you do not use anywhere else.
Prepare a challenge¶
You need a few things to create your own MapRoulette challenge:
- Challenge metadata. At the very least you need a title, a slug and some instructions to show the user.
- Access to a server. It is recommended that you try your challenge on a local development server first, then move on to the main MapRoulette servers.
Once you have those things, you can get to work!
First, we get a MapRoulette server instance:
>>> from maproulette import MapRouletteServer >>> server = MapRouletteServer( url='http://localhost:5000/api', user=foo, password=bar)
This will get a
MapRouletteServer instance that points at a local MapRoulette development server at
Let’s see if it is alive:
>>> server.alive() True
Next, we create a new Challenge on this server:
from maproulette import MapRouletteChallenge challenge = MapRouletteChallenge( slug='test-challenge', title='Test Challenge') challenge.create(server)
Finally, let’s prepare a task and add it to the challenge:
from maproulette import MapRouletteTask from geojson import FeatureCollection, Feature, Point task = MapRouletteTask( challenge, identifier='test-task-1', geometries=FeatureCollection([Feature( geometry=Point((random(), random())))])) task.create(server))
See how we use
geojson.Point to generate a GeoJSON geometry on the fly. In real life, you would probably get these from another source. Note that MapRoulette requires the task geometry to be wrapped in a FeatureCollection, even if the geometry is just a single point, like in the example above.
You can also use
MapRouletteTaskCollection to create multiple tasks at once.