Webserver to re-generate uploaded folium map to use custom URLs
801
GitHub repo: https://github.com/dsaidgovsg/folium-override-server
Webserver to re-generate uploaded folium map to use custom URLs.
The service name for this repository is generally abbreviated as fover.
This webservice allows any generate folium map done via .save() and ._repr_html_() to have all
its external resource URLs replaced with custom URLs, so that the HTML file is transformed to point
to custom hosts to load all its external resources. This is useful for hosting and showing maps
within non-Internet zone for example.
These URLs to be replaced are split into two sets:
tileserver-gl map tilesSimply go to the root path of the service and submit your folium HTML file to
python3 + venv set-upYou will need at least Python 3.6 with venv and pip modules installed.
See
https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/#installing-virtualenv
for more details on the installation on venv.
Assuming the virtual environment directory to save into is ~/.fover,
run the command to create the above directory:
python3 -m venv ~/.fover
Then go into your environment by running source:
source ~/.fover/bin/activate
Then run the following to install the requirements:
python3 -m pip install -r requirements.txt
Finally, you will need to set the required env vars in .env file. The page will still work but the
generated HTML file will not make sense with the default env var values.
Finally simply do
gunicorn app:app
In your web browser, go to http://localhost:8000.
If you want to customize the port, binding address or the number of workers to run with, look at the official documentation for more details: https://docs.gunicorn.org/en/stable/run.html.
docker-compose set-upYou will need docker and docker-compose.
Simply run
docker-compose up --build
In your web browser, go to http://localhost:8000.
The webserver set-up dynamically picks up all FLASK_APP_ prefixed env vars to be assigned into the
app.config. For e.g., if you set the env var FLASK_APP_COMPRESS_LEVEL=9, the webservice would do
app.config['COMPRESS_LEVEL'] = 9.
The value to assign can be a JSON string if you need to assign a list, e.g.:
FLASK_APP_COMPRESS_ALGORITHM='["gzip"]'.
Currently this webservice has the following packages that require app config set-up:
The tag release system here follows this format vX.Y.Z_folium-v0.10.1. ThevX.Y.Z part is the
semver for this repository, while the folium-v0.10.1 part is to match the resources that was
extracted from folium v0.10.1.
The external JSON files required for URL replacement is extracted from https://github.com/dsaidgovsg/folium-resource-server.
The folium version tagged in this repo will fetch the corresponding matching folium version in
the above repository.
For convenience, a script to download and update the external JSON files is created at
update-external.sh. If the folium version changes for this repository, the script should also be
updated accordingly.
Content type
Image
Digest
Size
57.5 MB
Last updated
almost 6 years ago
docker pull dsaidgovsg/fover:v0.2.0_folium-v0.10.1