Skip to content

pt9912/flutter_map_sld

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

flutter_map_sld

Dart-/Flutter-Bibliothek zum Lesen, Validieren und Nutzen von Styled Layer Descriptor (SLD) und Symbology Encoding (SE) Styles.

Motivation

Im Geo-Umfeld ist SLD/SE der etablierte Standard zur Beschreibung von Kartenstilen. In Flutter/Dart existiert dafür keine Bibliothek, die gleichzeitig OGC-konforme Styles versteht, GeoServer-nahe Dialekte unterstützt und eine saubere Dart-API bereitstellt.

flutter_map_sld schließt diese Lücke — zuerst für Rasterstile, später erweiterbar auf Vektor-Symbolizer.

Packages

Das Projekt ist als kleine Package-Familie aufgebaut.

Package Status Beschreibung Abhängigkeiten
flutter_map_sld v0.1.0 Pure-Dart-Core: Parsing, Domain Model, Validation, Legend-/Farbskalen-Interop xml
flutter_map_sld_io v0.1.0 Datei- und HTTP-Helfer für Dart-/VM-Umgebungen Core + dart:io + http
flutter_map_sld_flutter_map unreleased Flutter-Asset-Helfer, flutter_map-Adapter und Widgets Core + Flutter + flutter_map

Der Core enthält bewusst keine Abhängigkeit auf dart:io, Flutter oder flutter_map und läuft auf Dart VM, Flutter Mobile, Desktop und Web.

Beispiel

import 'package:flutter_map_sld/flutter_map_sld.dart';

final parseResult = SldDocument.parseXmlString(xml);

if (parseResult.hasErrors) {
  for (final issue in parseResult.issues) {
    print('${issue.severity}: ${issue.message}');
  }
  return;
}

final sld = parseResult.document!;
final validation = SldValidator().validate(sld);

if (validation.hasErrors) {
  for (final issue in validation.issues) {
    print('${issue.severity}: ${issue.message}');
  }
  return;
}

final rasterStyles = sld.selectRasterSymbolizers();
if (rasterStyles.isEmpty) {
  return;
}

final colorMap = rasterStyles.first.colorMap;
if (colorMap == null) {
  return;
}

for (final entry in colorMap.entries) {
  print('${entry.label}: ${entry.colorArgb}');
}

MVP-Scope (v1)

Der erste Release ist raster-first und umfasst den Pure-Dart-Core:

  • Parsing von StyledLayerDescriptor, NamedLayer, UserStyle, FeatureTypeStyle, Rule, RasterSymbolizer
  • Rasterelemente: Opacity, ColorMap, ColorMapEntry, ContrastEnhancement
  • GeoServer-Praxisfälle: Rampen, Alpha-Verläufe, diskrete Intervalle
  • Getrennte Parse- und Validation-Ergebnisse
  • Legendendaten und Farbskalen aus Rasterstilen

Standards

Entwicklung

Kein lokales Dart SDK nötig — alle Befehle laufen via Docker:

# Analyse
docker build --target analyze -t flutter_map_sld:analyze .

# Tests
docker build --target test -t flutter_map_sld:test .

# Coverage
docker build --target coverage --no-cache-filter coverage --progress=plain .
docker build --target coverage-check --no-cache-filter coverage --progress=plain --build-arg COVERAGE_MIN=95 .

# Publish Dry-Run
docker build --target publish-check -t flutter_map_sld:publish-check .

# IO-Package
docker build --target io-analyze -t flutter_map_sld_io:analyze .
docker build --target io-test -t flutter_map_sld_io:test .
docker build --target io-coverage --no-cache-filter io-coverage --progress=plain .
docker build --target io-coverage-check --no-cache-filter io-coverage --progress=plain --build-arg COVERAGE_MIN=91 .
docker build --target io-publish-check -t flutter_map_sld_io:publish-check .

# Flutter-Adapter-Package
docker build --target flutter-map-analyze -t flutter_map_sld_flutter_map:analyze .
docker build --target flutter-map-test -t flutter_map_sld_flutter_map:test .
docker build --target flutter-map-coverage --no-cache-filter flutter-map-coverage --progress=plain .
docker build --target flutter-map-coverage-check --no-cache-filter flutter-map-coverage --progress=plain --build-arg COVERAGE_MIN=96 .
docker build --target flutter-map-publish-check -t flutter_map_sld_flutter_map:publish-check .

API-Dokumentation generieren

# Core
docker build --target doc -t flutter_map_sld:doc .
docker run --rm flutter_map_sld:doc | tar -xzf -

# IO-Package
docker build --target io-doc -t flutter_map_sld_io:doc .
docker run --rm flutter_map_sld_io:doc | tar -xzf -

# Flutter-Adapter-Package
docker build --target flutter-map-doc -t flutter_map_sld_flutter_map:doc .
docker run --rm flutter_map_sld_flutter_map:doc | tar -xzf -

Die HTML-Dokumentation liegt danach jeweils in doc/api/.

Manueller Publish via Docker

Für den allerersten Publish eines neuen Packages (automatisiertes Publishing erfordert eine existierende Version auf pub.dev):

# Core
docker build --target publish-check -t flutter_map_sld:publish .
docker run --rm -it --net=host flutter_map_sld:publish sh -c 'dart pub publish'

# IO-Package
docker build --target io-publish-check -t flutter_map_sld_io:publish .
docker run --rm -it --net=host flutter_map_sld_io:publish sh -c 'dart pub publish'

# Flutter-Adapter-Package
docker build --target flutter-map-publish-check -t flutter_map_sld_flutter_map:publish .
docker run --rm -it --net=host flutter_map_sld_flutter_map:publish sh -c 'flutter pub publish'

Automated-Publishing-Konfiguration:

Mit lokalem Dart SDK (>=3.0.0):

# Core
cd packages/flutter_map_sld
dart pub get && dart analyze && dart test

# IO-Package
cd packages/flutter_map_sld_io
dart pub get && dart analyze && dart test
dart pub publish --dry-run

# Flutter-Adapter-Package
cd packages/flutter_map_sld_flutter_map
flutter pub get && flutter analyze && flutter test
flutter pub publish --dry-run

Dokumentation

  • Concept — Produktvision, Scope und Zielgruppen
  • Architecture — Schichtmodell, Domain Model und Teststrategie
  • Roadmap — offene Ausbaupunkte nach dem aktuellen Release-Stand

Status

flutter_map_sld v0.2.0 und flutter_map_sld_io v0.1.0 sind auf pub.dev veröffentlicht. flutter_map_sld_flutter_map ist jetzt im Workspace angelegt, aber noch nicht auf pub.dev veröffentlicht.

About

Pure Dart parser and validation toolkit for OGC Styled Layer Descriptor (SLD) and Symbology Encoding (SE). Raster-first MVP for GeoServer-style ColorMap workflows, legends, and color scales, with no Flutter dependency in the core.

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors