lizard-javascript-api
Version:
Library to interact with lizard assets, rasters and timeseries.
84 lines (65 loc) • 2.25 kB
JavaScript
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 };
;