これは、M. Szell、S. Mimar、T. Perlman、G. Ghoshal、R. Sinatra による科学論文「都市自転車ネットワークの成長」のソース コードです。このコードは、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 を実行できるようになります ([カーネル] > [カーネルの変更] > [Growbikenet])。
Jupyter ノートブックを手動で段階的に実行することで、単一 (または少数/小規模) の都市をローカルで実行できます。
parameters/cities.csv
を設定します。以下を参照してください。デフォルト値のままにして、2 つの小さな都市でコードを実行します。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
を実行します (繰り返しの実行によりデータが修正された場合に結果をクリーンアップするため) メインのフォルダー/リポジトリは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;