이것은 M. Szell, S. Mimar, T. Perlman, G. Ghoshal 및 R. Sinatra의 과학 논문 Growing urban Bicycle Networks 의 소스 코드입니다. 코드는 OpenStreetMap에서 데이터를 다운로드 및 사전 처리하고, 관심 지점을 준비하고, 시뮬레이션을 실행하고, 결과를 측정 및 저장하고, 비디오와 플롯을 생성합니다.
논문 : https://www.nature.com/articles/s41598-022-10783-y
데이터 저장소 : zenodo.5083049
시각화 : GrowBike.Net
비디오 및 플롯 : https://growbike.net/download
파리에서 코드를 실행하여 시드 포인트 그리드에서 자전거 네트워크의 성장을 보여주는 비디오 출력
터미널에서 실행하세요:
git clone -b main --single-branch https://github.com/mszell/bikenwgrowth --depth 1
growbikenet
설치 터미널에서 bikenwgrowth
프로젝트 폴더로 이동하고 conda
, mamba
또는 micromamba
사용하여 다음을 실행합니다.
mamba env create -f environment.yml
mamba activate growbikenet
위의 방법이 작동하지 않으면 명령줄에서 환경을 수동으로 생성할 수 있습니다(권장되지 않음).
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
Jupyter에서 growbikenet
환경을 사용하려면 다음을 실행하세요.
python -m ipykernel install --user --name=growbikenet
이를 통해 커널 growbikenet
(커널 > 커널 변경 > 성장 자전거넷)을 사용하여 Jupyter를 실행할 수 있습니다.
단일(또는 소수의/소규모) 도시는 Jupyter 노트북을 수동으로 단계별로 실행하여 로컬에서 실행할 수 있습니다.
parameters/cities.csv
채웁니다. 아래를 참조하세요. 두 개의 작은 도시에서 코드를 실행하려면 기본값을 그대로 둡니다.code
폴더로 이동합니다.parameters/parameters.py
에 설정된 각 매개변수 세트(아래 참조)에 대해 노트북 03, 04, 05를 실행합니다.X_
로 명명된 추가 노트북을 실행할 수 있습니다.다중의 경우 특히. 대규모 도시에서는 작업이 병렬화되기 쉽기 때문에 고성능 컴퓨팅 클러스터에서 코드를 실행하는 것이 좋습니다. 쉘 스크립트는 SLURM용으로 작성되었습니다.
parameters/cities.csv
채웁니다. 아래를 참조하세요.sbatch scripts/download.job
이지만 OSMNX에서는 연결 문제가 너무 많이 발생하므로 수동 감독이 필요합니다.)code/*.py
, parameters/*
, scripts/*
./mastersbatch_analysis.sh
./mastersbatch_export.sh
./cleanup.sh
./fixresults.sh
(반복 실행으로 인해 데이터가 수정된 경우 결과 정리)를 실행합니다. 기본 폴더/repo는 bikenwgrowth
이며 Jupyter 노트북( code/
), 사전 처리된 데이터( data/
), 매개변수( parameters/
), 결과 플롯( plots/
), HPC 서버 스크립트 및 작업( scripts/
)을 포함합니다.
생성된 데이터 출력(네트워크 플롯, 비디오, 결과, 내보내기, 로그)의 대부분은 많은 GB를 구성하며 별도의 외부 폴더 bikenwgrowth_external
에 저장됩니다. 다른 경로를 설정하려면 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;