🇧🇪 Flanders, Belgium #299
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 🇧🇪 Flanders, Belgium | |
on: | |
workflow_dispatch: | |
# Run every Sunday at 12:00 UTC | |
schedule: | |
- cron: "0 12 * * 0" | |
push: | |
paths: | |
- ".github/workflows/belgium-flanders.yml" | |
- ".github/actions/*/action.yml" | |
- "script/**/*.ts" | |
- "data/belgium/flanders/convert.json" | |
- "data/belgium/flanders/filter.sql" | |
pull_request: | |
paths: | |
- ".github/workflows/belgium-flanders.yml" | |
- ".github/actions/*/action.yml" | |
- "script/**/*.ts" | |
- "data/belgium/flanders/convert.json" | |
- "data/belgium/flanders/filter.sql" | |
# Allow one concurrent deployment | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
MAPROULETTE_CHALLENGE_ID: 24090 | |
jobs: | |
diff: | |
name: Generate difference for Flanders, Belgium | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install GDAL | |
run: | | |
sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable | |
sudo apt update | |
sudo apt install gdal-bin | |
- name: Install Tippecanoe | |
uses: ./.github/actions/install-tippecanoe | |
- name: Install dependencies | |
run: npm install | |
working-directory: script | |
- name: Build | |
run: npm run build | |
working-directory: script | |
- name: Generate OpenStreetMap buffers | |
uses: ./.github/actions/openstreetmap-buffers | |
with: | |
country: europe/belgium | |
- name: Download & Unzip Wegenregister data | |
run: | | |
wget --content-disposition "https://download.vlaanderen.be/bff/v1/Orders/248409/download/7fae9d05-e147-48d3-8dfa-d66de16a2fb6" | |
unzip -j "Wegenregister_SHAPE_20240620.zip" "Shapefile/Wegsegment.*" | |
- name: Convert (and filter) Wegenregister to GeoJSON | |
run: | | |
ogr2ogr -f "GeoJSON" -progress \ | |
--config SHAPE_ENCODING "ISO-8859-1" \ | |
-s_srs "EPSG:31370" -t_srs "EPSG:4326" \ | |
-sql "@data/belgium/flanders/filter.sql" \ | |
-lco COORDINATE_PRECISION=6 \ | |
-fieldTypeToString "All" \ | |
"Wegsegment.geojson" \ | |
"Wegsegment.shp" | |
- name: Convert Wegenregister fields to OpenStreetMap tags | |
run: node "script/convert-tags.js" -c "data/belgium/flanders/convert.json" "Wegsegment.geojson" "WegsegmentTagged.geojson" | |
- name: Generate Wegenregister vector tiles | |
run: | | |
tippecanoe --force --no-feature-limit --no-tile-size-limit \ | |
--buffer=0 \ | |
--maximum-zoom=14 --minimum-zoom=14 \ | |
--layer="roads" \ | |
--output="WegsegmentTagged.mbtiles" "WegsegmentTagged.geojson" | |
- name: Generate MapRoulette buffers | |
uses: ./.github/actions/maproulette-buffers | |
with: | |
challenge-id: ${{ env.MAPROULETTE_CHALLENGE_ID }} | |
- name: Upload MapRoulette false positive | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MapRoulette-FalsePositive | |
path: maproulette.geojson | |
- name: Merge MapRoulette buffers to OpenStreetMap buffers and generate vector tiles | |
run: | | |
tippecanoe --force --no-feature-limit --no-tile-size-limit \ | |
--maximum-zoom=14 --minimum-zoom=14 \ | |
--layer="buffers" \ | |
--output="belgium-buffers.mbtiles" \ | |
"openstreetmap-lines-buffers.geojson" "openstreetmap-polygons-buffers.geojson" "maproulette-buffers.geojson" | |
- name: Difference | |
run: node "script/difference.js" --output-dir="data/belgium/flanders/difference" "WegsegmentTagged.mbtiles" "belgium-buffers.mbtiles" | |
- name: Upload difference | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Flanders-Difference | |
path: data/belgium/flanders/difference/diff.geojson | |
- name: Upload statistics | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Flanders-Statistics | |
path: data/belgium/flanders/difference/stats.json | |
commit: | |
name: Commit & Push changes | |
needs: diff | |
if: ${{ github.event_name != 'pull_request' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Flanders-Difference | |
path: data/belgium/flanders/difference | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Flanders-Statistics | |
path: data/belgium/flanders/difference | |
- name: Commit & Push | |
run: | | |
git config user.name github-actions[bot] | |
git config user.email 41898282+github-actions[bot]@users.noreply.github.com | |
git pull | |
git add data/belgium/flanders/difference/diff.geojson | |
git add data/belgium/flanders/difference/stats.json | |
git commit -m "🗃 Update difference for Flanders, Belgium" | |
git push | |
mr-rebuild: | |
name: Rebuild MapRoulette challenge | |
needs: commit | |
runs-on: ubuntu-latest | |
steps: | |
- name: Call MapRoulette API | |
run: | | |
curl -X "PUT" "https://maproulette.org/api/v2/challenge/${{ env.MAPROULETTE_CHALLENGE_ID }}/rebuild?removeUnmatched=true&skipSnapshot=false" \ | |
-H "Accept: application/json" \ | |
-H "apiKey: ${{ secrets.MAPROULETTE_API_KEY }}" |