Skip to content
Frank Stüber edited this page Nov 19, 2024 · 2 revisions

The GV100AD file from Destatis (the German Federal Statistical Office) is part of their municipal directory system, specifically designed to provide structured data on German municipalities. This file is available in a fixed-length ASCII format, which allows for consistent data entry and processing. The GV100AD updates regularly, with monthly and quarterly releases, capturing essential information about municipalities, including geographical data and demographic statistics.

The OpenPlzApi.GV100AD library contains classes for parsing GV100AD files.

Setup

You can install OpenPlzApi.GV100AD via NuGet:

dotnet add package OpenPlzApi.GV100AD

Reading example

The following example iterates through a GV100AD file and prints out all municipalities of Rhineland-Palatinate (Rheinhland-Pfalz):

using OpenPlzApi.GV100AD;

public class Program
{
    // Path to the GV100AD file, please adjust.
    static string filePath = "GV100AD_31082024.txt";

    // Main entry point 
    public static async Task Main(string[] args)
    {
        await ProcessMunicipalities(filePath);
    }

    // Prints all available attributes of a Municipality object
    public static void PrintMunicipalityAttributes(Municipality municipality)
    {
        Console.WriteLine($"Name: {municipality.Name}");
        Console.WriteLine($"Regional Code: {municipality.RegionalCode}");
        Console.WriteLine($"Association: {municipality.Association}");
        Console.WriteLine($"Type: {municipality.Type}");
        Console.WriteLine($"Area: {municipality.Area}");
        Console.WriteLine($"Inhabitants: {municipality.Inhabitants}");
        Console.WriteLine($"Inhabitants Male: {municipality.InhabitantsMale}");
        Console.WriteLine($"Postal Code: {municipality.PostalCode}");
        Console.WriteLine($"Multiple Postal Codes: {municipality.MultiplePostalCodes}");
        Console.WriteLine($"Tax Office District: {municipality.TaxOfficeDistrict}");
        Console.WriteLine($"Higher Regional Court District: {municipality.HigherRegionalCourtDistrict}");
        Console.WriteLine($"Regional Court District: {municipality.RegionalCourtDistrict}");
        Console.WriteLine($"Local Court District: {municipality.LocalCourtDistrict}");
        Console.WriteLine($"Employment Agency District: {municipality.EmploymentAgencyDistrict}");
        Console.WriteLine($"Timestamp: {municipality.TimeStamp}");
        Console.WriteLine();
    }

    // Asynchronously opens the GV100AD file, iterates through all records and prints the attributes only for
    // municipalities of Rhineland-Palatinate
    public static async Task ProcessMunicipalities(string filePath)
    {
        using var reader = new StreamReader(filePath);

        var gvReader = new GV100ADReader(reader);

        await foreach (var record in gvReader.ReadAsync())
        {
            if (record is Municipality municipality && municipality.RegionalCode.StartsWith("07"))
            {
                PrintMunicipalityAttributes(municipality);
            }
        }
    }
}

Clone this wiki locally