@turf/nearest-neighbor-analysis
Version:
turf nearest-neighbor-analysis module
57 lines (51 loc) • 2.18 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});// index.ts
var _area = require('@turf/area');
var _bbox = require('@turf/bbox');
var _bboxpolygon = require('@turf/bbox-polygon');
var _centroid = require('@turf/centroid');
var _distance = require('@turf/distance');
var _nearestpoint = require('@turf/nearest-point');
var _meta = require('@turf/meta');
var _helpers = require('@turf/helpers');
function nearestNeighborAnalysis(dataset, options) {
options = options || {};
const studyArea = options.studyArea || _bboxpolygon.bboxPolygon.call(void 0, _bbox.bbox.call(void 0, dataset));
const properties = options.properties || {};
const units = options.units || "kilometers";
const features = [];
_meta.featureEach.call(void 0, dataset, (feature) => {
features.push(_centroid.centroid.call(void 0, feature));
});
const n = features.length;
const observedMeanDistance = features.map((feature, index) => {
const otherFeatures = _helpers.featureCollection.call(void 0,
features.filter((f, i) => {
return i !== index;
})
);
return _distance.distance.call(void 0,
feature,
_nearestpoint.nearestPoint.call(void 0, feature, otherFeatures).geometry.coordinates,
{ units }
);
}).reduce((sum, value) => {
return sum + value;
}, 0) / n;
const populationDensity = n / _helpers.convertArea.call(void 0, _area.area.call(void 0, studyArea), "meters", units);
const expectedMeanDistance = 1 / (2 * Math.sqrt(populationDensity));
const variance = 0.26136 / Math.sqrt(n * populationDensity);
properties.nearestNeighborAnalysis = {
units,
arealUnits: units + "\xB2",
observedMeanDistance,
expectedMeanDistance,
nearestNeighborIndex: observedMeanDistance / expectedMeanDistance,
numberOfPoints: n,
zScore: (observedMeanDistance - expectedMeanDistance) / variance
};
studyArea.properties = properties;
return studyArea;
}
var turf_nearest_neighbor_analysis_default = nearestNeighborAnalysis;
exports.default = turf_nearest_neighbor_analysis_default; exports.nearestNeighborAnalysis = nearestNeighborAnalysis;
//# sourceMappingURL=index.cjs.map