Crate gv100ad[][src]

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:

The parser was tested with this data set:

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


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

use gv100ad::{
        land::{LandDaten, LandSchluessel},

// Open the database. Refer to the `` 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();

// Iterate over the districts (Kreise) in Saarland
for kreis in db.children::<_, KreisDaten>(schluessel) {
    println!("  {}:",;

    // Iterate over the municipalities (Gemeinde) in the district (Kreis)
    for gemeinde in db.children::<_, GemeindeDaten>(kreis.schluessel) {
            "    {}: {} residents",
  , 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)
println!("Total population of {}: {}",, total_population);


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:

  • Land: State (also called Bundesland)
  • Regierungsbezirk: Government district
  • Kreis: District
  • Gemeinde: Municipality (more literally “community”)
  • Verband: Association
  • Schluessel: Key
  • Textkennzeichen: Textual (it’s actually a number) identifier for type of Kreis, Gemeindeverband or Gemeinde.
  • Daten: data, in context e.g. “Landdaten” means “state data” or “state record”.

If you think a translation is incorrect or missing, please open an issue.


pub use db::Database;
pub use parser::Parser;