@bravemobile/korea-administrative-area-geo-json-util
Version:
```shell npm install @bravemobile/korea-administrative-area-geo-json-util ```
60 lines (59 loc) • 2.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCircleBboxCoordinates = exports.getBboxCoordinates = exports.cloneMultiPolygons = exports.is3DPosition = void 0;
var bbox_1 = __importDefault(require("@turf/bbox"));
var circle_1 = __importDefault(require("@turf/circle"));
var clone_1 = __importDefault(require("@turf/clone"));
/**
* Position값의 3차원 배열 여부를 반환합니다.
*/
var is3DPosition = function (coordinates) {
return Array.isArray(coordinates[0][0][0]);
};
exports.is3DPosition = is3DPosition;
/**
* 주어진 Polygon | MultiPolygon geojson을 deep copy 합니다.
*/
var cloneMultiPolygons = function (features) { return features.map(function (feature) { return clone_1.default(feature); }); };
exports.cloneMultiPolygons = cloneMultiPolygons;
/**
* 주어진 geojson을 포함하는 boundbox의 coordinate 배열을 반환합니다.
*/
var getBboxCoordinates = function (geoJson) {
// 주어진 GeoJSON이 없을경우 빈 배열을 반환
if (geoJson === null)
return [];
// 주어진 GeoJSON의 bounding box를 구함 (위도, 경도가 번갈아가며 놓인 배열)
return (bbox_1.default(geoJson)
// bounding box를 순회하며 위도 경도가 한쌍인 이차원 배열로 변환
.reduce(function (result, value, index, array) {
if (index % 2 === 0)
result.push(array.slice(index, index + 2));
return result;
}, [])
// 위도, 경도를 Coordinates 매핑
.map(function (_a) {
var lng = _a[0], lat = _a[1];
return ({
lat: lat,
lng: lng,
});
}));
};
exports.getBboxCoordinates = getBboxCoordinates;
/**
* 주어진 중심점을 기준으로 생성한 원을 포함한 BoundingBox의 Coordinates 배열을 구합니다.
*
* @param center 중심 위경도
* @param radiusInMeter 생성할 원의 반지름 (미터 단위)
*/
var getCircleBboxCoordinates = function (center, radiusInMeter) {
var feature = circle_1.default([center.lng, center.lat], radiusInMeter, {
units: "meters",
});
return exports.getBboxCoordinates(feature);
};
exports.getCircleBboxCoordinates = getCircleBboxCoordinates;