├── src
├── static
│ ├── js
│ │ └── .gitkeep
│ ├── icon
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5l.png
│ │ ├── 5u.png
│ │ ├── 6l.png
│ │ ├── 6u.png
│ │ ├── 7.png
│ │ └── epi.png
│ └── css
│ │ └── style.css
├── main.py
├── templates
│ └── index.html
└── ts
│ ├── color.ts
│ ├── index.ts
│ ├── convertPosition.ts
│ └── mapStyle.ts
├── .eslintignore
├── .vscode
└── settings.json
├── tools
├── epi.ai
├── 震度.ai
├── converted.txt
├── jsonToURL.py
├── convert.py
├── convertSample.json
├── XMLtoURL.py
├── jma_area_centroid.csv
├── sample.xml
├── converted.json
└── TohokuEarthquake.txt
├── assets
├── title.png
└── parameters.md
├── docker-compose.yml
├── Pipfile
├── Dockerfile
├── webpack.config.js
├── LICENSE
├── .eslintrc
├── package.json
├── README.md
├── tsconfig.json
├── .gitignore
└── Pipfile.lock
/src/static/js/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | **/*.js
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "liveServer.settings.port": 5501
3 | }
--------------------------------------------------------------------------------
/tools/epi.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/tools/epi.ai
--------------------------------------------------------------------------------
/tools/震度.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/tools/震度.ai
--------------------------------------------------------------------------------
/assets/title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/assets/title.png
--------------------------------------------------------------------------------
/src/static/icon/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/1.png
--------------------------------------------------------------------------------
/src/static/icon/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/2.png
--------------------------------------------------------------------------------
/src/static/icon/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/3.png
--------------------------------------------------------------------------------
/src/static/icon/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/4.png
--------------------------------------------------------------------------------
/src/static/icon/5l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/5l.png
--------------------------------------------------------------------------------
/src/static/icon/5u.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/5u.png
--------------------------------------------------------------------------------
/src/static/icon/6l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/6l.png
--------------------------------------------------------------------------------
/src/static/icon/6u.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/6u.png
--------------------------------------------------------------------------------
/src/static/icon/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/7.png
--------------------------------------------------------------------------------
/src/static/icon/epi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/earthquake-alert/Earthquake-map/HEAD/src/static/icon/epi.png
--------------------------------------------------------------------------------
/tools/converted.txt:
--------------------------------------------------------------------------------
1 | http://localhost:8080/?ti=震度速報&areas6l=442,443&areas5u=440,441&areas4=342,350,356,360,361,411,412,421,422,431,451&areas3=320,321,330,331,332,341,351,354,355,357,380,391,400,401,420,430,432,450,460,500,501,540
2 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | map:
4 | container_name: EarthquakeMap
5 | build: .
6 | ports:
7 | - '127.0.0.1:8080:8080'
8 | tty: true
9 | command: python3 src/main.py
10 |
--------------------------------------------------------------------------------
/Pipfile:
--------------------------------------------------------------------------------
1 | [[source]]
2 | name = "pypi"
3 | url = "https://pypi.org/simple"
4 | verify_ssl = true
5 |
6 | [dev-packages]
7 | flake8 = "*"
8 | pylint = "*"
9 | mypy = "*"
10 | autopep8 = "*"
11 |
12 | [packages]
13 | flask = "*"
14 |
15 | [requires]
16 | python_version = "3.6"
17 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nikolaik/python-nodejs:python3.6-nodejs14
2 |
3 | COPY src /src
4 | COPY Pipfile /Pipfile
5 | COPY Pipfile.lock /Pipfile.lock
6 | COPY package.json /package.json
7 | COPY tsconfig.json /tsconfig.json
8 | COPY webpack.config.js /webpack.config.js
9 | COPY yarn.lock /yarn.lock
10 |
11 | RUN yarn install
12 | RUN yarn run build
13 | RUN pip install pipenv
14 | RUN pipenv install --system --deploy
15 |
16 | EXPOSE 8080
17 |
--------------------------------------------------------------------------------
/src/main.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime, timedelta, timezone
2 |
3 | from flask import Flask, render_template, request
4 |
5 | app = Flask(__name__)
6 |
7 |
8 | @app.route('/')
9 | def root():
10 | title = request.args.get('ti') or 'No data.'
11 | date = request.args.get('date') or None
12 |
13 | if date is None:
14 | jst = timezone(timedelta(hours=+9), 'JST')
15 | now = datetime.now(jst)
16 | else:
17 | now = datetime.strptime(str(date), r'%Y%m%d%H%M%S')
18 |
19 | return render_template('index.html', title=title, date=now.strftime('%Y年%m月%d日 %H:%M:%S'))
20 |
21 |
22 | if __name__ == "__main__":
23 | app.run(debug=False, host='0.0.0.0', port=8080)
24 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | mode: 'production',
5 | entry: './src/ts/index.ts',
6 | output: {
7 | path: path.join(__dirname, "./src/static/js"),
8 | filename: 'bundle.js'
9 | },
10 | module: {
11 | rules: [
12 | {
13 | test: /\.tsx?$/,
14 | use: 'ts-loader',
15 | exclude: /node_modules/
16 | },
17 | {
18 | test: /\.css$/,
19 | use: [
20 | 'style-loader',
21 | 'css-loader'
22 | ]
23 | }
24 | ]
25 | },
26 | resolve: {
27 | extensions: ['.ts', '.js']
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Earthquake Map
9 |
10 |
11 |
12 |
13 |
14 | {{title}}
15 |
16 |
17 | 発生日時: {{date}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/tools/jsonToURL.py:
--------------------------------------------------------------------------------
1 | import json
2 | import os
3 |
4 |
5 | def main(path: str):
6 | url = 'http://localhost:5000/'
7 | with open(path, mode='r') as contents:
8 | json_body = json.load(contents)
9 |
10 | epi = json_body['epicenter']
11 | url += f'?epi={epi[1]},{epi[0]}'
12 |
13 | areas = json_body['areas']
14 |
15 | for si in areas:
16 | position = []
17 | for element in areas[si]:
18 | position.append(f'{element[1]}:{element[0]}')
19 | url += f'&point{si}={",".join(position)}'
20 |
21 | # save url
22 | with open(os.path.join(os.path.dirname(path), 'converted.txt'), mode='w') as contents:
23 | contents.write(url)
24 |
25 |
26 | if __name__ == "__main__":
27 | main('tools/TohokuEarthquake.json')
28 |
--------------------------------------------------------------------------------
/tools/convert.py:
--------------------------------------------------------------------------------
1 | import csv
2 | import json
3 | import os
4 |
5 |
6 | def main(path: str):
7 | converted_dict = {}
8 | converted_txt = '{\n'
9 |
10 | with open(path) as fp:
11 | reader = csv.reader(fp)
12 | for element in reader:
13 | converted_dict[element[0]] = [element[1], element[2], element[3]]
14 | converted_txt += (f'\'{element[0]}\': ' +
15 | '{' + f'lat: \'{element[3]}\', lon: \'{element[2]}\', name: \'{element[1]}\',' + '},\n')
16 |
17 | with open(os.path.join(os.path.dirname(path), 'converted.json'), mode='w') as contents:
18 | json.dump(converted_dict, contents, indent=4, ensure_ascii=False)
19 |
20 | converted_txt += '}'
21 | with open(os.path.join(os.path.dirname(path), 'converted.ts'), mode='w') as contents:
22 | contents.write(converted_txt)
23 |
24 |
25 | if __name__ == "__main__":
26 | main('tools/jma_area_centroid.csv')
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Earthquake alert
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/ts/color.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * @author: Yuto Watanabe
3 | * @version: 1.0.0
4 | *
5 | * Copyright (c) 2020 Earthquake alert
6 | */
7 |
8 | export function color(type: string): string {
9 | const colorData : {[key: string]: string} = {
10 | 'land': '#262626',
11 | 'minimapLand': '#b8b8b8',
12 | '1': '#54cfe8',
13 | '2': '#64e375',
14 | '3': '#f0ed4d',
15 | '4': '#eb9423',
16 | '5l': '#f74d4d',
17 | '5u': '#f74d4d',
18 | '6l': '#f03eb8',
19 | '6u': '#f03eb8',
20 | '7': '#b347ed',
21 | '1Stroke': '#62dfe3',
22 | '2Stroke': '#75e089',
23 | '3Stroke': '#e3df6f',
24 | '4Stroke': '#edab74',
25 | '5lStroke': '#eb6767',
26 | '5uStroke': '#eb6767',
27 | '6lStroke': '#f071d4',
28 | '6uStroke': '#f071d4',
29 | '7Stroke': '#b16aeb',
30 | 'prefCountryStroke': '#a6a6a6',
31 | 'areaStroke': '#4a4a4a',
32 | 'waterArea': '#5d7991',
33 | 'minimapStroke': '#ffffff',
34 | };
35 | const isColor = colorData[type];
36 | if (typeof isColor != 'undefined'){
37 | return isColor;
38 | }
39 | return '#f73325';
40 | }
41 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "eslint:recommended",
4 | "plugin:@typescript-eslint/recommended",
5 | "plugin:@typescript-eslint/eslint-recommended",
6 | "plugin:import/errors"
7 | ],
8 | "plugins": [
9 | "@typescript-eslint",
10 | "import"
11 | ],
12 | "parser": "@typescript-eslint/parser",
13 | "parserOptions": {
14 | "sourceType": "module",
15 | "project": "./tsconfig.json"
16 | },
17 | "env": {
18 | "browser": true,
19 | "node": true,
20 | "es6": true
21 | },
22 | "settings": {
23 | "import/resolver": {
24 | "node": {
25 | "extensions": [
26 | ".ts"
27 | ]
28 | }
29 | }
30 | },
31 | "rules": {
32 | // sort import
33 | "import/no-unresolved": "off",
34 | "sort-imports": 0,
35 | "import/order": [
36 | 2,
37 | {
38 | "alphabetize": {
39 | "order": "asc"
40 | }
41 | }
42 | ],
43 | "semi": [
44 | "error",
45 | "always"
46 | ]
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "earthquake-map",
3 | "version": "1.0.0",
4 | "private": true,
5 | "description": "Display of seismic intensity distribution map.",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/earthquake-alert/Earthquake-map"
9 | },
10 | "author": {
11 | "name": "Yuto Watanabe",
12 | "email": "yuto.w51942@gmail.com",
13 | "url": "https://github.com/yuto51942"
14 | },
15 | "license": "MIT",
16 | "bugs": {
17 | "url": "https://github.com/earthquake-alert/Earthquake-map/issues"
18 | },
19 | "dependencies": {
20 | "@types/fs-extra": "^9.0.1",
21 | "@types/node": "^14.0.27",
22 | "@types/ol": "^6.3.1",
23 | "csv-parse": "^4.11.1",
24 | "fs": "^0.0.1-security",
25 | "ol": "^6.4.2",
26 | "typescript": "^3.9.7"
27 | },
28 | "scripts": {
29 | "build": "webpack",
30 | "watch": "webpack -w",
31 | "tsc": "tsc"
32 | },
33 | "devDependencies": {
34 | "@types/eslint": "^7.2.0",
35 | "@typescript-eslint/eslint-plugin": "^3.9.1",
36 | "@typescript-eslint/parser": "^3.9.1",
37 | "css-loader": "^4.1.1",
38 | "eslint": "^7.7.0",
39 | "eslint-plugin-import": "^2.22.0",
40 | "style-loader": "^1.2.1",
41 | "ts-loader": "^8.0.1",
42 | "tsc": "^1.20150623.0",
43 | "webpack": "^4.44.1",
44 | "webpack-cli": "^3.3.12",
45 | "webpack-dev-server": "^3.11.0"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/tools/convertSample.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "震度速報",
4 | "max_seismic_intensity": "6-",
5 | "explanation": [
6 | "11日05時07分ころ、地震による強い揺れを感じました。震度3以上が観測された地域をお知らせします。"
7 | ],
8 | "areas": {
9 | "6l": [
10 | "442",
11 | "443"
12 | ],
13 | "5u": [
14 | "440",
15 | "441"
16 | ],
17 | "4": [
18 | "342",
19 | "350",
20 | "356",
21 | "360",
22 | "361",
23 | "411",
24 | "412",
25 | "421",
26 | "422",
27 | "431",
28 | "451"
29 | ],
30 | "3": [
31 | "320",
32 | "321",
33 | "330",
34 | "331",
35 | "332",
36 | "341",
37 | "351",
38 | "354",
39 | "355",
40 | "357",
41 | "380",
42 | "391",
43 | "400",
44 | "401",
45 | "420",
46 | "430",
47 | "432",
48 | "450",
49 | "460",
50 | "500",
51 | "501",
52 | "540"
53 | ]
54 | }
55 | }
56 | ]
57 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Earthquake Map
2 |
3 | 
4 |
5 |
6 |
7 |
8 |
9 | ## TL;DR
10 |
11 | 震度分布図の描画
12 |
13 | - ミニマップあり
14 | - 海外地震に対応
15 | - HTMLに記述することでさまざまな情報を追加可能
16 | - Seleniumでキャプチャすればかんたんに画像化可能
17 |
18 | ## 描画できるもの
19 |
20 | 地震・津波に関する地図の描画。
21 |
22 | - 震度分布図(震度観測点)
23 | - 用途: 震源・震度に関する情報
24 | - 震度分布図(細分区域のタイル)
25 | - 震度速報
26 | - ~~震度分布図(都道府県のタイル)~~(**追加予定**)
27 | - 緊急地震速報等
28 | - ~~津波警報・注意報図~~(**追加予定**)
29 | - 津波注意報
30 | - 津波警報
31 | - 大津波警報
32 |
33 | ## Run
34 |
35 | ```bash
36 | # need docker installed
37 |
38 | # run server
39 | docker-compose up -d
40 |
41 | # connect to http://localhost:8080/
42 | ```
43 |
44 | デモサイト: [https://earthquake-map.vercel.app/](https://earthquake-map.vercel.app/)
45 |
46 | ## パラメータの説明
47 |
48 | [パラメータの説明](./assets/parameters.md)
49 |
50 | ## 各震度の色
51 |
52 | | 震度 | 色 |
53 | | :---: | :-----------------------------------------------------------------------: |
54 | | 1 |  `#54cfe8` |
55 | | 2 |  `#64e375` |
56 | | 3 |  `#f0ed4d` |
57 | | 4 |  `#eb9423` |
58 | | 5弱 |  `#f74d4d` |
59 | | 5強 |  `#f74d4d` |
60 | | 6弱 |  `#f03eb8` |
61 | | 6強 |  `#f03eb8` |
62 | | 7 |  `#b347ed` |
63 |
64 | ## ライセンス
65 |
66 | MIT
67 |
68 | 使用した場合、issueにて報告してくれるとありがたいです。
69 |
--------------------------------------------------------------------------------
/src/static/css/style.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | height: 100%;
4 | margin: 0;
5 | padding: 0;
6 | }
7 |
8 | .map {
9 | width: 100%;
10 | height: 100%;
11 | margin: 0;
12 | padding: 0;
13 | background-color: #33424f;
14 | position: absolute;
15 | z-index: 0;
16 | }
17 |
18 | .map .ol-custom-overviewmap .ol-overviewmap-box {
19 | border: 0.2rem solid #d63636;
20 | }
21 |
22 | .map .ol-custom-overviewmap:not(.ol-collapsed) button{
23 | display:none;
24 | }
25 |
26 | .map .ol-custom-overviewmap,
27 | .map .ol-custom-overviewmap.ol-uncollapsible {
28 | border: 0.25rem solid #c2c2c2;
29 | opacity: 90%;
30 | margin: 0;
31 | padding: 0;
32 | border-radius: 0 0 0 0;
33 | bottom: 0;
34 | left: auto;
35 | right: 0;
36 | top: auto;
37 | }
38 |
39 | .map .ol-custom-overviewmap .ol-overviewmap-map {
40 | background-color: #1f1f1f;
41 | border: none;
42 | width: 28.8vw;
43 | height: 16.2vw;
44 | }
45 |
46 | .ol-overviewmap-map {
47 | border: none;
48 | }
49 |
50 | .ol-overviewmap .ol-overviewmap-map {
51 | margin: 0 !important;
52 | }
53 |
54 |
55 | .ol-attribution :not(.copyright){
56 | display: none;
57 | }
58 |
59 | .ol-control {
60 | padding: 0 !important;
61 | }
62 |
63 | .copyright {
64 | top: auto;
65 | bottom: 1.2vw;
66 | left: 0;
67 | right: auto;
68 | padding: 0;
69 | margin: 0;
70 | border-radius: 0 !important;
71 | background-color: #a1a1a1 !important;
72 | opacity: 80%;
73 | }
74 |
75 | .map .copyright button {
76 | display: none;
77 | }
78 |
79 | .map .copyright ul {
80 | padding: 0 1vw 0 0.8vw;
81 | margin: 0;
82 | }
83 |
84 | .ol-zoom {
85 | display: none;
86 | }
87 |
88 | /* copyright の文字*/
89 | .map .copyright ul li {
90 | font-size: 1vw;
91 | font-family: 'Noto Sans JP', sans-serif;
92 | }
93 |
94 | .data {
95 | padding: .5vw 1.5vw 1vw 1.5vw;
96 | color: #ffffff;
97 | background-color: #67728a;
98 | position: absolute;
99 | z-index: 1;
100 | opacity: 80%;
101 | font-family: 'Noto Sans JP', sans-serif;
102 | }
103 |
104 | .title {
105 | text-align: center;
106 | font-size: 3vw;
107 |
108 | }
109 |
110 | .now {
111 | text-align: center;
112 | font-size: 1.5vw;
113 | }
114 |
--------------------------------------------------------------------------------
/assets/parameters.md:
--------------------------------------------------------------------------------
1 | # URL GETパラメータの説明
2 |
3 | ## デモサイト
4 |
5 | [https://earthquake-map.vercel.app/](https://earthquake-map.vercel.app/)
6 |
7 | ## 例
8 |
9 | - 震度分布図(観測地域)
10 | - `http://localhost:8080/?ti=震源・震度情報&point1=36.251:139.9323,38.1715:140.8918&epi=36.544949,140.712890`
11 | - [TohokuEarthquake](../tools/TohokuEarthquake.txt)
12 | - 震度速報(細分区域タイル塗りつぶし)
13 | - `http://localhost:8080/?ti=震度速報&areas1=300,320&epi=36.544949,140.712890`
14 | - `http://localhost:8080/?ti=震度速報&areas6l=442,443&areas5u=440,441&areas4=342,350,356,360,361,411,412,421,422,431,451&areas3=320,321,330,331,332,341,351,354,355,357,380,391,400,401,420,430,432,450,460,500,501,540`
15 | - 海外地震に関する情報
16 | - `http://localhost:8080/?ti=海外地震に関する情報&epi=3.688855,119.882812`
17 |
18 | ## 個別の説明
19 |
20 | - `ti`
21 | - タイトル。画面左上に表示される文字。
22 | - `epi`
23 | - 震源地
24 | - 震源地が海外の場合は自動的に世界地図になります。
25 | - 緯度、経度をスペースなしの`,`で区切る。
26 | - 例: `38.685509,142.734375`
27 | - `areas1`
28 | - 細分区域タイルの塗りつぶし。震度1
29 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
30 | - `areas2`
31 | - 細分区域タイルの塗りつぶし。震度2
32 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
33 | - `areas3`
34 | - 細分区域タイルの塗りつぶし。震度3
35 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
36 | - `areas4`
37 | - 細分区域タイルの塗りつぶし。震度4
38 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
39 | - `areas5l`
40 | - 細分区域タイルの塗りつぶし。震度5弱
41 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
42 | - `areas5u`
43 | - 細分区域タイルの塗りつぶし。震度5強
44 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
45 | - `areas6l`
46 | - 細分区域タイルの塗りつぶし。震度6弱
47 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
48 | - `areas6u`
49 | - 細分区域タイルの塗りつぶし。震度6強
50 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
51 | - `areas7`
52 | - 細分区域タイルの塗りつぶし。震度7
53 | - 気象庁の細分区域コードをスペースなしの`,`で区切る
54 | - `point1`
55 | - 震度観測点。震度1
56 | - 緯度、経度をスペースなし`:`で区切る。
57 | - それらの緯度経度をスペースなしの`,`で区切る。
58 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
59 | - `point2`
60 | - 震度観測点。震度2
61 | - 緯度、経度をスペースなし`:`で区切る。
62 | - それらの緯度経度をスペースなしの`,`で区切る。
63 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
64 | - `point3`
65 | - 震度観測点。震度3
66 | - 緯度、経度をスペースなし`:`で区切る。
67 | - それらの緯度経度をスペースなしの`,`で区切る。
68 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
69 | - `point4`
70 | - 震度観測点。震度4
71 | - 緯度、経度をスペースなし`:`で区切る。
72 | - それらの緯度経度をスペースなしの`,`で区切る。
73 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
74 | - `point5l`
75 | - 震度観測点。震度5弱
76 | - 緯度、経度をスペースなし`:`で区切る。
77 | - それらの緯度経度をスペースなしの`,`で区切る。
78 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
79 | - `point5u`
80 | - 震度観測点。震度5強
81 | - 緯度、経度をスペースなし`:`で区切る。
82 | - それらの緯度経度をスペースなしの`,`で区切る。
83 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
84 | - `point6l`
85 | - 震度観測点。震度6弱
86 | - 緯度、経度をスペースなし`:`で区切る。
87 | - それらの緯度経度をスペースなしの`,`で区切る。
88 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
89 | - `point6u`
90 | - 震度観測点。震度6強
91 | - 緯度、経度をスペースなし`:`で区切る。
92 | - それらの緯度経度をスペースなしの`,`で区切る。
93 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
94 | - `point7`
95 | - 震度観測点。震度7
96 | - 緯度、経度をスペースなし`:`で区切る。
97 | - それらの緯度経度をスペースなしの`,`で区切る。
98 | - 例: `36.251:139.9323,38.1715:140.8918` (この場合2点が表示される)
99 | - `date`
100 | - 地震発生時刻
101 | - `YYYYmmddHHMMSS`で指定。
102 | - 例: 2020年8月5日14:04:05の場合は `20200805140405`
103 |
--------------------------------------------------------------------------------
/tools/XMLtoURL.py:
--------------------------------------------------------------------------------
1 | '''
2 | @author: Yuto Watanabe
3 | @version: 1.0.0
4 |
5 | Copyright (c) 2020 Earthquake alert
6 | '''
7 | import os
8 | import time
9 |
10 | import xmltodict
11 |
12 |
13 | def main():
14 | '''
15 | convert xml to json.
16 |
17 | Args:
18 | file_num (int): file number.
19 | '''
20 | start = time.time()
21 |
22 | xml_fp = 'tools/sample.xml'
23 |
24 | with open(xml_fp) as f:
25 | text_list = f.readlines()
26 |
27 | text = '\n'.join(text_list)
28 |
29 | xml_root = xmltodict.parse(text)
30 |
31 | output = convert_report(xml_root)
32 |
33 | url = 'http://localhost:5000/?'
34 |
35 | url += f'ti={output["title"]}'
36 |
37 | for areas in output['areas']:
38 | codes = []
39 | si = ''
40 | for code in output['areas'][areas]:
41 | codes.append(str(code))
42 |
43 | if areas == '震度7':
44 | si = '7'
45 | elif areas == '震度6強':
46 | si = '6u'
47 | elif areas == '震度6弱':
48 | si = '6l'
49 | elif areas == '震度5強':
50 | si = '5u'
51 | elif areas == '震度5弱':
52 | si = '6l'
53 | elif areas == '震度4':
54 | si = '4'
55 | elif areas == '震度3':
56 | si = '3'
57 | url += f'&areas{si}={",".join(codes)}'
58 |
59 | # save url
60 | with open(os.path.join(os.path.dirname(xml_fp), 'converted.txt'), mode='w') as contents:
61 | contents.write(url)
62 |
63 | print(f'Time: {time.time() - start}')
64 |
65 |
66 | def convert_report(earthquake):
67 | '''
68 | Extract the XML of "Seismic intensity bulletin" to json.
69 | Args:
70 | earthquake (Any): XML data.
71 | cache_file_path (str): cache file path.
72 | Returns:
73 | Any: The extracted data.
74 | '''
75 | title = earthquake['Report']['Head']['Title']
76 |
77 | explanation = []
78 | explanation.append(earthquake['Report']['Head']['Headline']['Text'])
79 | try:
80 | explanation.append(earthquake['Report']['Body']['Comments']['ForecastComment']['Text'])
81 | except KeyError:
82 | pass
83 |
84 | areas = earthquake['Report']['Head']['Headline']['Information']
85 | if isinstance(areas, list):
86 | information = areas[0]['Item']
87 | else:
88 | information = areas['Item']
89 |
90 | formated_areas = {}
91 | if isinstance(information, list):
92 | max_seismic_intensity = information[0]['Kind']['Name']
93 | for individual in information:
94 | seismic_intensity = individual['Kind']['Name']
95 | areas = []
96 | if isinstance(individual['Areas']['Area'], list):
97 | for area in individual['Areas']['Area']:
98 | areas.append(area['Code'])
99 | else:
100 | areas.append(individual['Areas']['Area']['Name'])
101 | formated_areas[seismic_intensity] = areas
102 | else:
103 | max_seismic_intensity = information['Kind']['Name']
104 | seismic_intensity = information['Kind']['Name']
105 | areas = []
106 | if isinstance(information['Areas']['Area'], list):
107 | for area in information['Areas']['Area']:
108 | areas.append(area['Name'])
109 | else:
110 | areas.append(information['Areas']['Area']['Code'])
111 | formated_areas[seismic_intensity] = areas
112 |
113 | if max_seismic_intensity in {'震度1', '震度1'}:
114 | formated_seismic_intensity = '1'
115 | elif max_seismic_intensity in {'震度2', '震度2'}:
116 | formated_seismic_intensity = '2'
117 | elif max_seismic_intensity in {'震度3', '震度3'}:
118 | formated_seismic_intensity = '3'
119 | elif max_seismic_intensity in {'震度4', '震度4'}:
120 | formated_seismic_intensity = '4'
121 | elif max_seismic_intensity in {'震度5弱', '震度5弱'}:
122 | formated_seismic_intensity = '5-'
123 | elif max_seismic_intensity in {'震度5強', '震度5強'}:
124 | formated_seismic_intensity = '5+'
125 | elif max_seismic_intensity in {'震度6弱', '震度6弱'}:
126 | formated_seismic_intensity = '6-'
127 | elif max_seismic_intensity in {'震度6強', '震度6強'}:
128 | formated_seismic_intensity = '6+'
129 | elif max_seismic_intensity in {'震度7', '震度7'}:
130 | formated_seismic_intensity = '7'
131 | else:
132 | formated_seismic_intensity = '0'
133 |
134 | output = {
135 | 'title': title,
136 | 'max_seismic_intensity': formated_seismic_intensity,
137 | 'explanation': explanation,
138 | 'areas': formated_areas
139 | }
140 |
141 | return output
142 |
143 |
144 | if __name__ == "__main__":
145 | main()
146 |
--------------------------------------------------------------------------------
/src/ts/index.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * @author: Yuto Watanabe
3 | * @version: 1.0.0
4 | *
5 | * Copyright (c) 2020 Earthquake alert
6 | */
7 |
8 | import 'ol/ol.css';
9 | import Map from 'ol/Map';
10 | import View from 'ol/View';
11 |
12 | import * as control from 'ol/control';
13 | import * as Format from 'ol/format';
14 | import * as Layer from 'ol/layer';
15 | import { fromLonLat, transformExtent } from 'ol/proj';
16 | import * as Source from 'ol/source';
17 |
18 |
19 | import {Style, Stroke, Fill} from 'ol/style';
20 |
21 | import {color} from './color';
22 | import {
23 | setUrl,
24 | tileStyle,
25 | center,
26 | zoomLevel,
27 | pointGeoJSON,
28 | pointStyle,
29 | isOverseas,
30 | // isTileColor,
31 | } from './mapStyle';
32 |
33 | const url = location.href;
34 | setUrl(url);
35 |
36 | // 地図データ
37 | const attribution = new control.Attribution({
38 | className: 'copyright',
39 | collapsible: false,
40 | });
41 |
42 | // 都道府県のマップ
43 | const prefMap = new Layer.VectorTile({
44 | source: new Source.VectorTile({
45 | format: new Format.MVT(),
46 | url: 'https://earthquake-alert.github.io/maps/pbf_japan/pref_jma/{z}/{x}/{y}.pbf',
47 | attributions: [
48 | 'Copyright(c) 2020 Earthquake alert / 地図データ: 国土数値情報(湖沼データ), 気象庁(地震情報/細分区域, 緊急地震速報/府県予報区)',
49 | ],
50 | }),
51 | style: new Style({
52 | stroke: new Stroke({
53 | color: color('prefCountryStroke'),
54 | width: 3,
55 | }),
56 | }),
57 | maxZoom: 10,
58 | minZoom: 0,
59 | maxResolution: 5000,
60 | });
61 |
62 | // 水域マップ
63 | const waterAreaMap = new Layer.VectorTile({
64 | source: new Source.VectorTile({
65 | format: new Format.MVT(),
66 | url: 'https://earthquake-alert.github.io/maps/pbf_water_area/waterArea/{z}/{x}/{y}.pbf',
67 | }),
68 | style: new Style({
69 | fill: new Fill({
70 | color: color('waterArea'),
71 | }),
72 | }),
73 | maxZoom: 10,
74 | minZoom: 0,
75 | maxResolution: 5000,
76 | });
77 |
78 | // 細分区域のマップ
79 | const districtMap = new Layer.VectorTile({
80 | source: new Source.VectorTile({
81 | format: new Format.MVT({}),
82 | url: 'https://earthquake-alert.github.io/maps/pbf_japan/distlict_jma/{z}/{x}/{y}.pbf',
83 | }),
84 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
85 | // @ts-ignore
86 | style: tileStyle,
87 | maxZoom: 10,
88 | minZoom: 0,
89 | maxResolution: 5000,
90 | });
91 |
92 |
93 | // 世界のマップ
94 | const worldMap = new Layer.VectorTile({
95 | source: new Source.VectorTile({
96 | format: new Format.MVT(),
97 | url: 'https://earthquake-alert.github.io/maps/pbf_world/world/{z}/{x}/{y}.pbf',
98 | attributions: [
99 | 'Copyright(c) 2020 Earthquake alert / 地図データ: Natural Earth',
100 | ],
101 | }),
102 | style: new Style({
103 | fill: new Fill({
104 | color: color('land'),
105 | }),
106 | stroke: new Stroke({
107 | color: color('prefCountryStroke'),
108 | width: 2,
109 | }),
110 | }),
111 | maxZoom: 5,
112 | minZoom: 0,
113 | minResolution: 5000,
114 | });
115 |
116 | // ミニマップ用日本のマップ(都道府県と同じ)
117 | const overviewMap = new Layer.VectorTile({
118 | source: new Source.VectorTile({
119 | format: new Format.MVT(),
120 | url: 'https://earthquake-alert.github.io/maps/pbf_japan/pref_jma/{z}/{x}/{y}.pbf',
121 | }),
122 | style: new Style({
123 | fill: new Fill({
124 | color: color('minimapLand'),
125 | }),
126 | stroke: new Stroke({
127 | color: color('minimapStroke'),
128 | width: 0.5,
129 | }),
130 | }),
131 | maxZoom: 10,
132 | minZoom: 0,
133 | });
134 |
135 | // 震度観測点のマップ
136 | const pointMap = new Layer.Vector({
137 | source: new Source.Vector({
138 | features: pointGeoJSON(),
139 | }),
140 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
141 | // @ts-ignore
142 | style: pointStyle,
143 | maxZoom: 10,
144 | minZoom: 0,
145 | });
146 |
147 | // ミニマップ設定
148 | const overviewMapControl = new control.OverviewMap({
149 | className: 'ol-overviewmap ol-custom-overviewmap',
150 | layers: [
151 | overviewMap,
152 | ],
153 | collapsed: false,
154 | view: new View({
155 | extent: transformExtent([126.914062,26.588527,149.414062,45.213003], 'EPSG:4326', 'EPSG:3857'),
156 | minZoom: 4,
157 | maxZoom: 4,
158 | zoom: 4,
159 | })
160 | });
161 |
162 | const mapControl = [attribution];
163 |
164 | // 海外の場合はミニマップを表示しない
165 | if (!isOverseas){
166 | mapControl.push(overviewMapControl);
167 | }
168 |
169 | // マップ描画
170 | const map = new Map({
171 | controls: control.defaults().extend(mapControl),
172 | target: 'map',
173 | view: new View({
174 | center: fromLonLat(center()),
175 | zoom: zoomLevel(),
176 | maxZoom: 10,
177 | }),
178 | layers: [
179 | worldMap,
180 | districtMap,
181 | waterAreaMap,
182 | prefMap,
183 | pointMap,
184 | ],
185 | });
186 |
187 | // // タイル塗りつぶし、海外自地震以外は自動的に拡大率を決める
188 | // if(!(isOverseas || isTileColor)){
189 | // console.log("OK");
190 | // const markerSource = new Source.Vector({
191 | // features: pointGeoJSON(),
192 | // });
193 |
194 | // map.getView().fit(markerSource.getExtent());
195 | // }
196 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 | /* Basic Options */
5 | "incremental": true, /* Enable incremental compilation */
6 | "target": "ES5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
7 | "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
8 | // "lib": [], /* Specify library files to be included in the compilation. */
9 | // "allowJs": true, /* Allow javascript files to be compiled. */
10 | // "checkJs": true, /* Report errors in .js files. */
11 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
12 | // "declaration": true, /* Generates corresponding '.d.ts' file. */
13 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
14 | // "sourceMap": true, /* Generates corresponding '.map' file. */
15 | // "outFile": "./", /* Concatenate and emit output to single file. */
16 | "outDir": "./src/static/js", /* Redirect output structure to the directory. */
17 | // "rootDir": "./src/ts/", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
18 | // "composite": true, /* Enable project compilation */
19 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
20 | "removeComments": true, /* Do not emit comments to output. */
21 | // "noEmit": true, /* Do not emit outputs. */
22 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
23 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
24 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
25 | /* Strict Type-Checking Options */
26 | "strict": true, /* Enable all strict type-checking options. */
27 | "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
28 | "strictNullChecks": true, /* Enable strict null checks. */
29 | "strictFunctionTypes": true, /* Enablte strict checking of function types. */
30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
34 | /* Additional Checks */
35 | // "noUnusedLocals": true, /* Report errors on unused locals. */
36 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
37 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
38 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
39 | /* Module Resolution Options */
40 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
41 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
42 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
43 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
44 | // "typeRoots": [], /* List of folders to include type definitions from. */
45 | // "types": [], /* Type declaration files to be included in compilation. */
46 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
47 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
48 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
49 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
50 | /* Source Map Options */
51 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
52 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
53 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
54 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
55 | /* Experimental Options */
56 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
57 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
58 | /* Advanced Options */
59 | "skipLibCheck": true, /* Skip type checking of declaration files. */
60 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Created by https://www.toptal.com/developers/gitignore/api/python,node,macos,windows,visualstudiocode,venv,vim
3 | # Edit at https://www.toptal.com/developers/gitignore?templates=python,node,macos,windows,visualstudiocode,venv,vim
4 |
5 | ### macOS ###
6 | # General
7 | .DS_Store
8 | .AppleDouble
9 | .LSOverride
10 |
11 | # Icon must end with two \r
12 | Icon
13 | !src/static/icon
14 |
15 | # Thumbnails
16 | ._*
17 |
18 | # Files that might appear in the root of a volume
19 | .DocumentRevisions-V100
20 | .fseventsd
21 | .Spotlight-V100
22 | .TemporaryItems
23 | .Trashes
24 | .VolumeIcon.icns
25 | .com.apple.timemachine.donotpresent
26 |
27 | # Directories potentially created on remote AFP share
28 | .AppleDB
29 | .AppleDesktop
30 | Network Trash Folder
31 | Temporary Items
32 | .apdisk
33 |
34 | ### Node ###
35 | # Logs
36 | logs
37 | *.log
38 | npm-debug.log*
39 | yarn-debug.log*
40 | yarn-error.log*
41 | lerna-debug.log*
42 |
43 | # Diagnostic reports (https://nodejs.org/api/report.html)
44 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
45 |
46 | # Runtime data
47 | pids
48 | *.pid
49 | *.seed
50 | *.pid.lock
51 |
52 | # Directory for instrumented libs generated by jscoverage/JSCover
53 | lib-cov
54 |
55 | # Coverage directory used by tools like istanbul
56 | coverage
57 | *.lcov
58 |
59 | # nyc test coverage
60 | .nyc_output
61 |
62 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
63 | .grunt
64 |
65 | # Bower dependency directory (https://bower.io/)
66 | bower_components
67 |
68 | # node-waf configuration
69 | .lock-wscript
70 |
71 | # Compiled binary addons (https://nodejs.org/api/addons.html)
72 | build/Release
73 |
74 | # Dependency directories
75 | node_modules/
76 | jspm_packages/
77 |
78 | # TypeScript v1 declaration files
79 | typings/
80 |
81 | # TypeScript cache
82 | *.tsbuildinfo
83 |
84 | # Optional npm cache directory
85 | .npm
86 |
87 | # Optional eslint cache
88 | .eslintcache
89 |
90 | # Microbundle cache
91 | .rpt2_cache/
92 | .rts2_cache_cjs/
93 | .rts2_cache_es/
94 | .rts2_cache_umd/
95 |
96 | # Optional REPL history
97 | .node_repl_history
98 |
99 | # Output of 'npm pack'
100 | *.tgz
101 |
102 | # Yarn Integrity file
103 | .yarn-integrity
104 |
105 | # dotenv environment variables file
106 | .env
107 | .env.test
108 |
109 | # parcel-bundler cache (https://parceljs.org/)
110 | .cache
111 |
112 | # Next.js build output
113 | .next
114 |
115 | # Nuxt.js build / generate output
116 | .nuxt
117 | dist
118 |
119 | # Gatsby files
120 | .cache/
121 | # Comment in the public line in if your project uses Gatsby and not Next.js
122 | # https://nextjs.org/blog/next-9-1#public-directory-support
123 | # public
124 |
125 | # vuepress build output
126 | .vuepress/dist
127 |
128 | # Serverless directories
129 | .serverless/
130 |
131 | # FuseBox cache
132 | .fusebox/
133 |
134 | # DynamoDB Local files
135 | .dynamodb/
136 |
137 | # TernJS port file
138 | .tern-port
139 |
140 | # Stores VSCode versions used for testing VSCode extensions
141 | .vscode-test
142 |
143 | ### Python ###
144 | # Byte-compiled / optimized / DLL files
145 | __pycache__/
146 | *.py[cod]
147 | *$py.class
148 |
149 | # C extensions
150 | *.so
151 |
152 | # Distribution / packaging
153 | .Python
154 | build/
155 | develop-eggs/
156 | dist/
157 | downloads/
158 | eggs/
159 | .eggs/
160 | lib/
161 | lib64/
162 | parts/
163 | sdist/
164 | var/
165 | wheels/
166 | pip-wheel-metadata/
167 | share/python-wheels/
168 | *.egg-info/
169 | .installed.cfg
170 | *.egg
171 | MANIFEST
172 |
173 | # PyInstaller
174 | # Usually these files are written by a python script from a template
175 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
176 | *.manifest
177 | *.spec
178 |
179 | # Installer logs
180 | pip-log.txt
181 | pip-delete-this-directory.txt
182 |
183 | # Unit test / coverage reports
184 | htmlcov/
185 | .tox/
186 | .nox/
187 | .coverage
188 | .coverage.*
189 | nosetests.xml
190 | coverage.xml
191 | *.cover
192 | *.py,cover
193 | .hypothesis/
194 | .pytest_cache/
195 | pytestdebug.log
196 |
197 | # Translations
198 | *.mo
199 | *.pot
200 |
201 | # Django stuff:
202 | local_settings.py
203 | db.sqlite3
204 | db.sqlite3-journal
205 |
206 | # Flask stuff:
207 | instance/
208 | .webassets-cache
209 |
210 | # Scrapy stuff:
211 | .scrapy
212 |
213 | # Sphinx documentation
214 | docs/_build/
215 | doc/_build/
216 |
217 | # PyBuilder
218 | target/
219 |
220 | # Jupyter Notebook
221 | .ipynb_checkpoints
222 |
223 | # IPython
224 | profile_default/
225 | ipython_config.py
226 |
227 | # pyenv
228 | .python-version
229 |
230 | # pipenv
231 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
232 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
233 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
234 | # install all needed dependencies.
235 | #Pipfile.lock
236 |
237 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
238 | __pypackages__/
239 |
240 | # Celery stuff
241 | celerybeat-schedule
242 | celerybeat.pid
243 |
244 | # SageMath parsed files
245 | *.sage.py
246 |
247 | # Environments
248 | .venv
249 | env/
250 | venv/
251 | ENV/
252 | env.bak/
253 | venv.bak/
254 |
255 | # Spyder project settings
256 | .spyderproject
257 | .spyproject
258 |
259 | # Rope project settings
260 | .ropeproject
261 |
262 | # mkdocs documentation
263 | /site
264 |
265 | # mypy
266 | .mypy_cache/
267 | .dmypy.json
268 | dmypy.json
269 |
270 | # Pyre type checker
271 | .pyre/
272 |
273 | # pytype static type analyzer
274 | .pytype/
275 |
276 | ### venv ###
277 | # Virtualenv
278 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
279 | [Bb]in
280 | [Ii]nclude
281 | [Ll]ib
282 | [Ll]ib64
283 | [Ll]ocal
284 | [Ss]cripts
285 | pyvenv.cfg
286 | pip-selfcheck.json
287 |
288 | ### Vim ###
289 | # Swap
290 | [._]*.s[a-v][a-z]
291 | !*.svg # comment out if you don't need vector files
292 | [._]*.sw[a-p]
293 | [._]s[a-rt-v][a-z]
294 | [._]ss[a-gi-z]
295 | [._]sw[a-p]
296 |
297 | # Session
298 | Session.vim
299 | Sessionx.vim
300 |
301 | # Temporary
302 | .netrwhist
303 | *~
304 | # Auto-generated tag files
305 | tags
306 | # Persistent undo
307 | [._]*.un~
308 |
309 | ### VisualStudioCode ###
310 | .vscode/*
311 | !.vscode/settings.json
312 | !.vscode/tasks.json
313 | !.vscode/launch.json
314 | !.vscode/extensions.json
315 | *.code-workspace
316 |
317 | ### VisualStudioCode Patch ###
318 | # Ignore all local history of files
319 | .history
320 |
321 | ### Windows ###
322 | # Windows thumbnail cache files
323 | Thumbs.db
324 | Thumbs.db:encryptable
325 | ehthumbs.db
326 | ehthumbs_vista.db
327 |
328 | # Dump file
329 | *.stackdump
330 |
331 | # Folder config file
332 | [Dd]esktop.ini
333 |
334 | # Recycle Bin used on file shares
335 | $RECYCLE.BIN/
336 |
337 | # Windows Installer files
338 | *.cab
339 | *.msi
340 | *.msix
341 | *.msm
342 | *.msp
343 |
344 | # Windows shortcuts
345 | *.lnk
346 |
347 | # End of https://www.toptal.com/developers/gitignore/api/python,node,macos,windows,visualstudiocode,venv,vim
348 |
349 |
350 | src/static/js/*.js
351 |
--------------------------------------------------------------------------------
/tools/jma_area_centroid.csv:
--------------------------------------------------------------------------------
1 | 100,石狩地方北部,43.4151931842515,141.49525560707
2 | 101,石狩地方中部,43.010872239411,141.291800149006
3 | 102,石狩地方南部,42.8401853638524,141.496898327669
4 | 105,渡島地方北部,42.2715261571357,140.227924212031
5 | 106,渡島地方東部,41.9171303977866,140.730104639953
6 | 107,渡島地方西部,41.5890677088811,140.250720331631
7 | 110,檜山地方,42.1200892176946,140.117224870458
8 | 115,後志地方北部,43.1570832606841,140.766313140274
9 | 116,後志地方東部,42.8279967803352,140.848074079286
10 | 117,後志地方西部,42.8212795958583,140.381809567057
11 | 119,北海道奥尻島,42.1553384492168,139.473175204362
12 | 120,空知地方北部,43.8088241231416,142.003884974433
13 | 121,空知地方中部,43.510911886567,141.982748253998
14 | 122,空知地方南部,43.1340267466936,141.912806597305
15 | 125,上川地方北部,44.3385114570841,142.392451316326
16 | 126,上川地方中部,43.735583365414,142.644551805745
17 | 127,上川地方南部,43.2002642741056,142.504343797753
18 | 130,留萌地方中北部,44.4989700095592,141.878134955653
19 | 131,留萌地方南部,43.9417545962386,141.733774434506
20 | 135,宗谷地方北部,45.1894445178067,141.918210986196
21 | 136,宗谷地方南部,44.8665568352299,142.43855171702
22 | 139,北海道利尻礼文,45.2387861660525,141.166627699514
23 | 140,網走地方,43.8152965753998,144.382103894481
24 | 141,北見地方,43.8226200374306,143.673887997429
25 | 142,紋別地方,44.1637059557543,143.183999955972
26 | 145,胆振地方西部,42.613359798762,140.894124905183
27 | 146,胆振地方中東部,42.6805610965227,141.697396642325
28 | 150,日高地方西部,42.7170038822428,142.406748749235
29 | 151,日高地方中部,42.4684979347206,142.58710610633
30 | 152,日高地方東部,42.2081311544082,142.999868946709
31 | 155,十勝地方北部,43.3665628834425,143.2988585723
32 | 156,十勝地方中部,42.9092933852102,143.296318802107
33 | 157,十勝地方南部,42.4845011298408,143.153859068292
34 | 160,釧路地方北部,43.5472480898255,144.399883448184
35 | 161,釧路地方中南部,43.180280482733,144.390527256347
36 | 165,根室地方北部,43.7457962290942,144.960978939025
37 | 166,根室地方中部,43.3921494419389,145.017145856032
38 | 167,根室地方南部,43.3154699204573,145.585475423304
39 | 200,青森県津軽北部,40.9012879819584,140.602759340444
40 | 201,青森県津軽南部,40.5837111506307,140.355676664483
41 | 202,青森県三八上北,40.6162098596363,141.217603896412
42 | 203,青森県下北,41.3095280542848,141.077901041411
43 | 210,岩手県沿岸北部,39.8488708107972,141.720190761799
44 | 211,岩手県沿岸南部,39.2071220069916,141.702753491058
45 | 212,岩手県内陸北部,39.931554542287,141.183482398172
46 | 213,岩手県内陸南部,39.2215346022004,141.160891785618
47 | 220,宮城県北部,38.7081798510326,141.022771333641
48 | 221,宮城県南部,38.0409381021126,140.661089277841
49 | 222,宮城県中部,38.3899877375334,141.004064365124
50 | 230,秋田県沿岸北部,40.1200513403522,140.096455999147
51 | 231,秋田県沿岸南部,39.4444677774327,140.171307132117
52 | 232,秋田県内陸北部,40.169818598738,140.578371768009
53 | 233,秋田県内陸南部,39.4107479536497,140.555936110668
54 | 240,山形県庄内,38.7268035929364,139.885451803039
55 | 241,山形県最上,38.7924891508531,140.295120305627
56 | 242,山形県村山,38.3859722184277,140.279056046712
57 | 243,山形県置賜,37.9990598165106,139.976229298984
58 | 250,福島県中通り,37.3914691547508,140.412029876442
59 | 251,福島県浜通り,37.3509163241567,140.838009636233
60 | 252,福島県会津,37.3884896876914,139.696186888682
61 | 300,茨城県北部,36.5650203041214,140.4501572932
62 | 301,茨城県南部,36.0932846746818,140.201946458283
63 | 310,栃木県北部,36.8824768612142,139.796845705343
64 | 311,栃木県南部,36.512030461272,139.834443306022
65 | 320,群馬県北部,36.6945826617991,138.928782969845
66 | 321,群馬県南部,36.3350541464469,139.031683822158
67 | 330,埼玉県北部,36.120612876943,139.362415936756
68 | 331,埼玉県南部,35.9073583025148,139.545329395159
69 | 332,埼玉県秩父,35.9859328237761,138.960967734764
70 | 340,千葉県北東部,35.651395253314,140.471172440167
71 | 341,千葉県北西部,35.6937245250665,140.134108404433
72 | 342,千葉県南部,35.203428130897,140.046035650559
73 | 350,東京都23区,35.6910145729301,139.735181991436
74 | 351,東京都多摩東部,35.676657079624,139.404014712941
75 | 352,東京都多摩西部,35.7841008782466,139.133267741272
76 | 354,神津島,34.2141240116488,139.14756016141
77 | 355,伊豆大島,34.737504801755,139.398860680118
78 | 356,新島,34.3908705243122,139.261953719004
79 | 357,三宅島,34.0281970490155,139.543209588378
80 | 358,八丈島,33.0582036184704,139.791238765374
81 | 359,小笠原,26.4684789419563,142.005446132563
82 | 360,神奈川県東部,35.4158798516042,139.541830262692
83 | 361,神奈川県西部,35.4187572372285,139.170065099832
84 | 370,新潟県上越,37.028577309026,138.153987349162
85 | 371,新潟県中越,37.2523218878926,138.885591560404
86 | 372,新潟県下越,37.9351085765371,139.396426040876
87 | 375,新潟県佐渡,38.0443952706501,138.389834987216
88 | 380,富山県東部,36.6540191718457,137.437080599991
89 | 381,富山県西部,36.6116154042673,136.942745221795
90 | 390,石川県能登,37.2064867460047,136.948180718148
91 | 391,石川県加賀,36.3778009761394,136.609662359906
92 | 400,福井県嶺北,35.9656984036161,136.361479635618
93 | 401,福井県嶺南,35.5232068049401,135.839517060097
94 | 411,山梨県中・西部,35.6343864344763,138.493498877733
95 | 412,山梨県東部・富士五湖,35.5700482506783,138.883889021463
96 | 420,長野県北部,36.6881921251618,138.150078155994
97 | 421,長野県中部,36.1891456600816,138.169651115476
98 | 422,長野県南部,35.654790923255,137.82736831621
99 | 430,岐阜県飛騨,36.1187019703343,137.226141814707
100 | 431,岐阜県美濃東部,35.4816794817731,137.316761509708
101 | 432,岐阜県美濃中西部,35.6069261648036,136.719663959301
102 | 440,静岡県伊豆,34.8745640375043,138.938865846631
103 | 441,静岡県東部,35.2402420829625,138.771488626138
104 | 442,静岡県中部,35.1039139770262,138.238197712947
105 | 443,静岡県西部,34.8836462400842,137.853989125771
106 | 450,愛知県東部,34.9312735856154,137.485860953082
107 | 451,愛知県西部,35.0894580120775,137.073328534043
108 | 460,三重県北部,35.0047600275823,136.526626961888
109 | 461,三重県中部,34.6191734898224,136.313318480575
110 | 462,三重県南部,34.213724255505,136.371820296006
111 | 500,滋賀県北部,35.3900869659917,136.165278079797
112 | 501,滋賀県南部,35.0456639623281,136.104847445449
113 | 510,京都府北部,35.46787882351,135.184751464577
114 | 511,京都府南部,35.0789732223378,135.65562115477
115 | 520,大阪府北部,34.783462719498,135.548853115561
116 | 521,大阪府南部,34.4415819650787,135.455666991985
117 | 530,兵庫県北部,35.4408410901881,134.71872293536
118 | 531,兵庫県南東部,34.9317329074819,135.099406804436
119 | 532,兵庫県南西部,34.9963324958315,134.553780088888
120 | 535,兵庫県淡路島,34.3621637869522,134.838411125225
121 | 540,奈良県,34.3192656265881,135.868735482575
122 | 550,和歌山県北部,34.1028777946241,135.3608210494
123 | 551,和歌山県南部,33.726110390324,135.656947155252
124 | 560,鳥取県東部,35.3918635375182,134.24926000843
125 | 562,鳥取県中部,35.4044079729083,133.789229650776
126 | 563,鳥取県西部,35.2994577316796,133.386845026069
127 | 570,島根県東部,35.2992242948002,132.951146669834
128 | 571,島根県西部,34.7928361651109,132.192509559817
129 | 575,島根県隠岐,36.2013585892796,133.208945191763
130 | 580,岡山県北部,35.0926200808239,133.823930457215
131 | 581,岡山県南部,34.7162121935879,133.802434935664
132 | 590,広島県北部,34.7991919297154,132.765038747369
133 | 591,広島県南東部,34.5591852337011,133.169466482037
134 | 592,広島県南西部,34.3973239449629,132.518452780871
135 | 600,徳島県北部,34.0127123218254,134.155924755563
136 | 601,徳島県南部,33.786975641433,134.365503868782
137 | 610,香川県東部,34.3007139401047,134.167233844802
138 | 611,香川県西部,34.1906564629378,133.817468763363
139 | 620,愛媛県東予,33.9500060023073,133.220443392779
140 | 621,愛媛県中予,33.7395076842639,132.869283566924
141 | 622,愛媛県南予,33.3472717034619,132.610302944072
142 | 630,高知県東部,33.5201666208914,134.065073389848
143 | 631,高知県中部,33.6512155360333,133.501258893035
144 | 632,高知県西部,33.133110128076,132.935115295384
145 | 700,山口県北部,34.3572476995743,131.359776226827
146 | 702,山口県西部,34.1223591161337,131.082290946589
147 | 703,山口県東部,34.1095644130935,132.089922630929
148 | 704,山口県中部,34.1800151405053,131.673551454039
149 | 710,福岡県福岡,33.5952497614343,130.403935574232
150 | 711,福岡県北九州,33.741810156755,130.908182834785
151 | 712,福岡県筑豊,33.6260119930602,130.73968769485
152 | 713,福岡県筑後,33.2675430810854,130.636383954678
153 | 720,佐賀県北部,33.3679017829721,129.948976438451
154 | 721,佐賀県南部,33.2461579827258,130.202283894043
155 | 730,長崎県北部,33.2292689757298,129.696488221909
156 | 731,長崎県南西部,32.8706410511579,129.881495729514
157 | 732,長崎県島原半島,32.745846722548,130.257068659466
158 | 735,長崎県対馬,34.4084515600988,129.32597991825
159 | 736,長崎県壱岐,33.7855297970237,129.716691163743
160 | 737,長崎県五島,32.818834297997,128.886870310454
161 | 740,熊本県阿蘇,32.9619259755635,131.108361031715
162 | 741,熊本県熊本,32.7626764454036,130.784193436199
163 | 742,熊本県球磨,32.2823561048014,130.847453124349
164 | 743,熊本県天草・芦北,32.3538263913408,130.287882170458
165 | 750,大分県北部,33.4988415016572,131.359900066464
166 | 751,大分県中部,33.2228447448591,131.583987201979
167 | 752,大分県南部,32.9206720136167,131.670221607535
168 | 753,大分県西部,33.1772178549274,131.133437868809
169 | 760,宮崎県北部平野部,32.4260541648634,131.521245562521
170 | 761,宮崎県北部山沿い,32.5122652343594,131.26564109005
171 | 762,宮崎県南部平野部,31.7648845865247,131.319831819666
172 | 763,宮崎県南部山沿い,31.924251908024,131.029034121253
173 | 770,鹿児島県薩摩,31.7496641914499,130.484942719855
174 | 771,鹿児島県大隅,31.4208972338992,130.924936450357
175 | 774,鹿児島県十島村,29.6888031620734,129.712994312664
176 | 775,鹿児島県甑島,31.755201316317,129.786634664733
177 | 776,鹿児島県種子島,30.5980929866606,130.918494282116
178 | 777,鹿児島県屋久島,30.346878132117,130.501382304569
179 | 778,鹿児島県奄美北部,28.2881614692973,129.439179108493
180 | 779,鹿児島県奄美南部,27.6311862243228,128.829035604575
181 | 800,沖縄県本島北部,26.6554705574845,128.058172038374
182 | 801,沖縄県本島中南部,26.2609127490052,127.732601148849
183 | 802,沖縄県久米島,26.4106427459504,126.83288263237
184 | 803,沖縄県大東島,25.834855523386,131.258912306859
185 | 804,沖縄県宮古島,24.7741858594093,125.242722844898
186 | 805,沖縄県石垣島,24.4656012809041,124.188763379481
187 | 806,沖縄県与那国島,24.4553666704242,122.988996964954
188 | 807,沖縄県西表島,24.3219449294693,123.82817843395
189 |
--------------------------------------------------------------------------------
/tools/sample.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 震度速報
5 | 2009-08-10T20:09:11Z
6 | 通常
7 | 気象庁本庁
8 | 気象庁
9 |
10 |
11 | 震度速報
12 | 2009-08-11T05:09:00+09:00
13 | 2009-08-11T05:07:00+09:00
14 | 20090811050711
15 | 発表
16 |
17 | 震度速報
18 | 1.0_0
19 |
20 | 11日05時07分ころ、地震による強い揺れを感じました。震度3以上が観測された地域をお知らせします。
21 |
22 | -
23 |
24 | 震度6弱
25 |
26 |
27 |
28 | 静岡県中部
29 |
442
30 |
31 |
32 | 静岡県西部
33 | 443
34 |
35 |
36 |
37 | -
38 |
39 | 震度5強
40 |
41 |
42 |
43 | 静岡県伊豆
44 |
440
45 |
46 |
47 | 静岡県東部
48 | 441
49 |
50 |
51 |
52 | -
53 |
54 | 震度4
55 |
56 |
57 |
58 | 千葉県南部
59 |
342
60 |
61 |
62 | 東京都23区
63 | 350
64 |
65 |
66 | 新島
67 | 356
68 |
69 |
70 | 神奈川県東部
71 | 360
72 |
73 |
74 | 神奈川県西部
75 | 361
76 |
77 |
78 | 山梨県中・西部
79 | 411
80 |
81 |
82 | 山梨県東部・富士五湖
83 | 412
84 |
85 |
86 | 長野県中部
87 | 421
88 |
89 |
90 | 長野県南部
91 | 422
92 |
93 |
94 | 岐阜県美濃東部
95 | 431
96 |
97 |
98 | 愛知県西部
99 | 451
100 |
101 |
102 |
103 | -
104 |
105 | 震度3
106 |
107 |
108 |
109 | 群馬県北部
110 |
320
111 |
112 |
113 | 群馬県南部
114 | 321
115 |
116 |
117 | 埼玉県北部
118 | 330
119 |
120 |
121 | 埼玉県南部
122 | 331
123 |
124 |
125 | 埼玉県秩父
126 | 332
127 |
128 |
129 | 千葉県北西部
130 | 341
131 |
132 |
133 | 東京都多摩東部
134 | 351
135 |
136 |
137 | 神津島
138 | 354
139 |
140 |
141 | 伊豆大島
142 | 355
143 |
144 |
145 | 三宅島
146 | 357
147 |
148 |
149 | 富山県東部
150 | 380
151 |
152 |
153 | 石川県加賀
154 | 391
155 |
156 |
157 | 福井県嶺北
158 | 400
159 |
160 |
161 | 福井県嶺南
162 | 401
163 |
164 |
165 | 長野県北部
166 | 420
167 |
168 |
169 | 岐阜県飛騨
170 | 430
171 |
172 |
173 | 岐阜県美濃中西部
174 | 432
175 |
176 |
177 | 愛知県東部
178 | 450
179 |
180 |
181 | 三重県北部
182 | 460
183 |
184 |
185 | 滋賀県北部
186 | 500
187 |
188 |
189 | 滋賀県南部
190 | 501
191 |
192 |
193 | 奈良県
194 | 540
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 | 地震情報/都道府県等
206 | 地震情報/細分区域
207 |
208 | 6-
209 |
210 | 静岡県
211 | 22
212 | 6-
213 |
214 | 静岡県中部
215 | 442
216 | 6-
217 |
218 |
219 | 静岡県西部
220 | 443
221 | 6-
222 |
223 |
224 | 静岡県伊豆
225 | 440
226 | 5+
227 |
228 |
229 | 静岡県東部
230 | 441
231 | 5+
232 |
233 |
234 |
235 | 千葉県
236 | 12
237 | 4
238 |
239 | 千葉県南部
240 | 342
241 | 4
242 |
243 |
244 | 千葉県北西部
245 | 341
246 | 3
247 |
248 |
249 |
250 | 東京都
251 | 13
252 | 4
253 |
254 | 東京都23区
255 | 350
256 | 4
257 |
258 |
259 | 新島
260 | 356
261 | 4
262 |
263 |
264 | 東京都多摩東部
265 | 351
266 | 3
267 |
268 |
269 | 神津島
270 | 354
271 | 3
272 |
273 |
274 | 伊豆大島
275 | 355
276 | 3
277 |
278 |
279 | 三宅島
280 | 357
281 | 3
282 |
283 |
284 |
285 | 神奈川県
286 | 14
287 | 4
288 |
289 | 神奈川県東部
290 | 360
291 | 4
292 |
293 |
294 | 神奈川県西部
295 | 361
296 | 4
297 |
298 |
299 |
300 | 山梨県
301 | 19
302 | 4
303 |
304 | 山梨県中・西部
305 | 411
306 | 4
307 |
308 |
309 | 山梨県東部・富士五湖
310 | 412
311 | 4
312 |
313 |
314 |
315 | 長野県
316 | 20
317 | 4
318 |
319 | 長野県中部
320 | 421
321 | 4
322 |
323 |
324 | 長野県南部
325 | 422
326 | 4
327 |
328 |
329 | 長野県北部
330 | 420
331 | 3
332 |
333 |
334 |
335 | 岐阜県
336 | 21
337 | 4
338 |
339 | 岐阜県美濃東部
340 | 431
341 | 4
342 |
343 |
344 | 岐阜県飛騨
345 | 430
346 | 3
347 |
348 |
349 | 岐阜県美濃中西部
350 | 432
351 | 3
352 |
353 |
354 |
355 | 愛知県
356 | 23
357 | 4
358 |
359 | 愛知県西部
360 | 451
361 | 4
362 |
363 |
364 | 愛知県東部
365 | 450
366 | 3
367 |
368 |
369 |
370 | 群馬県
371 | 10
372 | 3
373 |
374 | 群馬県北部
375 | 320
376 | 3
377 |
378 |
379 | 群馬県南部
380 | 321
381 | 3
382 |
383 |
384 |
385 | 埼玉県
386 | 11
387 | 3
388 |
389 | 埼玉県北部
390 | 330
391 | 3
392 |
393 |
394 | 埼玉県南部
395 | 331
396 | 3
397 |
398 |
399 | 埼玉県秩父
400 | 332
401 | 3
402 |
403 |
404 |
405 | 富山県
406 | 16
407 | 3
408 |
409 | 富山県東部
410 | 380
411 | 3
412 |
413 |
414 |
415 | 石川県
416 | 17
417 | 3
418 |
419 | 石川県加賀
420 | 391
421 | 3
422 |
423 |
424 |
425 | 福井県
426 | 18
427 | 3
428 |
429 | 福井県嶺北
430 | 400
431 | 3
432 |
433 |
434 | 福井県嶺南
435 | 401
436 | 3
437 |
438 |
439 |
440 | 三重県
441 | 24
442 | 3
443 |
444 | 三重県北部
445 | 460
446 | 3
447 |
448 |
449 |
450 | 滋賀県
451 | 25
452 | 3
453 |
454 | 滋賀県北部
455 | 500
456 | 3
457 |
458 |
459 | 滋賀県南部
460 | 501
461 | 3
462 |
463 |
464 |
465 | 奈良県
466 | 29
467 | 3
468 |
469 | 奈良県
470 | 540
471 | 3
472 |
473 |
474 |
475 |
476 |
477 |
478 |
--------------------------------------------------------------------------------
/src/ts/convertPosition.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * @author: Yuto Watanabe
3 | * @version: 1.0.0
4 | *
5 | * Copyright (c) 2020 Earthquake alert
6 | */
7 |
8 | /*!
9 | * location information
10 | * https://github.com/9SQ/jma-eqarea-centroid
11 | *
12 | */
13 |
14 | interface Data {
15 | lat: string,
16 | lon: string,
17 | name: string,
18 | }
19 |
20 | function positionDistrict(code: string): Data{
21 |
22 | const positionData: {[key: string]: Data} = {
23 | '100': {lat: '141.49525560707', lon: '43.4151931842515', name: '石狩地方北部',},
24 | '101': {lat: '141.291800149006', lon: '43.010872239411', name: '石狩地方中部',},
25 | '102': {lat: '141.496898327669', lon: '42.8401853638524', name: '石狩地方南部',},
26 | '105': {lat: '140.227924212031', lon: '42.2715261571357', name: '渡島地方北部',},
27 | '106': {lat: '140.730104639953', lon: '41.9171303977866', name: '渡島地方東部',},
28 | '107': {lat: '140.250720331631', lon: '41.5890677088811', name: '渡島地方西部',},
29 | '110': {lat: '140.117224870458', lon: '42.1200892176946', name: '檜山地方',},
30 | '115': {lat: '140.766313140274', lon: '43.1570832606841', name: '後志地方北部',},
31 | '116': {lat: '140.848074079286', lon: '42.8279967803352', name: '後志地方東部',},
32 | '117': {lat: '140.381809567057', lon: '42.8212795958583', name: '後志地方西部',},
33 | '119': {lat: '139.473175204362', lon: '42.1553384492168', name: '北海道奥尻島',},
34 | '120': {lat: '142.003884974433', lon: '43.8088241231416', name: '空知地方北部',},
35 | '121': {lat: '141.982748253998', lon: '43.510911886567', name: '空知地方中部',},
36 | '122': {lat: '141.912806597305', lon: '43.1340267466936', name: '空知地方南部',},
37 | '125': {lat: '142.392451316326', lon: '44.3385114570841', name: '上川地方北部',},
38 | '126': {lat: '142.644551805745', lon: '43.735583365414', name: '上川地方中部',},
39 | '127': {lat: '142.504343797753', lon: '43.2002642741056', name: '上川地方南部',},
40 | '130': {lat: '141.878134955653', lon: '44.4989700095592', name: '留萌地方中北部',},
41 | '131': {lat: '141.733774434506', lon: '43.9417545962386', name: '留萌地方南部',},
42 | '135': {lat: '141.918210986196', lon: '45.1894445178067', name: '宗谷地方北部',},
43 | '136': {lat: '142.43855171702', lon: '44.8665568352299', name: '宗谷地方南部',},
44 | '139': {lat: '141.166627699514', lon: '45.2387861660525', name: '北海道利尻礼文',},
45 | '140': {lat: '144.382103894481', lon: '43.8152965753998', name: '網走地方',},
46 | '141': {lat: '143.673887997429', lon: '43.8226200374306', name: '北見地方',},
47 | '142': {lat: '143.183999955972', lon: '44.1637059557543', name: '紋別地方',},
48 | '145': {lat: '140.894124905183', lon: '42.613359798762', name: '胆振地方西部',},
49 | '146': {lat: '141.697396642325', lon: '42.6805610965227', name: '胆振地方中東部',},
50 | '150': {lat: '142.406748749235', lon: '42.7170038822428', name: '日高地方西部',},
51 | '151': {lat: '142.58710610633', lon: '42.4684979347206', name: '日高地方中部',},
52 | '152': {lat: '142.999868946709', lon: '42.2081311544082', name: '日高地方東部',},
53 | '155': {lat: '143.2988585723', lon: '43.3665628834425', name: '十勝地方北部',},
54 | '156': {lat: '143.296318802107', lon: '42.9092933852102', name: '十勝地方中部',},
55 | '157': {lat: '143.153859068292', lon: '42.4845011298408', name: '十勝地方南部',},
56 | '160': {lat: '144.399883448184', lon: '43.5472480898255', name: '釧路地方北部',},
57 | '161': {lat: '144.390527256347', lon: '43.180280482733', name: '釧路地方中南部',},
58 | '165': {lat: '144.960978939025', lon: '43.7457962290942', name: '根室地方北部',},
59 | '166': {lat: '145.017145856032', lon: '43.3921494419389', name: '根室地方中部',},
60 | '167': {lat: '145.585475423304', lon: '43.3154699204573', name: '根室地方南部',},
61 | '200': {lat: '140.602759340444', lon: '40.9012879819584', name: '青森県津軽北部',},
62 | '201': {lat: '140.355676664483', lon: '40.5837111506307', name: '青森県津軽南部',},
63 | '202': {lat: '141.217603896412', lon: '40.6162098596363', name: '青森県三八上北',},
64 | '203': {lat: '141.077901041411', lon: '41.3095280542848', name: '青森県下北',},
65 | '210': {lat: '141.720190761799', lon: '39.8488708107972', name: '岩手県沿岸北部',},
66 | '211': {lat: '141.702753491058', lon: '39.2071220069916', name: '岩手県沿岸南部',},
67 | '212': {lat: '141.183482398172', lon: '39.931554542287', name: '岩手県内陸北部',},
68 | '213': {lat: '141.160891785618', lon: '39.2215346022004', name: '岩手県内陸南部',},
69 | '220': {lat: '141.022771333641', lon: '38.7081798510326', name: '宮城県北部',},
70 | '221': {lat: '140.661089277841', lon: '38.0409381021126', name: '宮城県南部',},
71 | '222': {lat: '141.004064365124', lon: '38.3899877375334', name: '宮城県中部',},
72 | '230': {lat: '140.096455999147', lon: '40.1200513403522', name: '秋田県沿岸北部',},
73 | '231': {lat: '140.171307132117', lon: '39.4444677774327', name: '秋田県沿岸南部',},
74 | '232': {lat: '140.578371768009', lon: '40.169818598738', name: '秋田県内陸北部',},
75 | '233': {lat: '140.555936110668', lon: '39.4107479536497', name: '秋田県内陸南部',},
76 | '240': {lat: '139.885451803039', lon: '38.7268035929364', name: '山形県庄内',},
77 | '241': {lat: '140.295120305627', lon: '38.7924891508531', name: '山形県最上',},
78 | '242': {lat: '140.279056046712', lon: '38.3859722184277', name: '山形県村山',},
79 | '243': {lat: '139.976229298984', lon: '37.9990598165106', name: '山形県置賜',},
80 | '250': {lat: '140.412029876442', lon: '37.3914691547508', name: '福島県中通り',},
81 | '251': {lat: '140.838009636233', lon: '37.3509163241567', name: '福島県浜通り',},
82 | '252': {lat: '139.696186888682', lon: '37.3884896876914', name: '福島県会津',},
83 | '300': {lat: '140.4501572932', lon: '36.5650203041214', name: '茨城県北部',},
84 | '301': {lat: '140.201946458283', lon: '36.0932846746818', name: '茨城県南部',},
85 | '310': {lat: '139.796845705343', lon: '36.8824768612142', name: '栃木県北部',},
86 | '311': {lat: '139.834443306022', lon: '36.512030461272', name: '栃木県南部',},
87 | '320': {lat: '138.928782969845', lon: '36.6945826617991', name: '群馬県北部',},
88 | '321': {lat: '139.031683822158', lon: '36.3350541464469', name: '群馬県南部',},
89 | '330': {lat: '139.362415936756', lon: '36.120612876943', name: '埼玉県北部',},
90 | '331': {lat: '139.545329395159', lon: '35.9073583025148', name: '埼玉県南部',},
91 | '332': {lat: '138.960967734764', lon: '35.9859328237761', name: '埼玉県秩父',},
92 | '340': {lat: '140.471172440167', lon: '35.651395253314', name: '千葉県北東部',},
93 | '341': {lat: '140.134108404433', lon: '35.6937245250665', name: '千葉県北西部',},
94 | '342': {lat: '140.046035650559', lon: '35.203428130897', name: '千葉県南部',},
95 | '350': {lat: '139.735181991436', lon: '35.6910145729301', name: '東京都23区',},
96 | '351': {lat: '139.404014712941', lon: '35.676657079624', name: '東京都多摩東部',},
97 | '352': {lat: '139.133267741272', lon: '35.7841008782466', name: '東京都多摩西部',},
98 | '354': {lat: '139.14756016141', lon: '34.2141240116488', name: '神津島',},
99 | '355': {lat: '139.398860680118', lon: '34.737504801755', name: '伊豆大島',},
100 | '356': {lat: '139.261953719004', lon: '34.3908705243122', name: '新島',},
101 | '357': {lat: '139.543209588378', lon: '34.0281970490155', name: '三宅島',},
102 | '358': {lat: '139.791238765374', lon: '33.0582036184704', name: '八丈島',},
103 | '359': {lat: '142.005446132563', lon: '26.4684789419563', name: '小笠原',},
104 | '360': {lat: '139.541830262692', lon: '35.4158798516042', name: '神奈川県東部',},
105 | '361': {lat: '139.170065099832', lon: '35.4187572372285', name: '神奈川県西部',},
106 | '370': {lat: '138.153987349162', lon: '37.028577309026', name: '新潟県上越',},
107 | '371': {lat: '138.885591560404', lon: '37.2523218878926', name: '新潟県中越',},
108 | '372': {lat: '139.396426040876', lon: '37.9351085765371', name: '新潟県下越',},
109 | '375': {lat: '138.389834987216', lon: '38.0443952706501', name: '新潟県佐渡',},
110 | '380': {lat: '137.437080599991', lon: '36.6540191718457', name: '富山県東部',},
111 | '381': {lat: '136.942745221795', lon: '36.6116154042673', name: '富山県西部',},
112 | '390': {lat: '136.948180718148', lon: '37.2064867460047', name: '石川県能登',},
113 | '391': {lat: '136.609662359906', lon: '36.3778009761394', name: '石川県加賀',},
114 | '400': {lat: '136.361479635618', lon: '35.9656984036161', name: '福井県嶺北',},
115 | '401': {lat: '135.839517060097', lon: '35.5232068049401', name: '福井県嶺南',},
116 | '411': {lat: '138.493498877733', lon: '35.6343864344763', name: '山梨県中・西部',},
117 | '412': {lat: '138.883889021463', lon: '35.5700482506783', name: '山梨県東部・富士五湖',},
118 | '420': {lat: '138.150078155994', lon: '36.6881921251618', name: '長野県北部',},
119 | '421': {lat: '138.169651115476', lon: '36.1891456600816', name: '長野県中部',},
120 | '422': {lat: '137.82736831621', lon: '35.654790923255', name: '長野県南部',},
121 | '430': {lat: '137.226141814707', lon: '36.1187019703343', name: '岐阜県飛騨',},
122 | '431': {lat: '137.316761509708', lon: '35.4816794817731', name: '岐阜県美濃東部',},
123 | '432': {lat: '136.719663959301', lon: '35.6069261648036', name: '岐阜県美濃中西部',},
124 | '440': {lat: '138.938865846631', lon: '34.8745640375043', name: '静岡県伊豆',},
125 | '441': {lat: '138.771488626138', lon: '35.2402420829625', name: '静岡県東部',},
126 | '442': {lat: '138.238197712947', lon: '35.1039139770262', name: '静岡県中部',},
127 | '443': {lat: '137.853989125771', lon: '34.8836462400842', name: '静岡県西部',},
128 | '450': {lat: '137.485860953082', lon: '34.9312735856154', name: '愛知県東部',},
129 | '451': {lat: '137.073328534043', lon: '35.0894580120775', name: '愛知県西部',},
130 | '460': {lat: '136.526626961888', lon: '35.0047600275823', name: '三重県北部',},
131 | '461': {lat: '136.313318480575', lon: '34.6191734898224', name: '三重県中部',},
132 | '462': {lat: '136.371820296006', lon: '34.213724255505', name: '三重県南部',},
133 | '500': {lat: '136.165278079797', lon: '35.3900869659917', name: '滋賀県北部',},
134 | '501': {lat: '136.104847445449', lon: '35.0456639623281', name: '滋賀県南部',},
135 | '510': {lat: '135.184751464577', lon: '35.46787882351', name: '京都府北部',},
136 | '511': {lat: '135.65562115477', lon: '35.0789732223378', name: '京都府南部',},
137 | '520': {lat: '135.548853115561', lon: '34.783462719498', name: '大阪府北部',},
138 | '521': {lat: '135.455666991985', lon: '34.4415819650787', name: '大阪府南部',},
139 | '530': {lat: '134.71872293536', lon: '35.4408410901881', name: '兵庫県北部',},
140 | '531': {lat: '135.099406804436', lon: '34.9317329074819', name: '兵庫県南東部',},
141 | '532': {lat: '134.553780088888', lon: '34.9963324958315', name: '兵庫県南西部',},
142 | '535': {lat: '134.838411125225', lon: '34.3621637869522', name: '兵庫県淡路島',},
143 | '540': {lat: '135.868735482575', lon: '34.3192656265881', name: '奈良県',},
144 | '550': {lat: '135.3608210494', lon: '34.1028777946241', name: '和歌山県北部',},
145 | '551': {lat: '135.656947155252', lon: '33.726110390324', name: '和歌山県南部',},
146 | '560': {lat: '134.24926000843', lon: '35.3918635375182', name: '鳥取県東部',},
147 | '562': {lat: '133.789229650776', lon: '35.4044079729083', name: '鳥取県中部',},
148 | '563': {lat: '133.386845026069', lon: '35.2994577316796', name: '鳥取県西部',},
149 | '570': {lat: '132.951146669834', lon: '35.2992242948002', name: '島根県東部',},
150 | '571': {lat: '132.192509559817', lon: '34.7928361651109', name: '島根県西部',},
151 | '575': {lat: '133.208945191763', lon: '36.2013585892796', name: '島根県隠岐',},
152 | '580': {lat: '133.823930457215', lon: '35.0926200808239', name: '岡山県北部',},
153 | '581': {lat: '133.802434935664', lon: '34.7162121935879', name: '岡山県南部',},
154 | '590': {lat: '132.765038747369', lon: '34.7991919297154', name: '広島県北部',},
155 | '591': {lat: '133.169466482037', lon: '34.5591852337011', name: '広島県南東部',},
156 | '592': {lat: '132.518452780871', lon: '34.3973239449629', name: '広島県南西部',},
157 | '600': {lat: '134.155924755563', lon: '34.0127123218254', name: '徳島県北部',},
158 | '601': {lat: '134.365503868782', lon: '33.786975641433', name: '徳島県南部',},
159 | '610': {lat: '134.167233844802', lon: '34.3007139401047', name: '香川県東部',},
160 | '611': {lat: '133.817468763363', lon: '34.1906564629378', name: '香川県西部',},
161 | '620': {lat: '133.220443392779', lon: '33.9500060023073', name: '愛媛県東予',},
162 | '621': {lat: '132.869283566924', lon: '33.7395076842639', name: '愛媛県中予',},
163 | '622': {lat: '132.610302944072', lon: '33.3472717034619', name: '愛媛県南予',},
164 | '630': {lat: '134.065073389848', lon: '33.5201666208914', name: '高知県東部',},
165 | '631': {lat: '133.501258893035', lon: '33.6512155360333', name: '高知県中部',},
166 | '632': {lat: '132.935115295384', lon: '33.133110128076', name: '高知県西部',},
167 | '700': {lat: '131.359776226827', lon: '34.3572476995743', name: '山口県北部',},
168 | '702': {lat: '131.082290946589', lon: '34.1223591161337', name: '山口県西部',},
169 | '703': {lat: '132.089922630929', lon: '34.1095644130935', name: '山口県東部',},
170 | '704': {lat: '131.673551454039', lon: '34.1800151405053', name: '山口県中部',},
171 | '710': {lat: '130.403935574232', lon: '33.5952497614343', name: '福岡県福岡',},
172 | '711': {lat: '130.908182834785', lon: '33.741810156755', name: '福岡県北九州',},
173 | '712': {lat: '130.73968769485', lon: '33.6260119930602', name: '福岡県筑豊',},
174 | '713': {lat: '130.636383954678', lon: '33.2675430810854', name: '福岡県筑後',},
175 | '720': {lat: '129.948976438451', lon: '33.3679017829721', name: '佐賀県北部',},
176 | '721': {lat: '130.202283894043', lon: '33.2461579827258', name: '佐賀県南部',},
177 | '730': {lat: '129.696488221909', lon: '33.2292689757298', name: '長崎県北部',},
178 | '731': {lat: '129.881495729514', lon: '32.8706410511579', name: '長崎県南西部',},
179 | '732': {lat: '130.257068659466', lon: '32.745846722548', name: '長崎県島原半島',},
180 | '735': {lat: '129.32597991825', lon: '34.4084515600988', name: '長崎県対馬',},
181 | '736': {lat: '129.716691163743', lon: '33.7855297970237', name: '長崎県壱岐',},
182 | '737': {lat: '128.886870310454', lon: '32.818834297997', name: '長崎県五島',},
183 | '740': {lat: '131.108361031715', lon: '32.9619259755635', name: '熊本県阿蘇',},
184 | '741': {lat: '130.784193436199', lon: '32.7626764454036', name: '熊本県熊本',},
185 | '742': {lat: '130.847453124349', lon: '32.2823561048014', name: '熊本県球磨',},
186 | '743': {lat: '130.287882170458', lon: '32.3538263913408', name: '熊本県天草・芦北',},
187 | '750': {lat: '131.359900066464', lon: '33.4988415016572', name: '大分県北部',},
188 | '751': {lat: '131.583987201979', lon: '33.2228447448591', name: '大分県中部',},
189 | '752': {lat: '131.670221607535', lon: '32.9206720136167', name: '大分県南部',},
190 | '753': {lat: '131.133437868809', lon: '33.1772178549274', name: '大分県西部',},
191 | '760': {lat: '131.521245562521', lon: '32.4260541648634', name: '宮崎県北部平野部',},
192 | '761': {lat: '131.26564109005', lon: '32.5122652343594', name: '宮崎県北部山沿い',},
193 | '762': {lat: '131.319831819666', lon: '31.7648845865247', name: '宮崎県南部平野部',},
194 | '763': {lat: '131.029034121253', lon: '31.924251908024', name: '宮崎県南部山沿い',},
195 | '770': {lat: '130.484942719855', lon: '31.7496641914499', name: '鹿児島県薩摩',},
196 | '771': {lat: '130.924936450357', lon: '31.4208972338992', name: '鹿児島県大隅',},
197 | '774': {lat: '129.712994312664', lon: '29.6888031620734', name: '鹿児島県十島村',},
198 | '775': {lat: '129.786634664733', lon: '31.755201316317', name: '鹿児島県甑島',},
199 | '776': {lat: '130.918494282116', lon: '30.5980929866606', name: '鹿児島県種子島',},
200 | '777': {lat: '130.501382304569', lon: '30.346878132117', name: '鹿児島県屋久島',},
201 | '778': {lat: '129.439179108493', lon: '28.2881614692973', name: '鹿児島県奄美北部',},
202 | '779': {lat: '128.829035604575', lon: '27.6311862243228', name: '鹿児島県奄美南部',},
203 | '800': {lat: '128.058172038374', lon: '26.6554705574845', name: '沖縄県本島北部',},
204 | '801': {lat: '127.732601148849', lon: '26.2609127490052', name: '沖縄県本島中南部',},
205 | '802': {lat: '126.83288263237', lon: '26.4106427459504', name: '沖縄県久米島',},
206 | '803': {lat: '131.258912306859', lon: '25.834855523386', name: '沖縄県大東島',},
207 | '804': {lat: '125.242722844898', lon: '24.7741858594093', name: '沖縄県宮古島',},
208 | '805': {lat: '124.188763379481', lon: '24.4656012809041', name: '沖縄県石垣島',},
209 | '806': {lat: '122.988996964954', lon: '24.4553666704242', name: '沖縄県与那国島',},
210 | '807': {lat: '123.82817843395', lon: '24.3219449294693', name: '沖縄県西表島',},
211 | };
212 |
213 | return positionData[code];
214 | }
215 |
216 | // 細分区域のコードから緯度経度を返す
217 | export function district(code: string): number[] {
218 | const metaData: Data = positionDistrict(code);
219 | if (typeof metaData != 'undefined'){
220 | const lon = parseFloat(metaData.lon);
221 | const lat = parseFloat(metaData.lat);
222 | if (typeof lat != 'undefined' && typeof lon != 'undefined'){
223 | return [lon, lat];
224 | }
225 | }
226 | return [];
227 | }
228 |
229 |
--------------------------------------------------------------------------------
/src/ts/mapStyle.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * @author: Yuto Watanabe
3 | * @version: 1.0.0
4 | *
5 | * Copyright (c) 2020 Earthquake alert
6 | */
7 |
8 | import Feature from 'ol/Feature';
9 | import * as Geom from 'ol/geom';
10 |
11 | import { fromLonLat } from 'ol/proj';
12 | import RenderFeature from 'ol/render/Feature';
13 | import {Style, Stroke, Fill, Icon} from 'ol/style';
14 | import {color} from './color';
15 | import {district} from './convertPosition';
16 |
17 | interface Parameter {
18 | areas1: string[],
19 | areas2: string[],
20 | areas3: string[],
21 | areas4: string[],
22 | areas5l: string[],
23 | areas5u: string[],
24 | areas6l: string[],
25 | areas6u: string[],
26 | areas7: string[],
27 | pref: string[],
28 | epicenter: string[],
29 | point1: string[],
30 | point2: string[],
31 | point3: string[],
32 | point4: string[],
33 | point5l: string[],
34 | point5u: string[],
35 | point6l: string[],
36 | point6u: string[],
37 | point7: string[],
38 | }
39 |
40 | const parameter: Parameter = {
41 | areas1: [],
42 | areas2: [],
43 | areas3: [],
44 | areas4: [],
45 | areas5l: [],
46 | areas5u: [],
47 | areas6l: [],
48 | areas6u: [],
49 | areas7: [],
50 | pref: [],
51 | epicenter: [],
52 | point1: [],
53 | point2: [],
54 | point3: [],
55 | point4: [],
56 | point5l: [],
57 | point5u: [],
58 | point6l: [],
59 | point6u: [],
60 | point7: [],
61 | };
62 |
63 | let count = 0;
64 | let pointScale = 0.8;
65 | // [lon, lat]
66 | const centerPosition: number[] = [0, 0];
67 | const latMaxMin: number[] = [0, 0];
68 | const lonMaxMin: number[] = [0, 0];
69 |
70 | export let isOverseas = false;
71 | export let isTileColor = false;
72 |
73 | const features: Feature[] = [];
74 |
75 | // urlからパラメータを取得
76 | function getUrl(url: string, name: string): string[]{
77 | const regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)");
78 | const results = regex.exec(decodeURI(url));
79 |
80 | if (results != null){
81 | return results[2].replace(/\+/g, " ").split(',');
82 | }
83 | return [];
84 | }
85 |
86 | // urlのパラメータから変数を設定
87 | export function setUrl(url: string): void {
88 | // areas 細分区域タイル塗りつぶし
89 | parameter.areas1 = getUrl(url, 'areas1');
90 | parameter.areas2 = getUrl(url, 'areas2');
91 | parameter.areas3 = getUrl(url, 'areas3');
92 | parameter.areas4 = getUrl(url, 'areas4');
93 | parameter.areas5l = getUrl(url, 'areas5l');
94 | parameter.areas5u = getUrl(url, 'areas5u');
95 | parameter.areas6l = getUrl(url, 'areas6l');
96 | parameter.areas6u = getUrl(url, 'areas6u');
97 | parameter.areas7 = getUrl(url, 'areas7');
98 | // parameter.pref = getUrl(url, 'pref');
99 |
100 | // 震度観測点
101 | parameter.point1 = getUrl(url, 'point1');
102 | parameter.point2 = getUrl(url, 'point2');
103 | parameter.point3 = getUrl(url, 'point3');
104 | parameter.point4 = getUrl(url, 'point4');
105 | parameter.point5l = getUrl(url, 'point5l');
106 | parameter.point5u = getUrl(url, 'point5u');
107 | parameter.point6l = getUrl(url, 'point6l');
108 | parameter.point6u = getUrl(url, 'point6u');
109 | parameter.point7 = getUrl(url, 'point7');
110 |
111 | // 震源地 [lon, lat] & featuresに追加
112 | parameter.epicenter = getUrl(url, 'epi');
113 |
114 | if (parameter.epicenter.length != 0){
115 | addEpicenter(parameter.epicenter);
116 | const lon = parseFloat(parameter.epicenter[0]);
117 | const lat = parseFloat(parameter.epicenter[1]);
118 |
119 | features.push(
120 | new Feature({
121 | type: 'epi',
122 | geometry: new Geom.Point(fromLonLat([lat, lon])),
123 | })
124 | );
125 | }
126 |
127 | addPosition(parameter.areas1, 'point1');
128 | addPosition(parameter.areas2, 'point2');
129 | addPosition(parameter.areas3, 'point3');
130 | addPosition(parameter.areas4, 'point4');
131 | addPosition(parameter.areas5l, 'point5l');
132 | addPosition(parameter.areas5u, 'point5u');
133 | addPosition(parameter.areas6l, 'point6l');
134 | addPosition(parameter.areas6u, 'point6u');
135 | addPosition(parameter.areas7, 'point7');
136 |
137 | selecePoints();
138 |
139 | setGeoJSON();
140 | }
141 |
142 | // 地図の中心座標、拡大率を求める際に使用する観測点を最大震度ごとにフィルター
143 | function selecePoints(){
144 | const si3OverLength = parameter.point4.length +
145 | parameter.point5l.length +
146 | parameter.point5u.length +
147 | parameter.point6l.length +
148 | parameter.point6u.length +
149 | parameter.point7.length;
150 |
151 | if (si3OverLength === 0){
152 | // 最大震度3以下の場合はそれら3つの震度観測点から
153 | addPoint(parameter.point1);
154 | addPoint(parameter.point2);
155 | addPoint(parameter.point3);
156 | }
157 | else if (parameter.point7.length !== 0){
158 | // 震度7の場合は、5弱5強6弱6強7の観測点から
159 | addPoint(parameter.point5l);
160 | addPoint(parameter.point5u);
161 | addPoint(parameter.point6l);
162 | addPoint(parameter.point6u);
163 | addPoint(parameter.point7);
164 | }else{
165 | // 最大震度4以上の場合は震度3以上の観測点から
166 | addPoint(parameter.point3);
167 | addPoint(parameter.point4);
168 | addPoint(parameter.point5l);
169 | addPoint(parameter.point5u);
170 | addPoint(parameter.point6l);
171 | addPoint(parameter.point6u);
172 | }
173 |
174 |
175 | }
176 |
177 | // 中心座標を求める
178 | export function center(): number[] {
179 | if (centerPosition[0] == 0 && centerPosition[1] == 0){
180 | return [139.570312, 35.621581];
181 | }
182 | return [centerPosition[1] / count, centerPosition[0] / count];
183 | }
184 |
185 | // GeoJSONを設定
186 | function setGeoJSON() {
187 | for(const element of parameter.point1){
188 | addGeoJSON(element, 'point1');
189 | }
190 | for(const element of parameter.point2){
191 | addGeoJSON(element, 'point2');
192 | }
193 | for(const element of parameter.point3){
194 | addGeoJSON(element, 'point3');
195 | }
196 | for(const element of parameter.point4){
197 | addGeoJSON(element, 'point4');
198 | }
199 | for(const element of parameter.point5l){
200 | addGeoJSON(element, 'point5l');
201 | }
202 | for(const element of parameter.point5u){
203 | addGeoJSON(element, 'point5u');
204 | }
205 | for(const element of parameter.point6l){
206 | addGeoJSON(element, 'point6l');
207 | }
208 | for(const element of parameter.point6u){
209 | addGeoJSON(element, 'point6u');
210 | }
211 | for(const element of parameter.point7){
212 | addGeoJSON(element, 'point7');
213 | }
214 | }
215 |
216 | // GeoJSONに各ポイントを追加
217 | function addGeoJSON(point: string, si: string){
218 | const dividedPint = point.split(':');
219 | const lon = parseFloat(dividedPint[0]);
220 | const lat = parseFloat(dividedPint[1]);
221 |
222 | features.push(
223 | new Feature({
224 | type: si,
225 | geometry: new Geom.Point(fromLonLat([lat, lon])),
226 | })
227 | );
228 | }
229 |
230 | // 拡大率を求める
231 | export function zoomLevel(): number {
232 | // 海外の場合
233 | if (isOverseas){
234 | return 1;
235 | }
236 | if ((latMaxMin[0]+latMaxMin[1]) == 0 && (lonMaxMin[0]+lonMaxMin[1]) == 0){
237 | return 6;
238 | }
239 | else{
240 | // 3平方の定理を用いて対角線長を求める。
241 | const distance = Math.sqrt(Math.pow((latMaxMin[0]-latMaxMin[1]), 2) + Math.pow((lonMaxMin[0]-lonMaxMin[1]), 2));
242 |
243 | if(distance < 1){
244 | pointScale = 0.8;
245 | return isTileColor? 9 : 10;
246 | }
247 | if(distance >= 1 && distance < 2){
248 | pointScale = 0.7;
249 | return isTileColor? 8 : 9;
250 | }
251 | if(distance >= 2 && distance < 3){
252 | pointScale = 0.6;
253 | return isTileColor? 8 : 9;
254 | }
255 | if(distance >= 3 && distance < 4){
256 | pointScale = 0.5;
257 | return isTileColor? 8 : 9;
258 | }
259 | if(distance >= 4 && distance < 5){
260 | pointScale = 0.5;
261 | return isTileColor? 7 : 9;
262 | }
263 | if(distance >= 5 && distance < 6){
264 | pointScale = 0.5;
265 | return isTileColor? 7 : 8;
266 | }
267 | if(distance >= 6 && distance < 7){
268 | pointScale = 0.5;
269 | return isTileColor? 7 : 8;
270 | }
271 | if(distance >= 7 && distance < 8){
272 | pointScale = 0.5;
273 | return isTileColor? 7 : 8;
274 | }
275 | if(distance >= 8 && distance < 9){
276 | pointScale = 0.5;
277 | return isTileColor? 7 : 8;
278 | }
279 | if(distance >= 9 && distance < 10){
280 | pointScale = 0.5;
281 | return isTileColor? 7 : 8;
282 | }
283 | if(distance >= 10){
284 | pointScale = 0.5;
285 | return isTileColor ? 7 : 7;
286 | }
287 | return 6;
288 | }
289 | }
290 |
291 | // 震度観測点、震源を返す
292 | export function pointGeoJSON(): Feature[] {
293 | return features;
294 | }
295 |
296 | // エリアタイル(細分区域)
297 | function addPosition(codes: string[], si: string){
298 | for(const code of codes){
299 | isTileColor = true;
300 | const metaData = district(code);
301 | positionCalculate(metaData);
302 |
303 | addGeoJSON(`${metaData[0]}:${metaData[1]}`, si);
304 | }
305 | }
306 |
307 | // 震源地
308 | function addEpicenter(position: string[]) {
309 | const lon = parseFloat(position[0]);
310 | const lat = parseFloat(position[1]);
311 |
312 | // 海外の地震の場合
313 | if(lon < 20.2531 || lon > 45.3326 || lat < 122.5557 || lat > 153.5912){
314 | isOverseas = true;
315 | }
316 | positionCalculate([lon, lat]);
317 | }
318 |
319 | // 震度観測点
320 | function addPoint(position: string[]){
321 | for(const element of position){
322 | const areaPosition = element.split(':');
323 | if(areaPosition.length != 2){
324 | return;
325 | }
326 | positionCalculate([parseFloat(areaPosition[0]), parseFloat(areaPosition[1])]);
327 | }
328 | }
329 |
330 | // 緯度経度から中心位置、拡大率を求めるためにすべての合計と最大最小を取得
331 | function positionCalculate(metaData: number[]) {
332 | count++;
333 |
334 | if (metaData != []){
335 | // 中心位置用のすべての合計
336 | centerPosition[0] += metaData[0];
337 | centerPosition[1] += metaData[1];
338 |
339 | // 初期設定
340 | if ((latMaxMin[0]+latMaxMin[1]) == 0 && (lonMaxMin[0]+lonMaxMin[1]) == 0){
341 | lonMaxMin[0] = metaData[0];
342 | lonMaxMin[1] = metaData[0];
343 | latMaxMin[0] = metaData[1];
344 | latMaxMin[1] = metaData[1];
345 | }else {
346 | // 各緯度の最大最小を取得
347 | if (lonMaxMin[0] < metaData[0]){
348 | lonMaxMin[0] = metaData[0];
349 | }else if(lonMaxMin[1] > metaData[0]){
350 | lonMaxMin[1] = metaData[0];
351 | }
352 | // 各経度の最大最小を取得
353 | if (latMaxMin[0] < metaData[1]){
354 | latMaxMin[0] = metaData[1];
355 | }else if (latMaxMin[1] > metaData[1]){
356 | latMaxMin[1] = metaData[1];
357 | }
358 | }
359 | }
360 | }
361 |
362 | // 細分区域のstyle
363 | export function tileStyle(feature: RenderFeature): Style{
364 |
365 | const properties = feature.getProperties();
366 |
367 | if (parameter.areas1.indexOf(properties.code) !== -1){
368 | // 震度1 タイル
369 | return new Style({
370 | fill: new Fill({
371 | color: color('1'),
372 | }),
373 | stroke: new Stroke({
374 | color: color('1Stroke'),
375 | width: 2,
376 | }),
377 | });
378 | }else if(parameter.areas2.indexOf(properties.code) !== -1){
379 | // 震度2 タイル
380 | return new Style({
381 | fill: new Fill({
382 | color: color('2'),
383 | }),
384 | stroke: new Stroke({
385 | color: color('2Stroke'),
386 | width: 2,
387 | }),
388 | });
389 | }else if(parameter.areas3.indexOf(properties.code) !== -1){
390 | // 震度3 タイル
391 | return new Style({
392 | fill: new Fill({
393 | color: color('3'),
394 | }),
395 | stroke: new Stroke({
396 | color: color('3Stroke'),
397 | width: 2,
398 | }),
399 | });
400 | }else if(parameter.areas4.indexOf(properties.code) !== -1){
401 | // 震度4 タイル
402 | return new Style({
403 | fill: new Fill({
404 | color: color('4'),
405 | }),
406 | stroke: new Stroke({
407 | color: color('4Stroke'),
408 | width: 2,
409 | }),
410 | });
411 | }else if(parameter.areas5l.indexOf(properties.code) !== -1){
412 | // 震度5弱 タイル
413 | return new Style({
414 | fill: new Fill({
415 | color: color('5l'),
416 | }),
417 | stroke: new Stroke({
418 | color: color('5lStroke'),
419 | width: 2,
420 | }),
421 | });
422 | }else if(parameter.areas5u.indexOf(properties.code) !== -1){
423 | // 震度5強 タイル
424 | return new Style({
425 | fill: new Fill({
426 | color: color('5u'),
427 | }),
428 | stroke: new Stroke({
429 | color: color('5uStroke'),
430 | width: 2,
431 | }),
432 | });
433 | }else if(parameter.areas6l.indexOf(properties.code) !== -1){
434 | // 震度6弱 タイル
435 | return new Style({
436 | fill: new Fill({
437 | color: color('6l'),
438 | }),
439 | stroke: new Stroke({
440 | color: color('6lStroke'),
441 | width: 2,
442 | }),
443 | });
444 | }else if(parameter.areas6u.indexOf(properties.code) !== -1){
445 | // 震度6強 タイル
446 | return new Style({
447 | fill: new Fill({
448 | color: color('6u'),
449 | }),
450 | stroke: new Stroke({
451 | color: color('6uStroke'),
452 | width: 2,
453 | }),
454 | });
455 | }else if(parameter.areas7.indexOf(properties.code) !== -1){
456 | // 震度7 タイル
457 | return new Style({
458 | fill: new Fill({
459 | color: color('7'),
460 | }),
461 | stroke: new Stroke({
462 | color: color('7Stroke'),
463 | width: 2,
464 | }),
465 | });
466 | }
467 |
468 | return new Style({
469 | fill: new Fill({
470 | color: color('land'),
471 | }),
472 | stroke: new Stroke({
473 | color: color('areaStroke'),
474 | width: 2,
475 | }),
476 | });
477 | }
478 |
479 | // 震度観測点、震源のstyle
480 | export function pointStyle(feature: RenderFeature): Style{
481 | const seismicIntensity = feature.getProperties().type;
482 |
483 | switch(seismicIntensity){
484 | case 'point1':
485 | return new Style({
486 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
487 | scale: pointScale,
488 | src: 'static/icon/1.png',
489 | })),
490 | });
491 |
492 | case 'point2':
493 | return new Style({
494 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
495 | scale: pointScale,
496 | src: 'static/icon/2.png',
497 | })),
498 | });
499 |
500 | case 'point3':
501 | return new Style({
502 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
503 | scale: pointScale,
504 | src: 'static/icon/3.png',
505 | })),
506 | });
507 |
508 | case 'point4':
509 | return new Style({
510 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
511 | scale: pointScale,
512 | src: 'static/icon/4.png',
513 | })),
514 | });
515 |
516 | case 'point5l':
517 | return new Style({
518 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
519 | scale: pointScale,
520 | src: 'static/icon/5l.png',
521 | })),
522 | });
523 |
524 | case 'point5u':
525 | return new Style({
526 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
527 | scale: pointScale,
528 | src: 'static/icon/5u.png',
529 | })),
530 | });
531 |
532 | case 'point6l':
533 | return new Style({
534 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
535 | scale: pointScale,
536 | src: 'static/icon/6l.png',
537 | })),
538 | });
539 |
540 | case 'point6u':
541 | return new Style({
542 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
543 | scale: pointScale,
544 | src: 'static/icon/6u.png',
545 | })),
546 | });
547 |
548 | case 'point7':
549 | return new Style({
550 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
551 | scale: pointScale,
552 | src: 'static/icon/7.png',
553 | })),
554 | });
555 |
556 | case 'epi':
557 | return new Style({
558 | image: new Icon( /** @type {olx.style.IconOptions} */{
559 | scale: 1.5,
560 | src: 'static/icon/epi.png',
561 | }),
562 | });
563 |
564 | default:
565 | return new Style({
566 | image: new Icon( /** @type {olx.style.IconOptions} */ ({
567 | scale: 0.8,
568 | src: 'static/icon/1.png',
569 | })),
570 | });
571 | }
572 | }
573 |
--------------------------------------------------------------------------------
/Pipfile.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_meta": {
3 | "hash": {
4 | "sha256": "2bcc29969d8e43649478b20d04313c9e9e6bdc90bfbb0fd622aad64b28fa364e"
5 | },
6 | "pipfile-spec": 6,
7 | "requires": {
8 | "python_version": "3.6"
9 | },
10 | "sources": [
11 | {
12 | "name": "pypi",
13 | "url": "https://pypi.org/simple",
14 | "verify_ssl": true
15 | }
16 | ]
17 | },
18 | "default": {
19 | "click": {
20 | "hashes": [
21 | "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
22 | "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
23 | ],
24 | "version": "==7.1.2"
25 | },
26 | "flask": {
27 | "hashes": [
28 | "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060",
29 | "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"
30 | ],
31 | "index": "pypi",
32 | "version": "==1.1.2"
33 | },
34 | "itsdangerous": {
35 | "hashes": [
36 | "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
37 | "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
38 | ],
39 | "version": "==1.1.0"
40 | },
41 | "jinja2": {
42 | "hashes": [
43 | "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419",
44 | "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"
45 | ],
46 | "index": "pypi",
47 | "version": "==2.11.3"
48 | },
49 | "markupsafe": {
50 | "hashes": [
51 | "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
52 | "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
53 | "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
54 | "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
55 | "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
56 | "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f",
57 | "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39",
58 | "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
59 | "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
60 | "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014",
61 | "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f",
62 | "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
63 | "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
64 | "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
65 | "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
66 | "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
67 | "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
68 | "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
69 | "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
70 | "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85",
71 | "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1",
72 | "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
73 | "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
74 | "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
75 | "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850",
76 | "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0",
77 | "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
78 | "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
79 | "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb",
80 | "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
81 | "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
82 | "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
83 | "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1",
84 | "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2",
85 | "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
86 | "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
87 | "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
88 | "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7",
89 | "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
90 | "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8",
91 | "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
92 | "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193",
93 | "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
94 | "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b",
95 | "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
96 | "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
97 | "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5",
98 | "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c",
99 | "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032",
100 | "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
101 | "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be",
102 | "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"
103 | ],
104 | "version": "==1.1.1"
105 | },
106 | "werkzeug": {
107 | "hashes": [
108 | "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43",
109 | "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
110 | ],
111 | "version": "==1.0.1"
112 | }
113 | },
114 | "develop": {
115 | "astroid": {
116 | "hashes": [
117 | "sha256:87ae7f2398b8a0ae5638ddecf9987f081b756e0e9fc071aeebdca525671fc4dc",
118 | "sha256:b31c92f545517dcc452f284bc9c044050862fbe6d93d2b3de4a215a6b384bf0d"
119 | ],
120 | "version": "==2.5"
121 | },
122 | "autopep8": {
123 | "hashes": [
124 | "sha256:d21d3901cb0da6ebd1e83fc9b0dfbde8b46afc2ede4fe32fbda0c7c6118ca094"
125 | ],
126 | "index": "pypi",
127 | "version": "==1.5.4"
128 | },
129 | "flake8": {
130 | "hashes": [
131 | "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c",
132 | "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"
133 | ],
134 | "index": "pypi",
135 | "version": "==3.8.3"
136 | },
137 | "importlib-metadata": {
138 | "hashes": [
139 | "sha256:742add720a20d0467df2f444ae41704000f50e1234f46174b51f9c6031a1bd71",
140 | "sha256:b74159469b464a99cb8cc3e21973e4d96e05d3024d337313fedb618a6e86e6f4"
141 | ],
142 | "markers": "python_version < '3.8'",
143 | "version": "==3.7.3"
144 | },
145 | "isort": {
146 | "hashes": [
147 | "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1",
148 | "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"
149 | ],
150 | "version": "==4.3.21"
151 | },
152 | "lazy-object-proxy": {
153 | "hashes": [
154 | "sha256:1d33d6f789697f401b75ce08e73b1de567b947740f768376631079290118ad39",
155 | "sha256:2f2de8f8ac0be3e40d17730e0600619d35c78c13a099ea91ef7fb4ad944ce694",
156 | "sha256:3782931963dc89e0e9a0ae4348b44762e868ea280e4f8c233b537852a8996ab9",
157 | "sha256:37d9c34b96cca6787fe014aeb651217944a967a5b165e2cacb6b858d2997ab84",
158 | "sha256:38c3865bd220bd983fcaa9aa11462619e84a71233bafd9c880f7b1cb753ca7fa",
159 | "sha256:429c4d1862f3fc37cd56304d880f2eae5bd0da83bdef889f3bd66458aac49128",
160 | "sha256:522b7c94b524389f4a4094c4bf04c2b02228454ddd17c1a9b2801fac1d754871",
161 | "sha256:57fb5c5504ddd45ed420b5b6461a78f58cbb0c1b0cbd9cd5a43ad30a4a3ee4d0",
162 | "sha256:5944a9b95e97de1980c65f03b79b356f30a43de48682b8bdd90aa5089f0ec1f4",
163 | "sha256:6f4e5e68b7af950ed7fdb594b3f19a0014a3ace0fedb86acb896e140ffb24302",
164 | "sha256:71a1ef23f22fa8437974b2d60fedb947c99a957ad625f83f43fd3de70f77f458",
165 | "sha256:8a44e9901c0555f95ac401377032f6e6af66d8fc1fbfad77a7a8b1a826e0b93c",
166 | "sha256:b6577f15d5516d7d209c1a8cde23062c0f10625f19e8dc9fb59268859778d7d7",
167 | "sha256:c8fe2d6ff0ff583784039d0255ea7da076efd08507f2be6f68583b0da32e3afb",
168 | "sha256:cadfa2c2cf54d35d13dc8d231253b7985b97d629ab9ca6e7d672c35539d38163",
169 | "sha256:cd1bdace1a8762534e9a36c073cd54e97d517a17d69a17985961265be6d22847",
170 | "sha256:ddbdcd10eb999d7ab292677f588b658372aadb9a52790f82484a37127a390108",
171 | "sha256:e7273c64bccfd9310e9601b8f4511d84730239516bada26a0c9846c9697617ef",
172 | "sha256:e7428977763150b4cf83255625a80a23dfdc94d43be7791ce90799d446b4e26f",
173 | "sha256:e960e8be509e8d6d618300a6c189555c24efde63e85acaf0b14b2cd1ac743315",
174 | "sha256:ecb5dd5990cec6e7f5c9c1124a37cb2c710c6d69b0c1a5c4aa4b35eba0ada068",
175 | "sha256:ef3f5e288aa57b73b034ce9c1f1ac753d968f9069cd0742d1d69c698a0167166",
176 | "sha256:fa5b2dee0e231fa4ad117be114251bdfe6afe39213bd629d43deb117b6a6c40a",
177 | "sha256:fa7fb7973c622b9e725bee1db569d2c2ee64d2f9a089201c5e8185d482c7352d"
178 | ],
179 | "version": "==1.5.2"
180 | },
181 | "mccabe": {
182 | "hashes": [
183 | "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
184 | "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
185 | ],
186 | "version": "==0.6.1"
187 | },
188 | "mypy": {
189 | "hashes": [
190 | "sha256:2c6cde8aa3426c1682d35190b59b71f661237d74b053822ea3d748e2c9578a7c",
191 | "sha256:3fdda71c067d3ddfb21da4b80e2686b71e9e5c72cca65fa216d207a358827f86",
192 | "sha256:5dd13ff1f2a97f94540fd37a49e5d255950ebcdf446fb597463a40d0df3fac8b",
193 | "sha256:6731603dfe0ce4352c555c6284c6db0dc935b685e9ce2e4cf220abe1e14386fd",
194 | "sha256:6bb93479caa6619d21d6e7160c552c1193f6952f0668cdda2f851156e85186fc",
195 | "sha256:81c7908b94239c4010e16642c9102bfc958ab14e36048fa77d0be3289dda76ea",
196 | "sha256:9c7a9a7ceb2871ba4bac1cf7217a7dd9ccd44c27c2950edbc6dc08530f32ad4e",
197 | "sha256:a4a2cbcfc4cbf45cd126f531dedda8485671545b43107ded25ce952aac6fb308",
198 | "sha256:b7fbfabdbcc78c4f6fc4712544b9b0d6bf171069c6e0e3cb82440dd10ced3406",
199 | "sha256:c05b9e4fb1d8a41d41dec8786c94f3b95d3c5f528298d769eb8e73d293abc48d",
200 | "sha256:d7df6eddb6054d21ca4d3c6249cae5578cb4602951fd2b6ee2f5510ffb098707",
201 | "sha256:e0b61738ab504e656d1fe4ff0c0601387a5489ca122d55390ade31f9ca0e252d",
202 | "sha256:eff7d4a85e9eea55afa34888dfeaccde99e7520b51f867ac28a48492c0b1130c",
203 | "sha256:f05644db6779387ccdb468cc47a44b4356fc2ffa9287135d05b70a98dc83b89a"
204 | ],
205 | "index": "pypi",
206 | "version": "==0.782"
207 | },
208 | "mypy-extensions": {
209 | "hashes": [
210 | "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d",
211 | "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"
212 | ],
213 | "version": "==0.4.3"
214 | },
215 | "pycodestyle": {
216 | "hashes": [
217 | "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367",
218 | "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"
219 | ],
220 | "version": "==2.6.0"
221 | },
222 | "pyflakes": {
223 | "hashes": [
224 | "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92",
225 | "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"
226 | ],
227 | "version": "==2.2.0"
228 | },
229 | "pylint": {
230 | "hashes": [
231 | "sha256:7dd78437f2d8d019717dbf287772d0b2dbdfd13fc016aa7faa08d67bccc46adc",
232 | "sha256:d0ece7d223fe422088b0e8f13fa0a1e8eb745ebffcb8ed53d3e95394b6101a1c"
233 | ],
234 | "index": "pypi",
235 | "version": "==2.5.3"
236 | },
237 | "toml": {
238 | "hashes": [
239 | "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b",
240 | "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
241 | ],
242 | "version": "==0.10.2"
243 | },
244 | "typed-ast": {
245 | "hashes": [
246 | "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1",
247 | "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d",
248 | "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6",
249 | "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd",
250 | "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37",
251 | "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151",
252 | "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07",
253 | "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440",
254 | "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70",
255 | "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496",
256 | "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea",
257 | "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400",
258 | "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc",
259 | "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606",
260 | "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc",
261 | "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581",
262 | "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412",
263 | "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a",
264 | "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2",
265 | "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787",
266 | "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f",
267 | "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937",
268 | "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64",
269 | "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487",
270 | "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b",
271 | "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41",
272 | "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a",
273 | "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3",
274 | "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166",
275 | "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10"
276 | ],
277 | "markers": "implementation_name == 'cpython' and python_version < '3.8'",
278 | "version": "==1.4.2"
279 | },
280 | "typing-extensions": {
281 | "hashes": [
282 | "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918",
283 | "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c",
284 | "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"
285 | ],
286 | "markers": "python_version < '3.8'",
287 | "version": "==3.7.4.3"
288 | },
289 | "wrapt": {
290 | "hashes": [
291 | "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
292 | ],
293 | "version": "==1.12.1"
294 | },
295 | "zipp": {
296 | "hashes": [
297 | "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76",
298 | "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098"
299 | ],
300 | "version": "==3.4.1"
301 | }
302 | }
303 | }
304 |
--------------------------------------------------------------------------------
/tools/converted.json:
--------------------------------------------------------------------------------
1 | {
2 | "100": [
3 | "石狩地方北部",
4 | "43.4151931842515",
5 | "141.49525560707"
6 | ],
7 | "101": [
8 | "石狩地方中部",
9 | "43.010872239411",
10 | "141.291800149006"
11 | ],
12 | "102": [
13 | "石狩地方南部",
14 | "42.8401853638524",
15 | "141.496898327669"
16 | ],
17 | "105": [
18 | "渡島地方北部",
19 | "42.2715261571357",
20 | "140.227924212031"
21 | ],
22 | "106": [
23 | "渡島地方東部",
24 | "41.9171303977866",
25 | "140.730104639953"
26 | ],
27 | "107": [
28 | "渡島地方西部",
29 | "41.5890677088811",
30 | "140.250720331631"
31 | ],
32 | "110": [
33 | "檜山地方",
34 | "42.1200892176946",
35 | "140.117224870458"
36 | ],
37 | "115": [
38 | "後志地方北部",
39 | "43.1570832606841",
40 | "140.766313140274"
41 | ],
42 | "116": [
43 | "後志地方東部",
44 | "42.8279967803352",
45 | "140.848074079286"
46 | ],
47 | "117": [
48 | "後志地方西部",
49 | "42.8212795958583",
50 | "140.381809567057"
51 | ],
52 | "119": [
53 | "北海道奥尻島",
54 | "42.1553384492168",
55 | "139.473175204362"
56 | ],
57 | "120": [
58 | "空知地方北部",
59 | "43.8088241231416",
60 | "142.003884974433"
61 | ],
62 | "121": [
63 | "空知地方中部",
64 | "43.510911886567",
65 | "141.982748253998"
66 | ],
67 | "122": [
68 | "空知地方南部",
69 | "43.1340267466936",
70 | "141.912806597305"
71 | ],
72 | "125": [
73 | "上川地方北部",
74 | "44.3385114570841",
75 | "142.392451316326"
76 | ],
77 | "126": [
78 | "上川地方中部",
79 | "43.735583365414",
80 | "142.644551805745"
81 | ],
82 | "127": [
83 | "上川地方南部",
84 | "43.2002642741056",
85 | "142.504343797753"
86 | ],
87 | "130": [
88 | "留萌地方中北部",
89 | "44.4989700095592",
90 | "141.878134955653"
91 | ],
92 | "131": [
93 | "留萌地方南部",
94 | "43.9417545962386",
95 | "141.733774434506"
96 | ],
97 | "135": [
98 | "宗谷地方北部",
99 | "45.1894445178067",
100 | "141.918210986196"
101 | ],
102 | "136": [
103 | "宗谷地方南部",
104 | "44.8665568352299",
105 | "142.43855171702"
106 | ],
107 | "139": [
108 | "北海道利尻礼文",
109 | "45.2387861660525",
110 | "141.166627699514"
111 | ],
112 | "140": [
113 | "網走地方",
114 | "43.8152965753998",
115 | "144.382103894481"
116 | ],
117 | "141": [
118 | "北見地方",
119 | "43.8226200374306",
120 | "143.673887997429"
121 | ],
122 | "142": [
123 | "紋別地方",
124 | "44.1637059557543",
125 | "143.183999955972"
126 | ],
127 | "145": [
128 | "胆振地方西部",
129 | "42.613359798762",
130 | "140.894124905183"
131 | ],
132 | "146": [
133 | "胆振地方中東部",
134 | "42.6805610965227",
135 | "141.697396642325"
136 | ],
137 | "150": [
138 | "日高地方西部",
139 | "42.7170038822428",
140 | "142.406748749235"
141 | ],
142 | "151": [
143 | "日高地方中部",
144 | "42.4684979347206",
145 | "142.58710610633"
146 | ],
147 | "152": [
148 | "日高地方東部",
149 | "42.2081311544082",
150 | "142.999868946709"
151 | ],
152 | "155": [
153 | "十勝地方北部",
154 | "43.3665628834425",
155 | "143.2988585723"
156 | ],
157 | "156": [
158 | "十勝地方中部",
159 | "42.9092933852102",
160 | "143.296318802107"
161 | ],
162 | "157": [
163 | "十勝地方南部",
164 | "42.4845011298408",
165 | "143.153859068292"
166 | ],
167 | "160": [
168 | "釧路地方北部",
169 | "43.5472480898255",
170 | "144.399883448184"
171 | ],
172 | "161": [
173 | "釧路地方中南部",
174 | "43.180280482733",
175 | "144.390527256347"
176 | ],
177 | "165": [
178 | "根室地方北部",
179 | "43.7457962290942",
180 | "144.960978939025"
181 | ],
182 | "166": [
183 | "根室地方中部",
184 | "43.3921494419389",
185 | "145.017145856032"
186 | ],
187 | "167": [
188 | "根室地方南部",
189 | "43.3154699204573",
190 | "145.585475423304"
191 | ],
192 | "200": [
193 | "青森県津軽北部",
194 | "40.9012879819584",
195 | "140.602759340444"
196 | ],
197 | "201": [
198 | "青森県津軽南部",
199 | "40.5837111506307",
200 | "140.355676664483"
201 | ],
202 | "202": [
203 | "青森県三八上北",
204 | "40.6162098596363",
205 | "141.217603896412"
206 | ],
207 | "203": [
208 | "青森県下北",
209 | "41.3095280542848",
210 | "141.077901041411"
211 | ],
212 | "210": [
213 | "岩手県沿岸北部",
214 | "39.8488708107972",
215 | "141.720190761799"
216 | ],
217 | "211": [
218 | "岩手県沿岸南部",
219 | "39.2071220069916",
220 | "141.702753491058"
221 | ],
222 | "212": [
223 | "岩手県内陸北部",
224 | "39.931554542287",
225 | "141.183482398172"
226 | ],
227 | "213": [
228 | "岩手県内陸南部",
229 | "39.2215346022004",
230 | "141.160891785618"
231 | ],
232 | "220": [
233 | "宮城県北部",
234 | "38.7081798510326",
235 | "141.022771333641"
236 | ],
237 | "221": [
238 | "宮城県南部",
239 | "38.0409381021126",
240 | "140.661089277841"
241 | ],
242 | "222": [
243 | "宮城県中部",
244 | "38.3899877375334",
245 | "141.004064365124"
246 | ],
247 | "230": [
248 | "秋田県沿岸北部",
249 | "40.1200513403522",
250 | "140.096455999147"
251 | ],
252 | "231": [
253 | "秋田県沿岸南部",
254 | "39.4444677774327",
255 | "140.171307132117"
256 | ],
257 | "232": [
258 | "秋田県内陸北部",
259 | "40.169818598738",
260 | "140.578371768009"
261 | ],
262 | "233": [
263 | "秋田県内陸南部",
264 | "39.4107479536497",
265 | "140.555936110668"
266 | ],
267 | "240": [
268 | "山形県庄内",
269 | "38.7268035929364",
270 | "139.885451803039"
271 | ],
272 | "241": [
273 | "山形県最上",
274 | "38.7924891508531",
275 | "140.295120305627"
276 | ],
277 | "242": [
278 | "山形県村山",
279 | "38.3859722184277",
280 | "140.279056046712"
281 | ],
282 | "243": [
283 | "山形県置賜",
284 | "37.9990598165106",
285 | "139.976229298984"
286 | ],
287 | "250": [
288 | "福島県中通り",
289 | "37.3914691547508",
290 | "140.412029876442"
291 | ],
292 | "251": [
293 | "福島県浜通り",
294 | "37.3509163241567",
295 | "140.838009636233"
296 | ],
297 | "252": [
298 | "福島県会津",
299 | "37.3884896876914",
300 | "139.696186888682"
301 | ],
302 | "300": [
303 | "茨城県北部",
304 | "36.5650203041214",
305 | "140.4501572932"
306 | ],
307 | "301": [
308 | "茨城県南部",
309 | "36.0932846746818",
310 | "140.201946458283"
311 | ],
312 | "310": [
313 | "栃木県北部",
314 | "36.8824768612142",
315 | "139.796845705343"
316 | ],
317 | "311": [
318 | "栃木県南部",
319 | "36.512030461272",
320 | "139.834443306022"
321 | ],
322 | "320": [
323 | "群馬県北部",
324 | "36.6945826617991",
325 | "138.928782969845"
326 | ],
327 | "321": [
328 | "群馬県南部",
329 | "36.3350541464469",
330 | "139.031683822158"
331 | ],
332 | "330": [
333 | "埼玉県北部",
334 | "36.120612876943",
335 | "139.362415936756"
336 | ],
337 | "331": [
338 | "埼玉県南部",
339 | "35.9073583025148",
340 | "139.545329395159"
341 | ],
342 | "332": [
343 | "埼玉県秩父",
344 | "35.9859328237761",
345 | "138.960967734764"
346 | ],
347 | "340": [
348 | "千葉県北東部",
349 | "35.651395253314",
350 | "140.471172440167"
351 | ],
352 | "341": [
353 | "千葉県北西部",
354 | "35.6937245250665",
355 | "140.134108404433"
356 | ],
357 | "342": [
358 | "千葉県南部",
359 | "35.203428130897",
360 | "140.046035650559"
361 | ],
362 | "350": [
363 | "東京都23区",
364 | "35.6910145729301",
365 | "139.735181991436"
366 | ],
367 | "351": [
368 | "東京都多摩東部",
369 | "35.676657079624",
370 | "139.404014712941"
371 | ],
372 | "352": [
373 | "東京都多摩西部",
374 | "35.7841008782466",
375 | "139.133267741272"
376 | ],
377 | "354": [
378 | "神津島",
379 | "34.2141240116488",
380 | "139.14756016141"
381 | ],
382 | "355": [
383 | "伊豆大島",
384 | "34.737504801755",
385 | "139.398860680118"
386 | ],
387 | "356": [
388 | "新島",
389 | "34.3908705243122",
390 | "139.261953719004"
391 | ],
392 | "357": [
393 | "三宅島",
394 | "34.0281970490155",
395 | "139.543209588378"
396 | ],
397 | "358": [
398 | "八丈島",
399 | "33.0582036184704",
400 | "139.791238765374"
401 | ],
402 | "359": [
403 | "小笠原",
404 | "26.4684789419563",
405 | "142.005446132563"
406 | ],
407 | "360": [
408 | "神奈川県東部",
409 | "35.4158798516042",
410 | "139.541830262692"
411 | ],
412 | "361": [
413 | "神奈川県西部",
414 | "35.4187572372285",
415 | "139.170065099832"
416 | ],
417 | "370": [
418 | "新潟県上越",
419 | "37.028577309026",
420 | "138.153987349162"
421 | ],
422 | "371": [
423 | "新潟県中越",
424 | "37.2523218878926",
425 | "138.885591560404"
426 | ],
427 | "372": [
428 | "新潟県下越",
429 | "37.9351085765371",
430 | "139.396426040876"
431 | ],
432 | "375": [
433 | "新潟県佐渡",
434 | "38.0443952706501",
435 | "138.389834987216"
436 | ],
437 | "380": [
438 | "富山県東部",
439 | "36.6540191718457",
440 | "137.437080599991"
441 | ],
442 | "381": [
443 | "富山県西部",
444 | "36.6116154042673",
445 | "136.942745221795"
446 | ],
447 | "390": [
448 | "石川県能登",
449 | "37.2064867460047",
450 | "136.948180718148"
451 | ],
452 | "391": [
453 | "石川県加賀",
454 | "36.3778009761394",
455 | "136.609662359906"
456 | ],
457 | "400": [
458 | "福井県嶺北",
459 | "35.9656984036161",
460 | "136.361479635618"
461 | ],
462 | "401": [
463 | "福井県嶺南",
464 | "35.5232068049401",
465 | "135.839517060097"
466 | ],
467 | "411": [
468 | "山梨県中・西部",
469 | "35.6343864344763",
470 | "138.493498877733"
471 | ],
472 | "412": [
473 | "山梨県東部・富士五湖",
474 | "35.5700482506783",
475 | "138.883889021463"
476 | ],
477 | "420": [
478 | "長野県北部",
479 | "36.6881921251618",
480 | "138.150078155994"
481 | ],
482 | "421": [
483 | "長野県中部",
484 | "36.1891456600816",
485 | "138.169651115476"
486 | ],
487 | "422": [
488 | "長野県南部",
489 | "35.654790923255",
490 | "137.82736831621"
491 | ],
492 | "430": [
493 | "岐阜県飛騨",
494 | "36.1187019703343",
495 | "137.226141814707"
496 | ],
497 | "431": [
498 | "岐阜県美濃東部",
499 | "35.4816794817731",
500 | "137.316761509708"
501 | ],
502 | "432": [
503 | "岐阜県美濃中西部",
504 | "35.6069261648036",
505 | "136.719663959301"
506 | ],
507 | "440": [
508 | "静岡県伊豆",
509 | "34.8745640375043",
510 | "138.938865846631"
511 | ],
512 | "441": [
513 | "静岡県東部",
514 | "35.2402420829625",
515 | "138.771488626138"
516 | ],
517 | "442": [
518 | "静岡県中部",
519 | "35.1039139770262",
520 | "138.238197712947"
521 | ],
522 | "443": [
523 | "静岡県西部",
524 | "34.8836462400842",
525 | "137.853989125771"
526 | ],
527 | "450": [
528 | "愛知県東部",
529 | "34.9312735856154",
530 | "137.485860953082"
531 | ],
532 | "451": [
533 | "愛知県西部",
534 | "35.0894580120775",
535 | "137.073328534043"
536 | ],
537 | "460": [
538 | "三重県北部",
539 | "35.0047600275823",
540 | "136.526626961888"
541 | ],
542 | "461": [
543 | "三重県中部",
544 | "34.6191734898224",
545 | "136.313318480575"
546 | ],
547 | "462": [
548 | "三重県南部",
549 | "34.213724255505",
550 | "136.371820296006"
551 | ],
552 | "500": [
553 | "滋賀県北部",
554 | "35.3900869659917",
555 | "136.165278079797"
556 | ],
557 | "501": [
558 | "滋賀県南部",
559 | "35.0456639623281",
560 | "136.104847445449"
561 | ],
562 | "510": [
563 | "京都府北部",
564 | "35.46787882351",
565 | "135.184751464577"
566 | ],
567 | "511": [
568 | "京都府南部",
569 | "35.0789732223378",
570 | "135.65562115477"
571 | ],
572 | "520": [
573 | "大阪府北部",
574 | "34.783462719498",
575 | "135.548853115561"
576 | ],
577 | "521": [
578 | "大阪府南部",
579 | "34.4415819650787",
580 | "135.455666991985"
581 | ],
582 | "530": [
583 | "兵庫県北部",
584 | "35.4408410901881",
585 | "134.71872293536"
586 | ],
587 | "531": [
588 | "兵庫県南東部",
589 | "34.9317329074819",
590 | "135.099406804436"
591 | ],
592 | "532": [
593 | "兵庫県南西部",
594 | "34.9963324958315",
595 | "134.553780088888"
596 | ],
597 | "535": [
598 | "兵庫県淡路島",
599 | "34.3621637869522",
600 | "134.838411125225"
601 | ],
602 | "540": [
603 | "奈良県",
604 | "34.3192656265881",
605 | "135.868735482575"
606 | ],
607 | "550": [
608 | "和歌山県北部",
609 | "34.1028777946241",
610 | "135.3608210494"
611 | ],
612 | "551": [
613 | "和歌山県南部",
614 | "33.726110390324",
615 | "135.656947155252"
616 | ],
617 | "560": [
618 | "鳥取県東部",
619 | "35.3918635375182",
620 | "134.24926000843"
621 | ],
622 | "562": [
623 | "鳥取県中部",
624 | "35.4044079729083",
625 | "133.789229650776"
626 | ],
627 | "563": [
628 | "鳥取県西部",
629 | "35.2994577316796",
630 | "133.386845026069"
631 | ],
632 | "570": [
633 | "島根県東部",
634 | "35.2992242948002",
635 | "132.951146669834"
636 | ],
637 | "571": [
638 | "島根県西部",
639 | "34.7928361651109",
640 | "132.192509559817"
641 | ],
642 | "575": [
643 | "島根県隠岐",
644 | "36.2013585892796",
645 | "133.208945191763"
646 | ],
647 | "580": [
648 | "岡山県北部",
649 | "35.0926200808239",
650 | "133.823930457215"
651 | ],
652 | "581": [
653 | "岡山県南部",
654 | "34.7162121935879",
655 | "133.802434935664"
656 | ],
657 | "590": [
658 | "広島県北部",
659 | "34.7991919297154",
660 | "132.765038747369"
661 | ],
662 | "591": [
663 | "広島県南東部",
664 | "34.5591852337011",
665 | "133.169466482037"
666 | ],
667 | "592": [
668 | "広島県南西部",
669 | "34.3973239449629",
670 | "132.518452780871"
671 | ],
672 | "600": [
673 | "徳島県北部",
674 | "34.0127123218254",
675 | "134.155924755563"
676 | ],
677 | "601": [
678 | "徳島県南部",
679 | "33.786975641433",
680 | "134.365503868782"
681 | ],
682 | "610": [
683 | "香川県東部",
684 | "34.3007139401047",
685 | "134.167233844802"
686 | ],
687 | "611": [
688 | "香川県西部",
689 | "34.1906564629378",
690 | "133.817468763363"
691 | ],
692 | "620": [
693 | "愛媛県東予",
694 | "33.9500060023073",
695 | "133.220443392779"
696 | ],
697 | "621": [
698 | "愛媛県中予",
699 | "33.7395076842639",
700 | "132.869283566924"
701 | ],
702 | "622": [
703 | "愛媛県南予",
704 | "33.3472717034619",
705 | "132.610302944072"
706 | ],
707 | "630": [
708 | "高知県東部",
709 | "33.5201666208914",
710 | "134.065073389848"
711 | ],
712 | "631": [
713 | "高知県中部",
714 | "33.6512155360333",
715 | "133.501258893035"
716 | ],
717 | "632": [
718 | "高知県西部",
719 | "33.133110128076",
720 | "132.935115295384"
721 | ],
722 | "700": [
723 | "山口県北部",
724 | "34.3572476995743",
725 | "131.359776226827"
726 | ],
727 | "702": [
728 | "山口県西部",
729 | "34.1223591161337",
730 | "131.082290946589"
731 | ],
732 | "703": [
733 | "山口県東部",
734 | "34.1095644130935",
735 | "132.089922630929"
736 | ],
737 | "704": [
738 | "山口県中部",
739 | "34.1800151405053",
740 | "131.673551454039"
741 | ],
742 | "710": [
743 | "福岡県福岡",
744 | "33.5952497614343",
745 | "130.403935574232"
746 | ],
747 | "711": [
748 | "福岡県北九州",
749 | "33.741810156755",
750 | "130.908182834785"
751 | ],
752 | "712": [
753 | "福岡県筑豊",
754 | "33.6260119930602",
755 | "130.73968769485"
756 | ],
757 | "713": [
758 | "福岡県筑後",
759 | "33.2675430810854",
760 | "130.636383954678"
761 | ],
762 | "720": [
763 | "佐賀県北部",
764 | "33.3679017829721",
765 | "129.948976438451"
766 | ],
767 | "721": [
768 | "佐賀県南部",
769 | "33.2461579827258",
770 | "130.202283894043"
771 | ],
772 | "730": [
773 | "長崎県北部",
774 | "33.2292689757298",
775 | "129.696488221909"
776 | ],
777 | "731": [
778 | "長崎県南西部",
779 | "32.8706410511579",
780 | "129.881495729514"
781 | ],
782 | "732": [
783 | "長崎県島原半島",
784 | "32.745846722548",
785 | "130.257068659466"
786 | ],
787 | "735": [
788 | "長崎県対馬",
789 | "34.4084515600988",
790 | "129.32597991825"
791 | ],
792 | "736": [
793 | "長崎県壱岐",
794 | "33.7855297970237",
795 | "129.716691163743"
796 | ],
797 | "737": [
798 | "長崎県五島",
799 | "32.818834297997",
800 | "128.886870310454"
801 | ],
802 | "740": [
803 | "熊本県阿蘇",
804 | "32.9619259755635",
805 | "131.108361031715"
806 | ],
807 | "741": [
808 | "熊本県熊本",
809 | "32.7626764454036",
810 | "130.784193436199"
811 | ],
812 | "742": [
813 | "熊本県球磨",
814 | "32.2823561048014",
815 | "130.847453124349"
816 | ],
817 | "743": [
818 | "熊本県天草・芦北",
819 | "32.3538263913408",
820 | "130.287882170458"
821 | ],
822 | "750": [
823 | "大分県北部",
824 | "33.4988415016572",
825 | "131.359900066464"
826 | ],
827 | "751": [
828 | "大分県中部",
829 | "33.2228447448591",
830 | "131.583987201979"
831 | ],
832 | "752": [
833 | "大分県南部",
834 | "32.9206720136167",
835 | "131.670221607535"
836 | ],
837 | "753": [
838 | "大分県西部",
839 | "33.1772178549274",
840 | "131.133437868809"
841 | ],
842 | "760": [
843 | "宮崎県北部平野部",
844 | "32.4260541648634",
845 | "131.521245562521"
846 | ],
847 | "761": [
848 | "宮崎県北部山沿い",
849 | "32.5122652343594",
850 | "131.26564109005"
851 | ],
852 | "762": [
853 | "宮崎県南部平野部",
854 | "31.7648845865247",
855 | "131.319831819666"
856 | ],
857 | "763": [
858 | "宮崎県南部山沿い",
859 | "31.924251908024",
860 | "131.029034121253"
861 | ],
862 | "770": [
863 | "鹿児島県薩摩",
864 | "31.7496641914499",
865 | "130.484942719855"
866 | ],
867 | "771": [
868 | "鹿児島県大隅",
869 | "31.4208972338992",
870 | "130.924936450357"
871 | ],
872 | "774": [
873 | "鹿児島県十島村",
874 | "29.6888031620734",
875 | "129.712994312664"
876 | ],
877 | "775": [
878 | "鹿児島県甑島",
879 | "31.755201316317",
880 | "129.786634664733"
881 | ],
882 | "776": [
883 | "鹿児島県種子島",
884 | "30.5980929866606",
885 | "130.918494282116"
886 | ],
887 | "777": [
888 | "鹿児島県屋久島",
889 | "30.346878132117",
890 | "130.501382304569"
891 | ],
892 | "778": [
893 | "鹿児島県奄美北部",
894 | "28.2881614692973",
895 | "129.439179108493"
896 | ],
897 | "779": [
898 | "鹿児島県奄美南部",
899 | "27.6311862243228",
900 | "128.829035604575"
901 | ],
902 | "800": [
903 | "沖縄県本島北部",
904 | "26.6554705574845",
905 | "128.058172038374"
906 | ],
907 | "801": [
908 | "沖縄県本島中南部",
909 | "26.2609127490052",
910 | "127.732601148849"
911 | ],
912 | "802": [
913 | "沖縄県久米島",
914 | "26.4106427459504",
915 | "126.83288263237"
916 | ],
917 | "803": [
918 | "沖縄県大東島",
919 | "25.834855523386",
920 | "131.258912306859"
921 | ],
922 | "804": [
923 | "沖縄県宮古島",
924 | "24.7741858594093",
925 | "125.242722844898"
926 | ],
927 | "805": [
928 | "沖縄県石垣島",
929 | "24.4656012809041",
930 | "124.188763379481"
931 | ],
932 | "806": [
933 | "沖縄県与那国島",
934 | "24.4553666704242",
935 | "122.988996964954"
936 | ],
937 | "807": [
938 | "沖縄県西表島",
939 | "24.3219449294693",
940 | "123.82817843395"
941 | ]
942 | }
--------------------------------------------------------------------------------
/tools/TohokuEarthquake.txt:
--------------------------------------------------------------------------------
1 | http://localhost:8080/?ti=震源・震度情報&epi=38.0,142.9&point7=&point6u=36.251:139.9323,38.1715:140.8918,38.4263:141.2106,37.3433:141.0129,38.6648:141.1595,38.6291:141.189,37.2529:140.3434,38.0982:140.6586,36.5915:140.6453,36.631:139.9866,37.2826:140.9935,37.8764:140.9196,37.1228:140.1914,38.4672:140.8801,38.5398:141.1282,38.574:140.9556,38.4783:141.0977,38.2663:140.9293,38.3175:141.0193,37.4949:140.9995&point6l=38.4002:141.1643,36.8825:139.9837,37.2895:140.2119,38.7348:141.3106,38.1777:140.6432,37.2342:141.0016,38.4466:140.8874,35.8168:140.2015,38.0085:140.621,37.5976:140.5811,37.2842:140.3689,36.3618:140.111,37.3216:140.6576,38.3177:140.6357,36.9479:140.9034,39.2701:141.8561,36.4106:139.3251,37.0198:140.121,37.8202:140.5084,36.3523:140.5955,38.8269:140.9917,38.2622:140.8976,36.1251:140.0903,38.3682:140.6605,39.4757:141.2887,37.8495:140.5165,37.6385:140.9849,37.5848:140.4312,37.3364:140.8132,38.0378:140.8526,37.2868:140.6263,36.9417:140.0828,37.3957:140.1325,36.659:140.1513,37.4361:140.7947,38.6919:141.1877,38.3364:140.8864,38.2428:140.914,37.081:140.4128,39.0512:141.1241,36.2393:140.3526,36.7061:140.7068,37.9763:140.7818,37.1488:140.3502,38.6579:141.2764,35.8992:140.0764,36.4368:140.0225,37.6076:140.461,36.1586:140.5165,38.2731:140.7894,38.4281:141.299,38.3303:140.9758,37.3961:140.3622,37.401:140.3603,38.138:140.927,37.4061:140.9632,38.8808:141.5747,38.7102:141.235,37.0544:140.3056,37.2013:140.3386,38.1049:140.8699,37.2778:140.6349,36.3815:140.4683,38.5142:141.0597,36.6584:140.0939,37.6792:140.7352,36.5482:140.0582,38.3052:141.5044,38.3854:141.0691,36.0227:139.7227,38.5876:141.251,39.065:141.7149,36.2341:140.1894,37.3379:140.8093,37.5474:140.1078,36.4404:140.0134,37.1079:140.7971,37.4375:140.6441,37.7015:140.9661,35.8323:140.1458,37.2107:140.409,39.0831:141.6657,37.1417:140.1554,38.0494:140.7308,36.5427:140.4109,36.1047:140.1886,36.9069:140.7929,37.0299:140.3796&point5u=35.8979:140.4994,38.3046:141.0592,36.1024:139.409,36.2859:139.8047,36.6831:139.9013,35.8098:139.7212,36.5321:140.1876,36.0781:139.7258,36.5497:139.8684,36.56:139.7675,36.1277:139.7024,36.139:139.4556,37.7338:140.6079,36.1391:139.2816,38.1496:140.2678,35.817:139.678,37.0911:140.9035,35.6319:140.173,35.7432:139.7696,35.7067:139.8684,37.8699:140.7889,36.0258:139.7367,39.9203:141.082,37.3689:140.87,36.322:139.0033,39.2928:141.1092,37.5035:140.7645,35.8471:140.6026,35.7073:139.6638,38.5489:140.8499,36.6137:140.565,36.734:139.6885,36.0422:139.3995,38.7573:141.1766,36.4552:139.076,38.5202:140.9382,37.5132:140.3939,36.4393:139.9099,36.4674:140.0934,35.9016:140.4053,35.6896:139.7618,37.1323:140.2156,36.8627:140.122,35.681:140.0983,35.7871:139.6589,39.1454:141.152,35.7089:140.7136,35.5225:139.7525,38.5718:140.8548,35.6125:140.1449,37.8455:140.6014,35.9537:140.3194,36.1314:139.6018,37.5615:139.8216,35.6728:139.8173,35.5291:139.7062,35.5727:140.3333,35.4399:139.6534,35.3077:139.2521,36.1727:139.5486,35.7692:140.3864,35.7356:140.4677,35.9646:139.7446,36.3425:139.4519,36.1021:139.5749,35.6025:138.5442,37.6407:140.9555,37.6422:140.9573,36.7823:140.3605,35.7488:139.7981,37.9043:140.0996,36.3147:139.8001,37.0891:140.5557,35.9514:139.9754,35.8409:140.2439,40.5312:141.3077,35.9112:140.0494,35.8296:139.8773,36.0595:139.6668,40.5991:141.3978,38.9015:141.5684,37.9115:140.7653,35.1111:139.8358,38.7943:141.5051,35.6073:140.1064,39.6266:141.7908,37.2146:140.9945,35.7907:139.8288,38.0554:140.7623,36.2525:139.4623,35.373:139.3839,36.0417:139.8828,37.7613:140.4799,37.2556:140.2471,36.6569:140.1514,37.5115:139.8294,36.2622:139.6493,37.441:140.4925,38.4565:141.3457,36.8067:139.9241,39.1293:141.1377,39.4844:141.147,36.0399:139.4537,35.8593:139.9588,40.7279:141.2579,37.5573:140.1048,39.2758:141.8857,36.6853:139.9665,35.8028:140.5742,35.7263:139.6666,36.1782:139.7554,36.6616:139.1342,36.1905:139.6614,36.2113:139.5342,39.2569:141.0983,37.4948:139.9297,36.1816:139.8911,36.2479:139.4048,40.4041:141.4371,35.8838:139.6262,38.6133:141.3019,36.2178:139.4424,37.7773:140.5961,39.1915:141.1736,36.9617:140.046,36.0658:139.5222,38.6001:140.4054,37.7585:140.4707,39.7841:141.3295,37.1022:140.3489,36.8714:140.4248,35.7664:140.6186,38.3331:140.283,35.7121:139.6091,37.8192:140.563,39.6988:141.1658,40.4525:141.6209,36.9776:139.8095&point5l=36.3263:138.8872,35.7512:139.7093,35.7416:139.5589,39.5461:140.3697,35.727:140.3428,40.1819:141.7641,36.3558:139.2988,35.4047:139.353,35.8368:139.5803,36.3769:139.7363,36.0566:139.3205,40.6127:141.2059,35.9345:139.3931,38.0045:140.0458,35.6706:139.772,36.4052:139.3306,37.5518:139.9259,36.6578:139.0784,35.702:138.7266,35.7177:139.566,36.646:139.0428,37.0655:138.876,35.6282:139.4034,35.3482:139.1394,36.9716:139.9164,35.8745:140.031,35.9873:139.1001,35.6796:139.7764,35.7126:139.78,35.6506:139.5407,35.3985:139.3112,38.6151:140.7585,39.9728:141.2122,40.2719:141.3038,38.2938:141.0042,35.8077:139.7242,35.7546:139.4685,37.2556:139.8721,35.8372:140.6686,35.708:140.5642,35.3611:140.3193,36.6448:139.1577,35.2988:140.0755,37.6573:140.5376,39.5766:141.8197,35.6991:139.7464,36.3015:139.2981,35.8256:139.6798,40.7448:141.158,40.5951:141.4284,38.7659:139.9047,35.7186:139.7902,35.4448:139.3909,36.0209:138.4921,35.5006:138.761,36.181:139.4354,40.8721:141.1416,36.9573:140.4095,36.2428:139.1937,38.7571:140.3125,35.6469:138.6918,38.7888:139.9644,36.2769:139.2485,35.708:139.6995,37.5262:139.7195,35.3:140.3866,35.8574:139.6489,36.0:139.624,35.5714:139.3733,35.8568:139.5491,37.0423:140.5097,35.4285:140.2882,35.5351:140.4403,35.7286:139.4775,36.427:139.8039,35.6092:139.7302,35.9898:139.0742,39.3483:140.0182,35.6459:139.6529,39.6472:141.9464,35.6167:139.7401,35.4973:138.7549,35.6713:139.3952,35.7081:139.7582,39.5997:141.6789,39.9878:141.3264,38.7375:140.1438,35.7435:139.8472,38.7041:140.2304,35.3102:138.9312,36.2912:139.3754,35.3267:139.1566,40.3268:141.4606,37.5622:140.5094,38.8576:139.9545,39.0121:139.9088,38.0551:140.1484,35.7857:139.5264,36.2343:139.5331,39.6953:141.1478,35.335:139.4032,35.7333:140.692,35.0346:139.8873,36.5692:139.8861,35.5606:140.1761,39.6967:140.9759,35.8529:139.4122,35.8578:140.1391,35.7972:139.5937,36.1771:139.1814,35.5604:140.368,35.6379:139.5046,40.3784:141.2587,40.1103:141.8177,35.6999:138.7215,35.4106:138.8611,38.4265:140.3135,35.6108:139.6433,35.4979:140.1153,35.6995:139.503,40.6095:141.3249,35.5719:139.6069,36.3375:139.7016,35.3207:139.0996,40.1904:141.7755,39.6472:141.9655,36.8061:139.4204,35.8563:139.9029,35.5718:138.5575,39.4691:141.2913,35.4424:139.3618,36.2488:138.4768,35.9774:139.5932,36.4474:139.0098,35.9258:139.8151,35.4122:140.354,37.4915:139.8741,35.647:140.1156,36.2516:139.1448,35.7127:139.8842,37.0217:140.3775,35.7107:139.8015,35.8225:139.8392,36.1151:139.3349,39.6336:141.4376,39.9264:141.0953,40.5138:141.4805,36.3948:139.2811,36.1476:139.3884,35.7211:139.8184,35.5303:139.4302,38.4833:140.3804,35.0219:139.962,35.6056:138.4916,35.6658:140.5048,35.9573:139.403,36.4142:139.2105,36.2236:139.3683,38.7737:140.78,35.6413:140.3761,36.7776:139.8506,35.7399:140.8578,35.6976:139.8245,35.6644:139.3276,38.4306:140.3907,35.8283:139.5263,38.8888:139.9289,36.4287:139.7486,35.9945:139.6624,38.5938:140.3727,35.4478:139.6425,35.6548:138.5677,35.9034:139.4826,38.0028:140.1891,35.7361:139.7834,37.6036:139.7554,36.0595:139.6013,37.9223:140.1166,35.7205:139.7364,35.631:139.6919,35.6672:138.554,38.3623:140.3779,36.2333:139.7408,37.4531:139.8843,35.7453:139.4267,35.9415:139.316,35.3307:139.2188,36.4178:139.158,35.6999:139.6364,34.3552:139.2678,40.4666:141.3819,35.81:140.5019,35.7108:139.4628,36.2448:139.5419,35.4309:139.439,40.6974:141.151,36.1004:139.6672,35.7812:139.6058,37.9123:140.1206,35.637:139.4463,36.5017:139.2838,35.6835:139.6166,36.1504:139.3807,35.7748:139.8043,35.589:139.5857,35.576:139.6559,35.4769:140.0489,36.5671:139.745,39.0815:141.7083&point4=39.5169:140.8301,39.3002:140.2868,36.0171:139.0086,41.1818:140.4817,35.5866:139.6548,37.1324:138.6077,41.2779:141.3289,35.8991:139.4746,37.7193:139.8724,36.4812:139.0462,39.318:140.7792,35.1507:140.312,35.5756:139.7387,35.7689:137.9443,37.7638:138.8834,36.3895:139.0634,35.5699:139.0788,36.054:139.3912,36.0709:139.0987,34.1894:139.1336,35.7886:139.2747,42.6381:141.6123,40.8645:141.1287,36.3453:140.3044,37.3054:138.7086,36.0391:138.1142,34.977:138.3831,40.0399:141.4365,37.5408:138.8095,38.2554:140.3396,39.383:140.0499,37.7604:138.8893,35.5515:137.8785,36.0582:139.1946,35.194:136.7387,37.8345:139.226,35.9645:139.2942,35.5935:138.4696,35.2727:139.6579,36.1148:139.1097,36.5516:140.4102,39.6069:140.3213,35.1682:136.9647,35.6224:139.559,35.4544:139.5387,39.3426:140.4342,40.9477:140.3596,37.6663:139.0402,39.9305:141.8889,39.5427:140.2063,38.2562:140.3458,42.575:141.9279,35.3192:139.5462,35.0994:138.9023,35.0789:136.7911,37.8372:139.2681,35.089:138.9534,37.3488:139.3161,41.084:141.2552,40.7992:140.4432,38.8499:139.9047,36.3281:138.4357,35.2539:140.3852,38.0457:139.9876,36.5476:138.9377,39.7001:140.7306,38.5946:139.7068,41.1959:140.9977,37.8677:139.094,36.2642:138.8803,35.1155:140.1022,37.7886:139.1147,37.6002:139.6467,40.5853:140.3971,39.4346:140.7501,37.5359:138.7076,37.9207:139.8697,40.6414:140.5936,35.934:137.6022,34.8158:139.0546,39.3138:140.5667,38.8579:140.2523,37.3941:138.7887,35.6609:138.5158,40.7853:140.4108,35.7997:139.4686,37.2237:138.4046,42.6344:141.6057,36.3044:139.1149,37.3354:139.6107,36.5898:138.8411,36.1494:139.0556,36.3483:138.5969,35.2128:138.6016,35.6279:138.5351,37.5871:138.9221,38.6788:139.8501,35.6303:139.1087,35.1441:139.6218,35.7425:139.3254,40.5072:141.253,35.2324:139.1069,41.0388:140.645,36.4386:138.9671,34.757:138.9876,42.1625:142.7771,36.5103:138.7523,35.1991:136.8216,35.5613:139.7161,39.3975:140.6317,36.307:139.9831,36.3852:138.8819,36.1185:139.885,37.1759:139.5254,37.4937:138.7826,35.5017:138.5422,37.5478:138.8774,36.2542:138.9889,41.2832:141.2113,37.6274:139.464,36.0046:140.3019,38.2992:140.1459,37.5754:138.7721,40.6152:140.5729,35.7694:138.4408,38.2245:140.062,35.6154:139.1548,36.5169:138.5302,40.6787:140.54,36.1518:140.2371,36.6398:139.0659,37.6935:139.1886,35.1703:136.8008,38.0597:139.4104,35.8796:139.5198,38.381:140.276,37.125:138.3456,36.3966:140.5349,40.0366:141.4502,35.0957:138.8633,41.8345:141.1411,35.5232:137.8374,42.1306:142.9353,35.6142:139.4181,40.2114:141.419,40.9029:140.4564,36.066:139.3609,40.7193:140.5936,42.8264:141.6408,39.8698:140.0658,36.7722:139.2248,40.6152:141.208,35.0591:138.9528,35.1206:136.899,38.9087:139.8436,35.5308:138.6099,39.8128:140.5803,37.9908:139.367,38.7679:140.2957,39.7179:140.0996,38.0746:139.4408,42.7837:141.6788,37.1478:138.2361,35.2721:139.5862,37.1872:138.3302,35.9577:139.0302,36.5648:138.6373,40.8087:140.3801,38.4265:140.1474,37.6154:138.8219,37.6988:139.058,40.1074:140.0725,42.1678:142.7673,35.5751:139.3265,35.1566:138.6618,35.1983:136.9661,40.9717:140.656,36.072:139.6968,40.696:140.4575,39.6562:140.5714,35.9815:139.3341,37.9529:139.1095,35.6387:138.7785,38.224:139.48,36.2743:138.405,36.2914:139.3609,37.9146:139.0108,36.243:138.9217,40.219:140.5838,37.6932:139.4818,36.398:138.9999,39.2975:140.5629,40.34:141.1523,38.2604:140.3488,35.1584:139.1371,34.9656:139.102,35.2205:136.6366,35.114:140.0989,38.9218:140.3564,35.6549:139.748,35.5901:138.616,39.1742:140.4791,39.2243:140.5227,38.7272:139.8267,35.0431:139.84,36.7405:139.4954,37.2703:138.8612,35.8848:140.2445,34.9082:139.8993,42.8087:143.6588,39.9363:141.897,35.6247:138.661,39.4496:140.3644,40.4656:141.1735,37.5716:139.0318,40.9673:141.3746,38.7965:140.2221,37.3719:138.559,39.2031:139.9076,36.1371:138.4718,35.222:138.6216,36.1141:139.7458,36.4574:140.4867,35.9875:140.1167,36.2043:139.2348,35.0966:137.0525,37.3259:138.8897,36.0131:138.9711,35.4462:138.4805,40.1985:140.0328,35.1193:138.9192,39.5145:140.5977,40.4084:141.7188,37.6557:139.9374,35.297:139.6012,36.425:138.793,37.6391:138.9577,39.8432:141.7965,35.5288:139.3217,39.8833:140.0705,38.1241:139.4438,38.9711:139.9423,36.3837:139.6145,40.8152:140.4473,35.5516:138.9055,36.5224:139.3099,38.0616:139.7434,42.9226:143.2121,39.1499:140.5722,35.7089:138.4461,35.5534:138.6651,35.1358:138.8992,35.9147:138.2407,34.8464:138.7699,40.9924:140.9155,35.3601:138.9873,38.8836:140.3394,40.6829:141.3696,35.114:138.9254,40.6018:140.499,39.9439:140.1113,35.9735:138.5845,35.8616:139.6456,36.2311:140.5351,36.0308:140.2148,36.6856:138.9254,35.1385:136.7931,37.2441:138.9243,37.6863:139.4772,37.6755:139.4588,38.2301:139.4864,36.0461:138.1097,35.7548:139.3875,36.6172:138.5918,36.5194:139.0083,36.1179:139.1045,35.1271:138.6213,42.9283:143.4483,37.8013:139.1442,43.4369:144.0855,35.1915:140.3488,40.4126:141.2803,35.7057:139.3538,36.0429:139.0238,35.6934:138.6869,35.4824:139.2764,35.714:139.4078,37.6911:138.8552,36.5551:139.8828,40.2032:140.0288,35.6103:138.9407,35.5995:139.6081,39.5445:140.5439,37.2232:139.5381,36.7118:138.2824,40.5841:140.5665,34.9874:139.8651,35.2661:139.084,36.1183:139.193,38.0562:139.7479,36.1027:140.5728,40.3752:141.5064,35.5232:137.8224,42.9581:144.0697,34.9762:138.4037,35.7918:138.4096,40.5767:140.2963,35.9899:140.0106,39.2869:139.9616,35.3799:139.2108,39.7739:140.6667,38.3807:140.2069,39.074:140.5867,39.2906:140.4293,40.6561:140.5028,35.6768:137.9196,35.4311:140.2271,36.0693:139.908,36.2864:138.8163,35.3924:139.5264,35.1074:138.8566,35.5996:138.5173,36.1563:139.9638,35.9644:138.2174,37.3077:139.9,39.0384:140.451,40.1836:141.1559,35.8823:139.1814,38.1828:139.4565,35.3364:139.1232,40.2677:140.5659,35.1703:136.695,39.5963:140.562,37.7445:139.1826,36.8019:140.751,35.9078:139.339,40.8219:140.7684,39.1792:140.6489,40.0633:140.2958,36.004:139.2734,41.2948:141.1972,35.6104:138.94,42.3448:142.3623,38.3856:139.9921,35.0481:139.0926,37.0395:138.8474,36.0086:139.2968,37.9152:139.3059,40.2261:140.3708,35.2254:139.6633,35.8558:139.3279,35.1133:136.8134,35.7895:138.9198,40.1015:140.005,40.7786:141.2181,37.7658:139.0191,38.3898:140.2743,40.7588:140.4284,35.5458:139.3615,36.7697:139.2437,35.2852:140.2454,35.3786:139.9449,36.0026:138.1409,37.9983:138.3219,38.0894:139.5649,39.6991:140.7181,40.6311:140.5502,41.0831:141.2478,39.4616:140.582,35.6038:139.5057,39.595:140.5554,35.7389:138.7146,35.8359:139.3911,37.9163:139.2186,37.84:139.184,40.7786:140.3365,35.3111:139.277,36.2869:140.4245,35.8282:137.9532,36.1846:139.7026,41.7701:140.7383,35.0167:138.4849,35.8377:138.4131,35.4648:138.813,39.2536:139.9223,36.1975:139.2815,35.3608:139.0826,39.1462:140.717,36.7329:140.4901,40.5275:141.5217,40.5863:141.0971,39.3988:140.0463,40.213:141.2955,35.5972:137.9097,40.9257:140.953,39.5438:140.0568,35.758:139.5297,40.1021:141.0523,39.2013:140.5421,38.7292:139.8013,35.7304:137.9341,36.3054:139.8766,38.914:139.8127&point3=42.9994:144.6927,35.9748:137.8255,38.0183:138.3681,35.3775:137.846,34.7391:135.5869,37.039:137.8627,36.0201:138.8977,35.0868:137.1518,35.2374:137.0215,38.6116:139.8345,38.4501:139.4961,37.0143:138.6526,34.6091:135.4775,35.0277:138.9289,37.2874:136.768,37.2767:138.3909,35.0595:136.1818,35.1496:138.622,36.7019:138.0889,34.8867:136.8324,36.9808:138.2252,34.4574:135.3688,36.0592:138.5509,34.6635:135.4956,36.2564:137.9785,35.142:136.8182,35.0632:136.9737,35.3641:137.8628,42.5533:140.8866,37.9507:139.3375,35.2034:136.8655,35.6038:137.609,35.1093:136.2615,40.5913:140.0039,43.1486:144.4976,34.8848:136.9934,38.4583:139.2467,43.5524:141.9175,35.4513:136.6728,37.7133:139.3809,39.198:139.5563,41.1305:140.3002,42.2826:142.7493,35.8132:137.5295,35.0105:136.0589,37.8216:139.3129,34.6935:135.4819,34.6065:135.7568,35.2763:136.2437,34.9772:136.9655,35.1216:136.9773,35.9794:140.1495,36.4214:137.8745,35.5787:138.0338,35.2293:137.0754,37.3043:138.8121,36.3595:138.3303,37.1615:138.9254,34.9119:137.0447,35.1793:136.926,36.7737:138.3247,35.5023:136.2225,40.6113:140.4553,40.7799:140.2087,41.4053:141.1691,35.1168:136.9211,35.772:139.3541,36.3238:138.2703,36.2287:138.7579,42.8826:141.5778,35.0117:136.9639,35.7494:139.5873,35.7922:138.0848,36.2492:137.5174,35.3353:136.6654,40.1918:140.6325,38.7895:140.0185,36.5672:138.0065,40.5822:139.9267,35.7304:139.1454,43.3455:142.3844,44.2199:143.6155,43.1246:143.611,43.2237:141.5171,36.0956:138.4844,35.8401:139.3215,36.7632:138.2548,41.4862:140.247,43.1037:141.5373,43.5071:142.219,41.1496:140.6348,41.4087:141.4486,35.2607:137.4058,34.6801:135.545,34.6494:135.7827,36.0557:136.2227,36.3438:139.2466,38.0745:138.4398,35.8464:137.6261,41.4297:140.8591,36.7327:137.0631,35.2424:138.4861,35.7186:139.7347,35.8375:138.0581,37.0926:139.5334,42.0963:140.5633,36.6347:139.4376,34.7788:136.9087,36.1932:138.4772,35.1739:138.9067,34.7344:136.5199,34.8391:137.8425,34.7116:135.4533,35.2005:136.7833,40.7782:140.1976,42.9057:140.7672,37.2199:138.6384,35.4965:135.7519,37.3129:138.7931,35.984:137.8356,36.1085:139.795,35.8729:137.9751,35.2673:136.87,34.6342:135.5427,42.79:141.601,36.1681:137.879,35.7107:139.6859,34.6793:135.6009,35.1802:136.9066,35.4871:139.6116,36.7489:139.7144,37.266:139.5386,37.4804:138.9926,40.6479:139.9304,35.371:138.4434,35.1745:136.2449,36.0696:138.08,34.7717:138.7753,35.3519:137.3816,35.0612:137.0211,35.4438:137.7474,35.2762:137.8541,35.377:136.264,42.4944:140.3539,34.7689:137.9987,35.0008:136.9085,34.5844:135.774,35.0184:135.8548,35.5474:139.7358,34.7026:135.6242,35.2476:136.9722,36.1408:139.6642,34.6269:135.6009,43.0114:142.8845,35.7041:139.4828,35.4985:136.1239,34.2053:139.1343,35.3011:136.0128,35.7801:140.3067,36.3134:140.5749,35.8029:137.245,35.2083:136.9107,36.5086:137.8507,34.3771:139.2572,35.3974:137.786,43.4557:142.467,35.3324:136.9077,36.934:138.8169,39.7225:140.1002,43.3938:145.1173,34.7278:135.4914,34.7503:139.3554,36.545:140.1742,41.06:140.4083,36.4029:138.0117,43.5578:141.9103,36.3478:139.1368,35.5138:137.8738,35.1295:136.2462,36.4891:137.9093,36.8918:136.7783,34.7279:137.8518,35.2166:137.0354,34.9422:135.9085,43.4305:141.8188,34.8815:135.7326,35.9007:140.4905,36.961:136.8645,35.0216:135.998,42.4211:141.0814,34.6953:135.5528,42.3483:141.0319,35.216:137.5091,36.036:138.547,35.8766:138.1312,36.4618:138.1801,35.3371:136.7781,43.1968:141.7754,35.1615:136.9885,36.1897:139.8188,41.8675:140.1242,43.0509:144.8498,36.3703:138.1288,35.4006:136.7625,35.2972:136.7496,34.9268:135.6958,35.1502:136.9342,35.3617:137.2546,36.6173:137.9747,43.2992:143.7656,35.6743:139.4771,37.0818:138.3343,36.7036:137.3074,36.2467:137.9705,36.6535:136.6451,40.6363:139.9284,34.7774:135.5618,35.977:140.6322,42.2586:140.2636,40.6163:140.4215,35.1041:136.8571,35.2711:137.7111,34.8464:135.6173,35.1223:140.1539,36.6975:138.312,40.8193:140.7501,36.5228:139.6681,43.5077:144.4485,34.7813:135.4697,35.0043:136.0846,34.7408:135.6339,36.2381:137.972,42.2945:143.3169,42.9805:142.3995,36.2564:138.2669,35.6839:139.4414,43.0602:141.3288,35.6151:139.7131,35.4643:136.0399,43.1721:141.3046,35.549:135.9082,34.6469:138.8194,35.4402:137.0163,34.8013:137.3588,43.3332:141.8553,34.6874:139.4412,35.132:137.0394,43.9115:144.6707,35.2004:136.23,34.682:135.5181,43.8181:143.9037,40.3279:140.7428,34.7184:137.5317,34.8755:135.7076,37.4365:138.8389,35.4707:136.6276,34.9879:136.999,43.0306:141.9657,35.295:137.4839,42.2528:142.5643,37.0252:138.2535,41.7162:141.0025,33.1138:139.7924,35.2683:137.2533,37.4539:139.5243,36.6627:138.1927,35.5604:137.452,37.1276:138.7559,36.1611:138.4836,37.6368:138.7741,34.8367:138.1763,36.8584:138.4067,35.5112:139.3847,35.3236:137.8161,34.7502:137.9246,35.7153:137.3711,34.8781:136.569,42.5513:141.356,36.7644:137.3412,35.4467:136.2425,36.8144:139.7153,35.2457:136.866,36.1235:137.9508,35.2192:136.6977,35.0607:136.1244,35.3647:137.4404,37.0063:136.778,36.2649:138.3622,36.3322:138.3461,43.4108:144.7704,34.8592:137.0548,34.6359:135.4946,35.1031:136.0121,35.5653:138.5024,38.2286:139.4745,43.2118:141.7858,43.3033:144.5996,35.2481:136.7802,37.2301:138.3296,35.3882:137.2158,36.6071:137.33,37.5307:138.7093,36.4241:137.8545,35.779:139.6803,35.1424:139.0795,36.0832:138.7774,35.6404:139.6632,34.706:135.5261,43.2436:143.5544,34.535:135.464,35.2851:136.6374,35.1457:136.1324,34.5778:135.5517,36.5066:137.9885,34.9759:137.4236,37.2265:139.0084,37.1279:138.4464,35.2505:136.912,35.0767:136.9332,42.6975:143.1356,34.5966:135.8374,35.9065:139.6481,35.366:136.7379,35.1688:136.2123,34.7888:135.4436,35.4883:137.5002,37.0524:138.2942,35.4115:136.234,41.1464:140.8145,42.4738:140.8764,34.7214:135.5437,36.4888:138.1477,35.9364:137.7832,34.5743:135.5975,35.5358:134.8224,34.8031:137.5561,41.0556:140.3459,34.788:135.68,36.2238:137.8678,34.705:135.5744,36.3801:139.2281,36.7096:137.2024,35.992:139.8026,35.8094:137.5509,35.4426:137.0,36.5891:136.6342,35.3155:136.2839,34.7567:137.4067,34.8143:135.6506,42.8741:141.8204,36.9875:138.5771,35.2214:136.8824,34.5043:135.4105,37.2559:138.977,36.6511:138.3072,35.4261:137.0611,35.432:138.3321,35.5516:137.8957,37.102:137.9867,38.053:139.4055,35.0812:137.1464,43.3346:141.8465,39.995:140.4031,42.9867:144.3778,37.6535:139.8633,35.4797:139.5344,35.1283:136.0978,41.8899:141.0291,34.6701:135.4737,36.99:139.8033,43.7996:143.9008,37.6421:138.7676,35.0701:136.2946,37.1594:138.4282,34.6504:135.5401,35.572:137.5276,36.0835:140.0765,34.9235:136.9907,37.0364:138.8462,35.4897:137.7023,42.8444:141.4473,35.3232:137.63,36.0945:140.3307,42.9925:141.5524,35.3529:137.2148,34.6571:135.4335,37.9664:138.3472,34.9986:137.0433,35.7358:140.83,35.0881:136.6988,34.6205:135.5586,34.7109:137.7261,34.6613:135.4755,34.9704:136.6357,35.1125:136.2078,37.0533:138.6989,36.6803:138.0015,42.7666:141.8221,34.6777:138.183,34.7661:135.628,36.4496:138.0682,36.4407:138.304,35.3918:136.6908,35.658:139.571,36.2835:138.2304,43.139:141.3513,38.5145:139.534,35.7672:139.3109,34.7585:135.5432,34.9028:135.6885,35.6855:139.7401,36.6486:138.1938,35.4495:137.4039,35.3017:137.3874,34.8512:136.9148,34.6851:135.8048,35.1339:136.0957,37.9902:138.396,35.3085:136.5614,37.4704:139.6445,43.1694:143.2408,42.905:143.8317,42.901:140.7581,41.385:141.045,35.7442:139.7424,35.9151:137.9819,35.7841:137.6941,43.1714:141.3155,43.1141:144.123,35.6829:137.6649,35.1687:136.9103,42.9845:144.3824,34.9561:137.0763,37.457:138.6664,35.023:136.6739,34.6831:135.4524,37.1052:138.1602,35.6808:139.3662,34.7211:135.4204,36.4253:137.9274,43.8007:141.9342,35.7269:139.1488,35.9954:139.0709,36.3378:137.8694,43.7938:145.0565,43.0736:142.8395,43.0846:140.82,34.7213:138.8751,35.985:137.9875,34.8661:136.8124,34.9401:136.5801,34.5737:135.7731,35.2743:136.2595,37.4098:139.7013,41.1946:140.4337,34.6827:138.9505,42.7608:142.1346,36.6725:136.8738,35.4887:137.5,35.3023:137.1699,34.6296:137.0939,35.9954:138.801,34.7589:137.3913,35.6335:140.0784,43.233:144.3248,36.2007:137.856,34.4871:135.4014,35.3743:137.6904,43.1213:143.6183,34.839:135.5044,36.067:138.0493,35.1742:136.7395,35.6382:138.3835,36.2946:137.8762,35.332:136.8705,40.79:141.065,41.4876:140.9957,40.3186:140.0386,43.3191:143.3049,37.0788:138.3831,35.0689:135.9808,36.9889:136.9015,35.055:136.8528,35.3591:136.9131,35.1751:136.8201,35.284:138.4624,36.0562:139.2626,37.2303:138.9611,34.6597:135.5186&point2=41.8995:140.6958,34.5463:136.5513,34.638:138.1281,35.6426:137.3238,42.7755:141.4021,36.9462:137.5599,44.0179:144.2799,35.5526:139.5363,35.4234:139.5857,34.8301:135.4172,36.6319:140.3959,42.1231:140.3679,35.9599:136.1824,37.0427:136.9681,34.5428:135.7508,34.5784:135.7367,36.2382:137.1862,43.1948:145.5209,37.4416:138.8431,34.8827:136.0626,34.9113:138.2799,36.7403:138.4129,35.1157:136.5614,35.222:136.2922,34.9718:135.8965,43.6015:141.3882,45.1397:141.3072,34.6089:135.7306,36.5419:136.6431,41.8691:140.127,34.6446:136.5394,35.4811:135.6177,34.7153:134.868,35.4286:136.2982,34.5581:135.6061,34.8484:138.2361,34.7566:134.8409,33.7282:135.3782,35.528:139.0333,35.8562:137.7078,34.6783:137.8167,34.8169:137.3151,35.4535:139.6118,35.3996:139.5734,34.4633:135.7402,36.4084:136.4456,35.6286:134.8135,35.5684:137.0103,37.4443:137.2877,35.5034:138.7419,41.937:143.2403,34.5793:135.6286,34.9652:136.6245,42.0174:143.1532,35.1614:138.6763,35.0674:136.0258,43.909:142.5695,35.4684:138.6069,34.7577:138.0846,34.9541:138.9964,44.0092:143.3558,35.4848:136.9797,35.2042:136.2614,41.7492:140.2512,34.8277:137.3685,35.7965:139.4659,34.7608:135.7857,36.2249:136.2043,34.9529:137.1793,35.4342:137.1308,38.4538:139.2386,43.1825:141.0168,35.6452:136.0555,35.3526:139.5638,36.7694:136.7213,34.0682:134.5737,35.4956:135.7466,36.3492:137.991,36.4686:136.5422,36.9686:136.9112,35.604:137.3547,33.7723:135.3214,35.0769:137.6978,38.6276:139.5889,34.5653:135.5172,35.0685:137.1676,43.9463:141.6322,35.5419:139.5098,44.4018:141.8493,36.2075:138.2143,34.6396:135.5165,36.592:137.2041,35.1898:137.8096,36.503:137.8511,34.5567:135.7949,34.8505:137.7091,36.7198:136.7067,35.1281:135.9178,43.3327:145.6003,41.9352:140.3695,35.5347:136.7275,34.8027:136.4364,43.5872:144.7153,43.8543:142.7686,42.7275:142.2973,42.5627:141.3499,36.8069:138.2069,43.3676:145.7385,35.9743:136.1298,35.4746:136.2346,36.779:137.9084,35.4268:139.5637,34.9137:136.6281,35.3373:136.3041,34.4744:134.8466,35.7421:139.2574,34.7323:135.3342,34.7486:134.9134,36.1702:137.3099,35.4414:139.6444,37.3919:136.9083,43.699:142.5103,41.9051:140.9697,35.0946:136.5383,34.8364:137.9279,35.3794:139.2048,35.0467:138.0815,36.32:137.311,35.5526:139.6352,35.172:136.4943,33.072:139.7983,42.8051:140.5302,34.5111:135.7069,44.0699:144.9973,42.6711:141.0791,35.5077:139.6848,35.5349:136.8443,35.6079:137.6125,36.4491:136.4583,34.8558:136.4516,35.7504:137.087,37.3067:137.15,35.4016:139.6196,34.3041:135.5527,35.373:139.597,40.5183:140.5678,34.8844:135.7998,36.5283:137.2293,34.4146:135.3043,35.0774:136.3004,43.1664:142.5903,34.5037:135.5557,41.328:140.8132,34.5005:135.5743,36.3041:137.1041,34.9379:136.283,36.7446:138.4126,34.6054:135.9573,34.8863:135.6604,36.7541:137.0257,35.6537:136.062,34.7596:136.4456,43.7454:141.7211,34.5372:135.562,36.6692:136.729,42.6181:143.4209,34.7186:136.5057,37.0159:139.3801,35.4618:139.498,35.1467:137.7197,34.2964:135.5037,35.1344:137.3119,34.6874:137.6078,43.1953:140.7835,34.7729:139.0413,34.5734:135.483,34.4891:135.7266,35.543:136.205,35.5819:137.1878,43.4001:141.4346,35.3531:136.0358,42.8077:140.6877,34.8819:136.5842,36.1669:136.2315,37.07:139.6808,36.4561:138.0453,35.1484:132.4066,35.5276:139.5141,34.7091:135.4994,34.8563:137.4232,36.7076:136.9238,34.6348:137.1397,34.5187:135.8432,35.2808:133.6351,35.1322:136.6314,35.0211:135.755,34.3938:135.2912,35.4966:139.5317,35.3616:136.3702,43.7849:143.6072,43.7735:141.3685,36.1561:137.2533,37.1547:138.512,37.3532:137.2445,34.4373:134.899,43.6249:142.6837,35.5356:135.1956,34.8263:137.22,35.6633:137.1618,35.5449:139.571,35.3328:137.1322,43.3309:145.5856,34.7709:138.252,35.0201:136.5073,34.4836:135.4236,35.5108:139.6443,35.5447:134.2846,34.8948:135.2121,43.8756:142.7443,42.6679:140.3049,35.5612:138.4614,34.5281:135.9523,35.3655:136.467,36.5123:136.9005,34.7843:135.4009,36.6959:137.3542,35.5316:135.981,35.5438:137.1199,35.4267:136.9854,44.1204:144.0712,36.8163:137.4192,35.4831:136.6788,43.1161:141.5462,41.6487:139.9976,35.0623:136.6835,42.3414:142.3688,36.8628:136.7975,35.7842:139.5276,35.4398:139.631,33.8938:135.1333,35.4587:139.6357,35.1659:137.6215,35.3641:136.9447,43.6746:143.3088,35.49:133.864,35.3662:139.5484,34.9114:138.7949,38.0294:138.24,34.8345:137.6697,34.7278:137.8219,36.56:136.8872,36.662:137.3193,34.5413:135.6992,36.428:138.0176,34.9307:137.5745,34.4335:135.2378,36.4911:136.4918,42.3118:140.9751,34.4377:135.3584,42.1287:143.3153,34.7984:135.8033,34.8702:136.4546,36.8265:136.7505,34.4865:135.4906,36.3967:136.4432,34.5383:135.5365,35.2827:133.6878,44.0201:144.2729,43.9401:145.1199,35.1663:136.8656,36.1162:138.9251,35.5224:139.5716,35.4901:139.5685,34.5207:135.4424,34.8644:137.1657,35.5447:136.9076,35.2829:136.4725,35.4528:139.599,34.458:135.5642,35.4839:139.4802,35.4794:133.822,35.0342:136.6644,42.4723:141.0338,35.6132:138.947,35.3543:135.9175,34.5735:135.4589,34.5187:135.6477,36.6798:138.3633,42.9311:143.2137,34.8037:138.2843,34.7152:136.9299,36.0835:137.2393,33.5068:133.9023,34.7073:137.9317,34.6009:135.4993,34.7887:136.5352,34.5645:136.016,35.1523:136.5241,36.1491:136.2671,35.4187:139.4895,36.7819:138.9695,34.8346:138.1268,35.5451:133.2352,34.6656:138.0547,35.5396:133.2316,35.4675:138.4425,35.1992:138.562,34.5032:135.5997,36.1338:136.2194,35.4619:135.8572,34.6975:135.2128,36.6787:138.9991,35.5268:136.6086,35.1577:140.3222,36.6959:137.2137,43.7885:143.6154,36.1586:138.7114,41.5321:140.4143,41.4301:140.1104,34.7618:136.1422,35.0152:135.7329,42.7814:142.3597,36.5855:137.14,35.0135:135.5735,36.7923:137.0561,42.6169:143.3583,34.859:137.3075,34.7567:135.5219,42.0436:140.8064,35.0742:136.5837,34.5151:135.7365,34.6815:137.881,35.386:136.3781,34.5169:135.7191,35.8712:137.1744,42.4825:142.0543,34.9028:135.6885,34.4017:135.3543,35.5226:139.6196,34.7546:135.8692,34.9816:137.8975,35.2791:138.4649,36.9228:138.4405,35.38:139.6478,43.9726:143.9069,36.5649:136.9716,35.7032:136.8034,34.8149:135.5692,36.5881:136.9195,35.4423:136.5729,43.757:142.3724,34.8217:135.4286,34.794:137.7899,34.4606:135.3708,38.2584:138.4337,34.928:136.1681,40.3888:139.9827,42.4984:143.2787,34.7549:138.7841,35.5654:135.1529,44.3557:143.3538,44.1184:142.5954,35.4265:139.5241,34.4729:135.9789,35.488:135.5492,35.4958:136.9179,34.8674:138.2576,34.8527:135.8569&point1=42.6461:140.0408,27.095:142.185,34.241:132.5496,36.2114:136.229,34.7133:136.4168,35.169:135.1041,34.4713:135.8207,35.5281:135.0992,36.4411:137.0353,35.603:136.4122,35.4804:133.4598,33.8923:135.1552,35.6317:135.1012,36.9272:136.7792,36.8265:137.4093,35.1551:135.6335,33.9321:135.9692,36.5772:136.9861,34.5045:135.7925,44.4294:141.4229,37.3689:137.0959,34.692:135.7006,34.7095:136.044,33.3364:131.4071,34.4789:135.9281,33.2066:130.3839,34.9189:135.4941,36.6475:136.9622,34.3519:135.6938,34.4908:136.7334,35.4879:134.2381,34.3596:135.2397,36.2193:136.1565,34.8263:136.2159,33.4277:134.0083,34.203:134.6098,34.6189:137.212,36.2053:133.3335,43.3558:140.4649,33.274:130.3739,34.8333:137.2386,34.0575:135.2161,35.9057:136.6667,34.3926:132.5045,34.9394:138.0753,44.5826:142.9618,33.224:130.3526,37.8487:138.3172,34.7562:134.0187,34.0663:134.3586,34.4646:135.6225,34.6292:135.7006,36.5144:136.5656,37.1441:136.7256,35.2435:138.3407,37.0241:137.7987,35.6006:135.9405,34.6437:134.9965,35.4506:135.3175,35.5033:135.0951,38.04:138.2567,35.1386:136.3878,34.3609:135.7918,34.5998:133.9196,36.2708:136.8985,35.286:135.3997,45.3184:141.8935,34.2563:135.3114,34.6906:139.4202,35.367:132.7547,33.2082:130.2885,43.2921:140.6014,34.2491:132.9958,34.8062:137.6511,42.795:140.2249,34.7338:134.039,34.7605:135.9394,34.6688:137.2643,34.8317:135.4711,35.4678:133.8961,34.5399:133.7413,35.5848:136.4574,34.317:135.1421,36.4018:136.8996,42.1297:139.9815,34.2293:135.1643,34.4916:135.6297,34.0699:136.1934,34.486:134.1857,35.476:137.1415,35.3388:139.6264,42.0853:139.4713,34.9726:135.4143,35.5107:133.4961,34.7957:135.9049,34.2389:136.2736,35.6348:136.6155,35.6242:135.0611,35.4531:133.4194,36.2801:136.3277,33.192:130.32,34.3945:136.7036,35.5153:133.6382,35.4863:134.2207,42.7011:140.0616,34.4495:135.7932,33.1811:130.1435,43.368:145.8026,34.5627:135.7167,34.07:134.5607,34.679:137.9887,37.0335:136.9699,34.3906:135.7897,34.6001:135.6955,44.3452:143.3561
2 |
--------------------------------------------------------------------------------