A simple rest API that exposes data related to zip codes and buildings in Berlin.
This project is the Python implementation of PLZ
The source dataset is published by Esri and is available here.
Built as an exercise
PLZ provides the following endpoints:
-
/status
returns the status of the service -
/zip/buildings
returns the number of buildings aggregated by zip code -
/zip/buildings/history
returns the number of buildings aggregated by zip code and year -
/zip/buildings/:code
returns the number of buildings for a specific zip code -
/zip/buildings/:code/history
returns the number of buildings aggregated by zip code and year for a specific zip code
There are 2 ways to run the PLZ api service: using Docker(recommended) or via manual setup.
For best results with Docker please use the image from the go project as described here since the image is orders of magnitude smaller.
Those are the steps to run the project manually:
- Install the library
pip install plzpy
- Download the dataset linked above:
curl -L https://opendata.arcgis.com/datasets/273bf4ae7f6a460fbf3000d73f7b2f76_0.csv?outSR=%7B%22latestWkid%22%3A3857%2C%22wkid%22%3A102100%7D -o /tmp/src.csv
- Massage the dataset to produce an optimized json to be served via the Rest API
plzpy massage --in /tmp/src.csv --out rest.json
- Run the Rest API service
plzpy serve --data rest.json
The project relies on poetry.