sanmei:database
文書の過去の版を表示しています。
目次
山名データベース
データベースの作成
Database:nurude_tozan
CREATE DATABASE `nurude_tozan` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
Table:geo
CREATE TABLE `geo` ( `id` SMALLINT UNSIGNED NOT NULL COMMENT 'ID', `act` tinyint(1) NOT NULL COMMENT '0:無効,1:有効', `kana` VARCHAR(255) NOT NULL COMMENT 'よみ', `name` VARCHAR(255) NOT NULL COMMENT '山名', `alt` SMALLINT NOT NULL COMMENT '標高[m]', `lat` mediumint NOT NULL COMMENT '緯度(dms)', `lon` mediumint NOT NULL COMMENT '経度(dms)', `auth` tinyint UNSIGNED DEFAULT '0' COMMENT '出典', `note` text COMMENT '記事', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:sanmei
CREATE TABLE `sanmei` ( `id` SMALLINT UNSIGNED NOT NULL COMMENT 'ID', `type` tinyint NOT NULL COMMENT '0:総称,1:山名,2:別名', `kana` VARCHAR(255) NOT NULL COMMENT 'よみ', `name` VARCHAR(255) NOT NULL COMMENT '山名', UNIQUE KEY `idx_sanmei` (`id`,`kana`,`name`), KEY `name` (`name`) USING BTREE, KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:meizan
CREATE TABLE `meizan` ( `cat` tinyint UNSIGNED NOT NULL COMMENT 'カテゴリ', `seqno` SMALLINT UNSIGNED NOT NULL COMMENT 'カテゴリ内の順序', `id` SMALLINT UNSIGNED NOT NULL COMMENT 'ID', `kana` VARCHAR(255) NOT NULL COMMENT 'よみ', `name` VARCHAR(255) NOT NULL COMMENT '山名', UNIQUE KEY `idx_meizan` (`cat`,`id`), KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:record
CREATE TABLE `record` ( `rec` SMALLINT UNSIGNED NOT NULL COMMENT '山行記録ID', `start` DATE NOT NULL COMMENT '開始日', `end` DATE NOT NULL COMMENT '終了日', `issue` DATE DEFAULT NULL COMMENT '公開日', `title` VARCHAR(255) NOT NULL COMMENT 'タイトル', `summary` VARCHAR(255) DEFAULT NULL COMMENT '概略', `link` VARCHAR(255) DEFAULT NULL COMMENT '山行記録URL', `image` VARCHAR(255) DEFAULT NULL COMMENT '画像URL', PRIMARY KEY (`rec`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:explored
CREATE TABLE `explored` ( `rec` SMALLINT UNSIGNED NOT NULL COMMENT '山行記録ID', `start` DATE NOT NULL COMMENT '開始日', `summit` DATE NOT NULL COMMENT '登頂日', `id` SMALLINT UNSIGNED NOT NULL COMMENT 'ID', `name` VARCHAR(255) NOT NULL COMMENT '山名', UNIQUE KEY `idx_explored` (`rec`,`id`), KEY `id` (`id`) USING BTREE, KEY `rec` (`rec`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:poi
CREATE TABLE `poi` ( `ptid` mediumint UNSIGNED NOT NULL COMMENT 'PTID', `act` tinyint(1) NOT NULL COMMENT '0:無効, 1:有効', `kana` VARCHAR(255) NOT NULL COMMENT 'よみ', `name` VARCHAR(255) NOT NULL COMMENT '山名', `alt` SMALLINT NOT NULL COMMENT '標高[m]', `lat` mediumint NOT NULL COMMENT '緯度(dms)', `lon` mediumint NOT NULL COMMENT '経度(dms)', `id` SMALLINT UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID', `c` tinyint NOT NULL DEFAULT '-1' COMMENT '一致度', PRIMARY KEY (`ptid`), KEY `id` (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table:gyosei
CREATE TABLE `gyosei` ( `code` SMALLINT UNSIGNED NOT NULL, `area` geometry NOT NULL /*!80003 SRID 4326 */, SPATIAL KEY `area` (`area`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SET global max_allowed_packet = 16777216; SHOW VARIABLES LIKE 'max_allowed_packet';
#!/usr/bin/env perl use strict; use warnings; use utf8; use open ':utf8'; use open ':std'; use JSON; use DBI; use DBD::mysql; my $dbh = DBI->connect( 'DBI:mysql:database=nurude_tozan;mysql_socket=/opt/local/var/run/mysql8/mysqld.sock', 'nurude', '_PASSWORD_', {mysql_enable_utf8mb4 => 1, mysql_server_prepare => 1} ) or die $DBI::errstr; open(my $in, '<', 'N03/N03-19_190101.geojson') or die($!); while (my $json_text = <$in>) { next if ($json_text !~ /"Feature"/); chomp($json_text); chop($json_text) if ($json_text =~ /,$/); my $data = from_json($json_text); # croaks on error my $code = $data->{properties}->{N03_007} || 0; # 行政区域コード(null: 所属未定地) print 'code=', $code, "\n"; my $area = '{"type":"Polygon","coordinates":' . to_json($data->{geometry}->{coordinates}) . '}'; my $sth = $dbh->prepare(q{SET @area=?}); $sth->execute(($area)); $sth->finish; $sth = $dbh->prepare(q{INSERT INTO gyosei VALUES (?,ST_GeomFromGeoJSON(@area,1,4326))}); $sth->execute(($code)); $sth->finish; } close($in); $dbh->disconnect; __END__
Table:city
CREATE TABLE `city` ( `code` SMALLINT UNSIGNED NOT NULL, `name` VARCHAR(255) NOT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
#!/usr/bin/env perl use strict; use warnings; use utf8; use open ':utf8'; use open ':std'; use URI; use Web::Scraper; my $codes = scraper { process 'table tr', 'codes[]' => scraper { process 'td:nth-child(1)', 'code' => 'TEXT'; process 'td:nth-child(2)', 'name' => 'TEXT'; }; }; my $uri = URI->new('http://nlftp.mlit.go.jp/ksj/gml/codelist/AdminAreaCd.html'); my $res = $codes->scrape($uri); for my $code (@{$res->{codes}}) { print $code->{code}, ',', $code->{name}, "\n"; } __END__
sanmei/database.1592496833.txt.gz · 最終更新: 2020/06/19 01:13 by anineco