package.src.lib.geojson_utils.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plotly.js Show documentation
Show all versions of plotly.js Show documentation
The open source javascript graphing library that powers plotly
The newest version!
'use strict';
var BADNUM = require('../constants/numerical').BADNUM;
/**
* Convert calcTrace to GeoJSON 'MultiLineString' coordinate arrays
*
* @param {object} calcTrace
* gd.calcdata item.
* Note that calcTrace[i].lonlat is assumed to be defined
*
* @return {array}
* return line coords array (or array of arrays)
*
*/
exports.calcTraceToLineCoords = function(calcTrace) {
var trace = calcTrace[0].trace;
var connectgaps = trace.connectgaps;
var coords = [];
var lineString = [];
for(var i = 0; i < calcTrace.length; i++) {
var calcPt = calcTrace[i];
var lonlat = calcPt.lonlat;
if(lonlat[0] !== BADNUM) {
lineString.push(lonlat);
} else if(!connectgaps && lineString.length > 0) {
coords.push(lineString);
lineString = [];
}
}
if(lineString.length > 0) {
coords.push(lineString);
}
return coords;
};
/**
* Make line ('LineString' or 'MultiLineString') GeoJSON
*
* @param {array} coords
* results form calcTraceToLineCoords
* @return {object} out
* GeoJSON object
*
*/
exports.makeLine = function(coords) {
if(coords.length === 1) {
return {
type: 'LineString',
coordinates: coords[0]
};
} else {
return {
type: 'MultiLineString',
coordinates: coords
};
}
};
/**
* Make polygon ('Polygon' or 'MultiPolygon') GeoJSON
*
* @param {array} coords
* results form calcTraceToLineCoords
* @return {object} out
* GeoJSON object
*/
exports.makePolygon = function(coords) {
if(coords.length === 1) {
return {
type: 'Polygon',
coordinates: coords
};
} else {
var _coords = new Array(coords.length);
for(var i = 0; i < coords.length; i++) {
_coords[i] = [coords[i]];
}
return {
type: 'MultiPolygon',
coordinates: _coords
};
}
};
/**
* Make blank GeoJSON
*
* @return {object}
* Blank GeoJSON object
*
*/
exports.makeBlank = function() {
return {
type: 'Point',
coordinates: []
};
};