geojson 0.4.0 geojson: ^0.4.0 copied to clipboard
Manipulate geojson data. Load and parse geojson from a string or a file.
Geojson #
Utilities to work with geojson data in Dart. Features:
- Parser: simple functions are available to parse geojson
- Reactive api: streams are available to retrieve the geojson features as soon as they are parsed
Note: the data is parsed in an isolate to avoid slowing down the main thread
Simple functions #
featuresFromGeoJson
: get a FeaturesCollection
from geojson string data. Parameters:
data
: a string with the geojson data, requirednameProperty
: the property used for the geoserie name, automaticaly set if nullverbose
: print the parsed data if true
featuresFromGeoJsonFile
: get a FeaturesCollection
from a geojson file. Parameters:
file
: the file to load, requirednameProperty
: the property used for the geoserie name, automaticaly set if nullverbose
: print the parsed data if true
Reactive api #
Typed streams are available to retrieve the features as soon as they are parsed. Example: add assets on a Flutter map:
import 'dart:math' as math;
import 'package:pedantic/pedantic.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:geojson/geojson.dart';
import 'package:flutter_map/flutter_map.dart' as map;
/// Data for the Flutter map polylines layer
final lines = <map.Polyline>[];
Future<void> processData() async {
final data = await rootBundle
.loadString('assets/railroads_of_north_america.geojson');
final geojson = GeoJson();
geojson.processedLines.listen((Line line) {
final color = Color((math.Random().nextDouble() * 0xFFFFFF).toInt() << 0)
.withOpacity(0.3);
setState(() => lines.add(map.Polyline(
strokeWidth: 2.0, color: color, points: line.geoSerie.toLatLng())));
});
geojson.endSignal.listen((_) => geojson.dispose());
unawaited(geojson.parse(data, verbose: true));
}
Check the examples for more details
Available streams: #
processedFeatures
: the parsed features: all the geometriesprocessedPoints
: the parsed pointsprocessedMultipoints
: the parsed multipointsprocessedLines
: the parsed linesprocessedMultilines
: the parsed multilinesprocessedPolygons
: the parsed polygonsprocessedMultipolygons
: the parsed multipolygonsendSignal
: parsing is finished indicator
Supported geojson features #
All the data structures use GeoPoint
and GeoSerie
from the GeoPoint package to store the geometry data. Data structures used:
FeatureCollection:
String
nameList<Feature>
collection
Feature:
FeatureType
type: one ofFeatureType.point
,FeatureType.multipoint
,FeatureType.line
,FeatureType.multiline
,FeatureType.polygon
,FeatureType.multipolygon
Map<String, dynamic>
properties: the json properties of the featuredynamic
geometry: the geometry data, depends on the feature type, see below
Point:
String
nameGeoPoint
geoPoint: the geometry data
MultiPoint:
String
nameGeoSerie
geoSerie: the geometry data: this will produce a geoSerie of typeGeoSerieType.group
Line:
String
nameGeoSerie
geoSerie: the geometry data: this will produce a geoSerie of typeGeoSerieType.line
MultiLine:
String
nameList<Line>
lines
Polygon:
String
nameList<GeoSerie>
geoSeries: the geometry data: this will produce a list of geoSerie of typeGeoSerieType.polygon
*
MultiPolygon:
String
nameList<Polygon>
polygons
Note: none of the parameters is final for all of these data structures