All Projects → mszell → bikenwgrowth

mszell / bikenwgrowth

Licence: AGPL-3.0 license
Source code for the paper "Growing urban bicycle networks", exploring algorithmically the limitations of urban bicycle network growth

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to bikenwgrowth

Osmnx
OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial data from OpenStreetMap.
Stars: ✭ 3,357 (+8507.69%)
Mutual labels:  gis, urban-planning, osmnx
rafagas
Daily geospatial links curated by Raf Roset
Stars: ✭ 17 (-56.41%)
Mutual labels:  gis, urban-planning
Peartree
peartree: A library for converting transit data into a directed graph for sketch network analysis.
Stars: ✭ 116 (+197.44%)
Mutual labels:  gis, network-analysis
shadow-accrual-maps
Accumulated shadow data computed for New York City
Stars: ✭ 15 (-61.54%)
Mutual labels:  gis, urban-planning
gis4wrf
QGIS toolkit 🧰 for pre- and post-processing 🔨, visualizing 🔍, and running simulations 💻 in the Weather Research and Forecasting (WRF) model 🌀
Stars: ✭ 137 (+251.28%)
Mutual labels:  gis, urban-planning
packetnet
Official repository - High performance .Net assembly for dissecting and constructing network packets such as ethernet, ip, tcp, udp etc.
Stars: ✭ 343 (+779.49%)
Mutual labels:  network-analysis
val3dity
Validation of 3D primitives according to the international standard ISO19107
Stars: ✭ 65 (+66.67%)
Mutual labels:  gis
gis-cheatsheets
GIS Cheatsheet
Stars: ✭ 31 (-20.51%)
Mutual labels:  gis
climbing-data
Open license climbing data
Stars: ✭ 42 (+7.69%)
Mutual labels:  gis
classybrew
Classybrew is a utility for generating statistical class breaks in your data and applying colorbrewer theory to you color palette.
Stars: ✭ 34 (-12.82%)
Mutual labels:  gis
wms-tiles-downloader
CLI for downloading map tiles from WMS server with given bbox and zoom.
Stars: ✭ 47 (+20.51%)
Mutual labels:  gis
Atlas
An extensible 3D GIS application for visualization, analysis and research.
Stars: ✭ 113 (+189.74%)
Mutual labels:  gis
GSFLOW-GRASS
Generates inputs for and runs the coupled groundwater-surface water model "GSFLOW"
Stars: ✭ 24 (-38.46%)
Mutual labels:  gis
gds course
Geographic Data Science, the course
Stars: ✭ 60 (+53.85%)
Mutual labels:  gis
panther
Estimating similarity between vertices is a fundamental issue in network analysis across various domains, such as social networks and biological networks. Methods based on common neighbors and structural contexts have received much attention....
Stars: ✭ 27 (-30.77%)
Mutual labels:  network-analysis
custom-mapbox-layer
A custom layer based on Mapbox
Stars: ✭ 66 (+69.23%)
Mutual labels:  gis
AdvantEDGE
AdvantEDGE, Mobile Edge Emulation Platform
Stars: ✭ 36 (-7.69%)
Mutual labels:  gis
shapefile-rs
Rust library to read & write shapefiles
Stars: ✭ 38 (-2.56%)
Mutual labels:  gis
invest
InVEST: models that map and value the goods and services from nature that sustain and fulfill human life.
Stars: ✭ 71 (+82.05%)
Mutual labels:  gis
geosapi
R interface to GeoServer REST API
Stars: ✭ 26 (-33.33%)
Mutual labels:  gis

Growing Urban Bicycle Networks

This is the source code for the scientific paper Growing urban bicycle networks by M. Szell, S. Mimar, T. Perlman, G. Ghoshal, and R. Sinatra. The code downloads and pre-processes data from OpenStreetMap, prepares points of interest, runs simulations, measures and saves the results, creates videos and plots.

Paper: https://www.nature.com/articles/s41598-022-10783-y
Data repository: zenodo.5083049
Visualization: GrowBike.Net
Videos & Plots: https://growbike.net/download

Growing Urban Bicycle Networks

Folder structure

The main folder/repo is bikenwgrowth, containing Jupyter notebooks (code/), preprocessed data (data/), parameters (parameters/), result plots (plots/), HPC server scripts and jobs (scripts/).

Other data files (network plots, videos, results, exports, logs) make up many GBs and are stored in the separate external folder bikenwgrowth_external due to Github's space limitations.

Setting up code environment

Conda yml

Download .yml

Manual procedure

conda create --override-channels -c conda-forge -n OSMNX python=3.8.2 osmnx=0.16.2 python-igraph watermark haversine rasterio tqdm geojson
conda activate OSMNX
conda install -c conda-forge ipywidgets
pip install opencv-python
conda install -c anaconda gdal
pip install --user ipykernel
python -m ipykernel install --user --name=OSMNX

Run Jupyter Notebook with kernel OSMNX (Kernel > Change Kernel > OSMNX)

Running the code on an HPC cluster with SLURM

For multiple, esp. large, cities, running the code on a high performance computing cluster is strongly suggested as the tasks are easy to paralellize. The shell scripts are written for SLURM.

  1. Populate parameters/cities.csv, see below.
  2. Run 01 and 02 once locally to download and prepare all networks and POIs (The alternative is server-side sbatch scripts/download.job, but OSMNX throws too many connection issues, so manual supervision is needed)
  3. Upload code/*.py, parameters/*, scripts/*
  4. Run: ./mastersbatch_analysis.sh
  5. Run, if needed: ./mastersbatch_export.sh
  6. After all is finished, run: ./cleanup.sh
  7. Recommended, run: ./fixresults.sh (to clean up results in case of amended data from repeated runs)

Running the code locally

Single (or few/small) cities could be run locally but require manual, step-by-step execution of Jupyter notebooks:

  1. Populate parameters/cities.csv, see below.
  2. Run 01 and 02 once to download and prepare all networks and POIs
  3. Run 03,04,05 for each parameter set (see below), set in parameters/parameters.py
  4. Run 06 or other steps as needed.

Parameter sets

  1. prune_measure = "betweenness", poi_source = "railwaystation"
  2. prune_measure = "betweenness", poi_source = "grid"
  3. prune_measure = "closeness", poi_source = "railwaystation"
  4. prune_measure = "closeness", poi_source = "grid"
  5. prune_measure = "random", poi_source = "railwaystation"
  6. prune_measure = "random", poi_source = "grid"

Populating cities.csv

Checking nominatimstring

Acquiring shape file

  • Go to Overpass, to the city, and run: relation["boundary"="administrative"]["name:en"="Copenhagen Municipality"]({{bbox}});(._;>;);out skel;
  • Export: Download as GPX
  • Use QGIS to create a polygon, with Vector > Join Multiple Lines, and Processing Toolbox > Polygonize (see Stackexchange answer 1 and Stackexchange answer 2)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].