43 lines
1 KiB
JavaScript
43 lines
1 KiB
JavaScript
module.exports = normalize;
|
|
|
|
var types = {
|
|
Point: 'geometry',
|
|
MultiPoint: 'geometry',
|
|
LineString: 'geometry',
|
|
MultiLineString: 'geometry',
|
|
Polygon: 'geometry',
|
|
MultiPolygon: 'geometry',
|
|
GeometryCollection: 'geometry',
|
|
Feature: 'feature',
|
|
FeatureCollection: 'featurecollection'
|
|
};
|
|
|
|
/**
|
|
* Normalize a GeoJSON feature into a FeatureCollection.
|
|
*
|
|
* @param {object} gj geojson data
|
|
* @returns {object} normalized geojson data
|
|
*/
|
|
function normalize(gj) {
|
|
if (!gj || !gj.type) return null;
|
|
var type = types[gj.type];
|
|
if (!type) return null;
|
|
|
|
if (type === 'geometry') {
|
|
return {
|
|
type: 'FeatureCollection',
|
|
features: [{
|
|
type: 'Feature',
|
|
properties: {},
|
|
geometry: gj
|
|
}]
|
|
};
|
|
} else if (type === 'feature') {
|
|
return {
|
|
type: 'FeatureCollection',
|
|
features: [gj]
|
|
};
|
|
} else if (type === 'featurecollection') {
|
|
return gj;
|
|
}
|
|
}
|