#sets #parser #population #german #area #read #municipalities

gv100ad

用于读取德国统计局GV100AD文件的解析器

2个不稳定版本

0.2.0 2021年4月14日
0.1.0 2021年4月12日

#1278 in 解析器实现

MIT许可证

70KB
1.5K SLoC

crates.io docs.rs MIT license Maintenance

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许可证下授权(LICENSEhttps://opensource.org/licenses/MIT

依赖项

~1.6–2.4MB
~42K SLoC