Coder Social home page Coder Social logo

sankichi92 / shikuchoson-hazardmap-template Goto Github PK

View Code? Open in Web Editor NEW
20.0 3.0 15.0 26.72 MB

市区町村の Web ハザードマップを作成するためのテンプレート(Tokyo OSS Party!! 2021 成果物)

Home Page: https://sankichi.net/shikuchoson-hazardmap-template/

License: MIT License

HTML 6.81% TypeScript 62.06% JavaScript 31.13%
leaflet-map civic-tech

shikuchoson-hazardmap-template's Introduction

市区町村ハザードマップテンプレート

市区町村の Web ハザードマップを作成するためのテンプレート。

Tokyo OSS Party!! 2021 の成果物です(発表資料)。

背景と課題

日本のハザードマップは、国土交通省の管理するハザードマップポータルサイトにまとめられており、そこでは以下の2つのサービスが提供されています。

  • 重ねるハザードマップ: 災害リスク情報や防災に役立つ情報を、全国どこでも重ねて閲覧できるWeb地図サイト
  • わがまちハザードマップ: 市町村が作成したハザードマップを見つけやすくまとめたリンク集

「重ねるハザードマップ」は Web 地図として多機能で非常によく作りこまれていますが、その使い方でも

詳細を確認する場合は市町村が作成したハザードマップをご覧ください。

とあるとおり、あくまで国の作成した地図であり、市区町村ごとの詳細は確認できません。

ハザードマップに求められるのは、多くの場合、国全体の広く浅い情報ではなく、自身の住む場所ピンポイントの狭く深い情報です。 そうした情報を確認するには、「わがまちハザードマップ」から市区町村のハザードマップを確認する必要があります。

しかし、市区町村の作成するハザードマップの多くが紙での配布を前提としており、重ねるハザードマップとちがって Web に最適化されていません。 そしておそらく、独自の Web ハザードマップを開発・運用できるほど、予算やリソースに余裕のある市区町村は少ないでしょう。

この課題に対し、本プロジェクトは、市区町村の単位で Web ハザードマップを容易に作成・カスタマイズできるテンプレートを提供します。


関連: 34テラバイトのデータと格闘して「全国ハザードマップ」を公開した理由 - NHK

使い方

動画で見る: https://youtu.be/oc1CfaVSlno

ハザードマップの作成・公開

1. テンプレートを使用して GitHub リポジトリを作成する

  1. 上部(あるいはこちら)の「Use this template」ボタンを押して新しいリポジトリを作成する。
  2. Repository name を入力(例: hachioji-hazardmap)し、「Create repository from template」ボタンを押す
    • Repository name が次の手順で公開する Web ページの URL の一部になります

詳細: https://docs.github.com/ja/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template

2. 作成したリポジトリの設定で GitHub Pages を有効化して Web ページを公開できるようにする

  1. 上部タブ「Settings」→サイドバー「Pages」から GitHub Pages の設定画面へ移動する
  2. Source のプルダウンから「GitHub Actions」を選択する

詳細: https://docs.github.com/ja/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#カスタム-github-actions-ワークフローによる公開

3. hazardmap-config.jsonc を対象の市区町村向けに更新する

  1. 作成したリポジトリの hazardmap-config.jsonc をクリックして開く
  2. ファイル右上の鉛筆✏️ボタンをクリックして編集画面を開く
  3. prefectureshikuchoson(と必要に応じて city)の値をハザードマップを作成する都道府県・市区町村に変更して「Commit changes」ボタンを押す
    • 合わせて、不要な tiles の要素({} で囲まれる単位)も消してください。たとえば、内陸であれば「高潮浸水想定区域」は不要でしょう
  4. しばらくするとハザードマップの作成・公開が行われる
    • 公開されたハザードマップの URL は手順2を実施した「Settings」→「Pages」で確認できる

詳細: https://docs.github.com/ja/repositories/working-with-files/managing-files/editing-files#editing-files-in-your-repository

ハザードマップのカスタマイズ

CSV ファイルをアップロードしてカスタムレイヤを追加する

  1. 作成したリポジトリの csv をクリックして内容を表示する
  2. 「Add files」→「Upload files」から CSV ファイルをアップロード、「Commit changes」ボタンを押す
  3. 01-サンプル.csv を表示し、右上のゴミ箱🗑ボタンからファイルを削除する

詳細: https://docs.github.com/ja/repositories/working-with-files/managing-files/adding-a-file-to-a-repository

CSV のフォーマットについて

CSV ファイルは必ず name(名前)、lat(緯度)、lon(経度)のカラム(列)を持つ必要があります。 さらに、これらのカラム以外も追加でき、地図上のアイコンをクリックしたときに合わせて表示されます。 また、ファイル名先頭の 01- は地図上での表示順を決めるために使われ、数字自体は地図上に表示されません。

01-サンプル.csv を参考にしてください。

画像をアップロードして地図の左下に表示する

CSV 同様、images 以下に画像をアップロードすれば、地図の左下に表示されるようになります。

開発について

このプロジェクトは Create React App で作成されています。

セットアップ

事前に Node.js をインストールしてください。

$ git clone https://github.com/sankichi92/shikuchoson-hazardmap-template.git
$ cd shikuchoson-hazardmap-template
$ npm install

開発用サーバを起動する

$ npm start

上記を実行すると http://localhost:3000 で確認できます。

本番向けのアプリケーションコードを build 以下に生成する

$ npm run build

shikuchoson-hazardmap-template's People

Contributors

dependabot[bot] avatar ei-blue avatar sankichi92 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

shikuchoson-hazardmap-template's Issues

モバイル端末で左下ボタン・画像がうまく機能しない

  • Pixel 5a (Chrome): そもそも左下に何も表示されない
  • iPad Air 4 (Safari): 画像が見切れるうえ、ボタンを1回タップしただけなのに2回連続でタップしたような挙動になる

なぜそうなるかよくわからないし、デバッグが難しい……。

事前審査の準備(12/3(金) 14:00 〆)

【事前審査について】
まず、八王子賞・練馬区賞については、12/3(金)に事前審査を組み込むことになりました。
発表会当日の投票だけでは、実装に向けての技術的な実現可能性の部分が計りきれないということでそのように決定した次第です。
単なるハッカソンではなく、具体的な実装に向けて動くプロジェクトであることからこのような方針になりましたこと、ご理解いただければ幸いです。
事前審査で7割、あとの3割を当日投票の票数を合わせて判断する形となります。
事前審査はHackMDに掲載された内容を見て行います。審査に参加するのは、東京都・八王子市・練馬区・メンターとなります。
HackMDにプロトタイプのリンク等、忘れずに掲載をお願いできれば幸いです。
HackMDは、12/3(金)14:00時点 での記載内容を確認させていただきます。それまでにドキュメンテーションを作り上げていただければと思います。プレゼンテーションのスライドは事前審査の範囲には入りませんので、ご留意ください。あくまでドキュメントとプロトタイプから審査をさせていただきます。
なお、発表当日のプレゼンに向けて、プロトタイプやドキュメントは12/3 14:00以降も発表に向けてブラッシュアップしていただくことは問題ございません。

https://hackmd.io/QJwdydfiQOi0bJsZxe3I8A

city(市区町村)でエラーになる場合がある。

hazardmap-config.jsonc に特定のCityの指定を行うと、CIがエラーになり、OSM Relation not found.となることがある。

ex:埼玉県比企郡小川町

NG "city": "比企郡小川町",
NG "city": "比企郡",
OK "city": "小川町",

つまり郡を無視することで成功する。

農水省のため池ハザードマップを追加できるようにしたい

現状、国土交通省作成のハザードマップがベースになっているが、農林水産省でも「ため池」のハザードマップを作成している。
https://www.maff.go.jp/j/nousin/bousai/bousai_saigai/b_tameike/portal.html

市民向けにはこれらをまとめて表示できることが望ましいため、
例えば地方自治体の担当者レベルでも手軽にレイヤーを追加できればありがたい。

テストの追加

create-react-app による Jest の設定があるけど、現状一切テストがない。

市区町村ハザードマップ

課題

ハザードマップの Web アプリとしてはすでに https://disaportal.gsi.go.jp/ があるが、あくまで汎用的なもののため市区町村固有の事情を反映できない。

八王子市では、

  • 市で内浸水深のデータを取っていて、市のハザードマップに反映している
  • 浸水継続時間等の情報は八王子市ではあまり意味がないため、あえてハザードマップに載せていない

といった事情がある。

提案

市区町村でカスタマイズできる Web ハザードマップテンプレート。
GitHub の Template Repository として Web ハザードマップのテンプレートを作って、これを使えば設定ファイルをちょっといじったり、簡単な CSV なんかを足したりするだけで、市区町村オリジナルのハザードマップを作れるようにする。

TODO

最低限やりたい

  • https://disaportal.gsi.go.jp/hazardmap/copyright/opendata.html を使って重ねるハザードマップの簡易版作成
  • GitHub Pages にデプロイ
  • 対象の市区町村や利用するレイヤを設定ファイルから変更できるようにする
  • CSV で独自の情報を追加できるようにする

できればやりたい

  • 八王子市の内浸水深データを WMTS で提供
  • 設定ファイルから↑を追加できるようにする

PWA 化

PWA にすればオフライン対応できるんだっけ。

Bootstrap への依存をなくす

以下で使ってるけど、Bootstrap である必要は特にないし、CSS module に手書きするので十分な気がする。

import { Button, Card, Collapse } from "react-bootstrap";

<h2 className="h6 text-center">{feature.properties?.name}</h2>
<ul className="list-unstyled">

チェックボックスをカテゴリ分けしたい

自治体での活用例をいくつか見ての気づき。

地図右上の表示事項チェックボックスについて、現状はすべての項目が同列に記載されている。
・危険区域の種類を、水害、地震、などジャンル別にカテゴライズして表示することができないか。
・危険区域と避難所とを分けて表示できないか。

また、チェックボックスの数が多く、一つ一つ操作するのが手間なため、「すべてにチェックを入れる」「すべてのチェックを外す」機能があっても良いのではないか。

GitHub Actionsの権限設定について

readme.meにGitHub Actionsの設定について、
テンプレートから新しく作成した際に、GITHUB_TOKENの権限がデフォルトではReadonlyのため、
これをアクセス権限の追加設定が必要となる。
GitHubの利用に慣れていないシビックテックの人によっては、この部分で設定反映のビルドが出来ずFailすることで、
躓いてしまい、利用に至らないケースが想定されるため、この設定変更についてreadme.mdで触れておくと良さそう。

発表資料の作成

【当日発表について】
当日の発表時間ですが、Day1では7分と申し上げておりましたが、チーム数が予想より多くなった関係で、大変恐縮ながら、プレゼン時間を5分とさせていただきます。スライドやHackMDの活用、プロトタイプのデモなど、内容と時間配分はお任せいたします。
また、当日のリハーサルを8時から、各チーム順番に5分ずつ行います。
お呼びする時間はまたご連絡させていただきます。
発表の順番は公平性の担保のため、ランダムに組み替えて、前日にご連絡させていただきます。

初回デプロイに失敗する

Discussed in #55

Originally posted by yorusuke January 27, 2023
どこの何を直したら良いのでしょうか・・・
また、政令市の場合、市は「新潟市」で、市区町村名は「西区」という記載で問題ないでしょうか?
image

技術選定

バックエンド

  • Web API で柔軟にデータを提供できるようにしたい
  • OGC API が割と新しい標準っぽい?
    • pygeoapi がその実装の一つで、設定ファイルとデータをいい感じに置けばいい感じに動きそう?

フロントエンド

ライセンスの選定

発表が終わってからでいいかな。
CC0 とかでいい気はしてるけど、よくわかってないのでちゃんと調べてから。

scripts 以下のスクリプトの異常系考慮・テスト追加

  • hazardmap-config.jsonc に設定値がなかったり予期しない値が設定されたりした場合、そもそもファイルが消されたり JSON (with Comments) としてパースできない場合
  • csv / images 以下に規約に予期しないフォーマットのファイルが置かれた場合

とか。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.