Socket
Socket
Sign inDemoInstall

terraformer-wkt-parser

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

terraformer-wkt-parser - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

test/convert-test.js

3

index.js
var parser = require('./parser');
exports.parser = parser;
exports.parse = parser.parse;
exports.parse = parser.parse;
exports.convert = parser.convert;
{
"name": "terraformer-wkt-parser",
"version": "0.1.3",
"version": "0.1.4",
"description": "Well-Known Text parser",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -467,4 +467,208 @@ (function (root, factory) {

return new Parser;
})();
})();function arrayToRing (arr) {
var parts = [ ], ret = '';
for (var i = 0; i < arr.length; i++) {
parts.push(arr[i].join(' '));
}
ret += '(' + parts.join(', ') + ')';
return ret;
}
function pointToWKTPoint (primitive) {
var ret = 'POINT ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates.length === 3) {
// 3d or time? default to 3d
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates.length === 4) {
// 3d and time
ret += 'ZM ';
}
// include coordinates
ret += '(' + primitive.coordinates.join(' ') + ')';
return ret;
}
function lineStringToWKTLineString (primitive) {
var ret = 'LINESTRING ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates[0][0].length === 3) {
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates[0][0].length === 4) {
ret += 'ZM ';
}
ret += arrayToRing(primitive.coordinates);
return ret;
}
function polygonToWKTPolygon (primitive) {
var ret = 'POLYGON ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates[0][0].length === 3) {
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates[0][0].length === 4) {
ret += 'ZM ';
}
ret += '(';
var parts = [ ];
for (var i = 0; i < primitive.coordinates.length; i++) {
parts.push(arrayToRing(primitive.coordinates[i]));
}
ret += parts.join(', ');
ret += ')';
return ret;
}
function multiPointToWKTMultiPoint (primitive) {
var ret = 'MULTIPOINT ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates[0][0].length === 3) {
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates[0][0].length === 4) {
ret += 'ZM ';
}
ret += arrayToRing(primitive.coordinates);
return ret;
}
function multiLineStringToWKTMultiLineString (primitive) {
var ret = 'MULTILINESTRING ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates[0][0].length === 3) {
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates[0][0].length === 4) {
ret += 'ZM ';
}
ret += '(';
var parts = [ ];
for (var i = 0; i < primitive.coordinates.length; i++) {
parts.push(arrayToRing(primitive.coordinates[i]));
}
ret += parts.join(', ');
ret += ')';
return ret;
}
function multiPolygonToWKTMultiPolygon (primitive) {
var ret = 'MULTIPOLYGON ';
if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {
ret += 'EMPTY';
return ret;
} else if (primitive.coordinates[0][0][0].length === 3) {
if (primitive.properties.m === true) {
ret += 'M ';
} else {
ret += 'Z ';
}
} else if (primitive.coordinates[0][0][0].length === 4) {
ret += 'ZM ';
}
ret += '(';
var inner = [ ];
for (var c = 0; c < primitive.coordinates.length; c++) {
var it = '(';
var parts = [ ];
for (var i = 0; i < primitive.coordinates[c].length; i++) {
parts.push(arrayToRing(primitive.coordinates[c][i]));
}
it += parts.join(', ');
it += ')';
inner.push(it);
}
ret += inner.join(', ');
ret += ')';
return ret;
}
function convert (primitive) {
switch (primitive.type) {
case 'Point':
return pointToWKTPoint(primitive);
break;
case 'LineString':
return lineStringToWKTLineString(primitive);
break;
case 'Polygon':
return polygonToWKTPolygon(primitive);
break;
case 'MultiPoint':
return multiPointToWKTMultiPoint(primitive);
break;
case 'MultiLineString':
return multiLineStringToWKTMultiLineString(primitive);
break;
case 'MultiPolygon':
return multiPolygonToWKTMultiPolygon(primitive);
break;
default:
throw Error ("Unknown Type: " + primitive.type);
}
}
exports.convert = convert;
function PointArray (point) {

@@ -471,0 +675,0 @@ this.data = [ point ];

@@ -17,2 +17,10 @@ # Terraformer Well-Known Text Parser

var polygon = wkt.convert(
{
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
}
);

@@ -222,3 +222,2 @@ var vows = require('vows'),

'the point should be correctly converted to Loqi-GeoJSON internally': function (topic) {
console.dir(topic);
assert.equal(topic.type, "MultiPolygon");

@@ -225,0 +224,0 @@ assert.equal(topic.coordinates.length, 2);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc