geo-coordinates-parser 1.4.4 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/geocoordsparser.js +1 -1
- package/bundle/workflow.txt +0 -2
- package/conf.py +3 -0
- package/converter.js +116 -57
- package/failFormats.js +11 -0
- package/makeTestFormatsJSON.js +11 -0
- package/package.json +1 -1
- package/test.js +22 -9
- package/testFormats.json +303 -0
- package/testIndividual.js +1 -1
- package/testformats.js +17 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).convert=t()}}(function(){function t(t,e,i){const a=Number(t);let d;d=i?a>=0?"N":"S":a>=0?"E":"W";const r=Math.abs(a),o=Math.floor(r),m=60*(r-o);if("DM"==e)return`${o}\xb0 ${m.toFixed(3).replace(/\.0+$/,"")}' ${d}`;const n=Math.floor(m);return`${o}\xb0 ${n}' ${(60*(m-n)).toFixed(1).replace(/\.0$/,"")}" ${d}`}var e=function(e){if(!["DMS","DM"].includes(e))throw new Error("invalid format specified");if(this.decimalCoordinates&&this.decimalCoordinates.trim()){const i=this.decimalCoordinates.split(",").map(t=>t.trim());return`${t(i[0],e,!0)}, ${t(i[1],e,!1)}`}throw new Error("no decimal coordinates to convert")},i={};function a(t,i){i||(i=5),t=t.replace(/\s\s+/g," ").trim();var a=null,r=null,s="",v="",L=[],l=!1;if(m.test(t)){if(!(l=d(L=m.exec(t))))throw new Error("invalid decimal coordinate format");a=L[2],r=L[6],a.includes(",")&&(a=a.replace(",",".")),r.includes(",")&&(r=r.replace(",",".")),L[1]?(s=L[1],v=L[5]):L[4]&&(s=L[4],v=L[8])}else if(n.test(t)){if(!(l=d(L=n.exec(t))))throw new Error("invalid DMS coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60),L[6]&&(a+=L[6]/3600),parseInt(L[2])<0&&(a*=-1),r=Math.abs(parseInt(L[9])),L[11]&&(r+=L[11]/60),L[13]&&(r+=L[13]/3600),parseInt(L[9])<0&&(r*=-1),L[1]?(s=L[1],v=L[8]):L[7]&&(s=L[7],v=L[14])}else if(u.test(t)){if(!(l=d(L=u.exec(t))))throw new Error("invalid DMS coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60,L[3]||(L[3]=" ")),L[6]&&(a+=L[6]/3600,L[5]||(L[5]=" ")),parseInt(L[2])<0&&(a*=-1),r=Math.abs(parseInt(L[10])),L[12]&&(r+=L[12]/60,L[11]||(L[11]=" ")),L[14]&&(r+=L[14]/3600,L[13]||(L[13]=" ")),parseInt(L[10])<0&&(r*=-1),L[1]?(s=L[1],v=L[9]):L[8]&&(s=L[8],v=L[16])}else if(b.test(t)){if(!(l=d(L=b.exec(t))))throw new Error("invalid coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60,L[3]||(L[3]=" ")),L[6]&&(a+=L[6]/3600,L[5]||(L[5]=" ")),parseInt(L[2])<0&&(a*=-1),r=Math.abs(parseInt(L[10])),L[12]&&(r+=L[12]/60,L[11]||(L[11]=" ")),L[14]&&(r+=L[14]/3600,L[13]||(L[13]=" ")),parseInt(L[10])<0&&(r*=-1),L[1]?(s=L[1],v=L[9]):L[8]&&(s=L[8],v=L[16])}if(Math.abs(r)>=180)throw new Error("invalid longitude value");if(l){var c=/S|SOUTH/i;c.test(s)&&a>0&&(a*=-1),(c=/W|WEST/i).test(v)&&r>0&&(r*=-1);var g,N,E=L[0].trim(),f=E.match(/[,/;\u0020]/g);if(null==f){var S=Math.floor(t.length/2);g=E.substring(0,S).trim(),N=E.substring(S).trim()}else{var W=0;if(0==(S=f.length%2==1?Math.floor(f.length/2):f.length/2-1))W=E.indexOf(f[0]),g=E.substring(0,W).trim(),N=E.substring(W+1).trim();else{for(var C=0,h=0;C<=S;)h=(W=E.indexOf(f[C],h))+1,C++;g=E.substring(0,W).trim(),N=E.substring(W+1).trim()}}return isNaN(a)&&a.includes(",")&&(a=a.replace(",",".")),a=Number(Number(a).toFixed(i)),isNaN(r)&&r.includes(",")&&(r=r.replace(",",".")),r=Number(Number(r).toFixed(i)),Object.freeze({verbatimCoordinates:E,verbatimLatitude:g,verbatimLongitude:N,decimalLatitude:a,decimalLongitude:r,decimalCoordinates:`${a},${r}`,closeEnough:o,toCoordinateFormat:e})}throw new Error("coordinates pattern match failed")}function d(t){if(!isNaN(t[0]))return!1;var e=t.filter(t=>t);if(e.shift(),e.length%2>0)return!1;for(var i=/^[-+]?(\d+|\d+\.\d*|\d*\.\d+)$/,a=/[A-Za-z]+/,d=e.length/2,r=!0,o=0;o<d;o++)if(i.test(e[o])!=i.test(e[o+d])||a.test(e[o])!=a.test(e[o+d])){r=!1;break}return r}function r(t,e){var i=Math.abs(t-e);return diff=Number(i.toFixed(6)),diff<=1e-5}function o(t){if(t.includes(",")){var e=t.split(",");if(NaN==Number(e[0])||NaN==Number(e[1]))throw new Error("coords are not valid decimals");return r(this.decimalLatitude,Number(e[0]))&&r(this.decimalLongitude,e[1])}throw new Error("coords being tested must be separated by a comma")}var m=/(NORTH|SOUTH|[NS])?[\s]*([+-]?[0-8]?[0-9](?:[\.,]\d{3,}))([\u2022\xba\xb0]?)[\s]*(NORTH|SOUTH|[NS])?[\s]*[,/;]?[\s]*(EAST|WEST|[EW])?[\s]*([+-]?[0-1]?[0-9]?[0-9](?:[\.,]\d{3,}))([\u2022\xba\xb0]?)[\s]*(EAST|WEST|[EW])?/i,n=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(EAST|WEST|[EW])?/i,u=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)?[\ \t]*(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)[\ \t]*(EAST|WEST|[EW])?/i,b=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*([\u2022\xba\xb0\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['\u2032\xb4\u2019\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|\u2032\u2032|\u2019\u2019|\xb4\xb4|["\u2033\u201d\.])?[\ \t]*(NORTH|SOUTH|[NS])?(?:\s*[,/;]\s*|\s*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*([\u2022\xba\xb0\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['\u2032\xb4\u2019\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|\u2032\u2032|\xb4\xb4|\u2019\u2019|["\u2033\u201d\.])?[\ \t]*(EAST|WEST|[EW])?/i;const s=Object.freeze({DMS:"DMS",DM:"DM"});a.to=s,i=a;var v={decimalLatitude:40.123,decimalLongitude:-74.123};var L,l=(L=[],[{verbatimCoordinates:"40.123, -74.123",verbatimLatitude:"40.123",verbatimLongitude:"-74.123"},{verbatimCoordinates:"40.123\xb0 N 74.123\xb0 W",verbatimLatitude:"40.123\xb0 N",verbatimLongitude:"74.123\xb0 W"},{verbatimCoordinates:"40.123\xb0 N 74.123\xb0 W",verbatimLatitude:"40.123\xb0 N",verbatimLongitude:"74.123\xb0 W"},{verbatimCoordinates:'40\xb0 7\xb4 22.8" N 74\xb0 7\xb4 22.8" W',verbatimLatitude:'40\xb0 7\xb4 22.8" N',verbatimLongitude:'74\xb0 7\xb4 22.8" W'},{verbatimCoordinates:"40\xb0 7.38\u2019 , -74\xb0 7.38\u2019",verbatimLatitude:"40\xb0 7.38\u2019",verbatimLongitude:"-74\xb0 7.38\u2019"},{verbatimCoordinates:"N40\xb07\u201922.8\u2019\u2019, W74\xb07\u201922.8\u2019\u2019",verbatimLatitude:"N40\xb07\u201922.8\u2019\u2019",verbatimLongitude:"W74\xb07\u201922.8\u2019\u2019"},{verbatimCoordinates:'40\xb07\u201922.8"N, 74\xb07\u201922.8"W',verbatimLatitude:'40\xb07\u201922.8"N',verbatimLongitude:'74\xb07\u201922.8"W'},{verbatimCoordinates:"40\xb07'22.8\"N, 74\xb07'22.8\"W",verbatimLatitude:"40\xb07'22.8\"N",verbatimLongitude:"74\xb07'22.8\"W"},{verbatimCoordinates:"40 7 22.8, -74 7 22.8",verbatimLatitude:"40 7 22.8",verbatimLongitude:"-74 7 22.8"},{verbatimCoordinates:"40.123 -74.123",verbatimLatitude:"40.123",verbatimLongitude:"-74.123"},{verbatimCoordinates:"40.123\xb0,-74.123\xb0",verbatimLatitude:"40.123\xb0",verbatimLongitude:"-74.123\xb0"},{verbatimCoordinates:"40.123N74.123W",verbatimLatitude:"40.123N",verbatimLongitude:"74.123W"},{verbatimCoordinates:"4007.38N7407.38W",verbatimLatitude:"4007.38N",verbatimLongitude:"7407.38W"},{verbatimCoordinates:'40\xb07\u201922.8"N, 74\xb07\u201922.8"W',verbatimLatitude:'40\xb07\u201922.8"N',verbatimLongitude:'74\xb07\u201922.8"W'},{verbatimCoordinates:"400722.8N740722.8W",verbatimLatitude:"400722.8N",verbatimLongitude:"740722.8W"},{verbatimCoordinates:"N 40 7.38 W 74 7.38",verbatimLatitude:"N 40 7.38",verbatimLongitude:"W 74 7.38"},{verbatimCoordinates:"40:7:22.8N 74:7:22.8W",verbatimLatitude:"40:7:22.8N",verbatimLongitude:"74:7:22.8W"},{verbatimCoordinates:"40:7:23N,74:7:23W",verbatimLatitude:"40:7:23N",verbatimLongitude:"74:7:23W",decimalLatitude:40.1230555555,decimalLongitude:-74.1230555555},{verbatimCoordinates:'40\xb07\u201923"N 74\xb07\u201923"W',verbatimLatitude:'40\xb07\u201923"N',verbatimLongitude:'74\xb07\u201923"W',decimalLatitude:40.1230555555,decimalLongitude:-74.12305555555555},{verbatimCoordinates:'40\xb07\u201923" -74\xb07\u201923"',verbatimLatitude:'40\xb07\u201923"',verbatimLongitude:'-74\xb07\u201923"',decimalLatitude:40.1230555555,decimalLongitude:-74.123055555},{verbatimCoordinates:'40d 7\u2019 23" N 74d 7\u2019 23" W',verbatimLatitude:'40d 7\u2019 23" N',verbatimLongitude:'74d 7\u2019 23" W',decimalLatitude:40.1230555555,decimalLongitude:-74.123055555},{verbatimCoordinates:"40.123N 74.123W",verbatimLatitude:"40.123N",verbatimLongitude:"74.123W"},{verbatimCoordinates:"40\xb0 7.38, -74\xb0 7.38",verbatimLatitude:"40\xb0 7.38",verbatimLongitude:"-74\xb0 7.38"},{verbatimCoordinates:"40\xb0 7.38, -74\xb0 7.38",verbatimLatitude:"40\xb0 7.38",verbatimLongitude:"-74\xb0 7.38"},{verbatimCoordinates:"40 7 22.8; -74 7 22.8",verbatimLatitude:"40 7 22.8",verbatimLongitude:"-74 7 22.8"}].forEach(t=>{t.decimalLatitude?L.push(t):L.push({...t,...v})}),[...L,{verbatimCoordinates:"50\xb04'17.698\"south, 14\xb024'2.826\"east",verbatimLatitude:"50\xb04'17.698\"south",verbatimLongitude:"14\xb024'2.826\"east",decimalLatitude:-50.07158277777778,decimalLongitude:14.400785},{verbatimCoordinates:"50d4m17.698S 14d24m2.826E",verbatimLatitude:"50d4m17.698S",verbatimLongitude:"14d24m2.826E",decimalLatitude:-50.07158277777778,decimalLongitude:14.400785},{verbatimCoordinates:"40:26:46N,79:56:55W",verbatimLatitude:"40:26:46N",verbatimLongitude:"79:56:55W",decimalLatitude:40.44611111111111,decimalLongitude:-79.9486111111111},{verbatimCoordinates:"40:26:46.302N 79:56:55.903W",verbatimLatitude:"40:26:46.302N",verbatimLongitude:"79:56:55.903W",decimalLatitude:40.446195,decimalLongitude:-79.94886194444445},{verbatimCoordinates:"40\xb026\u203247\u2033N 79\xb058\u203236\u2033W",verbatimLatitude:"40\xb026\u203247\u2033N",verbatimLongitude:"79\xb058\u203236\u2033W",decimalLatitude:40.44638888888889,decimalLongitude:-79.97666666666667},{verbatimCoordinates:"40d 26\u2032 47\u2033 N 79d 58\u2032 36\u2033 W",verbatimLatitude:"40d 26\u2032 47\u2033 N",verbatimLongitude:"79d 58\u2032 36\u2033 W",decimalLatitude:40.44638888888889,decimalLongitude:-79.97666666666667},{verbatimCoordinates:"40.446195N 79.948862W",verbatimLatitude:"40.446195N",verbatimLongitude:"79.948862W",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40,446195\xb0 79,948862\xb0",verbatimLatitude:"40,446195\xb0",verbatimLongitude:"79,948862\xb0",decimalLatitude:40.446195,decimalLongitude:79.948862},{verbatimCoordinates:"40\xb0 26.7717, -79\xb0 56.93172",verbatimLatitude:"40\xb0 26.7717",verbatimLongitude:"-79\xb0 56.93172",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40.446195, -79.948862",verbatimLatitude:"40.446195",verbatimLongitude:"-79.948862",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40.123256; -74.123256",verbatimLatitude:"40.123256",verbatimLongitude:"-74.123256",decimalLatitude:40.123256,decimalLongitude:-74.123256},{verbatimCoordinates:"18.24S 22.45E",verbatimLatitude:"18.24S",verbatimLongitude:"22.45E",decimalLatitude:-18.4,decimalLongitude:22.75},{verbatimCoordinates:"27deg 15min 45.2sec S 18deg 32min 53.7sec E",verbatimLatitude:"27deg 15min 45.2sec S",verbatimLongitude:"18deg 32min 53.7sec E",decimalLatitude:-27.262555555555554,decimalLongitude:18.54825},{verbatimCoordinates:"-23.3245\xb0 S / 28.2344\xb0 E",verbatimLatitude:"-23.3245\xb0 S",verbatimLongitude:"28.2344\xb0 E",decimalLatitude:-23.3245,decimalLongitude:28.2344},{verbatimCoordinates:"40\xb0 26.7717 -79\xb0 56.93172",verbatimLatitude:"40\xb0 26.7717",verbatimLongitude:"-79\xb0 56.93172",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"27.15.45S 18.32.53E",verbatimLatitude:"27.15.45S",verbatimLongitude:"18.32.53E",decimalLatitude:-27.2625,decimalLongitude:18.548055},{verbatimCoordinates:"27,71372\xb0 S 23,07771\xb0 E",verbatimLatitude:"27,71372\xb0 S",verbatimLongitude:"23,07771\xb0 E",decimalLatitude:-27.71372,decimalLongitude:23.07771},{verbatimCoordinates:"N 52d0m0s E 000d0m0s",verbatimLatitude:"N 52d0m0s",verbatimLongitude:"E 000d0m0s",decimalLatitude:52,decimalLongitude:0},{verbatimCoordinates:"N49 0.000 E02 33.314",verbatimLatitude:"N49 0.000",verbatimLongitude:"E02 33.314",decimalLatitude:49,decimalLongitude:2.5552333333333332}]).map(t=>t.verbatimCoordinates);return i.formats=l,i});
|
|
1
|
+
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).convert=t()}}(function(){function t(t,e,i){const a=Number(t);let r;r=i?a>=0?"N":"S":a>=0?"E":"W";const d=Math.abs(a),o=Math.floor(d),n=60*(d-o);if("DM"==e)return`${o}\xb0 ${n.toFixed(3).replace(/\.0+$/,"")}' ${r}`;const m=Math.floor(n);return`${o}\xb0 ${m}' ${(60*(n-m)).toFixed(1).replace(/\.0$/,"")}" ${r}`}var e=function(e){if(!["DMS","DM"].includes(e))throw new Error("invalid format specified");if(this.decimalCoordinates&&this.decimalCoordinates.trim()){const i=this.decimalCoordinates.split(",").map(t=>t.trim());return`${t(i[0],e,!0)}, ${t(i[1],e,!1)}`}throw new Error("no decimal coordinates to convert")},i={};function a(t,i){i||(i=5),t=t.replace(/\s\s+/g," ").trim();var a=null,d=null,s="",v="",L=[],l=!1;if(n.test(t)){if(!(l=r(L=n.exec(t))))throw new Error("invalid decimal coordinate format");if(a=L[2],d=L[6],a.includes(",")&&(a=a.replace(",",".")),d.includes(",")&&(d=d.replace(",",".")),Number(Math.round(a))==Number(a))throw new Error("degree only coordinate provided");if(Number(Math.round(d))==Number(d))throw new Error("degree only coordinate provided");L[1]?(s=L[1],v=L[5]):L[4]&&(s=L[4],v=L[8])}else if(m.test(t)){if(!(l=r(L=m.exec(t))))throw new Error("invalid DMS coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60),L[6]&&(a+=L[6]/3600),parseInt(L[2])<0&&(a*=-1),d=Math.abs(parseInt(L[9])),L[11]&&(d+=L[11]/60),L[13]&&(d+=L[13]/3600),parseInt(L[9])<0&&(d*=-1),L[1]?(s=L[1],v=L[8]):L[7]&&(s=L[7],v=L[14])}else if(u.test(t)){if(!(l=r(L=u.exec(t))))throw new Error("invalid DMS coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60,L[3]||(L[3]=" ")),L[6]&&(a+=L[6]/3600,L[5]||(L[5]=" ")),parseInt(L[2])<0&&(a*=-1),d=Math.abs(parseInt(L[10])),L[12]&&(d+=L[12]/60,L[11]||(L[11]=" ")),L[14]&&(d+=L[14]/3600,L[13]||(L[13]=" ")),parseInt(L[10])<0&&(d*=-1),L[1]?(s=L[1],v=L[9]):L[8]&&(s=L[8],v=L[16])}else if(b.test(t)){if(!(l=r(L=b.exec(t))))throw new Error("invalid coordinates format");a=Math.abs(parseInt(L[2])),L[4]&&(a+=L[4]/60,L[3]||(L[3]=" ")),L[6]&&(a+=L[6]/3600,L[5]||(L[5]=" ")),parseInt(L[2])<0&&(a*=-1),d=Math.abs(parseInt(L[10])),L[12]&&(d+=L[12]/60,L[11]||(L[11]=" ")),L[14]&&(d+=L[14]/3600,L[13]||(L[13]=" ")),parseInt(L[10])<0&&(d*=-1),L[1]?(s=L[1],v=L[9]):L[8]&&(s=L[8],v=L[16])}if(Math.abs(d)>=180)throw new Error("invalid longitude value");if(Math.abs(d)>=90)throw new Error("invalid latitude value");if(l){var c=/S|SOUTH/i;c.test(s)&&a>0&&(a*=-1),(c=/W|WEST/i).test(v)&&d>0&&(d*=-1);var g,N,E=L[0].trim(),f=E.match(/[,/;\u0020]/g);if(null==f){var S=Math.floor(t.length/2);g=E.substring(0,S).trim(),N=E.substring(S).trim()}else{var W=0;if(0==(S=f.length%2==1?Math.floor(f.length/2):f.length/2-1))W=E.indexOf(f[0]),g=E.substring(0,W).trim(),N=E.substring(W+1).trim();else{for(var C=0,h=0;C<=S;)h=(W=E.indexOf(f[C],h))+1,C++;g=E.substring(0,W).trim(),N=E.substring(W+1).trim()}}return isNaN(a)&&a.includes(",")&&(a=a.replace(",",".")),a=Number(Number(a).toFixed(i)),isNaN(d)&&d.includes(",")&&(d=d.replace(",",".")),d=Number(Number(d).toFixed(i)),Object.freeze({verbatimCoordinates:E,verbatimLatitude:g,verbatimLongitude:N,decimalLatitude:a,decimalLongitude:d,decimalCoordinates:`${a},${d}`,closeEnough:o,toCoordinateFormat:e})}throw new Error("coordinates pattern match failed")}function r(t){if(!isNaN(t[0]))return!1;var e=t.filter(t=>t);if(e.shift(),e.length%2>0)return!1;for(var i=/^[-+]?\d+([\.,]{1}\d+)?$/,a=/[eastsouthnorthwest]+/i,r=e.length/2,d=0;d<r;d++){const t=e[d],o=e[d+r];if(!(i.test(t)&&i.test(o)||a.test(t)&&a.test(o)||t==o))return!1}return!0}function d(t,e){var i=Math.abs(t-e);return diff=Number(i.toFixed(6)),diff<=1e-5}function o(t){if(t.includes(",")){var e=t.split(",");if(NaN==Number(e[0])||NaN==Number(e[1]))throw new Error("coords are not valid decimals");return d(this.decimalLatitude,Number(e[0]))&&d(this.decimalLongitude,e[1])}throw new Error("coords being tested must be separated by a comma")}var n=/(NORTH|SOUTH|[NS])?[\s]*([+-]?[0-8]?[0-9](?:[\.,]\d{3,}))[\s]*([\u2022\xba\xb0]?)[\s]*(NORTH|SOUTH|[NS])?[\s]*[,/;]?[\s]*(EAST|WEST|[EW])?[\s]*([+-]?[0-1]?[0-9]?[0-9](?:[\.,]\d{3,}))[\s]*([\u2022\xba\xb0]?)[\s]*(EAST|WEST|[EW])?/i,m=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(EAST|WEST|[EW])?/i,u=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)?[\ \t]*(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)[\ \t]*(EAST|WEST|[EW])?/i,b=/(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*([\u2022\xba\xb0\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['\u2032\xb4\u2019\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|\u2032\u2032|\u2019\u2019|\xb4\xb4|["\u2033\u201d\.])?[\ \t]*(NORTH|SOUTH|[NS])?(?:\s*[,/;]\s*|\s*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*([\u2022\xba\xb0\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['\u2032\xb4\u2019\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|\u2032\u2032|\xb4\xb4|\u2019\u2019|["\u2033\u201d\.])?[\ \t]*(EAST|WEST|[EW])?/i;const s=Object.freeze({DMS:"DMS",DM:"DM"});a.to=s,i=a;var v,L={decimalLatitude:40.123,decimalLongitude:-74.123},l=(v=[],[{verbatimCoordinates:"40.123, -74.123",verbatimLatitude:"40.123",verbatimLongitude:"-74.123"},{verbatimCoordinates:"40.123\xb0 N 74.123\xb0 W",verbatimLatitude:"40.123\xb0 N",verbatimLongitude:"74.123\xb0 W"},{verbatimCoordinates:"40.123\xb0 N 74.123\xb0 W",verbatimLatitude:"40.123\xb0 N",verbatimLongitude:"74.123\xb0 W"},{verbatimCoordinates:'40\xb0 7\xb4 22.8" N 74\xb0 7\xb4 22.8" W',verbatimLatitude:'40\xb0 7\xb4 22.8" N',verbatimLongitude:'74\xb0 7\xb4 22.8" W'},{verbatimCoordinates:"40\xb0 7.38\u2019 , -74\xb0 7.38\u2019",verbatimLatitude:"40\xb0 7.38\u2019",verbatimLongitude:"-74\xb0 7.38\u2019"},{verbatimCoordinates:"N40\xb07\u201922.8\u2019\u2019, W74\xb07\u201922.8\u2019\u2019",verbatimLatitude:"N40\xb07\u201922.8\u2019\u2019",verbatimLongitude:"W74\xb07\u201922.8\u2019\u2019"},{verbatimCoordinates:'40\xb07\u201922.8"N, 74\xb07\u201922.8"W',verbatimLatitude:'40\xb07\u201922.8"N',verbatimLongitude:'74\xb07\u201922.8"W'},{verbatimCoordinates:"40\xb07'22.8\"N, 74\xb07'22.8\"W",verbatimLatitude:"40\xb07'22.8\"N",verbatimLongitude:"74\xb07'22.8\"W"},{verbatimCoordinates:"40 7 22.8, -74 7 22.8",verbatimLatitude:"40 7 22.8",verbatimLongitude:"-74 7 22.8"},{verbatimCoordinates:"40.123 -74.123",verbatimLatitude:"40.123",verbatimLongitude:"-74.123"},{verbatimCoordinates:"40.123\xb0,-74.123\xb0",verbatimLatitude:"40.123\xb0",verbatimLongitude:"-74.123\xb0"},{verbatimCoordinates:"40.123N74.123W",verbatimLatitude:"40.123N",verbatimLongitude:"74.123W"},{verbatimCoordinates:"4007.38N7407.38W",verbatimLatitude:"4007.38N",verbatimLongitude:"7407.38W"},{verbatimCoordinates:'40\xb07\u201922.8"N, 74\xb07\u201922.8"W',verbatimLatitude:'40\xb07\u201922.8"N',verbatimLongitude:'74\xb07\u201922.8"W'},{verbatimCoordinates:"400722.8N740722.8W",verbatimLatitude:"400722.8N",verbatimLongitude:"740722.8W"},{verbatimCoordinates:"N 40 7.38 W 74 7.38",verbatimLatitude:"N 40 7.38",verbatimLongitude:"W 74 7.38"},{verbatimCoordinates:"40:7:22.8N 74:7:22.8W",verbatimLatitude:"40:7:22.8N",verbatimLongitude:"74:7:22.8W"},{verbatimCoordinates:"40:7:23N,74:7:23W",verbatimLatitude:"40:7:23N",verbatimLongitude:"74:7:23W",decimalLatitude:40.1230555555,decimalLongitude:-74.1230555555},{verbatimCoordinates:'40\xb07\u201923"N 74\xb07\u201923"W',verbatimLatitude:'40\xb07\u201923"N',verbatimLongitude:'74\xb07\u201923"W',decimalLatitude:40.1230555555,decimalLongitude:-74.12305555555555},{verbatimCoordinates:'40\xb07\u201923" -74\xb07\u201923"',verbatimLatitude:'40\xb07\u201923"',verbatimLongitude:'-74\xb07\u201923"',decimalLatitude:40.1230555555,decimalLongitude:-74.123055555},{verbatimCoordinates:'40d 7\u2019 23" N 74d 7\u2019 23" W',verbatimLatitude:'40d 7\u2019 23" N',verbatimLongitude:'74d 7\u2019 23" W',decimalLatitude:40.1230555555,decimalLongitude:-74.123055555},{verbatimCoordinates:"40.123N 74.123W",verbatimLatitude:"40.123N",verbatimLongitude:"74.123W"},{verbatimCoordinates:"40\xb0 7.38, -74\xb0 7.38",verbatimLatitude:"40\xb0 7.38",verbatimLongitude:"-74\xb0 7.38"},{verbatimCoordinates:"40\xb0 7.38, -74\xb0 7.38",verbatimLatitude:"40\xb0 7.38",verbatimLongitude:"-74\xb0 7.38"},{verbatimCoordinates:"40 7 22.8; -74 7 22.8",verbatimLatitude:"40 7 22.8",verbatimLongitude:"-74 7 22.8"}].forEach(t=>{t.decimalLatitude?v.push(t):v.push({...t,...L})}),[...v,{verbatimCoordinates:"50\xb04'17.698\"south, 14\xb024'2.826\"east",verbatimLatitude:"50\xb04'17.698\"south",verbatimLongitude:"14\xb024'2.826\"east",decimalLatitude:-50.07158277777778,decimalLongitude:14.400785},{verbatimCoordinates:"50d4m17.698S 14d24m2.826E",verbatimLatitude:"50d4m17.698S",verbatimLongitude:"14d24m2.826E",decimalLatitude:-50.07158277777778,decimalLongitude:14.400785},{verbatimCoordinates:"40:26:46N,79:56:55W",verbatimLatitude:"40:26:46N",verbatimLongitude:"79:56:55W",decimalLatitude:40.44611111111111,decimalLongitude:-79.9486111111111},{verbatimCoordinates:"40:26:46.302N 79:56:55.903W",verbatimLatitude:"40:26:46.302N",verbatimLongitude:"79:56:55.903W",decimalLatitude:40.446195,decimalLongitude:-79.94886194444445},{verbatimCoordinates:"40\xb026\u203247\u2033N 79\xb058\u203236\u2033W",verbatimLatitude:"40\xb026\u203247\u2033N",verbatimLongitude:"79\xb058\u203236\u2033W",decimalLatitude:40.44638888888889,decimalLongitude:-79.97666666666667},{verbatimCoordinates:"40d 26\u2032 47\u2033 N 79d 58\u2032 36\u2033 W",verbatimLatitude:"40d 26\u2032 47\u2033 N",verbatimLongitude:"79d 58\u2032 36\u2033 W",decimalLatitude:40.44638888888889,decimalLongitude:-79.97666666666667},{verbatimCoordinates:"40.446195N 79.948862W",verbatimLatitude:"40.446195N",verbatimLongitude:"79.948862W",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40,446195\xb0 79,948862\xb0",verbatimLatitude:"40,446195\xb0",verbatimLongitude:"79,948862\xb0",decimalLatitude:40.446195,decimalLongitude:79.948862},{verbatimCoordinates:"40\xb0 26.7717, -79\xb0 56.93172",verbatimLatitude:"40\xb0 26.7717",verbatimLongitude:"-79\xb0 56.93172",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40.446195, -79.948862",verbatimLatitude:"40.446195",verbatimLongitude:"-79.948862",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"40.123256; -74.123256",verbatimLatitude:"40.123256",verbatimLongitude:"-74.123256",decimalLatitude:40.123256,decimalLongitude:-74.123256},{verbatimCoordinates:"18\xb024S 22\xb045E",verbatimLatitude:"18\xb024S",verbatimLongitude:"22\xb045E",decimalLatitude:-18.4,decimalLongitude:22.75},{verbatimCoordinates:"18.24S 22.45E",verbatimLatitude:"18.24S",verbatimLongitude:"22.45E",decimalLatitude:-18.4,decimalLongitude:22.75},{verbatimCoordinates:"27deg 15min 45.2sec S 18deg 32min 53.7sec E",verbatimLatitude:"27deg 15min 45.2sec S",verbatimLongitude:"18deg 32min 53.7sec E",decimalLatitude:-27.262555555555554,decimalLongitude:18.54825},{verbatimCoordinates:"-23.3245\xb0 S / 28.2344\xb0 E",verbatimLatitude:"-23.3245\xb0 S",verbatimLongitude:"28.2344\xb0 E",decimalLatitude:-23.3245,decimalLongitude:28.2344},{verbatimCoordinates:"40\xb0 26.7717 -79\xb0 56.93172",verbatimLatitude:"40\xb0 26.7717",verbatimLongitude:"-79\xb0 56.93172",decimalLatitude:40.446195,decimalLongitude:-79.948862},{verbatimCoordinates:"27.15.45S 18.32.53E",verbatimLatitude:"27.15.45S",verbatimLongitude:"18.32.53E",decimalLatitude:-27.2625,decimalLongitude:18.548055},{verbatimCoordinates:"S23.43563 \xb0 E22.45634 \xb0",verbatimLatitude:"S23.43563 \xb0",verbatimLongitude:"E22.45634 \xb0",decimalLatitude:-23.43563,decimalLongitude:22.45634},{verbatimCoordinates:"27,71372\xb0 S 23,07771\xb0 E",verbatimLatitude:"27,71372\xb0 S",verbatimLongitude:"23,07771\xb0 E",decimalLatitude:-27.71372,decimalLongitude:23.07771}]).map(t=>t.verbatimCoordinates);return i.formats=l,i});
|
package/bundle/workflow.txt
CHANGED
package/conf.py
ADDED
package/converter.js
CHANGED
|
@@ -38,12 +38,24 @@ function converter(coordsString, decimalPlaces) {
|
|
|
38
38
|
if(ddLng.includes(',')) {
|
|
39
39
|
ddLng = ddLng.replace(',', '.');
|
|
40
40
|
}
|
|
41
|
+
|
|
42
|
+
//validation, we don't want things like 23.00000
|
|
43
|
+
|
|
44
|
+
//some more validation: no zero coords or degrees only
|
|
45
|
+
if (Number(Math.round(ddLat)) == Number(ddLat)) {
|
|
46
|
+
throw new Error('degree only coordinate provided')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (Number(Math.round(ddLng)) == Number(ddLng)) {
|
|
50
|
+
throw new Error('degree only coordinate provided')
|
|
51
|
+
}
|
|
41
52
|
|
|
42
53
|
//get directions
|
|
43
|
-
if(match[1]){
|
|
54
|
+
if(match[1]) {
|
|
44
55
|
latdir = match[1];
|
|
45
56
|
lngdir = match[5];
|
|
46
|
-
}
|
|
57
|
+
}
|
|
58
|
+
else if (match[4]) {
|
|
47
59
|
latdir = match[4];
|
|
48
60
|
lngdir = match[8];
|
|
49
61
|
}
|
|
@@ -58,25 +70,41 @@ function converter(coordsString, decimalPlaces) {
|
|
|
58
70
|
match = dms_periods.exec(coordsString);
|
|
59
71
|
matchSuccess = checkMatch(match);
|
|
60
72
|
if (matchSuccess){
|
|
73
|
+
|
|
61
74
|
ddLat = Math.abs(parseInt(match[2]));
|
|
62
|
-
|
|
75
|
+
|
|
76
|
+
if (match[4]) {
|
|
63
77
|
ddLat += match[4]/60;
|
|
64
|
-
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (match[6]){
|
|
65
81
|
ddLat += match[6]/3600;
|
|
66
|
-
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (parseInt(match[2]) < 0) {
|
|
67
85
|
ddLat = -1 * ddLat;
|
|
86
|
+
}
|
|
87
|
+
|
|
68
88
|
ddLng = Math.abs(parseInt(match[9]));
|
|
69
|
-
|
|
89
|
+
|
|
90
|
+
if (match[11]) {
|
|
70
91
|
ddLng += match[11]/60;
|
|
71
|
-
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (match[13]) {
|
|
72
95
|
ddLng += match[13]/3600;
|
|
73
|
-
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (parseInt(match[9]) < 0) {
|
|
74
99
|
ddLng = -1 * ddLng;
|
|
75
|
-
|
|
76
|
-
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//the compass directions
|
|
103
|
+
if(match[1]) {
|
|
77
104
|
latdir = match[1];
|
|
78
105
|
lngdir = match[8];
|
|
79
|
-
}
|
|
106
|
+
}
|
|
107
|
+
else if (match[7]) {
|
|
80
108
|
latdir = match[7];
|
|
81
109
|
lngdir = match[14];
|
|
82
110
|
}
|
|
@@ -89,38 +117,52 @@ function converter(coordsString, decimalPlaces) {
|
|
|
89
117
|
else if (dms_abbr.test(coordsString)) {
|
|
90
118
|
match = dms_abbr.exec(coordsString);
|
|
91
119
|
matchSuccess = checkMatch(match);
|
|
92
|
-
|
|
120
|
+
|
|
121
|
+
if (matchSuccess) {
|
|
93
122
|
ddLat = Math.abs(parseInt(match[2]));
|
|
94
|
-
if (match[4]){
|
|
123
|
+
if (match[4]) {
|
|
95
124
|
ddLat += match[4]/60;
|
|
96
|
-
if(!match[3])
|
|
125
|
+
if(!match[3]) {
|
|
97
126
|
match[3] = ' ';
|
|
127
|
+
}
|
|
98
128
|
}
|
|
129
|
+
|
|
99
130
|
if (match[6]) {
|
|
100
131
|
ddLat += match[6]/3600;
|
|
101
|
-
if(!match[5])
|
|
132
|
+
if(!match[5]) {
|
|
102
133
|
match[5] = ' ';
|
|
134
|
+
}
|
|
103
135
|
}
|
|
104
|
-
|
|
136
|
+
|
|
137
|
+
if (parseInt(match[2]) < 0) {
|
|
105
138
|
ddLat = -1 * ddLat;
|
|
139
|
+
}
|
|
140
|
+
|
|
106
141
|
ddLng = Math.abs(parseInt(match[10]));
|
|
107
|
-
|
|
142
|
+
|
|
143
|
+
if (match[12]) {
|
|
108
144
|
ddLng += match[12]/60;
|
|
109
|
-
if(!match[11])
|
|
145
|
+
if(!match[11]) {
|
|
110
146
|
match[11] = ' ';
|
|
147
|
+
}
|
|
111
148
|
}
|
|
112
|
-
|
|
149
|
+
|
|
150
|
+
if (match[14]) {
|
|
113
151
|
ddLng += match[14]/3600;
|
|
114
|
-
if(!match[13])
|
|
152
|
+
if(!match[13]) {
|
|
115
153
|
match[13] = ' ';
|
|
154
|
+
}
|
|
116
155
|
}
|
|
117
|
-
|
|
156
|
+
|
|
157
|
+
if (parseInt(match[10]) < 0) {
|
|
118
158
|
ddLng = -1 * ddLng;
|
|
159
|
+
}
|
|
119
160
|
|
|
120
|
-
if(match[1]){
|
|
161
|
+
if(match[1]) {
|
|
121
162
|
latdir = match[1];
|
|
122
163
|
lngdir = match[9];
|
|
123
|
-
}
|
|
164
|
+
}
|
|
165
|
+
else if (match[8]) {
|
|
124
166
|
latdir = match[8];
|
|
125
167
|
lngdir = match[16];
|
|
126
168
|
}
|
|
@@ -133,39 +175,50 @@ function converter(coordsString, decimalPlaces) {
|
|
|
133
175
|
else if (coords_other.test(coordsString)) {
|
|
134
176
|
match = coords_other.exec(coordsString);
|
|
135
177
|
matchSuccess = checkMatch(match);
|
|
136
|
-
|
|
178
|
+
|
|
179
|
+
if (matchSuccess) {
|
|
137
180
|
ddLat = Math.abs(parseInt(match[2]));
|
|
138
181
|
if (match[4]){
|
|
139
182
|
ddLat += match[4]/60;
|
|
140
|
-
if(!match[3])
|
|
183
|
+
if(!match[3]) {
|
|
141
184
|
match[3] = ' ';
|
|
185
|
+
}
|
|
142
186
|
}
|
|
187
|
+
|
|
143
188
|
if (match[6]) {
|
|
144
189
|
ddLat += match[6]/3600;
|
|
145
|
-
if(!match[5])
|
|
190
|
+
if(!match[5]) {
|
|
146
191
|
match[5] = ' ';
|
|
192
|
+
}
|
|
147
193
|
}
|
|
148
|
-
|
|
194
|
+
|
|
195
|
+
if (parseInt(match[2]) < 0) {
|
|
149
196
|
ddLat = -1 * ddLat;
|
|
197
|
+
}
|
|
150
198
|
|
|
151
199
|
ddLng = Math.abs(parseInt(match[10]));
|
|
152
|
-
if (match[12]){
|
|
200
|
+
if (match[12]) {
|
|
153
201
|
ddLng += match[12]/60;
|
|
154
|
-
if(!match[11])
|
|
202
|
+
if(!match[11]) {
|
|
155
203
|
match[11] = ' ';
|
|
204
|
+
}
|
|
156
205
|
}
|
|
157
|
-
|
|
206
|
+
|
|
207
|
+
if (match[14]) {
|
|
158
208
|
ddLng += match[14]/3600;
|
|
159
|
-
if(!match[13])
|
|
209
|
+
if(!match[13]) {
|
|
160
210
|
match[13] = ' ';
|
|
211
|
+
}
|
|
161
212
|
}
|
|
162
|
-
|
|
213
|
+
|
|
214
|
+
if (parseInt(match[10]) < 0) {
|
|
163
215
|
ddLng = -1 * ddLng;
|
|
164
|
-
|
|
165
|
-
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if(match[1]) {
|
|
166
219
|
latdir = match[1];
|
|
167
220
|
lngdir = match[9];
|
|
168
|
-
} else if (match[8]){
|
|
221
|
+
} else if (match[8]) {
|
|
169
222
|
latdir = match[8];
|
|
170
223
|
lngdir = match[16];
|
|
171
224
|
}
|
|
@@ -177,22 +230,31 @@ function converter(coordsString, decimalPlaces) {
|
|
|
177
230
|
}
|
|
178
231
|
|
|
179
232
|
//check longitude value - it can be wrong!
|
|
180
|
-
if (Math.abs(ddLng) >=180) {
|
|
233
|
+
if (Math.abs(ddLng) >= 180) {
|
|
181
234
|
throw new Error("invalid longitude value")
|
|
182
235
|
}
|
|
236
|
+
|
|
237
|
+
//just to be safe check latitude also...
|
|
238
|
+
if (Math.abs(ddLng) >= 90) {
|
|
239
|
+
throw new Error("invalid latitude value")
|
|
240
|
+
}
|
|
183
241
|
|
|
184
242
|
if (matchSuccess){
|
|
185
243
|
|
|
186
244
|
//make sure the signs and cardinal directions match
|
|
187
245
|
var patt = /S|SOUTH/i;
|
|
188
|
-
if (patt.test(latdir))
|
|
189
|
-
if (ddLat > 0)
|
|
246
|
+
if (patt.test(latdir)) {
|
|
247
|
+
if (ddLat > 0) {
|
|
190
248
|
ddLat = -1 * ddLat;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
191
251
|
|
|
192
252
|
patt = /W|WEST/i;
|
|
193
|
-
if (patt.test(lngdir))
|
|
194
|
-
if (ddLng > 0)
|
|
253
|
+
if (patt.test(lngdir)){
|
|
254
|
+
if (ddLng > 0) {
|
|
195
255
|
ddLng = -1 * ddLng;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
196
258
|
|
|
197
259
|
|
|
198
260
|
//we need to get the verbatim coords from the string
|
|
@@ -223,7 +285,6 @@ function converter(coordsString, decimalPlaces) {
|
|
|
223
285
|
middle = (seps.length / 2) - 1
|
|
224
286
|
}
|
|
225
287
|
|
|
226
|
-
|
|
227
288
|
//walk through seps until we get to the middle
|
|
228
289
|
var splitIndex = 0;
|
|
229
290
|
|
|
@@ -285,39 +346,37 @@ function checkMatch(match) { //test if the matched groups arrays are 'balanced'.
|
|
|
285
346
|
if(!isNaN(match[0])){ //we've matched a number, not what we want....
|
|
286
347
|
return false
|
|
287
348
|
}
|
|
349
|
+
|
|
288
350
|
//first remove the empty values from the array
|
|
289
351
|
var filteredMatch = match.filter(x=>x);
|
|
290
352
|
|
|
291
353
|
//we need to shift the array because it contains the whole coordinates string in the first item
|
|
292
354
|
filteredMatch.shift();
|
|
293
355
|
|
|
294
|
-
|
|
295
|
-
//if minutes or seconds are out of bounds, the array length is wrong
|
|
296
|
-
if (filteredMatch.length == 4) {
|
|
297
|
-
return false
|
|
298
|
-
}
|
|
299
|
-
*/
|
|
300
|
-
|
|
301
|
-
//then check the array length is an even number else exit
|
|
356
|
+
//check the array length is an even number else exit
|
|
302
357
|
if (filteredMatch.length % 2 > 0) {
|
|
303
358
|
return false;
|
|
304
359
|
}
|
|
305
360
|
|
|
306
361
|
//regex for testing corresponding values match
|
|
307
|
-
var numerictest = /^[-+]
|
|
308
|
-
var stringtest = /[
|
|
362
|
+
var numerictest = /^[-+]?\d+([\.,]{1}\d+)?$/; //for testing numeric values
|
|
363
|
+
var stringtest = /[eastsouthnorthwest]+/i; //for testing string values (north, south, etc)
|
|
309
364
|
|
|
310
365
|
|
|
311
366
|
var halflen = filteredMatch.length/2;
|
|
312
|
-
var result = true;
|
|
313
367
|
for (var i = 0; i < halflen; i++) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
368
|
+
const leftside = filteredMatch[i]
|
|
369
|
+
const rightside = filteredMatch[i + halflen]
|
|
370
|
+
if ((numerictest.test(leftside) && numerictest.test(rightside)) || (stringtest.test(leftside) && stringtest.test(rightside)) || leftside == rightside) {
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
return false
|
|
317
375
|
}
|
|
318
376
|
}
|
|
319
377
|
|
|
320
|
-
return
|
|
378
|
+
return true;
|
|
379
|
+
|
|
321
380
|
}
|
|
322
381
|
|
|
323
382
|
//functions for coordinate validation
|
|
@@ -350,7 +409,7 @@ function coordsCloseEnough(coordsToTest) {
|
|
|
350
409
|
}
|
|
351
410
|
|
|
352
411
|
//Coordinates pattern matching regex
|
|
353
|
-
var dd_re = /(NORTH|SOUTH|[NS])?[\s]*([+-]?[0-8]?[0-9](?:[\.,]\d{3,}))([•º°]?)[\s]*(NORTH|SOUTH|[NS])?[\s]*[,/;]?[\s]*(EAST|WEST|[EW])?[\s]*([+-]?[0-1]?[0-9]?[0-9](?:[\.,]\d{3,}))([•º°]?)[\s]*(EAST|WEST|[EW])?/i;
|
|
412
|
+
var dd_re = /(NORTH|SOUTH|[NS])?[\s]*([+-]?[0-8]?[0-9](?:[\.,]\d{3,}))[\s]*([•º°]?)[\s]*(NORTH|SOUTH|[NS])?[\s]*[,/;]?[\s]*(EAST|WEST|[EW])?[\s]*([+-]?[0-1]?[0-9]?[0-9](?:[\.,]\d{3,}))[\s]*([•º°]?)[\s]*(EAST|WEST|[EW])?/i;
|
|
354
413
|
//degrees minutes seconds with '.' as separator - gives array with 15 values
|
|
355
414
|
var dms_periods = /(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(\.)[\ \t]*([0-5]?[0-9])[\ \t]*(\.)?[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(EAST|WEST|[EW])?/i;
|
|
356
415
|
//degrees minutes seconds with words 'degrees, minutes, seconds' as separators (needed because the s of seconds messes with the S of SOUTH) - gives array of 17 values
|
package/failFormats.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//TODO These formats should throw...
|
|
2
|
+
|
|
3
|
+
const failingFormats = [
|
|
4
|
+
'50°4\'17.698"south, 24.34532', //different formats on each side
|
|
5
|
+
'90°4\'17.698"south, 23°4\'17.698"east',
|
|
6
|
+
'50°4\'17.698"east, 23°4\'17.698"south', //directions wrong way round
|
|
7
|
+
'E23.34355,S25.324234', // directions wrong way round
|
|
8
|
+
'23°45\'12.2\'\'S 18.33\'56.7\'\'E', //symbols don't match
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
module.exports = failingFormats
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const testFormats = require('./testformats')
|
|
3
|
+
|
|
4
|
+
fs.writeFile("testFormats.json", JSON.stringify(testFormats, null, 2), 'utf8', function (err) {
|
|
5
|
+
if (err) {
|
|
6
|
+
console.log("An error occured while writing JSON Object to File.");
|
|
7
|
+
return console.log(err);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
console.log("JSON file has been saved.");
|
|
11
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "geo-coordinates-parser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "A Javascript function for reading a variety of coordinate formats and converting to decimal numbers. Builds on other efforts by returning the verbatim coordinates and the decimal coordinates all in one object.",
|
|
5
5
|
"main": "merge.js",
|
|
6
6
|
"scripts": {
|
package/test.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const convert = require('./converter')
|
|
2
2
|
const testFormats = require('./testformats')
|
|
3
|
+
const failingFormats = require('./failFormats')
|
|
3
4
|
|
|
4
5
|
let allPassed = true;
|
|
5
6
|
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
//FORMATS THAT SHOULD BE CONVERTED
|
|
8
|
+
for (const t of testFormats) {
|
|
9
9
|
try {
|
|
10
10
|
var converted = convert(t.verbatimCoordinates, 8)
|
|
11
11
|
|
|
@@ -18,7 +18,6 @@ testFormats.some(t => { //.some so we can break
|
|
|
18
18
|
console.log(t.decimalLatitude)
|
|
19
19
|
console.log(t.decimalLongitude)
|
|
20
20
|
allPassed = false;
|
|
21
|
-
return true;
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
|
|
@@ -29,20 +28,34 @@ testFormats.some(t => { //.some so we can break
|
|
|
29
28
|
console.log('got', converted.verbatimLatitude, 'should be ', t.verbatimLatitude)
|
|
30
29
|
console.log('got', converted.verbatimLongitude, 'should be', t.verbatimLongitude)
|
|
31
30
|
allPassed = false;
|
|
32
|
-
return true
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
|
|
36
33
|
}
|
|
37
34
|
catch(err) {
|
|
38
35
|
console.log("Failed to convert the following format")
|
|
39
36
|
console.log(t.verbatimCoordinates)
|
|
40
37
|
console.log(err.message)
|
|
41
38
|
allPassed = false;
|
|
42
|
-
return true;
|
|
43
39
|
}
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
//FORMATS THAT SHOULD NOT BE CONVERTED
|
|
44
|
+
const converting = []
|
|
45
|
+
for (const f of failingFormats) {
|
|
46
|
+
try {
|
|
47
|
+
let converted = convert(f)
|
|
48
|
+
converting.push(f)
|
|
49
|
+
allPassed = false
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
//nothing here
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if(converting.length) {
|
|
57
|
+
console.log("The following coordinates should NOT have converted successfully: " + converting.join(' | '))
|
|
58
|
+
}
|
|
46
59
|
|
|
47
60
|
if (allPassed) {
|
|
48
61
|
console.log("all formats successfully converted")
|
package/testFormats.json
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"verbatimCoordinates": "40.123, -74.123",
|
|
4
|
+
"verbatimLatitude": "40.123",
|
|
5
|
+
"verbatimLongitude": "-74.123",
|
|
6
|
+
"decimalLatitude": 40.123,
|
|
7
|
+
"decimalLongitude": -74.123
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"verbatimCoordinates": "40.123° N 74.123° W",
|
|
11
|
+
"verbatimLatitude": "40.123° N",
|
|
12
|
+
"verbatimLongitude": "74.123° W",
|
|
13
|
+
"decimalLatitude": 40.123,
|
|
14
|
+
"decimalLongitude": -74.123
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"verbatimCoordinates": "40.123° N 74.123° W",
|
|
18
|
+
"verbatimLatitude": "40.123° N",
|
|
19
|
+
"verbatimLongitude": "74.123° W",
|
|
20
|
+
"decimalLatitude": 40.123,
|
|
21
|
+
"decimalLongitude": -74.123
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"verbatimCoordinates": "40° 7´ 22.8\" N 74° 7´ 22.8\" W",
|
|
25
|
+
"verbatimLatitude": "40° 7´ 22.8\" N",
|
|
26
|
+
"verbatimLongitude": "74° 7´ 22.8\" W",
|
|
27
|
+
"decimalLatitude": 40.123,
|
|
28
|
+
"decimalLongitude": -74.123
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"verbatimCoordinates": "40° 7.38’ , -74° 7.38’",
|
|
32
|
+
"verbatimLatitude": "40° 7.38’",
|
|
33
|
+
"verbatimLongitude": "-74° 7.38’",
|
|
34
|
+
"decimalLatitude": 40.123,
|
|
35
|
+
"decimalLongitude": -74.123
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"verbatimCoordinates": "N40°7’22.8’’, W74°7’22.8’’",
|
|
39
|
+
"verbatimLatitude": "N40°7’22.8’’",
|
|
40
|
+
"verbatimLongitude": "W74°7’22.8’’",
|
|
41
|
+
"decimalLatitude": 40.123,
|
|
42
|
+
"decimalLongitude": -74.123
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"verbatimCoordinates": "40°7’22.8\"N, 74°7’22.8\"W",
|
|
46
|
+
"verbatimLatitude": "40°7’22.8\"N",
|
|
47
|
+
"verbatimLongitude": "74°7’22.8\"W",
|
|
48
|
+
"decimalLatitude": 40.123,
|
|
49
|
+
"decimalLongitude": -74.123
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"verbatimCoordinates": "40°7'22.8\"N, 74°7'22.8\"W",
|
|
53
|
+
"verbatimLatitude": "40°7'22.8\"N",
|
|
54
|
+
"verbatimLongitude": "74°7'22.8\"W",
|
|
55
|
+
"decimalLatitude": 40.123,
|
|
56
|
+
"decimalLongitude": -74.123
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"verbatimCoordinates": "40 7 22.8, -74 7 22.8",
|
|
60
|
+
"verbatimLatitude": "40 7 22.8",
|
|
61
|
+
"verbatimLongitude": "-74 7 22.8",
|
|
62
|
+
"decimalLatitude": 40.123,
|
|
63
|
+
"decimalLongitude": -74.123
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"verbatimCoordinates": "40.123 -74.123",
|
|
67
|
+
"verbatimLatitude": "40.123",
|
|
68
|
+
"verbatimLongitude": "-74.123",
|
|
69
|
+
"decimalLatitude": 40.123,
|
|
70
|
+
"decimalLongitude": -74.123
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"verbatimCoordinates": "40.123°,-74.123°",
|
|
74
|
+
"verbatimLatitude": "40.123°",
|
|
75
|
+
"verbatimLongitude": "-74.123°",
|
|
76
|
+
"decimalLatitude": 40.123,
|
|
77
|
+
"decimalLongitude": -74.123
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"verbatimCoordinates": "40.123N74.123W",
|
|
81
|
+
"verbatimLatitude": "40.123N",
|
|
82
|
+
"verbatimLongitude": "74.123W",
|
|
83
|
+
"decimalLatitude": 40.123,
|
|
84
|
+
"decimalLongitude": -74.123
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"verbatimCoordinates": "4007.38N7407.38W",
|
|
88
|
+
"verbatimLatitude": "4007.38N",
|
|
89
|
+
"verbatimLongitude": "7407.38W",
|
|
90
|
+
"decimalLatitude": 40.123,
|
|
91
|
+
"decimalLongitude": -74.123
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"verbatimCoordinates": "40°7’22.8\"N, 74°7’22.8\"W",
|
|
95
|
+
"verbatimLatitude": "40°7’22.8\"N",
|
|
96
|
+
"verbatimLongitude": "74°7’22.8\"W",
|
|
97
|
+
"decimalLatitude": 40.123,
|
|
98
|
+
"decimalLongitude": -74.123
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"verbatimCoordinates": "400722.8N740722.8W",
|
|
102
|
+
"verbatimLatitude": "400722.8N",
|
|
103
|
+
"verbatimLongitude": "740722.8W",
|
|
104
|
+
"decimalLatitude": 40.123,
|
|
105
|
+
"decimalLongitude": -74.123
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"verbatimCoordinates": "N 40 7.38 W 74 7.38",
|
|
109
|
+
"verbatimLatitude": "N 40 7.38",
|
|
110
|
+
"verbatimLongitude": "W 74 7.38",
|
|
111
|
+
"decimalLatitude": 40.123,
|
|
112
|
+
"decimalLongitude": -74.123
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"verbatimCoordinates": "40:7:22.8N 74:7:22.8W",
|
|
116
|
+
"verbatimLatitude": "40:7:22.8N",
|
|
117
|
+
"verbatimLongitude": "74:7:22.8W",
|
|
118
|
+
"decimalLatitude": 40.123,
|
|
119
|
+
"decimalLongitude": -74.123
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"verbatimCoordinates": "40:7:23N,74:7:23W",
|
|
123
|
+
"verbatimLatitude": "40:7:23N",
|
|
124
|
+
"verbatimLongitude": "74:7:23W",
|
|
125
|
+
"decimalLatitude": 40.1230555555,
|
|
126
|
+
"decimalLongitude": -74.1230555555
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"verbatimCoordinates": "40°7’23\"N 74°7’23\"W",
|
|
130
|
+
"verbatimLatitude": "40°7’23\"N",
|
|
131
|
+
"verbatimLongitude": "74°7’23\"W",
|
|
132
|
+
"decimalLatitude": 40.1230555555,
|
|
133
|
+
"decimalLongitude": -74.12305555555555
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"verbatimCoordinates": "40°7’23\" -74°7’23\"",
|
|
137
|
+
"verbatimLatitude": "40°7’23\"",
|
|
138
|
+
"verbatimLongitude": "-74°7’23\"",
|
|
139
|
+
"decimalLatitude": 40.1230555555,
|
|
140
|
+
"decimalLongitude": -74.123055555
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"verbatimCoordinates": "40d 7’ 23\" N 74d 7’ 23\" W",
|
|
144
|
+
"verbatimLatitude": "40d 7’ 23\" N",
|
|
145
|
+
"verbatimLongitude": "74d 7’ 23\" W",
|
|
146
|
+
"decimalLatitude": 40.1230555555,
|
|
147
|
+
"decimalLongitude": -74.123055555
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"verbatimCoordinates": "40.123N 74.123W",
|
|
151
|
+
"verbatimLatitude": "40.123N",
|
|
152
|
+
"verbatimLongitude": "74.123W",
|
|
153
|
+
"decimalLatitude": 40.123,
|
|
154
|
+
"decimalLongitude": -74.123
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"verbatimCoordinates": "40° 7.38, -74° 7.38",
|
|
158
|
+
"verbatimLatitude": "40° 7.38",
|
|
159
|
+
"verbatimLongitude": "-74° 7.38",
|
|
160
|
+
"decimalLatitude": 40.123,
|
|
161
|
+
"decimalLongitude": -74.123
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"verbatimCoordinates": "40° 7.38, -74° 7.38",
|
|
165
|
+
"verbatimLatitude": "40° 7.38",
|
|
166
|
+
"verbatimLongitude": "-74° 7.38",
|
|
167
|
+
"decimalLatitude": 40.123,
|
|
168
|
+
"decimalLongitude": -74.123
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"verbatimCoordinates": "40 7 22.8; -74 7 22.8",
|
|
172
|
+
"verbatimLatitude": "40 7 22.8",
|
|
173
|
+
"verbatimLongitude": "-74 7 22.8",
|
|
174
|
+
"decimalLatitude": 40.123,
|
|
175
|
+
"decimalLongitude": -74.123
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"verbatimCoordinates": "50°4'17.698\"south, 14°24'2.826\"east",
|
|
179
|
+
"verbatimLatitude": "50°4'17.698\"south",
|
|
180
|
+
"verbatimLongitude": "14°24'2.826\"east",
|
|
181
|
+
"decimalLatitude": -50.07158277777778,
|
|
182
|
+
"decimalLongitude": 14.400785
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"verbatimCoordinates": "50d4m17.698S 14d24m2.826E",
|
|
186
|
+
"verbatimLatitude": "50d4m17.698S",
|
|
187
|
+
"verbatimLongitude": "14d24m2.826E",
|
|
188
|
+
"decimalLatitude": -50.07158277777778,
|
|
189
|
+
"decimalLongitude": 14.400785
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"verbatimCoordinates": "40:26:46N,79:56:55W",
|
|
193
|
+
"verbatimLatitude": "40:26:46N",
|
|
194
|
+
"verbatimLongitude": "79:56:55W",
|
|
195
|
+
"decimalLatitude": 40.44611111111111,
|
|
196
|
+
"decimalLongitude": -79.9486111111111
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"verbatimCoordinates": "40:26:46.302N 79:56:55.903W",
|
|
200
|
+
"verbatimLatitude": "40:26:46.302N",
|
|
201
|
+
"verbatimLongitude": "79:56:55.903W",
|
|
202
|
+
"decimalLatitude": 40.446195,
|
|
203
|
+
"decimalLongitude": -79.94886194444445
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"verbatimCoordinates": "40°26′47″N 79°58′36″W",
|
|
207
|
+
"verbatimLatitude": "40°26′47″N",
|
|
208
|
+
"verbatimLongitude": "79°58′36″W",
|
|
209
|
+
"decimalLatitude": 40.44638888888889,
|
|
210
|
+
"decimalLongitude": -79.97666666666667
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"verbatimCoordinates": "40d 26′ 47″ N 79d 58′ 36″ W",
|
|
214
|
+
"verbatimLatitude": "40d 26′ 47″ N",
|
|
215
|
+
"verbatimLongitude": "79d 58′ 36″ W",
|
|
216
|
+
"decimalLatitude": 40.44638888888889,
|
|
217
|
+
"decimalLongitude": -79.97666666666667
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"verbatimCoordinates": "40.446195N 79.948862W",
|
|
221
|
+
"verbatimLatitude": "40.446195N",
|
|
222
|
+
"verbatimLongitude": "79.948862W",
|
|
223
|
+
"decimalLatitude": 40.446195,
|
|
224
|
+
"decimalLongitude": -79.948862
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"verbatimCoordinates": "40,446195° 79,948862°",
|
|
228
|
+
"verbatimLatitude": "40,446195°",
|
|
229
|
+
"verbatimLongitude": "79,948862°",
|
|
230
|
+
"decimalLatitude": 40.446195,
|
|
231
|
+
"decimalLongitude": 79.948862
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"verbatimCoordinates": "40° 26.7717, -79° 56.93172",
|
|
235
|
+
"verbatimLatitude": "40° 26.7717",
|
|
236
|
+
"verbatimLongitude": "-79° 56.93172",
|
|
237
|
+
"decimalLatitude": 40.446195,
|
|
238
|
+
"decimalLongitude": -79.948862
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"verbatimCoordinates": "40.446195, -79.948862",
|
|
242
|
+
"verbatimLatitude": "40.446195",
|
|
243
|
+
"verbatimLongitude": "-79.948862",
|
|
244
|
+
"decimalLatitude": 40.446195,
|
|
245
|
+
"decimalLongitude": -79.948862
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"verbatimCoordinates": "40.123256; -74.123256",
|
|
249
|
+
"verbatimLatitude": "40.123256",
|
|
250
|
+
"verbatimLongitude": "-74.123256",
|
|
251
|
+
"decimalLatitude": 40.123256,
|
|
252
|
+
"decimalLongitude": -74.123256
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"verbatimCoordinates": "18.24S 22.45E",
|
|
256
|
+
"verbatimLatitude": "18.24S",
|
|
257
|
+
"verbatimLongitude": "22.45E",
|
|
258
|
+
"decimalLatitude": -18.4,
|
|
259
|
+
"decimalLongitude": 22.75
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"verbatimCoordinates": "27deg 15min 45.2sec S 18deg 32min 53.7sec E",
|
|
263
|
+
"verbatimLatitude": "27deg 15min 45.2sec S",
|
|
264
|
+
"verbatimLongitude": "18deg 32min 53.7sec E",
|
|
265
|
+
"decimalLatitude": -27.262555555555554,
|
|
266
|
+
"decimalLongitude": 18.54825
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"verbatimCoordinates": "-23.3245° S / 28.2344° E",
|
|
270
|
+
"verbatimLatitude": "-23.3245° S",
|
|
271
|
+
"verbatimLongitude": "28.2344° E",
|
|
272
|
+
"decimalLatitude": -23.3245,
|
|
273
|
+
"decimalLongitude": 28.2344
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"verbatimCoordinates": "40° 26.7717 -79° 56.93172",
|
|
277
|
+
"verbatimLatitude": "40° 26.7717",
|
|
278
|
+
"verbatimLongitude": "-79° 56.93172",
|
|
279
|
+
"decimalLatitude": 40.446195,
|
|
280
|
+
"decimalLongitude": -79.948862
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"verbatimCoordinates": "27.15.45S 18.32.53E",
|
|
284
|
+
"verbatimLatitude": "27.15.45S",
|
|
285
|
+
"verbatimLongitude": "18.32.53E",
|
|
286
|
+
"decimalLatitude": -27.2625,
|
|
287
|
+
"decimalLongitude": 18.548055
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"verbatimCoordinates": "S23.43563 ° E22.45634 °",
|
|
291
|
+
"verbatimLatitude": "S23.43563 °",
|
|
292
|
+
"verbatimLongitude": "E22.45634 °",
|
|
293
|
+
"decimalLatitude": -23.43563,
|
|
294
|
+
"decimalLongitude": 22.45634
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"verbatimCoordinates": "27,71372° S 23,07771° E",
|
|
298
|
+
"verbatimLatitude": "27,71372° S",
|
|
299
|
+
"verbatimLongitude": "23,07771° E",
|
|
300
|
+
"decimalLatitude": -27.71372,
|
|
301
|
+
"decimalLongitude": 23.07771
|
|
302
|
+
}
|
|
303
|
+
]
|
package/testIndividual.js
CHANGED
package/testformats.js
CHANGED
|
@@ -225,7 +225,14 @@ var coordsRegexFormats = [
|
|
|
225
225
|
verbatimLongitude: '-74.123256',
|
|
226
226
|
decimalLatitude: 40.123256,
|
|
227
227
|
decimalLongitude: -74.123256
|
|
228
|
-
}
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
verbatimCoordinates: '18°24S 22°45E', //this is read as degrees and minutes
|
|
231
|
+
verbatimLatitude: '18°24S',
|
|
232
|
+
verbatimLongitude: '22°45E',
|
|
233
|
+
decimalLatitude: -18.4,
|
|
234
|
+
decimalLongitude: 22.75
|
|
235
|
+
}
|
|
229
236
|
]
|
|
230
237
|
|
|
231
238
|
var otherFormats = [
|
|
@@ -266,6 +273,13 @@ var otherFormats = [
|
|
|
266
273
|
decimalLatitude: -27.2625,
|
|
267
274
|
decimalLongitude: 18.548055
|
|
268
275
|
},
|
|
276
|
+
{
|
|
277
|
+
verbatimCoordinates: 'S23.43563 ° E22.45634 °', //decimals with spaces before the symbol!!
|
|
278
|
+
verbatimLatitude: 'S23.43563 °',
|
|
279
|
+
verbatimLongitude: 'E22.45634 °',
|
|
280
|
+
decimalLatitude: -23.43563,
|
|
281
|
+
decimalLongitude: 22.45634
|
|
282
|
+
},
|
|
269
283
|
{
|
|
270
284
|
verbatimCoordinates: '27,71372° S 23,07771° E', //decimals with commas
|
|
271
285
|
verbatimLatitude: '27,71372° S',
|
|
@@ -275,24 +289,7 @@ var otherFormats = [
|
|
|
275
289
|
}
|
|
276
290
|
]
|
|
277
291
|
|
|
278
|
-
|
|
279
|
-
{
|
|
280
|
-
//issue https://github.com/ianengelbrecht/geo-coordinates-parser/issues/1
|
|
281
|
-
verbatimCoordinates: 'N 52d0m0s E 000d0m0s',
|
|
282
|
-
verbatimLatitude: 'N 52d0m0s',
|
|
283
|
-
verbatimLongitude: 'E 000d0m0s',
|
|
284
|
-
decimalLatitude: 52.00000,
|
|
285
|
-
decimalLongitude: 0.0000
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
// https://github.com/ianengelbrecht/geo-coordinates-parser/issues/1
|
|
289
|
-
verbatimCoordinates: 'N49 0.000 E02 33.314',
|
|
290
|
-
verbatimLatitude: 'N49 0.000',
|
|
291
|
-
verbatimLongitude: 'E02 33.314',
|
|
292
|
-
decimalLatitude: 49.00000,
|
|
293
|
-
decimalLongitude: 2.5552333333333333
|
|
294
|
-
}
|
|
295
|
-
]
|
|
292
|
+
|
|
296
293
|
|
|
297
294
|
function getAllTestFormats() {
|
|
298
295
|
var arr1 = []
|
|
@@ -305,7 +302,7 @@ function getAllTestFormats() {
|
|
|
305
302
|
}
|
|
306
303
|
})
|
|
307
304
|
|
|
308
|
-
return [...arr1, ...coordsRegexFormats, ...otherFormats
|
|
305
|
+
return [...arr1, ...coordsRegexFormats, ...otherFormats]
|
|
309
306
|
|
|
310
307
|
}
|
|
311
308
|
|