Skip to content

Instantly share code, notes, and snippets.

@sorami
Created August 3, 2022 08:28
Show Gist options
  • Save sorami/7ea5abc1e712e51b7879997516cecb51 to your computer and use it in GitHub Desktop.
Save sorami/7ea5abc1e712e51b7879997516cecb51 to your computer and use it in GitHub Desktop.
Reshaping "Global Urban Street Networks" Data: Cities in Hokkaido, Japan
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "99f7a352",
"metadata": {},
"source": [
"# Reshaping \"Global Urban Street Networks\" Data: Cities in Hokkaido, Japan\n",
"\n",
"[japan-JPN_nelist.zip - Global Urban Street Networks](https://dataverse.harvard.edu/file.xhtml?fileId=4287688&version=2.0)\n",
"\n",
"> Boeing, Geoff, 2020, \"Global Urban Street Networks Node/Edge Lists\", https://doi.org/10.7910/DVN/DC7U0A, Harvard Dataverse, V2"
]
},
{
"cell_type": "markdown",
"id": "dfb81e5e",
"metadata": {},
"source": [
"[Paris, Texas / Visionscarto / Observable](https://observablehq.com/@visionscarto/paris-texas) "
]
},
{
"cell_type": "markdown",
"id": "ee734f84",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "53c1c6ad",
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"\n",
"import pandas as pd\n",
"from tqdm import tqdm_notebook as tqdm"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3498ea80",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>osmid</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>elevation</th>\n",
" <th>elevation_aster</th>\n",
" <th>elevation_srtm</th>\n",
" <th>ref</th>\n",
" <th>highway</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>262766642</td>\n",
" <td>141.269514</td>\n",
" <td>43.090393</td>\n",
" <td>28</td>\n",
" <td>30</td>\n",
" <td>28</td>\n",
" <td>NaN</td>\n",
" <td>traffic_signals</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>262766666</td>\n",
" <td>141.232069</td>\n",
" <td>43.121655</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>19</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>262766694</td>\n",
" <td>141.181388</td>\n",
" <td>43.135021</td>\n",
" <td>16</td>\n",
" <td>19</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>262766716</td>\n",
" <td>141.150015</td>\n",
" <td>43.142013</td>\n",
" <td>57</td>\n",
" <td>59</td>\n",
" <td>57</td>\n",
" <td>NaN</td>\n",
" <td>traffic_signals</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>262766817</td>\n",
" <td>141.284126</td>\n",
" <td>43.093237</td>\n",
" <td>18</td>\n",
" <td>24</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>traffic_signals</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58927</th>\n",
" <td>8245557953</td>\n",
" <td>141.352053</td>\n",
" <td>43.034723</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58928</th>\n",
" <td>8245557955</td>\n",
" <td>141.353741</td>\n",
" <td>43.034914</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58929</th>\n",
" <td>8245557956</td>\n",
" <td>141.353491</td>\n",
" <td>43.034895</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58930</th>\n",
" <td>8245557959</td>\n",
" <td>141.352048</td>\n",
" <td>43.034616</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58931</th>\n",
" <td>8245557962</td>\n",
" <td>141.353300</td>\n",
" <td>43.034613</td>\n",
" <td>40</td>\n",
" <td>40</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>58932 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" osmid x y elevation elevation_aster \\\n",
"0 262766642 141.269514 43.090393 28 30 \n",
"1 262766666 141.232069 43.121655 16 16 \n",
"2 262766694 141.181388 43.135021 16 19 \n",
"3 262766716 141.150015 43.142013 57 59 \n",
"4 262766817 141.284126 43.093237 18 24 \n",
"... ... ... ... ... ... \n",
"58927 8245557953 141.352053 43.034723 38 38 \n",
"58928 8245557955 141.353741 43.034914 39 39 \n",
"58929 8245557956 141.353491 43.034895 39 39 \n",
"58930 8245557959 141.352048 43.034616 38 38 \n",
"58931 8245557962 141.353300 43.034613 40 40 \n",
"\n",
" elevation_srtm ref highway \n",
"0 28 NaN traffic_signals \n",
"1 19 NaN NaN \n",
"2 16 NaN NaN \n",
"3 57 NaN traffic_signals \n",
"4 18 NaN traffic_signals \n",
"... ... ... ... \n",
"58927 38 NaN NaN \n",
"58928 38 NaN NaN \n",
"58929 38 NaN NaN \n",
"58930 38 NaN NaN \n",
"58931 38 NaN NaN \n",
"\n",
"[58932 rows x 8 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_nodes = pd.read_csv(\"./japan-JPN_nelist/sapporo-12736/node_list.csv\")\n",
"df_nodes"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "762d7108",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/b3/42kjjly97mb697cnsn5nv24r0000gn/T/ipykernel_62026/3087576689.py:1: DtypeWarning: Columns (9,12,13,18,20) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_edges = pd.read_csv(\"./japan-JPN_nelist/sapporo-12736/edge_list.csv\")\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>u</th>\n",
" <td>262766642</td>\n",
" <td>262766642</td>\n",
" <td>262766642</td>\n",
" <td>262766666</td>\n",
" <td>262766666</td>\n",
" </tr>\n",
" <tr>\n",
" <th>v</th>\n",
" <td>1801506931</td>\n",
" <td>368222931</td>\n",
" <td>1022784717</td>\n",
" <td>1803546338</td>\n",
" <td>1803535570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>key</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>oneway</th>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway</th>\n",
" <td>trunk</td>\n",
" <td>trunk</td>\n",
" <td>trunk</td>\n",
" <td>trunk</td>\n",
" <td>trunk</td>\n",
" </tr>\n",
" <tr>\n",
" <th>name</th>\n",
" <td>札幌新道</td>\n",
" <td>北5条手稲通</td>\n",
" <td>北5条手稲通</td>\n",
" <td>北5条手稲通</td>\n",
" <td>北5条手稲通</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>53.052</td>\n",
" <td>37.366</td>\n",
" <td>67.918</td>\n",
" <td>171.582</td>\n",
" <td>64.641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>grade</th>\n",
" <td>0.019</td>\n",
" <td>0.027</td>\n",
" <td>-0.044</td>\n",
" <td>0.041</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>grade_abs</th>\n",
" <td>0.019</td>\n",
" <td>0.027</td>\n",
" <td>0.044</td>\n",
" <td>0.041</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>lanes</th>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>est_width</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>maxspeed</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>access</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>service</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bridge</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tunnel</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>area</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>junction</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>osmid</th>\n",
" <td>24268925</td>\n",
" <td>153308535</td>\n",
" <td>199236251</td>\n",
" <td>24268934</td>\n",
" <td>24268934</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ref</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4\n",
"u 262766642 262766642 262766642 262766666 262766666\n",
"v 1801506931 368222931 1022784717 1803546338 1803535570\n",
"key 0 0 0 0 0\n",
"oneway True False False False False\n",
"highway trunk trunk trunk trunk trunk\n",
"name 札幌新道 北5条手稲通 北5条手稲通 北5条手稲通 北5条手稲通\n",
"length 53.052 37.366 67.918 171.582 64.641\n",
"grade 0.019 0.027 -0.044 0.041 0.0\n",
"grade_abs 0.019 0.027 0.044 0.041 0.0\n",
"lanes 2 4 4 4 4\n",
"width NaN NaN NaN NaN NaN\n",
"est_width NaN NaN NaN NaN NaN\n",
"maxspeed NaN NaN NaN NaN NaN\n",
"access NaN NaN NaN NaN NaN\n",
"service NaN NaN NaN NaN NaN\n",
"bridge NaN NaN NaN NaN NaN\n",
"tunnel NaN NaN NaN NaN NaN\n",
"area NaN NaN NaN NaN NaN\n",
"junction NaN NaN NaN NaN NaN\n",
"osmid 24268925 153308535 199236251 24268934 24268934\n",
"ref 5 5 5 5 5"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_edges = pd.read_csv(\"./japan-JPN_nelist/sapporo-12736/edge_list.csv\")\n",
"df_edges.head().T"
]
},
{
"cell_type": "markdown",
"id": "30a78437",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "516670c7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[34maizu_wakamatsu-12934\u001b[m\u001b[m \u001b[34mkirishima-12826\u001b[m\u001b[m \u001b[34mosaka_kyoto-12858\u001b[m\u001b[m\r\n",
"\u001b[34makita-12856\u001b[m\u001b[m \u001b[34mkisarazu-12995\u001b[m\u001b[m \u001b[34motaru-12734\u001b[m\u001b[m\r\n",
"\u001b[34maomori-12827\u001b[m\u001b[m \u001b[34mkitakyushu-12743\u001b[m\u001b[m \u001b[34moyama-12974\u001b[m\u001b[m\r\n",
"\u001b[34masahikawa-12740\u001b[m\u001b[m \u001b[34mkitami-12773\u001b[m\u001b[m \u001b[34msaga-12746\u001b[m\u001b[m\r\n",
"\u001b[34mbeppu-12788\u001b[m\u001b[m \u001b[34mkochi-12873\u001b[m\u001b[m \u001b[34msakaide-12851\u001b[m\u001b[m\r\n",
"\u001b[34mfuji-12971\u001b[m\u001b[m \u001b[34mkoriyama-12953\u001b[m\u001b[m \u001b[34msanda-12888\u001b[m\u001b[m\r\n",
"\u001b[34mfujieda-12969\u001b[m\u001b[m \u001b[34mkumamoto-12769\u001b[m\u001b[m \u001b[34msapporo-12736\u001b[m\u001b[m\r\n",
"\u001b[34mfukaya-12962\u001b[m\u001b[m \u001b[34mkure-12795\u001b[m\u001b[m \u001b[34msasebo-12738\u001b[m\u001b[m\r\n",
"\u001b[34mfukui-12878\u001b[m\u001b[m \u001b[34mkurume-12752\u001b[m\u001b[m \u001b[34msendai-12931\u001b[m\u001b[m\r\n",
"\u001b[34mfukuoka-12741\u001b[m\u001b[m \u001b[34mkushiro-12846\u001b[m\u001b[m \u001b[34mshikoku_chuo-12850\u001b[m\u001b[m\r\n",
"\u001b[34mfukushima-12938\u001b[m\u001b[m \u001b[34mmatsue-12764\u001b[m\u001b[m \u001b[34mshizuoka-12972\u001b[m\u001b[m\r\n",
"\u001b[34mfukuyama-12828\u001b[m\u001b[m \u001b[34mmatsumoto-12921\u001b[m\u001b[m \u001b[34mshunan-12767\u001b[m\u001b[m\r\n",
"\u001b[34mgamagori-12944\u001b[m\u001b[m \u001b[34mmatsusaka-12930\u001b[m\u001b[m \u001b[34mtagawa-12749\u001b[m\u001b[m\r\n",
"\u001b[34mhachinohe-12874\u001b[m\u001b[m \u001b[34mmatsuyama-12825\u001b[m\u001b[m \u001b[34mtajimi-12927\u001b[m\u001b[m\r\n",
"\u001b[34mhakodate-12765\u001b[m\u001b[m \u001b[34mmishima-12980\u001b[m\u001b[m \u001b[34mtakamatsu-12857\u001b[m\u001b[m\r\n",
"\u001b[34mhamamatsu-12958\u001b[m\u001b[m \u001b[34mmito-12986\u001b[m\u001b[m \u001b[34mtakamori-12936\u001b[m\u001b[m\r\n",
"\u001b[34mhigashimatsuyama-12966\u001b[m\u001b[m \u001b[34mmiyakonojo-12839\u001b[m\u001b[m \u001b[34mtakaoka-12884\u001b[m\u001b[m\r\n",
"\u001b[34mhikone-12910\u001b[m\u001b[m \u001b[34mmiyazaki-12842\u001b[m\u001b[m \u001b[34mtakasaki_maebashi-12947\u001b[m\u001b[m\r\n",
"\u001b[34mhirosaki-12831\u001b[m\u001b[m \u001b[34mmobara-13001\u001b[m\u001b[m \u001b[34mtokushima-12881\u001b[m\u001b[m\r\n",
"\u001b[34mhiroshima-12778\u001b[m\u001b[m \u001b[34mmorioka-12900\u001b[m\u001b[m \u001b[34mtokyo-12964\u001b[m\u001b[m\r\n",
"\u001b[34mhitachi-12984\u001b[m\u001b[m \u001b[34mmoriyama_otsu-12902\u001b[m\u001b[m \u001b[34mtomakomai-12760\u001b[m\u001b[m\r\n",
"\u001b[34mhofu-12762\u001b[m\u001b[m \u001b[34mmuroran-12754\u001b[m\u001b[m \u001b[34mtosu-12751\u001b[m\u001b[m\r\n",
"\u001b[34miizuka-12748\u001b[m\u001b[m \u001b[34mnagano-12916\u001b[m\u001b[m \u001b[34mtottori-12809\u001b[m\u001b[m\r\n",
"\u001b[34mimabari-12830\u001b[m\u001b[m \u001b[34mnagaoka-12915\u001b[m\u001b[m \u001b[34mtoyama-12887\u001b[m\u001b[m\r\n",
"\u001b[34misahaya-12750\u001b[m\u001b[m \u001b[34mnagasaki-12745\u001b[m\u001b[m \u001b[34mtoyohashi-12949\u001b[m\u001b[m\r\n",
"\u001b[34mise-12935\u001b[m\u001b[m \u001b[34mnagoya-12914\u001b[m\u001b[m \u001b[34mtsuchiura-12989\u001b[m\u001b[m\r\n",
"\u001b[34mishinomaki-12940\u001b[m\u001b[m \u001b[34mnaha-12882\u001b[m\u001b[m \u001b[34mube-12753\u001b[m\u001b[m\r\n",
"\u001b[34miwakuni-12785\u001b[m\u001b[m \u001b[34mniigata-12904\u001b[m\u001b[m \u001b[34mueda-12926\u001b[m\u001b[m\r\n",
"\u001b[34mizumo-12758\u001b[m\u001b[m \u001b[34mniihama-12841\u001b[m\u001b[m \u001b[34munnamed-12877\u001b[m\u001b[m\r\n",
"\u001b[34mjoetsu-12906\u001b[m\u001b[m \u001b[34mnobeoka-12836\u001b[m\u001b[m \u001b[34munnamed-12983\u001b[m\u001b[m\r\n",
"\u001b[34mkagoshima-12811\u001b[m\u001b[m \u001b[34mobihiro-12800\u001b[m\u001b[m \u001b[34mutsunomiya-12965\u001b[m\u001b[m\r\n",
"\u001b[34mkai_kofu-12956\u001b[m\u001b[m \u001b[34moita-12797\u001b[m\u001b[m \u001b[34myamagata-12920\u001b[m\u001b[m\r\n",
"\u001b[34mkamisu-12997\u001b[m\u001b[m \u001b[34mokaya-12928\u001b[m\u001b[m \u001b[34myatsushiro-12775\u001b[m\u001b[m\r\n",
"\u001b[34mkan_onji-12853\u001b[m\u001b[m \u001b[34mokayama-12838\u001b[m\u001b[m \u001b[34myokoo-12815\u001b[m\u001b[m\r\n",
"\u001b[34mkanazawa-12869\u001b[m\u001b[m \u001b[34momura-12744\u001b[m\u001b[m \u001b[34myonago-12771\u001b[m\u001b[m\r\n",
"\u001b[34mkani-12918\u001b[m\u001b[m \u001b[34momuta-12759\u001b[m\u001b[m\r\n",
"\u001b[34mkinokawa_wakayama-12905\u001b[m\u001b[m \u001b[34monomichi-12818\u001b[m\u001b[m\r\n"
]
}
],
"source": [
"!ls ./japan-JPN_nelist/"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "3da64834",
"metadata": {},
"outputs": [],
"source": [
"city_dirs = {\n",
" \"sapporo\": \"sapporo-12736\",\n",
" \"asahikawa\": \"asahikawa-12740\",\n",
" \"muroran\": \"muroran-12754\",\n",
" \"otaru\": \"otaru-12734\",\n",
" \"hakodate\": \"hakodate-12765\",\n",
" \"kushiro\": \"kushiro-12846\",\n",
" \"kitami\": \"kitami-12773\",\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ca31d6b8",
"metadata": {},
"outputs": [],
"source": [
"def reshape_data(dirname):\n",
" df_nodes = pd.read_csv(f\"./japan-JPN_nelist/{dirname}/node_list.csv\")\n",
" node_list = []\n",
" for _, row in df_nodes.iterrows():\n",
" keys = {\"osmid\", \"x\", \"y\"}\n",
" d = {k: v for k, v in row.to_dict().items() if k in keys}\n",
" node_list.append(d)\n",
"\n",
" df_edges = pd.read_csv(f\"./japan-JPN_nelist/{dirname}/edge_list.csv\")\n",
" edge_list = []\n",
" for _, row in df_edges.iterrows():\n",
" keys = {\"u\", \"v\", \"length\"}\n",
" d = {k: v for k, v in row.to_dict().items() if k in keys}\n",
" edge_list.append(d)\n",
"\n",
" data = {\n",
" \"nodes\": node_list,\n",
" \"edges\": edge_list\n",
" }\n",
" return data"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "67ebeb5d",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/b3/42kjjly97mb697cnsn5nv24r0000gn/T/ipykernel_62026/1127705233.py:1: TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0\n",
"Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`\n",
" for name, dirname in tqdm(city_dirs.items()):\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f878d27a840442e5811427881b398bb9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/7 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/b3/42kjjly97mb697cnsn5nv24r0000gn/T/ipykernel_62026/1553052570.py:9: DtypeWarning: Columns (9,12,13,18,20) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_edges = pd.read_csv(f\"./japan-JPN_nelist/{dirname}/edge_list.csv\")\n",
"/var/folders/b3/42kjjly97mb697cnsn5nv24r0000gn/T/ipykernel_62026/1553052570.py:9: DtypeWarning: Columns (18) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_edges = pd.read_csv(f\"./japan-JPN_nelist/{dirname}/edge_list.csv\")\n"
]
}
],
"source": [
"for name, dirname in tqdm(city_dirs.items()):\n",
" data = reshape_data(dirname)\n",
" with open(f\"{name}.json\", \"w\") as fp:\n",
" json.dump(data, fp)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ce53281f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-rw-r--r-- 1 sorami staff 2.9M Aug 3 17:25 asahikawa.json\r\n",
"-rw-r--r-- 1 sorami staff 2.1M Aug 3 17:25 hakodate.json\r\n",
"-rw-r--r-- 1 sorami staff 976K Aug 3 17:25 kitami.json\r\n",
"-rw-r--r-- 1 sorami staff 1.6M Aug 3 17:25 kushiro.json\r\n",
"-rw-r--r-- 1 sorami staff 1.4M Aug 3 17:25 muroran.json\r\n",
"-rw-r--r-- 1 sorami staff 800K Aug 3 17:25 otaru.json\r\n",
"-rw-r--r-- 1 sorami staff 13M Aug 3 17:25 sapporo.json\r\n",
"-rw-r--r-- 1 sorami staff 6.5M Aug 2 21:51 tokushima.json\r\n"
]
}
],
"source": [
"!ls -lh *.json"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
@sorami
Copy link
Author

sorami commented Aug 3, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment