geojson_vi 1.0.1
geojson_vi: ^1.0.1 copied to clipboard
GeoJSON package for Dart developers.
GeoJSON package for Dart developers. #
This package is referenced originally from the specification document: H. Butler, M. Daly, A. Doyle, S. Gillies, S. Hagen, and T. Schaub, "The GeoJSON Format", August 2016, https://tools.ietf.org/html/rfc7946.
Usage #
Read the GeoJSON file #
import 'package:geojson_vi/geojson_vi.dart';
void main() {
// # Read the GeoJSON file
var launchTime = DateTime.now();
GeoJSON.load('example/data/parcels_82mb.geojson').then((GeoJSON geoJSON) {
print(geoJSON.featureCollection.features.length);
print(DateTime.now().difference(launchTime));
});
}
Read the GeoJSON file async #
import 'package:geojson_vi/geojson_vi.dart';
Future<void> main() async {
// # Read the GeoJSON file async
var launchTime = DateTime.now();
var geoJSON = await GeoJSON.load('example/data/parcels_82mb.geojson');
print(geoJSON.featureCollection.features.length);
print(DateTime.now().difference(launchTime));
}
Create new GeoJSON with a Feature #
Create an empty GeoJSON file, then add a feature and save it.
import 'package:geojson_vi/geojson_vi.dart';
void main() {
// ### Create new GeoJSON with a Feature
// Create an empty GeoJSON file, then add a feature and save it.
// New GeoJSON
final geoJSON = GeoJSON.create('example/data/new.geojson');
// TODO: your code here...
geoJSON.save();
}
Create the Feature #
import 'package:geojson_vi/geojson_vi.dart';
void main() {
// ### Create a Feature with Point geometry
// New GeoJSON
final geoJSON = GeoJSON.create('example/data/new.geojson');
// One position
final pos = <double>[];
pos.add(105.7743099);
pos.add(21.0717561);
// or pos.addAll([105.7743099,21.0717561]);
// Create a Point geometry from one position
final geom_point = GeoJSONPoint(pos);
// Create a Feature
final feature_point = GeoJSONFeature(geom_point);
feature_point.properties['marker-color'] = '#7e7e7e';
feature_point.properties['marker-size'] = 'medium';
feature_point.properties['marker-symbol'] = 'college';
feature_point.properties['title'] = 'Hanoi University of Mining and Geology';
feature_point.properties['department'] = 'Geoinformation Technology';
feature_point.properties['address'] = 'No.18 Vien Street - Duc Thang Ward - Bac Tu Liem District - Ha Noi, Vietnam';
feature_point.properties['url'] = 'http://humg.edu.vn';
// Add the feature to featureCollection
geoJSON.featureCollection.features.add(feature_point);
// ### Create a Feature with LineString geometry
// LineString from 3 positions
final pos1 = [105.7771289,21.0715458];
final pos2 = [105.7745218,21.0715658];
final pos3 = [105.7729125,21.0715358];
// Create a LineString geometry from array of position
final geom_line_string = GeoJSONLineString([pos1, pos2, pos3]);
// Create a Feature
final feature_line_string = GeoJSONFeature(geom_line_string);
feature_line_string.properties['stroke'] = '#7e7e7e';
feature_line_string.properties['stroke-width'] = 2;
feature_line_string.properties['stroke-opacity'] = 1;
feature_line_string.properties['title'] = 'Vien St.';
// Add the fearture to featureCollection
geoJSON.featureCollection.features.add(feature_line_string);
// ### Create a Feature with Polygon geometry
// A linear ring is a closed LineString with four or more positions.
// The first and last positions are equivalent, and they MUST contain
// identical values; their representation SHOULD also be identical.
final p01 = [105.7739666,21.0726795]; // The first position
final p02 = [105.7739719,21.0721991];
final p03 = [105.7743394,21.0721966];
final p04 = [105.7743310,21.0725269];
final p05 = [105.7742564,21.0726120];
final p06 = [105.7741865,21.0726095];
final p07 = [105.7741785,21.0726746];
final p08 = [105.7739666,21.0726795]; // The last position
//The exterior ring (boundary)
final linerRing = [p01,p02,p03,p04,p05,p06,p07,p08];
// Create a Polygon geometry from array of position
final geom_polygon = GeoJSONPolygon([
linerRing,
// and others the interior rings (if present) bound holes within the surface
]);
// Create a Feature
final feature_polygon = GeoJSONFeature(geom_polygon);
feature_polygon.properties['stroke'] = '#555555';
feature_polygon.properties['stroke-width'] = 2;
feature_polygon.properties['stroke-opacity'] = 1;
feature_polygon.properties['fill'] = '#ab7942';
feature_polygon.properties['fill-opacity'] = 0.5;
feature_polygon.properties['title'] = 'HUMG\'s Office';
// Add to featureCollection
geoJSON.featureCollection.features.add(feature_polygon);
geoJSON.save();
}
Output: new.geojson
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"marker-color": "#7e7e7e",
"marker-size": "medium",
"marker-symbol": "college",
"title": "Hanoi University of Mining and Geology",
"department": "Geoinformation Technology",
"address": "No.18 Vien Street - Duc Thang Ward - Bac Tu Liem District - Ha Noi, Vietnam",
"url": "http://humg.edu.vn"
},
"geometry": {
"type": "Point",
"coordinates": [
105.7743099,
21.0717561
]
}
},
{
"type": "Feature",
"properties": {
"stroke": "#7e7e7e",
"stroke-width": 2,
"stroke-opacity": 1,
"title": "Vien St."
},
"geometry": {
"type": "LineString",
"coordinates": [
[
105.7771289,
21.0715458
],
[
105.7745218,
21.0715658
],
[
105.7729125,
21.0715358
]
]
}
},
{
"type": "Feature",
"properties": {
"stroke": "#555555",
"stroke-width": 2,
"stroke-opacity": 1,
"fill": "#ab7942",
"fill-opacity": 0.5,
"title": "HUMG's Office"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
105.7739666,
21.0726795
],
[
105.7739719,
21.0721991
],
[
105.7743394,
21.0721966
],
[
105.774331,
21.0725269
],
[
105.7742564,
21.072612
],
[
105.7741865,
21.0726095
],
[
105.7741785,
21.0726746
],
[
105.7739666,
21.0726795
]
]
]
}
}
]
}