simple_features library
Functions
dynamic parseGeoJson(String geoJson) #
Parses GeoJSON.
Returns a Geometry, a Feature, or a FeatureCollection.
parseGeoJson(String geoJson) { var value = json.parse(geoJson); assert(value is Map); Point pos(coord) => new Point(coord[0], coord[1]); List<DirectPosition2D> poslist(l) => l.map(pos).toList(); deserializePoint(Map gj) => pos(gj["coordinates"]); deserializeMultiPoint(Map gj) => new MultiPoint(poslist(gj["coordinates"])); deserializeLineString(Map gj) => new LineString(poslist(gj["coordinates"])); deserializeMultiLineString(Map gj) => new MultiLineString( gj["coordinates"] .map((ls) => new LineString(poslist(ls))) .toList() ); polygonFromCoordinates(coords) { var rings = coords .map((l) => poslist(l)) .map((poslist) => new LineString(poslist)) .toList(); return new Polygon(rings.first, rings.skip(1)); } deserializePolygon(Map gj) => polygonFromCoordinates(gj["coordinates"]); deserializeMultipolygon(Map gj) => new MultiPolygon( gj["coordinates"] .map((coords) => polygonFromCoordinates(coords)) .toList() ); var deserialize; deserializeGeometryCollection(Map gj) => new GeometryCollection(gj["geometries"] .map((o) => deserialize(o)) .toList() ); deserializeFeature(Map gj) { var geometry = deserialize(gj["geometry"]); var properties = gj["properties"]; return new Feature(geometry, properties); } deserializeFeatureCollection(Map gj) { var features = gj["features"] .map((f) => deserializeFeature(f)) .toList(); return new FeatureCollection(features); } deserialize = (Map gj) { switch(gj["type"]) { case "Point": return deserializePoint(gj); case "MultiPoint": return deserializeMultiPoint(gj); case "LineString": return deserializeLineString(gj); case "MultiLineString": return deserializeMultiLineString(gj); case "Polygon": return deserializePolygon(gj); case "MultiPolygon": return deserializeMultipolygon(gj); case "GeometryCollection": return deserializeGeometryCollection(gj); case "Feature": return deserializeFeature(gj); case "FeatureCollection" : return deserializeFeatureCollection(gj); default: throw new FormatException( "unknown GeoJson object type '${gj['type']}" ); } }; return deserialize(value); }