import {IGeoTransformStrategy} from './geo-transform-strategy.interface'; import {IRecord, RecordCollection} from '../record-collection'; import {IFeatureCollection} from '../../utility/feature-collection.interface'; import {FeatureIdService} from '../../utility/feature-id.service'; import * as turf from 'turf'; export class GeoJsonTransformStrategy implements IGeoTransformStrategy { private idService: FeatureIdService = new FeatureIdService(); transform(record: IRecord, collection: RecordCollection): IFeatureCollection { const polygon = turf.polygon(record['geoJson'].coordinates, record); polygon.crs = record['geoJson'].crs; const point = turf.centroid(polygon); point.properties = record; return _([polygon, point]) .filter(_.isObject) .map(this.idService.addFeatureId) .thru(features => turf.featurecollection(features)) .value(); } }