| Crates.io | jp-location-relation |
| lib.rs | jp-location-relation |
| version | 0.2.0 |
| created_at | 2022-08-14 14:07:56.959951+00 |
| updated_at | 2026-01-09 08:00:23.746254+00 |
| description | 日本の市区町村・都道府県の隣接関係を取得するライブラリ |
| homepage | https://github.com/uiuifree/rust-jp-location-relation |
| repository | https://github.com/uiuifree/rust-jp-location-relation |
| max_upload_size | |
| id | 645436 |
| size | 309,864 |
日本の市区町村・都道府県の隣接関係を取得できるRustライブラリです。
A Rust library for retrieving adjacent municipalities and prefectures in Japan.
serdeのみ)[dependencies]
jp-location-relation = "0.2"
Rust 1.80以上が必要です(std::sync::LazyLockを使用)
use jp_location_relation::City;
// 市区町村コードから検索 -> Option<&'static City>
let city = City::find_by_id(13101).unwrap();
assert_eq!(city.name, "千代田区");
assert_eq!(city.relation_city_name, vec!["港区", "新宿区", "文京区", "中央区", "台東区"]);
// 市区町村名から検索 -> Option<&'static City>
let city = City::find_by_name("堺市堺区").unwrap();
assert_eq!(city.id, 27141);
// 隣接市区町村をCityオブジェクトで取得 -> Vec<&'static City>
let neighbors = city.get_relation_cities();
use jp_location_relation::Prefecture;
// 都道府県コードから検索 -> Option<&'static Prefecture>
let tokyo = Prefecture::find_by_id(13).unwrap();
assert_eq!(tokyo.prefecture_name, "東京都");
// 隣接都道府県を取得 -> Vec<&'static Prefecture>
let neighbors = tokyo.get_relation_prefectures();
// 埼玉県、千葉県、神奈川県、山梨県
// 都道府県名から検索 -> Option<&'static Prefecture>
let osaka = Prefecture::find_by_name("大阪府").unwrap();
// 隣接都道府県名を取得 -> Vec<String>
let names = osaka.relation_prefecture_name();
// ["京都府", "兵庫県", "奈良県", "和歌山県"]
use jp_location_relation::City;
// 都道府県コードで絞り込み -> Vec<&'static City>
let tokyo_cities = City::find_by_prefecture_id(13);
use jp_location_relation::City;
let inagi = City::find_by_id(13225).unwrap(); // 稲城市
// 県境を超えた隣接があるか -> bool
if inagi.has_cross_prefecture_relation() {
// 県境を超えた隣接市区町村を取得 -> Vec<&'static City>
let cross_border = inagi.get_cross_prefecture_relations();
// 川崎市麻生区、川崎市多摩区
}
// 同一都道府県内の隣接市区町村を取得 -> Vec<&'static City>
let same_pref = inagi.get_same_prefecture_relations();
use jp_location_relation::{City, Prefecture};
// 全市区町村をイテレート
for city in City::iter() {
println!("{}: {}", city.id, city.name);
}
// 全都道府県をイテレート
for pref in Prefecture::iter() {
println!("{}: {}", pref.prefecture_id, pref.prefecture_name);
}
| メソッド | 戻り値 | 説明 |
|---|---|---|
get_cities() |
&'static HashMap<i32, City> |
全市区町村のHashMapを取得 |
find_by_id(i32) |
Option<&'static City> |
市区町村コードで検索 |
find_by_name(&str) |
Option<&'static City> |
市区町村名で検索 |
find_by_prefecture_id(i32) |
Vec<&'static City> |
都道府県コードで絞り込み |
get_relation_cities(&self) |
Vec<&'static City> |
隣接市区町村を取得 |
get_cross_prefecture_relations(&self) |
Vec<&'static City> |
県境を超えた隣接を取得 |
get_same_prefecture_relations(&self) |
Vec<&'static City> |
同一県内の隣接を取得 |
has_cross_prefecture_relation(&self) |
bool |
県境を超えた隣接があるか |
iter() |
impl Iterator<Item = &'static City> |
全市区町村のイテレータ |
| メソッド | 戻り値 | 説明 |
|---|---|---|
get_all() |
&'static Vec<Prefecture> |
全都道府県を取得 |
find_by_id(u32) |
Option<&'static Prefecture> |
都道府県コードで検索 |
find_by_name(&str) |
Option<&'static Prefecture> |
都道府県名で検索 |
get_relation_prefectures(&self) |
Vec<&'static Prefecture> |
隣接都道府県を取得 |
relation_prefecture_name(&self) |
Vec<String> |
隣接都道府県名を取得 |
get_cities(&self) |
Vec<&'static City> |
この都道府県の市区町村を取得 |
iter() |
impl Iterator<Item = &'static Prefecture> |
全都道府県のイテレータ |
pub struct City {
pub id: i32, // 市区町村コード(全国地方公共団体コード)
pub prefecture_id: i32, // 都道府県コード(1〜47)
pub name: String, // 市区町村名
pub relation_city_id: Vec<i32>, // 隣接市区町村コード
pub relation_city_name: Vec<String>, // 隣接市区町村名
}
pub struct Prefecture {
pub prefecture_id: u32, // 都道府県コード(1〜47)
pub prefecture_name: String, // 都道府県名
pub relation_prefecture_id: Vec<u32>, // 隣接都道府県コード
}
市区町村コードは全国地方公共団体コード(JIS X 0401/0402)に準拠しています。
総務省統計局 地域メッシュ統計 https://www.stat.go.jp/data/mesh/m_itiran.html
MIT