1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import defs from './defs';
- import wkt from 'wkt-parser';
- import projStr from './projString';
- import match from './match';
- function testObj(code){
- return typeof code === 'string';
- }
- function testDef(code){
- return code in defs;
- }
- var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];
- function testWKT(code){
- return codeWords.some(function (word) {
- return code.indexOf(word) > -1;
- });
- }
- var codes = ['3857', '900913', '3785', '102113'];
- function checkMercator(item) {
- var auth = match(item, 'authority');
- if (!auth) {
- return;
- }
- var code = match(auth, 'epsg');
- return code && codes.indexOf(code) > -1;
- }
- function checkProjStr(item) {
- var ext = match(item, 'extension');
- if (!ext) {
- return;
- }
- return match(ext, 'proj4');
- }
- function testProj(code){
- return code[0] === '+';
- }
- function parse(code){
- if (testObj(code)) {
- //check to see if this is a WKT string
- if (testDef(code)) {
- return defs[code];
- }
- if (testWKT(code)) {
- var out = wkt(code);
- // test of spetial case, due to this being a very common and often malformed
- if (checkMercator(out)) {
- return defs['EPSG:3857'];
- }
- var maybeProjStr = checkProjStr(out);
- if (maybeProjStr) {
- return projStr(maybeProjStr);
- }
- return out;
- }
- if (testProj(code)) {
- return projStr(code);
- }
- }else{
- return code;
- }
- }
- export default parse;
|