UNPKG

winnow

Version:

Apply sql-like filters to GeoJSON

31 lines (26 loc) 889 B
const filterAndTransform = require('./filter-and-transform') module.exports = function (statement) { const query = filterAndTransform.compile(statement) return function (params) { const normalizedParams = normalizeParams(params) return query(normalizedParams) } } function normalizeParams (inParams) { let params // If this is just a passed in feature if (!inParams.length) params = [[inParams]] // If this is an array of features if (isGeoJSONFeatures(inParams) || isEsriFeatures(inParams)) params = [inParams] return params } function isGeoJSONFeatures (candidate) { const feature = candidate[0] || {} if (feature.type && feature.type.toLowerCase() === 'feature') return true else return false } function isEsriFeatures (candidate) { const feature = candidate[0] || {} if (feature.attributes || feature.geometry) return true else return false }