Geodata

Geodata is a library package for Dart and Flutter mobile developers to help on accessing OGC API and other geospatial data sources.

Currently the package has a partial (and still quite limited) support for OGC API Features services with functions to read metadata and feature items.

Package

This is a Dart code package named geodata under the geospatial repository.

This package is at the alpha-stage, breaking changes are possible.

The package is associated with and depending on the datatools package containing non-geospatial Web API data structures and utilities that are extended and utilized by the geodata package to provide client-side access for geospatial APIs.

This package also utilizes the geocore package for geometry, metadata and feature data structures and GeoJSON parser, and the attributes package for non-geospatial data structures.

Installing

The package supports Dart null-safety and using it requires the latest SDK from a beta channel. However your package using it doesn't have to be migrated to null-safety yet.

Please see the official null-safety migration guide how to switch to the latest beta release of Dart or Flutter SDKs.

In the pubspec.yaml of your project add the dependency:

dependencies:
  geodata: ^0.4.0-nullsafety.0  

Please note that following dependencies used by geodata (indirect dependencies via datatools) are not yet migrated to null-safety or null-safety version is not depended from the datatools package:

Libraries

The package contains following mini-libraries:

LibraryDescription
model_baseData structures for client access of generic Web API clients.
model_commonData structures for client access of common geospatial Web APIs.
model_featuresData structures for client access of "geospatial features" Web APIs.
provider_commonAn abstract client-side data provider to read common geospatial Web APIs.
provider_featuresAn abstract client-side data provider to read "geospatial features" APIs.
source_oapi_commonAn abstract client-side data provider to read OGC API Common services.
source_oapi_featuresA client-side data provider to read services conforming to OGC API Features.

For example to access a mini library you should use an import like:

import 'package:geodata/source_oapi_features.dart';

To use all libraries of the package:

import 'package:geodata/geodata.dart';

Usage

An example how to setup an API client and a provider for OGC API Features service.

Imports:

import 'package:datatools/datatools.dart';
import 'package:geodata/geodata.dart';

Setting up an API client and a feature provider:

// Create an API client accessing HTTP endpoints.
final client = HttpApiClient.endpoints([
  Endpoint.url(baseURL),
]);

// Create a feature provider for OGC API Features (OAPIF).
final provider = FeatureProviderOAPIF.client(client);

Now it's possible to access metadata (the provider implementation calls a landing page or '/', '/conformance' and '/collections' resources under a base URL and combines all metadata fetched):

// Read metadata 
final meta = await provider.meta();

// do something with meta data accessed

Fetching items (or features of a OGC API Features service) as paged sets:

// Get feature resource for a collection by id
final resource = await provider.collection(collectionId);

// fetch feature items as paged results with max 10 features on one query
final items1 = await resource.itemsPaged(FeatureFilter(limit: 10));

// do something with feature items fetched

// check for next set (of max 10 features) and fetch it too if available
if (items1.hasNext) {
  final items2 = await items1.next();

  // do something with next set of feature items fetched
}

Please see full example code for more details.

Authors

This project is authored by Navibyte.

More information and other links are available at the geospatial repository from GitHub.

License

This project is licensed under the "BSD-3-Clause"-style license.

Please see the LICENSE.

Libraries

geodata
A geospatial client reading OGC API and other geospatial data sources. [...]
model_base
Data structures for client access of generic Web API clients. [...]
model_common
Data structures for client access of common geospatial Web APIs. [...]
model_features
Data structures for client access of "geospatial features" Web APIs. [...]
provider_common
An abstract client-side data provider to read common geospatial Web APIs. [...]
provider_features
An abstract client-side data provider to read "geospatial features" APIs. [...]
source_oapi_common
An abstract client-side data provider to read OGC API Common services. [...]
source_oapi_features
A client-side data provider to read services conforming to OGC API Features. [...]