Este é o código-fonte do artigo científico Crescendo redes de bicicletas urbanas de M. Szell, S. Mimar, T. Perlman, G. Ghoshal e R. Sinatra. O código baixa e pré-processa dados do OpenStreetMap, prepara pontos de interesse, executa simulações, mede e salva os resultados, cria vídeos e gráficos.
Artigo : https://www.nature.com/articles/s41598-022-10783-y
Repositório de dados : zenodo.5083049
Visualização : GrowBike.Net
Vídeos e enredos : https://growbike.net/download
Saída de vídeo da execução do código em Paris, mostrando o crescimento de uma rede de bicicletas em uma grade de pontos iniciais
Execute a partir do seu terminal:
git clone -b main --single-branch https://github.com/mszell/bikenwgrowth --depth 1
growbikenet
No seu terminal, navegue até a pasta do projeto bikenwgrowth
e use conda
ou mamba
ou micromamba
para executar:
mamba env create -f environment.yml
mamba activate growbikenet
Se o procedimento acima não funcionar, você pode criar manualmente o ambiente a partir da linha de comando (não recomendado):
mamba create --override-channels -c conda-forge -n growbikenet python=3.12 osmnx=1.9.4 python-igraph watermark haversine rasterio tqdm geojson
mamba activate growbikenet
mamba install -c conda-forge ipywidgets
pip install opencv-python
pip install --user ipykernel
Se você quiser usar o ambiente growbikenet
no Jupyter, execute:
python -m ipykernel install --user --name=growbikenet
Isso permite que você execute o Jupyter com o kernel growbikenet
(Kernel > Alterar Kernel > growbikenet)
Cidades únicas (ou poucas/pequenas) podem ser executadas localmente por meio de uma execução manual passo a passo de notebooks Jupyter:
parameters/cities.csv
, veja abaixo. Deixe os valores padrão para executar o código em duas cidades pequenas.code
.parameters/parameters.py
X_
podem ser executados se necessário para gerar resultados ou dados extras.Para múltiplos, esp. cidades grandes, é altamente recomendável executar o código em um cluster de computação de alto desempenho, pois as tarefas são fáceis de paralelizar. Os scripts de shell são escritos para SLURM.
parameters/cities.csv
, veja abaixo.sbatch scripts/download.job
do lado do servidor, mas o OSMNX gera muitos problemas de conexão, portanto, é necessária supervisão manual)code/*.py
, parameters/*
, scripts/*
./mastersbatch_analysis.sh
./mastersbatch_export.sh
./cleanup.sh
./fixresults.sh
(para limpar os resultados no caso de dados alterados de execuções repetidas) A pasta/repositório principal é bikenwgrowth
, contendo notebooks Jupyter ( code/
), dados pré-processados ( data/
), parâmetros ( parameters/
), gráficos de resultados ( plots/
), scripts e trabalhos de servidor HPC ( scripts/
).
A maior parte da saída de dados gerada (gráficos de rede, vídeos, resultados, exportações, logs) representa muitos GBs e é armazenada na pasta externa separada bikenwgrowth_external
. Para configurar caminhos diferentes, edite code/path.py
prune_measure = "betweenness"
, poi_source = "railwaystation"
prune_measure = "betweenness"
, poi_source = "grid"
prune_measure = "closeness"
, poi_source = "railwaystation"
prune_measure = "closeness"
, poi_source = "grid"
prune_measure = "random"
, poi_source = "railwaystation"
prune_measure = "random"
, poi_source = "grid"
relation["boundary"="administrative"]["name:en"="Copenhagen Municipality"]({{bbox}});(._;>;);out skel;