UNPKG

lizard-javascript-api

Version:

Library to interact with lizard assets, rasters and timeseries.

84 lines (65 loc) 2.25 kB
'use strict'; var _isomorphicFetch = require('isomorphic-fetch'); var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var baseUrl = function () { var absoluteBase = 'http://demo.lizard.net'; if (typeof window !== 'undefined') { var protocol = window && window.location.protocol; var host = window && window.location.host; var port = window && window.location.port; absoluteBase = protocol + '://' + host + ':' + port; } return absoluteBase; }(); var fetchItem = function fetchItem(entity, id) { var plural = entity + 's'; var request = new Request(baseUrl + '/api/v2/' + plural + '/' + id, { credentials: 'same-origin' }); return (0, _isomorphicFetch2.default)(request).then(function (response) { return response.json(); }); }; /** * Stringifies a GeoJSON object into WKT */ var geomToWkt = function geomToWkt(gj) { if (gj.type === 'Feature') { gj = gj.geometry; } function wrapParens(s) { return '(' + s + ')'; } function pairWKT(c) { return c.join(' '); } function ringWKT(r) { return r.map(pairWKT).join(', '); } function ringsWKT(r) { return r.map(ringWKT).map(wrapParens).join(', '); } function multiRingsWKT(r) { return r.map(ringsWKT).map(wrapParens).join(', '); } switch (gj.type) { case 'Point': return 'POINT (' + pairWKT(gj.coordinates) + ')'; case 'LineString': return 'LINESTRING (' + ringWKT(gj.coordinates) + ')'; case 'Polygon': return 'POLYGON (' + ringsWKT(gj.coordinates) + ')'; case 'MultiPoint': return 'MULTIPOINT (' + ringWKT(gj.coordinates) + ')'; case 'MultiPolygon': return 'MULTIPOLYGON (' + multiRingsWKT(gj.coordinates) + ')'; case 'MultiLineString': return 'MULTILINESTRING (' + ringsWKT(gj.coordinates) + ')'; case 'GeometryCollection': return 'GEOMETRYCOLLECTION (' + gj.geometries.map(undefined.geomToWkt).join(', ') + ')'; default: throw new Error('geomToWkt requires a valid GeoJSON Feature or geometry object as input'); } }; module.exports = { fetchItem: fetchItem, geomToWkt: geomToWkt, baseUrl: baseUrl };