- Kotlin 100%
This commit introduces the GeoCompass feature for geological measurements, enabling users to measure strike, dip, and dip direction. It includes UI enhancements, underlying model updates, and related string resources, along with navigation and lifecycle updates to support the new tool. |
||
|---|---|---|
| .github | ||
| gradle | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| LICENSE | ||
| OpenData.http | ||
| README.md | ||
| settings.gradle.kts | ||
DiCentra AreaAssist Shared
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-specificwhereclauses andgeometryenvelopes. - 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
ParcelCrateEntityobjects.
- Automatic conversion of
🌐 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
GetFeaturePOST requests with Filter Encoding (FES). - CRS Management: Integrated with
Geokitto 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.
- XML/GML Support: Generates complex
📋 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:
KtorClient - 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