| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // Given a hash of GeoJSON objects, returns a hash of GeoJSON geometry objects.
- // Any null input geometry objects are represented as {type: null} in the output.
- // Any feature.{id,properties,bbox} are transferred to the output geometry object.
- // Each output geometry object is a shallow copy of the input (e.g., properties, coordinates)!
- export default function(inputs) {
- var outputs = {}, key;
- for (key in inputs) outputs[key] = geomifyObject(inputs[key]);
- return outputs;
- }
- function geomifyObject(input) {
- return input == null ? {type: null}
- : (input.type === "FeatureCollection" ? geomifyFeatureCollection
- : input.type === "Feature" ? geomifyFeature
- : geomifyGeometry)(input);
- }
- function geomifyFeatureCollection(input) {
- var output = {type: "GeometryCollection", geometries: input.features.map(geomifyFeature)};
- if (input.bbox != null) output.bbox = input.bbox;
- return output;
- }
- function geomifyFeature(input) {
- var output = geomifyGeometry(input.geometry), key; // eslint-disable-line no-unused-vars
- if (input.id != null) output.id = input.id;
- if (input.bbox != null) output.bbox = input.bbox;
- for (key in input.properties) { output.properties = input.properties; break; }
- return output;
- }
- function geomifyGeometry(input) {
- if (input == null) return {type: null};
- var output = input.type === "GeometryCollection" ? {type: "GeometryCollection", geometries: input.geometries.map(geomifyGeometry)}
- : input.type === "Point" || input.type === "MultiPoint" ? {type: input.type, coordinates: input.coordinates}
- : {type: input.type, arcs: input.coordinates}; // TODO Check for unknown types?
- if (input.bbox != null) output.bbox = input.bbox;
- return output;
- }
|