crates.io docs.rs MIT license Maintenance

gv100ad

This software is experimental and might change a lot in future

This is a Rust implementation of a parser for GV100AD data sets. These data sets contain information about the structure, population, area of german municipalities.

The data sets can be obtained at: https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/_inhalt.html

The parser was tested with this data set: https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/Archiv/GV100ADQ/GV100AD3004.html

The ZIP files contain a text file GV100AD_DDMMYY.txt that contains the data set, and a PDF file describing the format.

Example

This example lists all municipalities of the state Saarland with population:

```rust 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::frompath("GV100AD3004/GV100AD300421.txt").unwrap();

// Parse a key for the state of Saarland let schluessel = "10".parse::().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 totalpopulation: u64 = db.children::<_, GemeindeDaten>(schluessel) .map(|gemeinde| gemeinde.populationtotal) .sum(); println!("Total population of {}: {}", land.name, total_population); ```

Language

The primary language used for the software is English, thus most of documentation and code is in English. Nevertheless a lot of terms are inherently German, and a lot of identifiers in the software use these terms. Here are a few translations:

License

Licensed under MIT license (LICENSE or https://opensource.org/licenses/MIT)