pretrip_source_digitraffic 0.2.3 copy "pretrip_source_digitraffic: ^0.2.3" to clipboard
pretrip_source_digitraffic: ^0.2.3 copied to clipboard

Fintraffic Digitraffic measured road-visibility source for the pretrip_decision_advisor briefing. Fetches the nearest fresh NÄKYVYYS_M road-weather sensor and emits a source-neutral VisibilityObservat [...]

example/main.dart

// Minimal usage example for pretrip_source_digitraffic.
//
// Fetches the nearest fresh measured road-network visibility near a point in
// southern Finland, merges it onto the departure-hour slot of a forecast, and
// prints the measurement. Visibility is NEVER estimated: when no fresh sensor
// is in range the observation is `null` and nothing is fabricated — that is the
// driver's own judgment to make.
import 'package:pretrip_decision_advisor/pretrip_decision_advisor.dart';
import 'package:pretrip_source_digitraffic/pretrip_source_digitraffic.dart';

Future<void> main() async {
  final provider = DigitrafficVisibilityProvider();
  try {
    final departure = DateTime.now();
    final observation = await provider.fetchNearestVisibility(
      latitude: 60.17,
      longitude: 24.93,
      now: departure,
    );

    if (observation == null) {
      // No fresh sensor in range — nothing is estimated. The forecast is
      // surfaced as-is; the call on the drive stays with the driver.
      print('No fresh measured visibility in range — not estimated.');
      print(kDigitrafficVisibilityAttributionString);
      return;
    }

    print(
      'Measured visibility ${observation.meters} m at '
      '${observation.stationName} (${observation.distanceKm.toStringAsFixed(1)} '
      'km away), measured ${observation.measuredAt.toIso8601String()}.',
    );

    // The measurement is valid for the DEPARTURE HOUR only — never projected
    // forward. mergeObservedVisibility (from pretrip_decision_advisor) sets it
    // on the covering departure-hour slot and leaves every later hour untouched.
    final forecast = WeatherForecast(
      issuedAt: departure,
      hourly: [
        for (var h = 0; h < 6; h++)
          HourlyForecast(
            hour: DateTime(
              departure.year,
              departure.month,
              departure.day,
              departure.hour + h,
            ),
            tempCelsius: -4,
            precipitationMmPerHour: 1.0,
          ),
      ],
    );
    final merged = mergeObservedVisibility(forecast, observation, departure);
    print(
      'Departure-hour visibility on the briefing: '
      '${merged.hourly.first.visibilityMeters} m.',
    );

    // Attribution is required at the consumer-facing surface (CC BY 4.0).
    print(kDigitrafficVisibilityAttributionString);
  } finally {
    provider.close();
  }
}
0
likes
150
points
290
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Fintraffic Digitraffic measured road-visibility source for the pretrip_decision_advisor briefing. Fetches the nearest fresh NÄKYVYYS_M road-weather sensor and emits a source-neutral VisibilityObservation. Pure Dart.

Repository (GitHub)
View/report issues
Contributing

Topics

#pretrip #visibility #digitraffic #finland #winter-driving

License

BSD-3-Clause (license)

Dependencies

http, pretrip_decision_advisor

More

Packages that depend on pretrip_source_digitraffic