#!/usr/bin/env python # coding: utf-8 # # 哲学の道「疎水」が流れる高さを眺めてみる('24.05.27) # # # ## 京都の北東を流れる「疎水分線」を3D地図上で眺める # # 京都の街、北から南に下る斜度が割とあるのにも関わらず、琵琶湖から蹴上経由で白川にグルリと向かう疎水分線(いわゆる哲学の道沿いを流れる疎水)は、京都の外れを北上して流れている。 # そこで、国土地理院の[地理院地図](https://maps.gsi.go.jp/#15/35.026236/135.773249/&base=pale&ls=pale%7Cort_USA10%2C0.13%7Crelief_free%2C0.17%7Chillshademap%2C0.52&blend=010&disp=1111&lcd=hillshademap&vs=c1g1j0h0k0l0u0t0z0r0s0m0f1&reliefdata=239.8G0000FFG3CG0095FFG3E.8G00EEFFG41G91FF00G43.8GFFFF00G46GFF8C00GGFF4400)で、京都の北東を流れる「疎水分線」が流れるあたりを、[インタラクティブな3D地図上](https://hirax.github.io/wow/appendix/day_240527_webgl/)で眺めてみた。 # # 標高情報を使い色づけや高さ強調をしてみると、まるでジェットコースターのように、疎水分線は京都北東の斜面を流れ下っていることがわかる。 # In[75]: from IPython.display import IFrame IFrame('https://hirax.github.io/wow/appendix/day_240527_webgl/', width=800, height=600) # ## 疎水分線の標高を地図上で眺めてみる # # せっかくなので、地理院地図の「ツール-計測」機能をて、疎水が流れる場所や標高をGeoJSONファイルやCSVファイルに出力してみた。 # それらのファイルを、インタラクティブな2D地図上に読み込んで、その場所の標高を数値にして重ねて描いてみる。 # # 疎水分線の場所ごとの標高値を地図上で眺めると、比較的斜度があるのは、北白川近くを北上するあたりだということがわかる。 # ずっと昔、銀閣地道近くの天下一品近くから天下一品本店に向かおうとした時に、よく通ったルートだ。 # In[76]: # foliumパッケージを使う import folium import pandas as pd # 中心とする緯度経度 kyoto = [35.029607283171565, 135.78063320502486] # 疎水GeoJsonデータ geojson_file='data/day_240527_csline20240527074909247.geojson' # 疎水csvデータ(緯度、経度、標高、距離) csv_file='data/day_240527_csdata20240527074922881.csv' csv_df = pd.read_csv(csv_file) # 列名を確認する print(csv_df.columns) # 'hide-output'属性をつけておく # In[77]: # 地図を作る def create_map(zoom_level,step,min_val,max_val): fmap = folium.Map( location=kyoto, zoom_start=zoom_level, attr='OpenStreetMap & 国土地理院地図' ) style = { #'fillColor':'#0000FF90', 'color':'#0000FF60', 'weight':10} folium.GeoJson( open(geojson_file).read(), name='哲学の道疎水', style_function=lambda x:style ).add_to(fmap) folium.LayerControl().add_to(fmap) for idx, row in csv_df.iterrows(): r=int(255*(row['elevation']-min_val)/(max_val-min_val)) b=255-r g=0#255-2*abs(r-128) val='{:06X}'.format(256*256*r+256*g+b) if idx%step == 0: folium.Marker( location=[row['lat'],row['lng']], icon=folium.DivIcon( html=f"""