天気情報はネット上に数々のデータが存在しています。
このデータをもとに気象に関する気象およびデータベースの学習を目的として作成してみました。
とりあえず、初期段階として作成したデータの内容です。
順次データベースを整備しシリーズで詳細な説明、応用、追加等々を投稿していきたいと思います。
現状として観測データ全てのデータをインポートしたわけではありませんが徐々に充実していきます。
また、あくまでもデータ自体は学習が目的で構築しています。実際のテータと異なる場合があります。
今回作成したデータベースに参照したサイトは以下の通りです。
livedoor天気予報
気象庁・各種データー・資料
過去の気象データ・ダウンロード
今回作成したデータベースからサンプルとして
千葉県館山の2019年8月のデータを抽出してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// 2019年8月の千葉県館山の気象状況の記録の参照 mysql> select -> obCategory.obCategoryName 観測項目, -> WeatherStation.WeatherStation_name 観測所, -> observation.weathervalue 測定値 -> from observation -> inner join obCategory on observation.observKey = obCategory.observKey -> inner join WeatherStation on observation.ws_no = WeatherStation.ws_no -> where observation.ws_no=120030 and observation.year=2019 and observation.month=8; +--------------------------------+-----------+-----------+ | 観測項目 | 観測所 | 測定値 | +--------------------------------+-----------+-----------+ | 日平均気温の月平均値 | 館山 | 28 | | 降水量の月合計値 | 館山 | 66.5 | | 日照時間の月合計値 | 館山 | 229 | | 日最高気温の月平均値 | 館山 | 31.5 | | 日最低気温の月平均値 | 館山 | 25.4 | +--------------------------------+-----------+-----------+ 5 rows in set (0.01 sec) |
地域、観測所 多対多テーブル 「Areaprefarea」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
//地域、観測所 多対多テーブル 「Areaprefarea」 mysql> show create table areaprefarea\G *************************** 1. row *************************** Table: areaprefarea Create Table: CREATE TABLE `areaprefarea` ( `id` int(11) NOT NULL AUTO_INCREMENT, `area_no` int(11) NOT NULL, `station_id` varchar(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=148 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from areaprefarea; +------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | area_no | int(11) | NO | | NULL | | | station_id | varchar(4) | NO | | NULL | | +------------+------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> select * from areaprefarea; +-----+---------+------------+ | id | area_no | station_id | +-----+---------+------------+ | 99 | 1 | 01a | | 100 | 1 | 01b | | 101 | 1 | 01c | | 102 | 1 | 01d | | 103 | 2 | 02 | ・ ・ | 143 | 9 | 41 | | 144 | 9 | 43 | | 145 | 9 | 45 | | 146 | 9 | 46 | | 147 | 10 | 47 | +-----+---------+------------+ 49 rows in set (0.00 sec) |
地域テーブル 「area」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// area テーブル mysql> show create table area; +-------+--------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------+ | area | CREATE TABLE `area` ( `area_no` int(11) NOT NULL, `area_name` varchar(30) NOT NULL, PRIMARY KEY (`area_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +----------------------------------------------------+ 1 row in set (0.00 sec) mysql> show fields from area; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | area_no | int(11) | NO | PRI | NULL | | | area_name | varchar(30) | NO | | NULL | | +-----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from area; +---------+------------------------+ | area_no | area_name | +---------+------------------------+ | 1 | 北海道地方 | | 2 | 東北地方 | | 3 | 関東地方 | | 4 | 信越・北陸地方 | | 5 | 東海地方 | | 6 | 近畿地方 | | 7 | 中国地方 | | 8 | 四国地方 | | 9 | 九州地方 | | 10 | 沖縄地方 | +---------+------------------------+ 10 rows in set (0.00 sec) |
観測項目テーブル「ObCategory」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// 観測項目テーブル「ObCategory」 mysql> show create table ObCategory\G *************************** 1. row *************************** Table: ObCategory Create Table: CREATE TABLE `ObCategory` ( `observKey` int(11) NOT NULL, `obCategoryName` varchar(64) NOT NULL, PRIMARY KEY (`observKey`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from ObCategory; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+-------+ | observKey | int(11) | NO | PRI | NULL | | | obCategoryName | varchar(64) | NO | | NULL | | +----------------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from ObCategory limit 20; +-----------+--------------------------------+ | observKey | obCategoryName | +-----------+--------------------------------+ | 0 | 日平均気温の月平均値 | | 1 | 日最高気温の月平均値 | | 2 | 日最低気温の月平均値 | | 3 | 日照時間の月合計値 | | 4 | 降水量の月合計値 | +-----------+--------------------------------+ 5 rows in set (0.00 sec) |
過去の観測記録テーブル「Observation」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// 過去の観測記録テーブル「Observation」 mysql> show create table Observation\G *************************** 1. row *************************** Table: Observation Create Table: CREATE TABLE `Observation` ( `ob_no` int(11) NOT NULL AUTO_INCREMENT, `observKey` int(11) NOT NULL, `ws_no` int(11) NOT NULL, `year` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `weathervalue` double DEFAULT NULL, PRIMARY KEY (`ob_no`) ) ENGINE=InnoDB AUTO_INCREMENT=30775 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from Observation; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | ob_no | int(11) | NO | PRI | NULL | auto_increment | | observKey | int(11) | NO | | NULL | | | ws_no | int(11) | NO | | NULL | | | year | int(11) | YES | | NULL | | | month | int(11) | YES | | NULL | | | weathervalue | double | YES | | NULL | | +--------------+---------+------+-----+---------+----------------+ 6 rows in set (0.00 sec) mysql> select * from Observation where ws_no=120030 limit 10; +-------+-----------+--------+------+-------+--------------+ | ob_no | observKey | ws_no | year | month | weathervalue | +-------+-----------+--------+------+-------+--------------+ | 670 | 0 | 120030 | 1968 | 5 | 107 | | 671 | 0 | 120030 | 1968 | 6 | 132.5 | | 672 | 0 | 120030 | 1968 | 7 | 182.5 | | 673 | 0 | 120030 | 1968 | 8 | 365 | | 674 | 0 | 120030 | 1968 | 9 | 148.5 | | 675 | 0 | 120030 | 1968 | 10 | 259.5 | | 676 | 0 | 120030 | 1968 | 11 | 20.5 | | 677 | 0 | 120030 | 1968 | 12 | 349.5 | | 678 | 0 | 120030 | 1968 | 13 | 1565 | | 679 | 0 | 120030 | 1969 | 1 | 75.5 | +-------+-----------+--------+------+-------+--------------+ 10 rows in set (0.00 sec) |
全国観測所テーブル「PrefArea」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// 全国観測所テーブル「PrefArea」 mysql> show create table PrefArea\G *************************** 1. row *************************** Table: PrefArea Create Table: CREATE TABLE `PrefArea` ( `station_id` varchar(4) NOT NULL, `pref_no` int(11) NOT NULL, `town_name` text, PRIMARY KEY (`station_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from PrefArea; +------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+-------+ | station_id | varchar(4) | NO | PRI | NULL | | | pref_no | int(11) | NO | | NULL | | | town_name | text | YES | | NULL | | +------------+------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> select * from PrefArea limit 10; +------------+---------+-----------+ | station_id | pref_no | town_name | +------------+---------+-----------+ | 01a | 1 | 道北 | | 01b | 1 | 道央 | | 01c | 1 | 道東 | | 01d | 1 | 道南 | | 02 | 2 | 青森県 | | 03 | 3 | 岩手県 | | 04 | 4 | 宮城県 | | 05 | 5 | 秋田県 | | 06 | 6 | 山形県 | | 07 | 7 | 福島県 | +------------+---------+-----------+ 10 rows in set (0.00 sec) |
都道府県テーブル「Prefecture」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// 都道府県テーブル「Prefecture」 mysql> show create table Prefecture\G *************************** 1. row *************************** Table: Prefecture Create Table: CREATE TABLE `Prefecture` ( `pref_no` int(11) NOT NULL, `pref_name` varchar(30) NOT NULL, `pref_kana` varchar(30) NOT NULL, PRIMARY KEY (`pref_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from Prefecture; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | pref_no | int(11) | NO | PRI | NULL | | | pref_name | varchar(30) | NO | | NULL | | | pref_kana | varchar(30) | NO | | NULL | | +-----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> select * from Prefecture limit 10; +---------+-----------+--------------------+ | pref_no | pref_name | pref_kana | +---------+-----------+--------------------+ | 1 | 北海道 | ホッカイドウ | | 2 | 青森県 | アオモリケン | | 3 | 岩手県 | イワテケン | | 4 | 宮城県 | ミヤギケン | | 5 | 秋田県 | アキタケン | | 6 | 山形県 | ヤマガタケン | | 7 | 福島県 | フクシマケン | | 8 | 茨城県 | イバラキケン | | 9 | 栃木県 | トチギケン | | 10 | 群馬県 | グンマケン | +---------+-----------+--------------------+ 10 rows in set (0.00 sec) |
全国観測エリアテーブル「WeatherStatio」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
// 全国観測エリアテーブル「WeatherStatio」 mysql> show create table WeatherStation\G *************************** 1. row *************************** Table: WeatherStation Create Table: CREATE TABLE `WeatherStation` ( `ws_no` varchar(8) NOT NULL, `pref_no` int(11) NOT NULL, `block_no` int(11) DEFAULT NULL, `station_id` varchar(4) NOT NULL, `WeatherStation_name` varchar(30) NOT NULL, PRIMARY KEY (`ws_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show fields from WeatherStation; +---------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------------+-------------+------+-----+---------+-------+ | ws_no | varchar(8) | NO | PRI | NULL | | | pref_no | int(11) | NO | | NULL | | | block_no | int(11) | YES | | NULL | | | station_id | varchar(4) | NO | | NULL | | | WeatherStation_name | varchar(30) | NO | | NULL | | +---------------------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) mysql> select * from WeatherStation; +--------+---------+----------+------------+---------------------+ | ws_no | pref_no | block_no | station_id | WeatherStation_name | +--------+---------+----------+------------+---------------------+ | 011000 | 1 | NULL | 01a | 稚内 | | 012010 | 1 | NULL | 01a | 旭川 | | 012020 | 1 | NULL | 01a | 留萌 | | 013010 | 1 | NULL | 01c | 網走 | ・ ・ | 120010 | 12 | NULL | 12 | 千葉 | | 120020 | 12 | NULL | 12 | 銚子 | | 120030 | 12 | NULL | 12 | 館山 | | 130010 | 13 | NULL | 13 | 東京 | | 130020 | 13 | NULL | 13 | 大島 | ・ ・ | 471020 | 47 | NULL | 47 | 名護 | | 471030 | 47 | NULL | 47 | 久米島 | | 472000 | 47 | NULL | 47 | 南大東 | | 473000 | 47 | NULL | 47 | 宮古島 | | 474010 | 47 | NULL | 47 | 石垣島 | | 474020 | 47 | NULL | 47 | 与那国島 | +--------+---------+----------+------------+---------------------+ 142 rows in set (0.00 sec) |