No description
Find a file
2026-09-19 22:10:20 +02:00
.ai Add .ai/ documentation guides for multiple modules 2026-08-04 16:33:10 +02:00
.github/workflows fix: push bump commit to master via HEAD:master, stay on tag checkout 2026-09-19 21:05:41 +02:00
gradle fix: proper gradle wrapper, conditional signing, updated workflows 2026-09-19 10:10:55 +02:00
src Add DCAACodexTracingCollector to API service enums 2026-09-17 17:30:01 +02:00
.gitignore Create a shared Library for all shared Code between Codex and the app 2025-08-17 11:33:49 +02:00
AGENTS.md Add platform-specific location providers for JVM desktop targets 2026-08-14 13:54:30 +02:00
build.gradle.kts fix: restore findProperty for -PVERSION_NAME CI override to work 2026-09-19 20:21:55 +02:00
gradle.properties fix: proper gradle wrapper, conditional signing, updated workflows 2026-09-19 10:10:55 +02:00
gradlew fix: proper gradle wrapper, conditional signing, updated workflows 2026-09-19 10:10:55 +02:00
gradlew.bat fix: proper gradle wrapper, conditional signing, updated workflows 2026-09-19 10:10:55 +02:00
LICENSE Create a shared Library for all shared Code between Codex and the app 2025-08-17 11:33:49 +02:00
OpenData.http Add WFS models, serialization logic, and dependencies for geospatial data querying. 2025-09-12 15:40:12 +02:00
README.md Add Readme and Agents Files 2026-03-19 21:40:11 +01:00
renovate.json fix: use regex allowedVersions to filter cloud.mallne to stable only 2026-09-19 22:10:20 +02:00
settings.gradle.kts fix: add Nexus repository for dependency resolution in standalone CI builds 2026-09-19 18:47:06 +02:00

DiCentra AreaAssist Shared

DiCentra Kotlin License Kotlin Multiplatform

DiCentra AreaAssist Shared is the foundational Kotlin Multiplatform library for the AreaAssist framework. It provides a standardized data model for land parcels (Flurstücke) and powerful integration adapters to fetch spatial data from various public and private GIS services.

🚀 Key Features

  • Multiplatform Core: Shared logic and models for Android, iOS, JVM, JS, WasmJS, and Linux.
  • Unified Parcel Model: A robust domain model that abstracts away the differences between various GIS data providers.
  • Aviator Integration: Leverages the Aviator framework for flexible, staged data fetching and transformation.
  • Spatial Adapters: Built-in support for ESRI ArcGIS REST API and OGC Web Feature Service (WFS).

🧩 Aviator Plugins

AreaAssist Shared uses the Aviator plugin system to handle the complexities of different GIS protocols. These plugins act as "interceptors" and "transformers" in the data fetching pipeline.

📍 EsriAdapterPlugin

The EsriAdapterPlugin is designed to interact with ESRI ArcGIS Feature Servers.

  • Capabilities:
    • Automatic conversion of AreaAssistParameters (like boundaries and queries) into ESRI-specific where clauses and geometry envelopes.
    • Handles coordinate system transformations (defaults to EPSG:4326).
    • ExceededTransferLimit Handling: Automatically detects when a service returns partial results due to transfer limits and throws a specialized exception.
    • GeoJSON Inflation: Efficiently parses ESRI GeoJSON responses into high-level ParcelCrateEntity objects.

🌐 WfsAdapterPlugin

The WfsAdapterPlugin provides support for the OGC Web Feature Service (WFS 2.0.0) standard, commonly used by European public "Open Data" portals.

  • Capabilities:
    • XML/GML Support: Generates complex GetFeature POST requests with Filter Encoding (FES).
    • CRS Management: Integrated with Geokit to handle on-the-fly coordinate transformations between the client ( usually WGS84) and the service (e.g., ETRS89 / UTM).
    • Flexible Configuration: Supports custom typeNames, namespaces, and geometry pointers.

📋 Predefined Values (PreDefined)

To ensure interoperability between different data sources (e.g., Thuringia vs. Saxony), AreaAssist uses a set of * PreDefined* keys. These keys act as "semantic anchors" for parcel data.

When configuring a service, you map the provider's specific field names (references) to these predefined identifiers.

Key Description
PARCELID Unique identifier for the parcel (e.g., Flurstückskennzeichen).
PLOT The human-readable parcel number (e.g., 123/4).
PLOT_NUMERATOR The "Zähler" of the parcel number.
PLOT_DENOMINATOR The "Nenner" of the parcel number.
AREA The official area size (usually in m²).
DISTRICT The "Gemarkung" (Cadastral district).
DISTRICT_ID The official ID of the Gemarkung.
LOCATION Descriptive location/address (Lagebezeichnung).
USAGE Information about the land use (Nutzungsart).
USAGE_BUILDINGS Boolean flag indicating if the parcel is built upon.

Example Mapping (Thuringia):

DefaultKeys.fillIn(
    parcelId = "flstkennz",
    area = "flaeche",
    district = "gemarkung",
    plotNumerator = "flstnrzae",
    plotDenominator = "flstnrnen"
)

🛠 Tech Stack

  • Data: kotlinx.serialization (JSON & XML), MapLibre SpatialK
  • Network: Ktor Client
  • Spatial: Mallne Geokit (Coordinates, Projections, GeoJSON)
  • Integration: DiCentra Aviator

📦 Installation

Add the following to your build.gradle.kts:

repositories {
    maven("https://registry.mallne.cloud/repository/DiCentraArtefacts/")
}

dependencies {
    implementation("cloud.mallne.dicentra.areaassist:shared:1.0.0-SNAPSHOT")
}

⚖️ License

Licensed under the Apache License, Version 2.0.


Built with ❤️ by Mallne under the DiCentra umbrella