look_for_shade

2c3328c032116a1ce0e15c7b2e344c95?s=47 yrarchi
June 18, 2019

 look_for_shade

2c3328c032116a1ce0e15c7b2e344c95?s=128

yrarchi

June 18, 2019
Tweet

Transcript

  1. look for shade Pythonを用いた日影の計算 PyData.Fukuoka Meetup #4 2019/06/18 yrarchi

  2. 今回のテーマ もうすぐ、暑い夏がやってくる! 少しでも、日陰を歩きたい… どの道を通ると 日陰が多いんだろう? 何時に出かけると 日陰が多いんだろう? 道路の何%が日陰になるか、Pythonで計算してみよう!

  3. 日影のできかたを決める要素は何か? - 緯度・経度:福岡市
       (福岡県庁の緯度経度を
        使用)
 
 - 日付:夏至(2019/6/22)
 
 -

    時間:日の出〜日の入まで15分ごと
 に変えて計算

  4. 道路にかかる影の割合を決める要素は何か? - 建物形状・高さ:6.0m * 6.0m * 6.0m
 
 - 道路幅員:4.0m


    
 - 道路からの離れ・隣棟間隔:1.0m
 
 - 道路の方位角:22.5°ずつ変えて計算

  5. 道路にかかる影の割合を決める要素は何か? - 建物形状・高さ:6.0m * 6.0m * 6.0m
 
 - 道路幅員:4.0m


    
 - 道路からの離れ・隣棟間隔:1.0m
 
 - 道路の方位角:22.5°ずつ変えて計算

  6. 計算過程_1 ①モデル建物画像  読込み ②モデル画像回転 ③建物の輪郭を検出     ↓  コーナーの座標を  求める import cv2

    model = cv2.imread("img/model.png") … for angle in [angle/10 for angle in range(0, 1800, 225)]: img = rotate_img(angle, model) … contours = find_contours() approx_contours = approximate_contours() … 画像処理を行うライブラリ OpenCVを利用
  7. ⑥道路のうち、影と 重なる割合を求める ⑤影の座標を求める 計算過程_2 ④諸条件より太陽の 方位角・高度を出す def calc_coordinate_of_shade(): h =

    calc_solar_altitude() A = calc_azimuth() shade_longth = bldg_h_pixel / math.tan(h) shade_x = shade_longth * math.sin(A) * -1 shade_y = shade_longth * math.cos(A) * -1 return shade_x, shade_y … for time in [i / 100 for i in range(500, 2000, 25)]: … shade_x, shade_y = calc_coordinate_of_shade() shade_msk, hull_points = make_shade_mask() road_shade_per = calc_per_of_shade_on_road() …
  8. 結果 日の出 日の入り 南中時刻 0° 45° 90°

  9. 実際の道路で求めてみる_1 天神駅 福岡県庁 道路の方位角を取得して、経路上の影の割合を出してみる import osmnx as ox import networkx

    as nx G = ox.graph_from_point((latitude, longitude), distance=1800, network_type="walk") … origin_node = ox.get_nearest_node(G, origin_point) destination_node = ox.get_nearest_node(G, destination_point) route = nx.shortest_path(G, origin_node, destination_node, weight="length") … G = ox.add_edge_bearings(G) bearings = pd.Series(ox.get_route_edge_attributes(G, route, "bearing")) … OpenStreetMapのデータを利用して街路網の計算を行えるOSMnxを 利用
  10. 実際の道路で求めてみる_2 例えば、16時に出かければ 道路の80%超は日陰に なっている (※ 経路上の建物が全て    モデル通りならば!)

  11. まとめ 今回できたこと:  - モデル建物における道路を占める影の割合 の算出 課題:  - 実際の建物の形状・高さを用いた計算 資料:  https://github.com/yrarchi/look_for_shade        https://yrarchi.net/look_for_shade/