UNPKG

ravendb

Version:
53 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SpatialCriteriaFactory = void 0; const Constants_js_1 = require("../../../Constants.js"); const WktCriteria_js_1 = require("./WktCriteria.js"); const CircleCriteria_js_1 = require("./CircleCriteria.js"); const TypeUtil_js_1 = require("../../../Utility/TypeUtil.js"); class SpatialCriteriaFactory { static INSTANCE = new SpatialCriteriaFactory(); constructor() { // empty } relatesToShape(shapeWkt, relation, units, distErrorPercent) { if (TypeUtil_js_1.TypeUtil.isNullOrUndefined(distErrorPercent)) { distErrorPercent = Constants_js_1.CONSTANTS.Documents.Indexing.Spatial.DEFAULT_DISTANCE_ERROR_PCT; } return new WktCriteria_js_1.WktCriteria(shapeWkt, relation, units, distErrorPercent); } static _normalizeArgs(distErrorPercentOrUnits, distErrorPercent) { let units = null; if (TypeUtil_js_1.TypeUtil.isString(distErrorPercentOrUnits)) { units = distErrorPercentOrUnits; } else if (TypeUtil_js_1.TypeUtil.isNumber(distErrorPercentOrUnits)) { distErrorPercent = distErrorPercentOrUnits; units = null; } distErrorPercent = distErrorPercent ?? Constants_js_1.CONSTANTS.Documents.Indexing.Spatial.DEFAULT_DISTANCE_ERROR_PCT; return { units, distErrorPercent }; } intersects(shapeWkt, distErrorPercentOrUnits, distErrorPercent) { const args = SpatialCriteriaFactory._normalizeArgs(distErrorPercentOrUnits, distErrorPercent); return this.relatesToShape(shapeWkt, "Intersects", args.units, args.distErrorPercent); } contains(shapeWkt, distErrorPercentOrUnits, distErrorPercent) { const args = SpatialCriteriaFactory._normalizeArgs(distErrorPercentOrUnits, distErrorPercent); return this.relatesToShape(shapeWkt, "Contains", args.units, args.distErrorPercent); } disjoint(shapeWkt, distErrorPercentOrUnits, distErrorPercent) { const args = SpatialCriteriaFactory._normalizeArgs(distErrorPercentOrUnits, distErrorPercent); return this.relatesToShape(shapeWkt, "Disjoint", args.units, args.distErrorPercent); } within(shapeWkt, distErrorPercentOrUnits, distErrorPercent) { const args = SpatialCriteriaFactory._normalizeArgs(distErrorPercentOrUnits, distErrorPercent); return this.relatesToShape(shapeWkt, "Within", args.units, args.distErrorPercent); } withinRadius(radius, latitude, longitude, radiusUnits = null, distErrorPercent) { distErrorPercent = distErrorPercent ?? Constants_js_1.CONSTANTS.Documents.Indexing.Spatial.DEFAULT_DISTANCE_ERROR_PCT; return new CircleCriteria_js_1.CircleCriteria(radius, latitude, longitude, radiusUnits, "Within", distErrorPercent); } } exports.SpatialCriteriaFactory = SpatialCriteriaFactory; //# sourceMappingURL=SpatialCriteriaFactory.js.map