2个不稳定版本
0.2.0 | 2021年4月14日 |
---|---|
0.1.0 | 2021年4月12日 |
#1278 in 解析器实现
70KB
1.5K SLoC
gv100ad
此软件是实验性的,未来可能会有很大变化
这是一个GV100AD数据集解析器的Rust实现。这些数据集包含关于德国市镇结构、人口、面积的信息。
数据集可以在以下网址获取: https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/_inhalt.html
该解析器与以下数据集进行了测试: https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/Archiv/GV100ADQ/GV100AD3004.html
ZIP文件包含一个包含数据集的文本文件 GV100AD_DDMMYY.txt
以及描述格式的PDF文件。
示例
此示例列出州萨尔州的所有市镇及其人口
use gv100ad::{
model::{
gemeinde::GemeindeDaten,
kreis::KreisDaten,
land::{LandDaten, LandSchluessel},
},
Database,
};
// Open the database. Refer to the `README.md` file for the source of the datasets.
let db = Database::from_path("GV100AD3004/GV100AD_300421.txt").unwrap();
// Parse a key for the state of Saarland
let schluessel = "10".parse::<LandSchluessel>().unwrap();
// Get the record for the state of Saarland
let land = db.get::<_, LandDaten>(schluessel).unwrap();
println!("{}:", land.name);
// Iterate over the districts (Kreise) in Saarland
for kreis in db.children::<_, KreisDaten>(schluessel) {
println!(" {}:", kreis.name);
// Iterate over the municipalities (Gemeinde) in the district (Kreis)
for gemeinde in db.children::<_, GemeindeDaten>(kreis.schluessel) {
println!(
" {}: {} residents",
gemeinde.name, gemeinde.population_total
);
}
}
// Get the sum of the population of all municipalities in Saarland
let total_population: u64 = db.children::<_, GemeindeDaten>(schluessel)
.map(|gemeinde| gemeinde.population_total)
.sum();
println!("Total population of {}: {}", land.name, total_population);
语言
该软件主要使用英语,因此大部分文档和代码都是英文。尽管如此,许多术语本质上是德语,软件中的许多标识符也使用这些术语。以下是一些翻译
- Land: 州(也称为联邦州)
- Regierungsbezirk: 政府区
- Kreis: 区
- Gemeinde: 市镇(更准确地说是“社区”)
- Verband: 协会
- Schluessel: 键
- Textkennzeichen: 文本标识符(实际上是数字)用于表示区、市镇协会或市镇的类型。
- Daten: 数据,在上下文中例如“Landdaten”表示“州数据”或“州记录”。
如果您认为翻译不正确或遗漏了某些内容,请提交问题。
许可证
在MIT许可证下授权(LICENSE 或 https://opensource.org/licenses/MIT)
依赖项
~1.6–2.4MB
~42K SLoC