First commit
This commit is contained in:
commit
87d22a4516
235 changed files with 51802 additions and 0 deletions
21
node_modules/wkt-parser/.eslintrc
generated
vendored
Normal file
21
node_modules/wkt-parser/.eslintrc
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
extends: "eslint:recommended",
|
||||
"env": {
|
||||
"node": true,
|
||||
"browser": true },
|
||||
"parserOptions": {
|
||||
"sourceType": "module",
|
||||
},
|
||||
"rules": {
|
||||
"indent": [2, 2, {"SwitchCase": 1}],
|
||||
"brace-style": [2, "1tbs"],
|
||||
"quotes": [2, "single"],
|
||||
"no-console": 0,
|
||||
"no-shadow": 0,
|
||||
"no-use-before-define": [2, "nofunc"],
|
||||
"no-underscore-dangle": 0,
|
||||
"no-constant-condition": 0,
|
||||
"space-after-function-name": 0,
|
||||
"consistent-return": 0
|
||||
}
|
||||
}
|
29
node_modules/wkt-parser/LICENSE.md
generated
vendored
Normal file
29
node_modules/wkt-parser/LICENSE.md
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
## Proj4js -- Javascript reprojection library.
|
||||
|
||||
Authors:
|
||||
- Mike Adair madairATdmsolutions.ca
|
||||
- Richard Greenwood richATgreenwoodmap.com
|
||||
- Didier Richard didier.richardATign.fr
|
||||
- Stephen Irons stephen.ironsATclear.net.nz
|
||||
- Olivier Terral oterralATgmail.com
|
||||
- Calvin Metcalf cmetcalfATappgeo.com
|
||||
|
||||
Copyright (c) 2014, Mike Adair, Richard Greenwood, Didier Richard, Stephen Irons, Olivier Terral and Calvin Metcalf
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
_THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE._
|
4
node_modules/wkt-parser/README.md
generated
vendored
Normal file
4
node_modules/wkt-parser/README.md
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
wkt-parser
|
||||
===
|
||||
|
||||
The wkt parser pulled out of proj4 so it can be hacked on.
|
205
node_modules/wkt-parser/index.js
generated
vendored
Normal file
205
node_modules/wkt-parser/index.js
generated
vendored
Normal file
|
@ -0,0 +1,205 @@
|
|||
var D2R = 0.01745329251994329577;
|
||||
import parser from './parser';
|
||||
import {sExpr} from './process';
|
||||
|
||||
|
||||
|
||||
function rename(obj, params) {
|
||||
var outName = params[0];
|
||||
var inName = params[1];
|
||||
if (!(outName in obj) && (inName in obj)) {
|
||||
obj[outName] = obj[inName];
|
||||
if (params.length === 3) {
|
||||
obj[outName] = params[2](obj[outName]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function d2r(input) {
|
||||
return input * D2R;
|
||||
}
|
||||
|
||||
function cleanWKT(wkt) {
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
wkt.projName = 'longlat';
|
||||
} else if (wkt.type === 'LOCAL_CS') {
|
||||
wkt.projName = 'identity';
|
||||
wkt.local = true;
|
||||
} else {
|
||||
if (typeof wkt.PROJECTION === 'object') {
|
||||
wkt.projName = Object.keys(wkt.PROJECTION)[0];
|
||||
} else {
|
||||
wkt.projName = wkt.PROJECTION;
|
||||
}
|
||||
}
|
||||
if (wkt.AXIS) {
|
||||
var axisOrder = '';
|
||||
for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {
|
||||
var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];
|
||||
if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {
|
||||
axisOrder += 'n';
|
||||
} else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {
|
||||
axisOrder += 's';
|
||||
} else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {
|
||||
axisOrder += 'e';
|
||||
} else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {
|
||||
axisOrder += 'w';
|
||||
}
|
||||
}
|
||||
if (axisOrder.length === 2) {
|
||||
axisOrder += 'u';
|
||||
}
|
||||
if (axisOrder.length === 3) {
|
||||
wkt.axis = axisOrder;
|
||||
}
|
||||
}
|
||||
if (wkt.UNIT) {
|
||||
wkt.units = wkt.UNIT.name.toLowerCase();
|
||||
if (wkt.units === 'metre') {
|
||||
wkt.units = 'meter';
|
||||
}
|
||||
if (wkt.UNIT.convert) {
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
if (wkt.DATUM && wkt.DATUM.SPHEROID) {
|
||||
wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;
|
||||
}
|
||||
} else {
|
||||
wkt.to_meter = wkt.UNIT.convert;
|
||||
}
|
||||
}
|
||||
}
|
||||
var geogcs = wkt.GEOGCS;
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
geogcs = wkt;
|
||||
}
|
||||
if (geogcs) {
|
||||
//if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
|
||||
// wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
|
||||
//}
|
||||
if (geogcs.DATUM) {
|
||||
wkt.datumCode = geogcs.DATUM.name.toLowerCase();
|
||||
} else {
|
||||
wkt.datumCode = geogcs.name.toLowerCase();
|
||||
}
|
||||
if (wkt.datumCode.slice(0, 2) === 'd_') {
|
||||
wkt.datumCode = wkt.datumCode.slice(2);
|
||||
}
|
||||
if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
|
||||
wkt.datumCode = 'nzgd49';
|
||||
}
|
||||
if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {
|
||||
if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
|
||||
wkt.sphere = true;
|
||||
}
|
||||
wkt.datumCode = 'wgs84';
|
||||
}
|
||||
if (wkt.datumCode.slice(-6) === '_ferro') {
|
||||
wkt.datumCode = wkt.datumCode.slice(0, - 6);
|
||||
}
|
||||
if (wkt.datumCode.slice(-8) === '_jakarta') {
|
||||
wkt.datumCode = wkt.datumCode.slice(0, - 8);
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('belge')) {
|
||||
wkt.datumCode = 'rnb72';
|
||||
}
|
||||
if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
|
||||
wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
|
||||
if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {
|
||||
wkt.ellps = 'intl';
|
||||
}
|
||||
|
||||
wkt.a = geogcs.DATUM.SPHEROID.a;
|
||||
wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);
|
||||
}
|
||||
|
||||
if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {
|
||||
wkt.datum_params = geogcs.DATUM.TOWGS84;
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('osgb_1936')) {
|
||||
wkt.datumCode = 'osgb36';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('osni_1952')) {
|
||||
wkt.datumCode = 'osni52';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('tm65')
|
||||
|| ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {
|
||||
wkt.datumCode = 'ire65';
|
||||
}
|
||||
if (wkt.datumCode === 'ch1903+') {
|
||||
wkt.datumCode = 'ch1903';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('israel')) {
|
||||
wkt.datumCode = 'isr93';
|
||||
}
|
||||
}
|
||||
if (wkt.b && !isFinite(wkt.b)) {
|
||||
wkt.b = wkt.a;
|
||||
}
|
||||
|
||||
function toMeter(input) {
|
||||
var ratio = wkt.to_meter || 1;
|
||||
return input * ratio;
|
||||
}
|
||||
var renamer = function(a) {
|
||||
return rename(wkt, a);
|
||||
};
|
||||
var list = [
|
||||
['standard_parallel_1', 'Standard_Parallel_1'],
|
||||
['standard_parallel_1', 'Latitude of 1st standard parallel'],
|
||||
['standard_parallel_2', 'Standard_Parallel_2'],
|
||||
['standard_parallel_2', 'Latitude of 2nd standard parallel'],
|
||||
['false_easting', 'False_Easting'],
|
||||
['false_easting', 'False easting'],
|
||||
['false-easting', 'Easting at false origin'],
|
||||
['false_northing', 'False_Northing'],
|
||||
['false_northing', 'False northing'],
|
||||
['false_northing', 'Northing at false origin'],
|
||||
['central_meridian', 'Central_Meridian'],
|
||||
['central_meridian', 'Longitude of natural origin'],
|
||||
['central_meridian', 'Longitude of false origin'],
|
||||
['latitude_of_origin', 'Latitude_Of_Origin'],
|
||||
['latitude_of_origin', 'Central_Parallel'],
|
||||
['latitude_of_origin', 'Latitude of natural origin'],
|
||||
['latitude_of_origin', 'Latitude of false origin'],
|
||||
['scale_factor', 'Scale_Factor'],
|
||||
['k0', 'scale_factor'],
|
||||
['latitude_of_center', 'Latitude_Of_Center'],
|
||||
['latitude_of_center', 'Latitude_of_center'],
|
||||
['lat0', 'latitude_of_center', d2r],
|
||||
['longitude_of_center', 'Longitude_Of_Center'],
|
||||
['longitude_of_center', 'Longitude_of_center'],
|
||||
['longc', 'longitude_of_center', d2r],
|
||||
['x0', 'false_easting', toMeter],
|
||||
['y0', 'false_northing', toMeter],
|
||||
['long0', 'central_meridian', d2r],
|
||||
['lat0', 'latitude_of_origin', d2r],
|
||||
['lat0', 'standard_parallel_1', d2r],
|
||||
['lat1', 'standard_parallel_1', d2r],
|
||||
['lat2', 'standard_parallel_2', d2r],
|
||||
['azimuth', 'Azimuth'],
|
||||
['alpha', 'azimuth', d2r],
|
||||
['srsCode', 'name']
|
||||
];
|
||||
list.forEach(renamer);
|
||||
if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {
|
||||
wkt.long0 = wkt.longc;
|
||||
}
|
||||
if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
|
||||
wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
|
||||
wkt.lat_ts = wkt.lat1;
|
||||
} else if (!wkt.lat_ts && wkt.lat0 && wkt.projName === 'Polar_Stereographic') {
|
||||
wkt.lat_ts = wkt.lat0;
|
||||
wkt.lat0 = d2r(wkt.lat0 > 0 ? 90 : -90);
|
||||
}
|
||||
}
|
||||
export default function(wkt) {
|
||||
var lisp = parser(wkt);
|
||||
var type = lisp.shift();
|
||||
var name = lisp.shift();
|
||||
lisp.unshift(['name', name]);
|
||||
lisp.unshift(['type', type]);
|
||||
var obj = {};
|
||||
sExpr(lisp, obj);
|
||||
cleanWKT(obj);
|
||||
return obj;
|
||||
}
|
40
node_modules/wkt-parser/package.json
generated
vendored
Normal file
40
node_modules/wkt-parser/package.json
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"name": "wkt-parser",
|
||||
"version": "1.3.3",
|
||||
"description": "wkt-parser ===",
|
||||
"main": "wkt.build.js",
|
||||
"module": "index.js",
|
||||
"scripts": {
|
||||
"test": "node -r esm test.js",
|
||||
"build": "rollup -c",
|
||||
"pretest": "npm run build"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/proj4js/wkt-parser.git"
|
||||
},
|
||||
"browserify": {
|
||||
"transform": [
|
||||
[
|
||||
"babelify",
|
||||
{
|
||||
"presets": [
|
||||
"es2015"
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/proj4js/wkt-parser/issues"
|
||||
},
|
||||
"homepage": "https://github.com/proj4js/wkt-parser#readme",
|
||||
"devDependencies": {
|
||||
"esm": "^3.2.25",
|
||||
"js-struct-compare": "^1.1.0",
|
||||
"rollup": "^0.41.4",
|
||||
"tape": "^4.6.3"
|
||||
}
|
||||
}
|
169
node_modules/wkt-parser/parser.js
generated
vendored
Normal file
169
node_modules/wkt-parser/parser.js
generated
vendored
Normal file
|
@ -0,0 +1,169 @@
|
|||
export default parseString;
|
||||
|
||||
var NEUTRAL = 1;
|
||||
var KEYWORD = 2;
|
||||
var NUMBER = 3;
|
||||
var QUOTED = 4;
|
||||
var AFTERQUOTE = 5;
|
||||
var ENDED = -1;
|
||||
var whitespace = /\s/;
|
||||
var latin = /[A-Za-z]/;
|
||||
var keyword = /[A-Za-z84_]/;
|
||||
var endThings = /[,\]]/;
|
||||
var digets = /[\d\.E\-\+]/;
|
||||
// const ignoredChar = /[\s_\-\/\(\)]/g;
|
||||
function Parser(text) {
|
||||
if (typeof text !== 'string') {
|
||||
throw new Error('not a string');
|
||||
}
|
||||
this.text = text.trim();
|
||||
this.level = 0;
|
||||
this.place = 0;
|
||||
this.root = null;
|
||||
this.stack = [];
|
||||
this.currentObject = null;
|
||||
this.state = NEUTRAL;
|
||||
}
|
||||
Parser.prototype.readCharicter = function() {
|
||||
var char = this.text[this.place++];
|
||||
if (this.state !== QUOTED) {
|
||||
while (whitespace.test(char)) {
|
||||
if (this.place >= this.text.length) {
|
||||
return;
|
||||
}
|
||||
char = this.text[this.place++];
|
||||
}
|
||||
}
|
||||
switch (this.state) {
|
||||
case NEUTRAL:
|
||||
return this.neutral(char);
|
||||
case KEYWORD:
|
||||
return this.keyword(char)
|
||||
case QUOTED:
|
||||
return this.quoted(char);
|
||||
case AFTERQUOTE:
|
||||
return this.afterquote(char);
|
||||
case NUMBER:
|
||||
return this.number(char);
|
||||
case ENDED:
|
||||
return;
|
||||
}
|
||||
};
|
||||
Parser.prototype.afterquote = function(char) {
|
||||
if (char === '"') {
|
||||
this.word += '"';
|
||||
this.state = QUOTED;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.word = this.word.trim();
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.afterItem = function(char) {
|
||||
if (char === ',') {
|
||||
if (this.word !== null) {
|
||||
this.currentObject.push(this.word);
|
||||
}
|
||||
this.word = null;
|
||||
this.state = NEUTRAL;
|
||||
return;
|
||||
}
|
||||
if (char === ']') {
|
||||
this.level--;
|
||||
if (this.word !== null) {
|
||||
this.currentObject.push(this.word);
|
||||
this.word = null;
|
||||
}
|
||||
this.state = NEUTRAL;
|
||||
this.currentObject = this.stack.pop();
|
||||
if (!this.currentObject) {
|
||||
this.state = ENDED;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
};
|
||||
Parser.prototype.number = function(char) {
|
||||
if (digets.test(char)) {
|
||||
this.word += char;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.word = parseFloat(this.word);
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.quoted = function(char) {
|
||||
if (char === '"') {
|
||||
this.state = AFTERQUOTE;
|
||||
return;
|
||||
}
|
||||
this.word += char;
|
||||
return;
|
||||
};
|
||||
Parser.prototype.keyword = function(char) {
|
||||
if (keyword.test(char)) {
|
||||
this.word += char;
|
||||
return;
|
||||
}
|
||||
if (char === '[') {
|
||||
var newObjects = [];
|
||||
newObjects.push(this.word);
|
||||
this.level++;
|
||||
if (this.root === null) {
|
||||
this.root = newObjects;
|
||||
} else {
|
||||
this.currentObject.push(newObjects);
|
||||
}
|
||||
this.stack.push(this.currentObject);
|
||||
this.currentObject = newObjects;
|
||||
this.state = NEUTRAL;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.neutral = function(char) {
|
||||
if (latin.test(char)) {
|
||||
this.word = char;
|
||||
this.state = KEYWORD;
|
||||
return;
|
||||
}
|
||||
if (char === '"') {
|
||||
this.word = '';
|
||||
this.state = QUOTED;
|
||||
return;
|
||||
}
|
||||
if (digets.test(char)) {
|
||||
this.word = char;
|
||||
this.state = NUMBER;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.output = function() {
|
||||
while (this.place < this.text.length) {
|
||||
this.readCharicter();
|
||||
}
|
||||
if (this.state === ENDED) {
|
||||
return this.root;
|
||||
}
|
||||
throw new Error('unable to parse string "' +this.text + '". State is ' + this.state);
|
||||
};
|
||||
|
||||
function parseString(txt) {
|
||||
var parser = new Parser(txt);
|
||||
return parser.output();
|
||||
}
|
113
node_modules/wkt-parser/process.js
generated
vendored
Normal file
113
node_modules/wkt-parser/process.js
generated
vendored
Normal file
|
@ -0,0 +1,113 @@
|
|||
|
||||
|
||||
function mapit(obj, key, value) {
|
||||
if (Array.isArray(key)) {
|
||||
value.unshift(key);
|
||||
key = null;
|
||||
}
|
||||
var thing = key ? {} : obj;
|
||||
|
||||
var out = value.reduce(function(newObj, item) {
|
||||
sExpr(item, newObj);
|
||||
return newObj
|
||||
}, thing);
|
||||
if (key) {
|
||||
obj[key] = out;
|
||||
}
|
||||
}
|
||||
|
||||
export function sExpr(v, obj) {
|
||||
if (!Array.isArray(v)) {
|
||||
obj[v] = true;
|
||||
return;
|
||||
}
|
||||
var key = v.shift();
|
||||
if (key === 'PARAMETER') {
|
||||
key = v.shift();
|
||||
}
|
||||
if (v.length === 1) {
|
||||
if (Array.isArray(v[0])) {
|
||||
obj[key] = {};
|
||||
sExpr(v[0], obj[key]);
|
||||
return;
|
||||
}
|
||||
obj[key] = v[0];
|
||||
return;
|
||||
}
|
||||
if (!v.length) {
|
||||
obj[key] = true;
|
||||
return;
|
||||
}
|
||||
if (key === 'TOWGS84') {
|
||||
obj[key] = v;
|
||||
return;
|
||||
}
|
||||
if (key === 'AXIS') {
|
||||
if (!(key in obj)) {
|
||||
obj[key] = [];
|
||||
}
|
||||
obj[key].push(v);
|
||||
return;
|
||||
}
|
||||
if (!Array.isArray(key)) {
|
||||
obj[key] = {};
|
||||
}
|
||||
|
||||
var i;
|
||||
switch (key) {
|
||||
case 'UNIT':
|
||||
case 'PRIMEM':
|
||||
case 'VERT_DATUM':
|
||||
obj[key] = {
|
||||
name: v[0].toLowerCase(),
|
||||
convert: v[1]
|
||||
};
|
||||
if (v.length === 3) {
|
||||
sExpr(v[2], obj[key]);
|
||||
}
|
||||
return;
|
||||
case 'SPHEROID':
|
||||
case 'ELLIPSOID':
|
||||
obj[key] = {
|
||||
name: v[0],
|
||||
a: v[1],
|
||||
rf: v[2]
|
||||
};
|
||||
if (v.length === 4) {
|
||||
sExpr(v[3], obj[key]);
|
||||
}
|
||||
return;
|
||||
case 'PROJECTEDCRS':
|
||||
case 'PROJCRS':
|
||||
case 'GEOGCS':
|
||||
case 'GEOCCS':
|
||||
case 'PROJCS':
|
||||
case 'LOCAL_CS':
|
||||
case 'GEODCRS':
|
||||
case 'GEODETICCRS':
|
||||
case 'GEODETICDATUM':
|
||||
case 'EDATUM':
|
||||
case 'ENGINEERINGDATUM':
|
||||
case 'VERT_CS':
|
||||
case 'VERTCRS':
|
||||
case 'VERTICALCRS':
|
||||
case 'COMPD_CS':
|
||||
case 'COMPOUNDCRS':
|
||||
case 'ENGINEERINGCRS':
|
||||
case 'ENGCRS':
|
||||
case 'FITTED_CS':
|
||||
case 'LOCAL_DATUM':
|
||||
case 'DATUM':
|
||||
v[0] = ['name', v[0]];
|
||||
mapit(obj, key, v);
|
||||
return;
|
||||
default:
|
||||
i = -1;
|
||||
while (++i < v.length) {
|
||||
if (!Array.isArray(v[i])) {
|
||||
return sExpr(v, obj[key]);
|
||||
}
|
||||
}
|
||||
return mapit(obj, key, v);
|
||||
}
|
||||
}
|
6
node_modules/wkt-parser/rollup.config.js
generated
vendored
Normal file
6
node_modules/wkt-parser/rollup.config.js
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
|
||||
export default {
|
||||
entry: 'index.js',
|
||||
dest: 'wkt.build.js',
|
||||
format: 'cjs'
|
||||
};
|
474
node_modules/wkt-parser/test-fixtures.json
generated
vendored
Normal file
474
node_modules/wkt-parser/test-fixtures.json
generated
vendored
Normal file
|
@ -0,0 +1,474 @@
|
|||
[{
|
||||
"code": "PROJCS[\"NZGD49 / New Zealand Map Grid\",GEOGCS[\"NZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"New_Zealand_Map_Grid\"],PARAMETER[\"latitude_of_origin\",-41],PARAMETER[\"central_meridian\",173],PARAMETER[\"false_easting\",2510000],PARAMETER[\"false_northing\",6023150],AUTHORITY[\"EPSG\",\"27200\"],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]",
|
||||
"value": {
|
||||
"type": "PROJCS",
|
||||
"name": "NZGD49 / New Zealand Map Grid",
|
||||
"GEOGCS": {
|
||||
"name": "NZGD49",
|
||||
"DATUM": {
|
||||
"name": "New_Zealand_Geodetic_Datum_1949",
|
||||
"SPHEROID": {
|
||||
"name": "International 1924",
|
||||
"a": 6378388,
|
||||
"rf": 297,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7022"
|
||||
}
|
||||
},
|
||||
"TOWGS84": [
|
||||
59.47, -5.04,
|
||||
187.44,
|
||||
0.47, -0.1,
|
||||
1.024, -4.5993
|
||||
],
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6272"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "8901"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.01745329251994328,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9122"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4272"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "metre",
|
||||
"convert": 1,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9001"
|
||||
}
|
||||
},
|
||||
"PROJECTION": "New_Zealand_Map_Grid",
|
||||
"latitude_of_origin": -41,
|
||||
"central_meridian": 173,
|
||||
"false_easting": 2510000,
|
||||
"false_northing": 6023150,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "27200"
|
||||
},
|
||||
"AXIS": [
|
||||
["Easting", "EAST"],
|
||||
["Northing", "NORTH"]
|
||||
],
|
||||
"projName": "New_Zealand_Map_Grid",
|
||||
"units": "meter",
|
||||
"to_meter": 1,
|
||||
"datumCode": "nzgd49",
|
||||
"datum_params": [
|
||||
59.47, -5.04,
|
||||
187.44, 0.47,
|
||||
-0.1, 1.024,
|
||||
-4.5993
|
||||
],
|
||||
"ellps": "intl",
|
||||
"a": 6378388,
|
||||
"rf": 297,
|
||||
"x0": 2510000,
|
||||
"y0": 6023150,
|
||||
"long0": 3.01941960595019,
|
||||
"lat0": -0.7155849933176751,
|
||||
"axis": "enu",
|
||||
"srsCode": "NZGD49 / New Zealand Map Grid"
|
||||
}
|
||||
}, {
|
||||
"code": "PROJCS[\"NAD83 / Massachusetts Mainland\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",42.68333333333333],PARAMETER[\"standard_parallel_2\",41.71666666666667],PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"central_meridian\",-71.5],PARAMETER[\"false_easting\",200000],PARAMETER[\"false_northing\",750000],AUTHORITY[\"EPSG\",\"26986\"],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]",
|
||||
"value": {
|
||||
"type": "PROJCS",
|
||||
"name": "NAD83 / Massachusetts Mainland",
|
||||
"GEOGCS": {
|
||||
"name": "NAD83",
|
||||
"DATUM": {
|
||||
"name": "North_American_Datum_1983",
|
||||
"SPHEROID": {
|
||||
"name": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.257222101,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7019"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6269"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "8901"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.01745329251994328,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9122"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4269"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "metre",
|
||||
"convert": 1,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9001"
|
||||
}
|
||||
},
|
||||
"PROJECTION": "Lambert_Conformal_Conic_2SP",
|
||||
"standard_parallel_1": 42.68333333333333,
|
||||
"standard_parallel_2": 41.71666666666667,
|
||||
"latitude_of_origin": 41,
|
||||
"central_meridian": -71.5,
|
||||
"false_easting": 200000,
|
||||
"false_northing": 750000,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "26986"
|
||||
},
|
||||
"AXIS": [
|
||||
["X", "EAST"],
|
||||
["Y", "NORTH"]
|
||||
],
|
||||
"projName": "Lambert_Conformal_Conic_2SP",
|
||||
"units": "meter",
|
||||
"to_meter": 1,
|
||||
"datumCode": "north_american_datum_1983",
|
||||
"ellps": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.257222101,
|
||||
"x0": 200000,
|
||||
"y0": 750000,
|
||||
"long0": -1.2479104151759457,
|
||||
"lat0": 0.7155849933176751,
|
||||
"lat1": 0.7449647023929129,
|
||||
"lat2": 0.7280931862903012,
|
||||
"axis": "enu",
|
||||
"srsCode": "NAD83 / Massachusetts Mainland"
|
||||
}
|
||||
}, {
|
||||
"code": "PROJCS[\"ETRS89 / ETRS-LAEA\",GEOGCS[\"ETRS89\",DATUM[\"European_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_center\",52],PARAMETER[\"longitude_of_center\",10],PARAMETER[\"false_easting\",4321000],PARAMETER[\"false_northing\",3210000],AUTHORITY[\"EPSG\",\"3035\"],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]",
|
||||
"value": {
|
||||
"type": "PROJCS",
|
||||
"name": "ETRS89 / ETRS-LAEA",
|
||||
"GEOGCS": {
|
||||
"name": "ETRS89",
|
||||
"DATUM": {
|
||||
"name": "European_Terrestrial_Reference_System_1989",
|
||||
"SPHEROID": {
|
||||
"name": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.257222101,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7019"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6258"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "8901"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.01745329251994328,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9122"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4258"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "metre",
|
||||
"convert": 1,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9001"
|
||||
}
|
||||
},
|
||||
"PROJECTION": "Lambert_Azimuthal_Equal_Area",
|
||||
"latitude_of_center": 52,
|
||||
"longitude_of_center": 10,
|
||||
"false_easting": 4321000,
|
||||
"false_northing": 3210000,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "3035"
|
||||
},
|
||||
"AXIS": [
|
||||
[
|
||||
"X",
|
||||
"EAST"
|
||||
],
|
||||
[
|
||||
"Y",
|
||||
"NORTH"
|
||||
]
|
||||
],
|
||||
"projName": "Lambert_Azimuthal_Equal_Area",
|
||||
"axis": "enu",
|
||||
"units": "meter",
|
||||
"to_meter": 1,
|
||||
"datumCode": "european_terrestrial_reference_system_1989",
|
||||
"ellps": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.257222101,
|
||||
"lat0": 0.9075712110370514,
|
||||
"longc": 0.17453292519943295,
|
||||
"x0": 4321000,
|
||||
"y0": 3210000,
|
||||
"srsCode": "ETRS89 / ETRS-LAEA",
|
||||
"long0": 0.17453292519943295
|
||||
}
|
||||
}, {
|
||||
"code": "GEOGCS[\"ETRS89\",DATUM[\"European Terrestrial Reference System 1989 ensemble\",SPHEROID[\"GRS 1980\",6378137,298.2572221,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9102\"]],AXIS[\"Lat\",north],AXIS[\"Lon\",east],AUTHORITY[\"EPSG\",\"4258\"]]",
|
||||
"value": {
|
||||
"type": "GEOGCS",
|
||||
"name": "ETRS89",
|
||||
"DATUM": {
|
||||
"name": "European Terrestrial Reference System 1989 ensemble",
|
||||
"SPHEROID": {
|
||||
"name": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.2572221,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7019"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6258"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "8901"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.0174532925199433,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9102"
|
||||
}
|
||||
},
|
||||
"AXIS": [
|
||||
[
|
||||
"Lat",
|
||||
"north"
|
||||
],
|
||||
[
|
||||
"Lon",
|
||||
"east"
|
||||
]
|
||||
],
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4258"
|
||||
},
|
||||
"projName": "longlat",
|
||||
"units": "degree",
|
||||
"to_meter": 111319.4907932736,
|
||||
"datumCode": "european terrestrial reference system 1989 ensemble",
|
||||
"ellps": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.2572221,
|
||||
"axis": "neu",
|
||||
"srsCode": "ETRS89"
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": "COMPD_CS[\"unknown\",PROJCS[\"NAD83 / Texas North Central\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,298.257222101004,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"latitude_of_origin\",31.6666666666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER[\"standard_parallel_1\",32.1333333333333],PARAMETER[\"standard_parallel_2\",33.9666666666667],PARAMETER[\"false_easting\",1968500],PARAMETER[\"false_northing\",6561666.66666667],UNIT[\"US survey foot\",0.304800609601219,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"32138\"]],VERT_CS[\"NAVD88 height (ftUS)\",VERT_DATUM[\"North American Vertical Datum 1988\",2005,AUTHORITY[\"EPSG\",\"5103\"]],UNIT[\"US survey foot\",0.304800609601219,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"Up\",UP],AUTHORITY[\"EPSG\",\"6360\"]]]",
|
||||
"value": {
|
||||
"type": "COMPD_CS",
|
||||
"name": "unknown",
|
||||
"PROJCS": {
|
||||
"name": "NAD83 / Texas North Central",
|
||||
"GEOGCS": {
|
||||
"name": "NAD83",
|
||||
"DATUM": {
|
||||
"name": "North_American_Datum_1983",
|
||||
"SPHEROID": {
|
||||
"name": "GRS 1980",
|
||||
"a": 6378137,
|
||||
"rf": 298.257222101004,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7019"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6269"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.0174532925199433,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9122"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4269"
|
||||
}
|
||||
},
|
||||
"PROJECTION": "Lambert_Conformal_Conic_2SP",
|
||||
"latitude_of_origin": 31.6666666666667,
|
||||
"central_meridian": -98.5,
|
||||
"standard_parallel_1": 32.1333333333333,
|
||||
"standard_parallel_2": 33.9666666666667,
|
||||
"false_easting": 1968500,
|
||||
"false_northing": 6561666.66666667,
|
||||
"UNIT": {
|
||||
"name": "us survey foot",
|
||||
"convert": 0.304800609601219,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9003"
|
||||
}
|
||||
},
|
||||
"AXIS": [
|
||||
[
|
||||
"Easting",
|
||||
"EAST"
|
||||
],
|
||||
[
|
||||
"Northing",
|
||||
"NORTH"
|
||||
]
|
||||
],
|
||||
"AUTHORITY": {
|
||||
"EPSG": "32138"
|
||||
}
|
||||
},
|
||||
"VERT_CS": {
|
||||
"name": "NAVD88 height (ftUS)",
|
||||
"VERT_DATUM": {
|
||||
"name": "north american vertical datum 1988",
|
||||
"convert": 2005,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "5103"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "us survey foot",
|
||||
"convert": 0.304800609601219,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9003"
|
||||
}
|
||||
},
|
||||
"AXIS": [
|
||||
[
|
||||
"Up",
|
||||
"UP"
|
||||
]
|
||||
],
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6360"
|
||||
}
|
||||
},
|
||||
"srsCode": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": "PROJCS[\"WGS 84 / Antarctic Polar Stereographic\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\",-71],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],AUTHORITY[\"EPSG\",\"3031\"],AXIS[\"Easting\",UNKNOWN],AXIS[\"Northing\",UNKNOWN]]",
|
||||
"value": {
|
||||
"type": "PROJCS",
|
||||
"name": "WGS 84 / Antarctic Polar Stereographic",
|
||||
"GEOGCS": {
|
||||
"name": "WGS 84",
|
||||
"DATUM": {
|
||||
"name": "WGS_1984",
|
||||
"SPHEROID": {
|
||||
"name": "WGS 84",
|
||||
"a": 6378137,
|
||||
"rf": 298.257223563,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "7030"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "6326"
|
||||
}
|
||||
},
|
||||
"PRIMEM": {
|
||||
"name": "greenwich",
|
||||
"convert": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "8901"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "degree",
|
||||
"convert": 0.01745329251994328,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9122"
|
||||
}
|
||||
},
|
||||
"AUTHORITY": {
|
||||
"EPSG": "4326"
|
||||
}
|
||||
},
|
||||
"UNIT": {
|
||||
"name": "metre",
|
||||
"convert": 1,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "9001"
|
||||
}
|
||||
},
|
||||
"PROJECTION": "Polar_Stereographic",
|
||||
"latitude_of_origin": -71,
|
||||
"central_meridian": 0,
|
||||
"scale_factor": 1,
|
||||
"false_easting": 0,
|
||||
"false_northing": 0,
|
||||
"AUTHORITY": {
|
||||
"EPSG": "3031"
|
||||
},
|
||||
"AXIS": [
|
||||
[
|
||||
"Easting",
|
||||
"UNKNOWN"
|
||||
],
|
||||
[
|
||||
"Northing",
|
||||
"UNKNOWN"
|
||||
]
|
||||
],
|
||||
"projName": "Polar_Stereographic",
|
||||
"axis": "enu",
|
||||
"units": "meter",
|
||||
"to_meter": 1,
|
||||
"datumCode": "wgs84",
|
||||
"ellps": "WGS 84",
|
||||
"a": 6378137,
|
||||
"rf": 298.257223563,
|
||||
"k0": 1,
|
||||
"x0": 0,
|
||||
"y0": 0,
|
||||
"long0": 0,
|
||||
"lat0": -1.5707963267948966,
|
||||
"srsCode": "WGS 84 / Antarctic Polar Stereographic",
|
||||
"lat_ts": -1.239183768915974
|
||||
}
|
||||
}
|
||||
]
|
14
node_modules/wkt-parser/test.js
generated
vendored
Normal file
14
node_modules/wkt-parser/test.js
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
var test = require('tape');
|
||||
import compare from 'js-struct-compare';
|
||||
var wktParser = require('./wkt.build.js');
|
||||
var fixtures = require('./test-fixtures.json');
|
||||
|
||||
fixtures.forEach((item, i)=>{
|
||||
test(`fixture ${i + 1}`, t=>{
|
||||
var out = wktParser(item.code);
|
||||
//console.log(JSON.stringify(out, null, 2));
|
||||
const diff = JSON.stringify(compare(item.value, JSON.parse(JSON.stringify(out))), null, 2);
|
||||
t.equal(diff, '[]');
|
||||
t.end();
|
||||
});
|
||||
})
|
484
node_modules/wkt-parser/wkt.build.js
generated
vendored
Normal file
484
node_modules/wkt-parser/wkt.build.js
generated
vendored
Normal file
|
@ -0,0 +1,484 @@
|
|||
'use strict';
|
||||
|
||||
var NEUTRAL = 1;
|
||||
var KEYWORD = 2;
|
||||
var NUMBER = 3;
|
||||
var QUOTED = 4;
|
||||
var AFTERQUOTE = 5;
|
||||
var ENDED = -1;
|
||||
var whitespace = /\s/;
|
||||
var latin = /[A-Za-z]/;
|
||||
var keyword = /[A-Za-z84_]/;
|
||||
var endThings = /[,\]]/;
|
||||
var digets = /[\d\.E\-\+]/;
|
||||
// const ignoredChar = /[\s_\-\/\(\)]/g;
|
||||
function Parser(text) {
|
||||
if (typeof text !== 'string') {
|
||||
throw new Error('not a string');
|
||||
}
|
||||
this.text = text.trim();
|
||||
this.level = 0;
|
||||
this.place = 0;
|
||||
this.root = null;
|
||||
this.stack = [];
|
||||
this.currentObject = null;
|
||||
this.state = NEUTRAL;
|
||||
}
|
||||
Parser.prototype.readCharicter = function() {
|
||||
var char = this.text[this.place++];
|
||||
if (this.state !== QUOTED) {
|
||||
while (whitespace.test(char)) {
|
||||
if (this.place >= this.text.length) {
|
||||
return;
|
||||
}
|
||||
char = this.text[this.place++];
|
||||
}
|
||||
}
|
||||
switch (this.state) {
|
||||
case NEUTRAL:
|
||||
return this.neutral(char);
|
||||
case KEYWORD:
|
||||
return this.keyword(char)
|
||||
case QUOTED:
|
||||
return this.quoted(char);
|
||||
case AFTERQUOTE:
|
||||
return this.afterquote(char);
|
||||
case NUMBER:
|
||||
return this.number(char);
|
||||
case ENDED:
|
||||
return;
|
||||
}
|
||||
};
|
||||
Parser.prototype.afterquote = function(char) {
|
||||
if (char === '"') {
|
||||
this.word += '"';
|
||||
this.state = QUOTED;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.word = this.word.trim();
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.afterItem = function(char) {
|
||||
if (char === ',') {
|
||||
if (this.word !== null) {
|
||||
this.currentObject.push(this.word);
|
||||
}
|
||||
this.word = null;
|
||||
this.state = NEUTRAL;
|
||||
return;
|
||||
}
|
||||
if (char === ']') {
|
||||
this.level--;
|
||||
if (this.word !== null) {
|
||||
this.currentObject.push(this.word);
|
||||
this.word = null;
|
||||
}
|
||||
this.state = NEUTRAL;
|
||||
this.currentObject = this.stack.pop();
|
||||
if (!this.currentObject) {
|
||||
this.state = ENDED;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
};
|
||||
Parser.prototype.number = function(char) {
|
||||
if (digets.test(char)) {
|
||||
this.word += char;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.word = parseFloat(this.word);
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.quoted = function(char) {
|
||||
if (char === '"') {
|
||||
this.state = AFTERQUOTE;
|
||||
return;
|
||||
}
|
||||
this.word += char;
|
||||
return;
|
||||
};
|
||||
Parser.prototype.keyword = function(char) {
|
||||
if (keyword.test(char)) {
|
||||
this.word += char;
|
||||
return;
|
||||
}
|
||||
if (char === '[') {
|
||||
var newObjects = [];
|
||||
newObjects.push(this.word);
|
||||
this.level++;
|
||||
if (this.root === null) {
|
||||
this.root = newObjects;
|
||||
} else {
|
||||
this.currentObject.push(newObjects);
|
||||
}
|
||||
this.stack.push(this.currentObject);
|
||||
this.currentObject = newObjects;
|
||||
this.state = NEUTRAL;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.neutral = function(char) {
|
||||
if (latin.test(char)) {
|
||||
this.word = char;
|
||||
this.state = KEYWORD;
|
||||
return;
|
||||
}
|
||||
if (char === '"') {
|
||||
this.word = '';
|
||||
this.state = QUOTED;
|
||||
return;
|
||||
}
|
||||
if (digets.test(char)) {
|
||||
this.word = char;
|
||||
this.state = NUMBER;
|
||||
return;
|
||||
}
|
||||
if (endThings.test(char)) {
|
||||
this.afterItem(char);
|
||||
return;
|
||||
}
|
||||
throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place);
|
||||
};
|
||||
Parser.prototype.output = function() {
|
||||
while (this.place < this.text.length) {
|
||||
this.readCharicter();
|
||||
}
|
||||
if (this.state === ENDED) {
|
||||
return this.root;
|
||||
}
|
||||
throw new Error('unable to parse string "' +this.text + '". State is ' + this.state);
|
||||
};
|
||||
|
||||
function parseString(txt) {
|
||||
var parser = new Parser(txt);
|
||||
return parser.output();
|
||||
}
|
||||
|
||||
function mapit(obj, key, value) {
|
||||
if (Array.isArray(key)) {
|
||||
value.unshift(key);
|
||||
key = null;
|
||||
}
|
||||
var thing = key ? {} : obj;
|
||||
|
||||
var out = value.reduce(function(newObj, item) {
|
||||
sExpr(item, newObj);
|
||||
return newObj
|
||||
}, thing);
|
||||
if (key) {
|
||||
obj[key] = out;
|
||||
}
|
||||
}
|
||||
|
||||
function sExpr(v, obj) {
|
||||
if (!Array.isArray(v)) {
|
||||
obj[v] = true;
|
||||
return;
|
||||
}
|
||||
var key = v.shift();
|
||||
if (key === 'PARAMETER') {
|
||||
key = v.shift();
|
||||
}
|
||||
if (v.length === 1) {
|
||||
if (Array.isArray(v[0])) {
|
||||
obj[key] = {};
|
||||
sExpr(v[0], obj[key]);
|
||||
return;
|
||||
}
|
||||
obj[key] = v[0];
|
||||
return;
|
||||
}
|
||||
if (!v.length) {
|
||||
obj[key] = true;
|
||||
return;
|
||||
}
|
||||
if (key === 'TOWGS84') {
|
||||
obj[key] = v;
|
||||
return;
|
||||
}
|
||||
if (key === 'AXIS') {
|
||||
if (!(key in obj)) {
|
||||
obj[key] = [];
|
||||
}
|
||||
obj[key].push(v);
|
||||
return;
|
||||
}
|
||||
if (!Array.isArray(key)) {
|
||||
obj[key] = {};
|
||||
}
|
||||
|
||||
var i;
|
||||
switch (key) {
|
||||
case 'UNIT':
|
||||
case 'PRIMEM':
|
||||
case 'VERT_DATUM':
|
||||
obj[key] = {
|
||||
name: v[0].toLowerCase(),
|
||||
convert: v[1]
|
||||
};
|
||||
if (v.length === 3) {
|
||||
sExpr(v[2], obj[key]);
|
||||
}
|
||||
return;
|
||||
case 'SPHEROID':
|
||||
case 'ELLIPSOID':
|
||||
obj[key] = {
|
||||
name: v[0],
|
||||
a: v[1],
|
||||
rf: v[2]
|
||||
};
|
||||
if (v.length === 4) {
|
||||
sExpr(v[3], obj[key]);
|
||||
}
|
||||
return;
|
||||
case 'PROJECTEDCRS':
|
||||
case 'PROJCRS':
|
||||
case 'GEOGCS':
|
||||
case 'GEOCCS':
|
||||
case 'PROJCS':
|
||||
case 'LOCAL_CS':
|
||||
case 'GEODCRS':
|
||||
case 'GEODETICCRS':
|
||||
case 'GEODETICDATUM':
|
||||
case 'EDATUM':
|
||||
case 'ENGINEERINGDATUM':
|
||||
case 'VERT_CS':
|
||||
case 'VERTCRS':
|
||||
case 'VERTICALCRS':
|
||||
case 'COMPD_CS':
|
||||
case 'COMPOUNDCRS':
|
||||
case 'ENGINEERINGCRS':
|
||||
case 'ENGCRS':
|
||||
case 'FITTED_CS':
|
||||
case 'LOCAL_DATUM':
|
||||
case 'DATUM':
|
||||
v[0] = ['name', v[0]];
|
||||
mapit(obj, key, v);
|
||||
return;
|
||||
default:
|
||||
i = -1;
|
||||
while (++i < v.length) {
|
||||
if (!Array.isArray(v[i])) {
|
||||
return sExpr(v, obj[key]);
|
||||
}
|
||||
}
|
||||
return mapit(obj, key, v);
|
||||
}
|
||||
}
|
||||
|
||||
var D2R = 0.01745329251994329577;
|
||||
function rename(obj, params) {
|
||||
var outName = params[0];
|
||||
var inName = params[1];
|
||||
if (!(outName in obj) && (inName in obj)) {
|
||||
obj[outName] = obj[inName];
|
||||
if (params.length === 3) {
|
||||
obj[outName] = params[2](obj[outName]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function d2r(input) {
|
||||
return input * D2R;
|
||||
}
|
||||
|
||||
function cleanWKT(wkt) {
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
wkt.projName = 'longlat';
|
||||
} else if (wkt.type === 'LOCAL_CS') {
|
||||
wkt.projName = 'identity';
|
||||
wkt.local = true;
|
||||
} else {
|
||||
if (typeof wkt.PROJECTION === 'object') {
|
||||
wkt.projName = Object.keys(wkt.PROJECTION)[0];
|
||||
} else {
|
||||
wkt.projName = wkt.PROJECTION;
|
||||
}
|
||||
}
|
||||
if (wkt.AXIS) {
|
||||
var axisOrder = '';
|
||||
for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {
|
||||
var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];
|
||||
if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {
|
||||
axisOrder += 'n';
|
||||
} else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {
|
||||
axisOrder += 's';
|
||||
} else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {
|
||||
axisOrder += 'e';
|
||||
} else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {
|
||||
axisOrder += 'w';
|
||||
}
|
||||
}
|
||||
if (axisOrder.length === 2) {
|
||||
axisOrder += 'u';
|
||||
}
|
||||
if (axisOrder.length === 3) {
|
||||
wkt.axis = axisOrder;
|
||||
}
|
||||
}
|
||||
if (wkt.UNIT) {
|
||||
wkt.units = wkt.UNIT.name.toLowerCase();
|
||||
if (wkt.units === 'metre') {
|
||||
wkt.units = 'meter';
|
||||
}
|
||||
if (wkt.UNIT.convert) {
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
if (wkt.DATUM && wkt.DATUM.SPHEROID) {
|
||||
wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;
|
||||
}
|
||||
} else {
|
||||
wkt.to_meter = wkt.UNIT.convert;
|
||||
}
|
||||
}
|
||||
}
|
||||
var geogcs = wkt.GEOGCS;
|
||||
if (wkt.type === 'GEOGCS') {
|
||||
geogcs = wkt;
|
||||
}
|
||||
if (geogcs) {
|
||||
//if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
|
||||
// wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
|
||||
//}
|
||||
if (geogcs.DATUM) {
|
||||
wkt.datumCode = geogcs.DATUM.name.toLowerCase();
|
||||
} else {
|
||||
wkt.datumCode = geogcs.name.toLowerCase();
|
||||
}
|
||||
if (wkt.datumCode.slice(0, 2) === 'd_') {
|
||||
wkt.datumCode = wkt.datumCode.slice(2);
|
||||
}
|
||||
if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
|
||||
wkt.datumCode = 'nzgd49';
|
||||
}
|
||||
if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {
|
||||
if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
|
||||
wkt.sphere = true;
|
||||
}
|
||||
wkt.datumCode = 'wgs84';
|
||||
}
|
||||
if (wkt.datumCode.slice(-6) === '_ferro') {
|
||||
wkt.datumCode = wkt.datumCode.slice(0, - 6);
|
||||
}
|
||||
if (wkt.datumCode.slice(-8) === '_jakarta') {
|
||||
wkt.datumCode = wkt.datumCode.slice(0, - 8);
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('belge')) {
|
||||
wkt.datumCode = 'rnb72';
|
||||
}
|
||||
if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
|
||||
wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
|
||||
if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {
|
||||
wkt.ellps = 'intl';
|
||||
}
|
||||
|
||||
wkt.a = geogcs.DATUM.SPHEROID.a;
|
||||
wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);
|
||||
}
|
||||
|
||||
if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {
|
||||
wkt.datum_params = geogcs.DATUM.TOWGS84;
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('osgb_1936')) {
|
||||
wkt.datumCode = 'osgb36';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('osni_1952')) {
|
||||
wkt.datumCode = 'osni52';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('tm65')
|
||||
|| ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {
|
||||
wkt.datumCode = 'ire65';
|
||||
}
|
||||
if (wkt.datumCode === 'ch1903+') {
|
||||
wkt.datumCode = 'ch1903';
|
||||
}
|
||||
if (~wkt.datumCode.indexOf('israel')) {
|
||||
wkt.datumCode = 'isr93';
|
||||
}
|
||||
}
|
||||
if (wkt.b && !isFinite(wkt.b)) {
|
||||
wkt.b = wkt.a;
|
||||
}
|
||||
|
||||
function toMeter(input) {
|
||||
var ratio = wkt.to_meter || 1;
|
||||
return input * ratio;
|
||||
}
|
||||
var renamer = function(a) {
|
||||
return rename(wkt, a);
|
||||
};
|
||||
var list = [
|
||||
['standard_parallel_1', 'Standard_Parallel_1'],
|
||||
['standard_parallel_1', 'Latitude of 1st standard parallel'],
|
||||
['standard_parallel_2', 'Standard_Parallel_2'],
|
||||
['standard_parallel_2', 'Latitude of 2nd standard parallel'],
|
||||
['false_easting', 'False_Easting'],
|
||||
['false_easting', 'False easting'],
|
||||
['false-easting', 'Easting at false origin'],
|
||||
['false_northing', 'False_Northing'],
|
||||
['false_northing', 'False northing'],
|
||||
['false_northing', 'Northing at false origin'],
|
||||
['central_meridian', 'Central_Meridian'],
|
||||
['central_meridian', 'Longitude of natural origin'],
|
||||
['central_meridian', 'Longitude of false origin'],
|
||||
['latitude_of_origin', 'Latitude_Of_Origin'],
|
||||
['latitude_of_origin', 'Central_Parallel'],
|
||||
['latitude_of_origin', 'Latitude of natural origin'],
|
||||
['latitude_of_origin', 'Latitude of false origin'],
|
||||
['scale_factor', 'Scale_Factor'],
|
||||
['k0', 'scale_factor'],
|
||||
['latitude_of_center', 'Latitude_Of_Center'],
|
||||
['latitude_of_center', 'Latitude_of_center'],
|
||||
['lat0', 'latitude_of_center', d2r],
|
||||
['longitude_of_center', 'Longitude_Of_Center'],
|
||||
['longitude_of_center', 'Longitude_of_center'],
|
||||
['longc', 'longitude_of_center', d2r],
|
||||
['x0', 'false_easting', toMeter],
|
||||
['y0', 'false_northing', toMeter],
|
||||
['long0', 'central_meridian', d2r],
|
||||
['lat0', 'latitude_of_origin', d2r],
|
||||
['lat0', 'standard_parallel_1', d2r],
|
||||
['lat1', 'standard_parallel_1', d2r],
|
||||
['lat2', 'standard_parallel_2', d2r],
|
||||
['azimuth', 'Azimuth'],
|
||||
['alpha', 'azimuth', d2r],
|
||||
['srsCode', 'name']
|
||||
];
|
||||
list.forEach(renamer);
|
||||
if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {
|
||||
wkt.long0 = wkt.longc;
|
||||
}
|
||||
if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
|
||||
wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
|
||||
wkt.lat_ts = wkt.lat1;
|
||||
} else if (!wkt.lat_ts && wkt.lat0 && wkt.projName === 'Polar_Stereographic') {
|
||||
wkt.lat_ts = wkt.lat0;
|
||||
wkt.lat0 = d2r(wkt.lat0 > 0 ? 90 : -90);
|
||||
}
|
||||
}
|
||||
var index = function(wkt) {
|
||||
var lisp = parseString(wkt);
|
||||
var type = lisp.shift();
|
||||
var name = lisp.shift();
|
||||
lisp.unshift(['name', name]);
|
||||
lisp.unshift(['type', type]);
|
||||
var obj = {};
|
||||
sExpr(lisp, obj);
|
||||
cleanWKT(obj);
|
||||
return obj;
|
||||
};
|
||||
|
||||
module.exports = index;
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue