diff --git a/more-trip-generators/assets/About-f593afe9.js b/more-trip-generators/assets/About-9a75fa51.js similarity index 99% rename from more-trip-generators/assets/About-f593afe9.js rename to more-trip-generators/assets/About-9a75fa51.js index efea95380..05034f705 100644 --- a/more-trip-generators/assets/About-f593afe9.js +++ b/more-trip-generators/assets/About-9a75fa51.js @@ -1,4 +1,4 @@ -import{S as X,i as F,s as Y,H as Le,J as N,e as m,K as Ae,j as k,w as Q,L as je,M as Be,N as De,O as Ue,t as S,l as T,p as v,P as Se,Q as Re,V as Te,u as _,f as P,h,aR as K,k as o,U as We,x as Ie,W as qe,aK as Ee,v as Me,aL as Ge,R as He,b as Je,c as Ke,g as I,m as M,o as Oe,q as C,aV as W}from"./data_getter-0c8a0d3b.js";function Ve(n){let e,t,l,c;const g=n[2].default,s=Le(g,n,n[1],null);let i=[{type:"button"},{class:"govuk-button"},{"data-module":"govuk-button"},n[0]],u={};for(let a=0;a{t(0,e=N(N({},e),Se(s))),"$$scope"in s&&t(1,c=s.$$scope)},e=Se(e),[e,c,l,g]}class ut extends X{constructor(e){super(),F(this,e,ze,Ve,Y,{})}}function Ce(n,e,t){const l=n.slice();return l[8]=e[t][0],l[9]=e[t][1],l}function Pe(n){let e,t,l,c,g=!1,s,i,u=n[9]+"",a,d,r,w,G,R;return w=Ee(n[7][0]),{c(){e=m("div"),t=m("input"),s=P(),i=m("label"),a=_(u),r=P(),h(t,"class","govuk-radios__input"),h(t,"id",l=n[2]+n[8]),h(t,"type","radio"),t.__value=c=n[8],Me(t,t.__value),h(i,"class","govuk-label govuk-radios__label"),h(i,"for",d=n[2]+n[8]),h(e,"class","govuk-radios__item"),w.p(t)},m(b,$){k(b,e,$),o(e,t),t.checked=t.__value===n[0],o(e,s),o(e,i),o(i,a),o(e,r),G||(R=[Q(t,"change",n[6]),Q(t,"change",n[5])],G=!0)},p(b,$){$&12&&l!==(l=b[2]+b[8])&&h(t,"id",l),$&8&&c!==(c=b[8])&&(t.__value=c,Me(t,t.__value),g=!0),(g||$&9)&&(t.checked=t.__value===b[0]),$&8&&u!==(u=b[9]+"")&&We(a,u),$&12&&d!==(d=b[2]+b[8])&&h(i,"for",d)},d(b){b&&v(e),w.r(),G=!1,Ge(R)}}}function Ne(n){let e,t,l,c,g,s,i=Te(n[3]),u=[];for(let a=0;a{"legend"in r&&t(1,l=r.legend),"id"in r&&t(2,c=r.id),"choices"in r&&t(3,g=r.choices),"inlineSmall"in r&&t(4,s=r.inlineSmall),"value"in r&&t(0,i=r.value)},[i,l,c,g,s,a,d,u]}class rt extends X{constructor(e){super(),F(this,e,Qe,Ne,Y,{legend:1,id:2,choices:3,inlineSmall:4,value:0})}}function Xe(n){let e;return{c(){e=_("open source project")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function Fe(n){let e;return{c(){e=_(`Dustin Carlino +import{S as X,i as F,s as Y,H as Le,J as N,e as m,K as Ae,j as k,w as Q,L as je,M as Be,N as De,O as Ue,t as S,l as T,p as v,P as Se,Q as Re,V as Te,u as _,f as P,h,aR as K,k as o,U as We,x as Ie,W as qe,aK as Ee,v as Me,aL as Ge,R as He,b as Je,c as Ke,g as I,m as M,o as Oe,q as C,aV as W}from"./data_getter-7f8b97a7.js";function Ve(n){let e,t,l,c;const g=n[2].default,s=Le(g,n,n[1],null);let i=[{type:"button"},{class:"govuk-button"},{"data-module":"govuk-button"},n[0]],u={};for(let a=0;a{t(0,e=N(N({},e),Se(s))),"$$scope"in s&&t(1,c=s.$$scope)},e=Se(e),[e,c,l,g]}class ut extends X{constructor(e){super(),F(this,e,ze,Ve,Y,{})}}function Ce(n,e,t){const l=n.slice();return l[8]=e[t][0],l[9]=e[t][1],l}function Pe(n){let e,t,l,c,g=!1,s,i,u=n[9]+"",a,d,r,w,G,R;return w=Ee(n[7][0]),{c(){e=m("div"),t=m("input"),s=P(),i=m("label"),a=_(u),r=P(),h(t,"class","govuk-radios__input"),h(t,"id",l=n[2]+n[8]),h(t,"type","radio"),t.__value=c=n[8],Me(t,t.__value),h(i,"class","govuk-label govuk-radios__label"),h(i,"for",d=n[2]+n[8]),h(e,"class","govuk-radios__item"),w.p(t)},m(b,$){k(b,e,$),o(e,t),t.checked=t.__value===n[0],o(e,s),o(e,i),o(i,a),o(e,r),G||(R=[Q(t,"change",n[6]),Q(t,"change",n[5])],G=!0)},p(b,$){$&12&&l!==(l=b[2]+b[8])&&h(t,"id",l),$&8&&c!==(c=b[8])&&(t.__value=c,Me(t,t.__value),g=!0),(g||$&9)&&(t.checked=t.__value===b[0]),$&8&&u!==(u=b[9]+"")&&We(a,u),$&12&&d!==(d=b[2]+b[8])&&h(i,"for",d)},d(b){b&&v(e),w.r(),G=!1,Ge(R)}}}function Ne(n){let e,t,l,c,g,s,i=Te(n[3]),u=[];for(let a=0;a{"legend"in r&&t(1,l=r.legend),"id"in r&&t(2,c=r.id),"choices"in r&&t(3,g=r.choices),"inlineSmall"in r&&t(4,s=r.inlineSmall),"value"in r&&t(0,i=r.value)},[i,l,c,g,s,a,d,u]}class rt extends X{constructor(e){super(),F(this,e,Qe,Ne,Y,{legend:1,id:2,choices:3,inlineSmall:4,value:0})}}function Xe(n){let e;return{c(){e=_("open source project")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function Fe(n){let e;return{c(){e=_(`Dustin Carlino `)},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function Ye(n){let e;return{c(){e=_("Madison Wang")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function Ze(n){let e;return{c(){e=_("Ben Ritter")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function xe(n){let e;return{c(){e=_("OpenStreetMap")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function ye(n){let e;return{c(){e=_("MapLibre")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function et(n){let e;return{c(){e=_("GeoRust")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function tt(n){let e;return{c(){e=_(`osm2streets `)},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function nt(n){let e;return{c(){e=_(`Material icons `)},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function lt(n){let e;return{c(){e=_("start an issue on Github")},m(t,l){k(t,e,l)},d(t){t&&v(e)}}}function at(n){let e,t,l,c,g,s,i,u,a,d,r,w,G,R,b,$,Z,O,x,A,y,L,ee,j,te,B,ne,D,le,U,ae,se,q,oe,E,ie,H,ue,re,fe,ce,V,_e,z,J;return c=new W({props:{href:"https://github.com/acteng/atip",$$slots:{default:[Xe]},$$scope:{ctx:n}}}),a=new W({props:{href:"https://www.turing.ac.uk/people/researchers/dustin-carlino",$$slots:{default:[Fe]},$$scope:{ctx:n}}}),R=new W({props:{href:"https://www.linkedin.com/in/madison-wang-841977bb/",$$slots:{default:[Ye]},$$scope:{ctx:n}}}),$=new W({props:{href:"https://github.com/BudgieInWA",$$slots:{default:[Ze]},$$scope:{ctx:n}}}),L=new W({props:{href:"https://www.openstreetmap.org/about",$$slots:{default:[xe]},$$scope:{ctx:n}}}),j=new W({props:{href:"https://maplibre.org/",$$slots:{default:[ye]},$$scope:{ctx:n}}}),B=new W({props:{href:"https://georust.org/",$$slots:{default:[et]},$$scope:{ctx:n}}}),D=new W({props:{href:"https://github.com/a-b-street/osm2streets",$$slots:{default:[tt]},$$scope:{ctx:n}}}),U=new W({props:{href:"https://material.io/resources/icons/",$$slots:{default:[nt]},$$scope:{ctx:n}}}),E=new W({props:{href:"https://github.com/acteng/atip/issues/new",$$slots:{default:[lt]},$$scope:{ctx:n}}}),{c(){e=m("div"),t=m("p"),l=_(`ATIP v2 is an diff --git a/more-trip-generators/assets/data_getter-0c8a0d3b.js b/more-trip-generators/assets/data_getter-7f8b97a7.js similarity index 98% rename from more-trip-generators/assets/data_getter-0c8a0d3b.js rename to more-trip-generators/assets/data_getter-7f8b97a7.js index f37ca5592..423501fba 100644 --- a/more-trip-generators/assets/data_getter-0c8a0d3b.js +++ b/more-trip-generators/assets/data_getter-7f8b97a7.js @@ -1,7 +1,7 @@ -var Vf=Object.defineProperty;var Nf=(f,g,b)=>g in f?Vf(f,g,{enumerable:!0,configurable:!0,writable:!0,value:b}):f[g]=b;var Iu=(f,g,b)=>(Nf(f,typeof g!="symbol"?g+"":g,b),b);(function(){const g=document.createElement("link").relList;if(g&&g.supports&&g.supports("modulepreload"))return;for(const R of document.querySelectorAll('link[rel="modulepreload"]'))C(R);new MutationObserver(R=>{for(const F of R)if(F.type==="childList")for(const Z of F.addedNodes)Z.tagName==="LINK"&&Z.rel==="modulepreload"&&C(Z)}).observe(document,{childList:!0,subtree:!0});function b(R){const F={};return R.integrity&&(F.integrity=R.integrity),R.referrerPolicy&&(F.referrerPolicy=R.referrerPolicy),R.crossOrigin==="use-credentials"?F.credentials="include":R.crossOrigin==="anonymous"?F.credentials="omit":F.credentials="same-origin",F}function C(R){if(R.ep)return;R.ep=!0;const F=b(R);fetch(R.href,F)}})();function Gr(){}const $f=f=>f;function ic(f,g){for(const b in g)f[b]=g[b];return f}function Dd(f){return f()}function Sd(){return Object.create(null)}function ts(f){f.forEach(Dd)}function Lu(f){return typeof f=="function"}function is(f,g){return f!=f?g==g:f!==g||f&&typeof f=="object"||typeof f=="function"}let Ql;function Pg(f,g){return Ql||(Ql=document.createElement("a")),Ql.href=g,f===Ql.href}function qf(f){return Object.keys(f).length===0}function Bd(f,...g){if(f==null){for(const C of g)C(void 0);return Gr}const b=f.subscribe(...g);return b.unsubscribe?()=>b.unsubscribe():b}function zg(f){let g;return Bd(f,b=>g=b)(),g}function jf(f,g,b){f.$$.on_destroy.push(Bd(g,b))}function uc(f,g,b,C){if(f){const R=Rd(f,g,b,C);return f[0](R)}}function Rd(f,g,b,C){return f[1]&&C?ic(b.ctx.slice(),f[1](C(g))):b.ctx}function hc(f,g,b,C){if(f[2]&&C){const R=f[2](C(b));if(g.dirty===void 0)return R;if(typeof R=="object"){const F=[],Z=Math.max(g.dirty.length,R.length);for(let a=0;a32){const g=[],b=f.ctx.length/32;for(let C=0;Cwindow.performance.now():()=>Date.now(),Du=Fd?f=>requestAnimationFrame(f):Gr;const Do=new Set;function Od(f){Do.forEach(g=>{g.c(f)||(Do.delete(g),g.f())}),Do.size!==0&&Du(Od)}function Zf(f){let g;return Do.size===0&&Du(Od),{promise:new Promise(b=>{Do.add(g={c:f,f:b})}),abort(){Do.delete(g)}}}function fr(f,g){f.appendChild(g)}function Ud(f){if(!f)return document;const g=f.getRootNode?f.getRootNode():f.ownerDocument;return g&&g.host?g:f.ownerDocument}function Hf(f){const g=Ir("style");return g.textContent="/* empty */",Xf(Ud(f),g),g.sheet}function Xf(f,g){return fr(f.head||f,g),g.sheet}function ks(f,g,b){f.insertBefore(g,b||null)}function kn(f){f.parentNode&&f.parentNode.removeChild(f)}function Bg(f,g){for(let b=0;bf.removeEventListener(g,b,C)}function Wf(f){return function(g){return g.stopPropagation(),f.call(this,g)}}function Si(f,g,b){b==null?f.removeAttribute(g):f.getAttribute(g)!==b&&f.setAttribute(g,b)}const Kf=["width","height"];function Ad(f,g){const b=Object.getOwnPropertyDescriptors(f.__proto__);for(const C in g)g[C]==null?f.removeAttribute(C):C==="style"?f.style.cssText=g[C]:C==="__value"?f.value=f[C]=g[C]:b[C]&&b[C].set&&Kf.indexOf(C)===-1?f[C]=g[C]:Si(f,C,g[C])}function Og(f){let g;return{p(...b){g=b,g.forEach(C=>f.push(C))},r(){g.forEach(b=>f.splice(f.indexOf(b),1))}}}function Ug(f){return f===""?null:+f}function Yf(f){return Array.from(f.childNodes)}function Bu(f,g){g=""+g,f.data!==g&&(f.data=g)}function Vg(f,g){f.value=g??""}function Cd(f,g,b,C){b==null?f.style.removeProperty(g):f.style.setProperty(g,b,C?"important":"")}function Ng(f,g,b){for(let C=0;C>>0}function Qf(f,g){const b={stylesheet:Hf(g),rules:{}};return sc.set(f,b),b}function kd(f,g,b,C,R,F,Z,a=0){const W=16.666/C;let B=`{ +var Vf=Object.defineProperty;var Nf=(f,g,b)=>g in f?Vf(f,g,{enumerable:!0,configurable:!0,writable:!0,value:b}):f[g]=b;var Iu=(f,g,b)=>(Nf(f,typeof g!="symbol"?g+"":g,b),b);(function(){const g=document.createElement("link").relList;if(g&&g.supports&&g.supports("modulepreload"))return;for(const R of document.querySelectorAll('link[rel="modulepreload"]'))C(R);new MutationObserver(R=>{for(const F of R)if(F.type==="childList")for(const Z of F.addedNodes)Z.tagName==="LINK"&&Z.rel==="modulepreload"&&C(Z)}).observe(document,{childList:!0,subtree:!0});function b(R){const F={};return R.integrity&&(F.integrity=R.integrity),R.referrerPolicy&&(F.referrerPolicy=R.referrerPolicy),R.crossOrigin==="use-credentials"?F.credentials="include":R.crossOrigin==="anonymous"?F.credentials="omit":F.credentials="same-origin",F}function C(R){if(R.ep)return;R.ep=!0;const F=b(R);fetch(R.href,F)}})();function Gr(){}const $f=f=>f;function ic(f,g){for(const b in g)f[b]=g[b];return f}function Dd(f){return f()}function Sd(){return Object.create(null)}function ts(f){f.forEach(Dd)}function Lu(f){return typeof f=="function"}function is(f,g){return f!=f?g==g:f!==g||f&&typeof f=="object"||typeof f=="function"}let Ql;function Mg(f,g){return Ql||(Ql=document.createElement("a")),Ql.href=g,f===Ql.href}function qf(f){return Object.keys(f).length===0}function Bd(f,...g){if(f==null){for(const C of g)C(void 0);return Gr}const b=f.subscribe(...g);return b.unsubscribe?()=>b.unsubscribe():b}function Pg(f){let g;return Bd(f,b=>g=b)(),g}function jf(f,g,b){f.$$.on_destroy.push(Bd(g,b))}function uc(f,g,b,C){if(f){const R=Rd(f,g,b,C);return f[0](R)}}function Rd(f,g,b,C){return f[1]&&C?ic(b.ctx.slice(),f[1](C(g))):b.ctx}function hc(f,g,b,C){if(f[2]&&C){const R=f[2](C(b));if(g.dirty===void 0)return R;if(typeof R=="object"){const F=[],Z=Math.max(g.dirty.length,R.length);for(let a=0;a32){const g=[],b=f.ctx.length/32;for(let C=0;Cwindow.performance.now():()=>Date.now(),Du=Fd?f=>requestAnimationFrame(f):Gr;const Do=new Set;function Od(f){Do.forEach(g=>{g.c(f)||(Do.delete(g),g.f())}),Do.size!==0&&Du(Od)}function Zf(f){let g;return Do.size===0&&Du(Od),{promise:new Promise(b=>{Do.add(g={c:f,f:b})}),abort(){Do.delete(g)}}}function fr(f,g){f.appendChild(g)}function Ud(f){if(!f)return document;const g=f.getRootNode?f.getRootNode():f.ownerDocument;return g&&g.host?g:f.ownerDocument}function Hf(f){const g=Ir("style");return g.textContent="/* empty */",Xf(Ud(f),g),g.sheet}function Xf(f,g){return fr(f.head||f,g),g.sheet}function ks(f,g,b){f.insertBefore(g,b||null)}function kn(f){f.parentNode&&f.parentNode.removeChild(f)}function Dg(f,g){for(let b=0;bf.removeEventListener(g,b,C)}function Wf(f){return function(g){return g.stopPropagation(),f.call(this,g)}}function Si(f,g,b){b==null?f.removeAttribute(g):f.getAttribute(g)!==b&&f.setAttribute(g,b)}const Kf=["width","height"];function Ad(f,g){const b=Object.getOwnPropertyDescriptors(f.__proto__);for(const C in g)g[C]==null?f.removeAttribute(C):C==="style"?f.style.cssText=g[C]:C==="__value"?f.value=f[C]=g[C]:b[C]&&b[C].set&&Kf.indexOf(C)===-1?f[C]=g[C]:Si(f,C,g[C])}function Fg(f){let g;return{p(...b){g=b,g.forEach(C=>f.push(C))},r(){g.forEach(b=>f.splice(f.indexOf(b),1))}}}function Og(f){return f===""?null:+f}function Yf(f){return Array.from(f.childNodes)}function Bu(f,g){g=""+g,f.data!==g&&(f.data=g)}function Ug(f,g){f.value=g??""}function Cd(f,g,b,C){b==null?f.style.removeProperty(g):f.style.setProperty(g,b,C?"important":"")}function Vg(f,g,b){for(let C=0;C>>0}function Qf(f,g){const b={stylesheet:Hf(g),rules:{}};return sc.set(f,b),b}function kd(f,g,b,C,R,F,Z,a=0){const W=16.666/C;let B=`{ `;for(let qe=0;qe<=1;qe+=W){const Ae=g+(b-g)*F(qe);B+=qe*100+`%{${Z(Ae,1-Ae)}} `}const he=B+`100% {${Z(b,1-b)}} -}`,se=`__svelte_${Jf(he)}_${a}`,ke=Ud(f),{stylesheet:Pe,rules:fe}=sc.get(ke)||Qf(ke,f);fe[se]||(fe[se]=!0,Pe.insertRule(`@keyframes ${se} ${he}`,Pe.cssRules.length));const Le=f.style.animation||"";return f.style.animation=`${Le?`${Le}, `:""}${se} ${C}ms linear ${R}ms 1 both`,oc+=1,se}function em(f,g){const b=(f.style.animation||"").split(", "),C=b.filter(g?F=>F.indexOf(g)<0:F=>F.indexOf("__svelte")===-1),R=b.length-C.length;R&&(f.style.animation=C.join(", "),oc-=R,oc||tm())}function tm(){Du(()=>{oc||(sc.forEach(f=>{const{ownerNode:g}=f.stylesheet;g&&kn(g)}),sc.clear())})}let Ga;function ja(f){Ga=f}function Za(){if(!Ga)throw new Error("Function called outside component initialization");return Ga}function im(f){Za().$$.on_mount.push(f)}function rm(f){Za().$$.on_destroy.push(f)}function nm(){const f=Za();return(g,b,{cancelable:C=!1}={})=>{const R=f.$$.callbacks[g];if(R){const F=Vd(g,b,{cancelable:C});return R.slice().forEach(Z=>{Z.call(f,F)}),!F.defaultPrevented}return!0}}function qg(f,g){return Za().$$.context.set(f,g),g}function jg(f){return Za().$$.context.get(f)}function sm(f,g){const b=f.$$.callbacks[g.type];b&&b.slice().forEach(C=>C.call(this,g))}const Lo=[],ku=[];let Bo=[];const Mu=[],om=Promise.resolve();let Pu=!1;function am(){Pu||(Pu=!0,om.then(Nd))}function ac(f){Bo.push(f)}function Gg(f){Mu.push(f)}const Au=new Set;let Po=0;function Nd(){if(Po!==0)return;const f=Ga;do{try{for(;Pof.indexOf(C)===-1?g.push(C):b.push(C)),b.forEach(C=>C()),Bo=g}let qa;function um(){return qa||(qa=Promise.resolve(),qa.then(()=>{qa=null})),qa}function Cu(f,g,b){f.dispatchEvent(Vd(`${g?"intro":"outro"}${b}`))}const tc=new Set;let In;function hm(){In={r:0,c:[],p:In}}function dm(){In.r||ts(In.c),In=In.p}function jr(f,g){f&&f.i&&(tc.delete(f),f.i(g))}function Cn(f,g,b,C){if(f&&f.o){if(tc.has(f))return;tc.add(f),In.c.push(()=>{tc.delete(f),C&&(b&&f.d(1),C())}),f.o(g)}else C&&C()}const pm={duration:0};function Zg(f,g,b,C){let F=g(f,b,{direction:"both"}),Z=C?0:1,a=null,W=null,B=null,he;function se(){B&&em(f,B)}function ke(fe,Le){const qe=fe.b-Z;return Le*=Math.abs(qe),{a:Z,b:fe.b,d:qe,duration:Le,start:fe.start,end:fe.start+Le,group:fe.group}}function Pe(fe){const{delay:Le=0,duration:qe=300,easing:Ae=$f,tick:Je=Gr,css:Ge}=F||pm,pt={start:Gf()+Le,b:fe};fe||(pt.group=In,In.r+=1),"inert"in f&&(fe?he!==void 0&&(f.inert=he):(he=f.inert,f.inert=!0)),a||W?W=pt:(Ge&&(se(),B=kd(f,Z,fe,qe,Le,Ae,Ge)),fe&&Je(0,1),a=ke(pt,qe),ac(()=>Cu(f,fe,"start")),Zf(Pt=>{if(W&&Pt>W.start&&(a=ke(W,qe),W=null,Cu(f,a.b,"start"),Ge&&(se(),B=kd(f,Z,a.b,a.duration,0,Ae,F.css))),a){if(Pt>=a.end)Je(Z=a.b,1-Z),Cu(f,a.b,"end"),W||(a.b?se():--a.group.r||ts(a.group.c)),a=null;else if(Pt>=a.start){const ri=Pt-a.start;Z=a.a+a.d*Ae(ri/a.duration),Je(Z,1-Z)}}return!!(a||W)}))}return{run(fe){Lu(F)?um().then(()=>{F=F({direction:fe?"in":"out"}),Pe(fe)}):Pe(fe)},end(){se(),a=W=null}}}function Hg(f){return(f==null?void 0:f.length)!==void 0?f:Array.from(f)}function Xg(f,g){Cn(f,1,1,()=>{g.delete(f.key)})}function Wg(f,g,b,C,R,F,Z,a,W,B,he,se){let ke=f.length,Pe=F.length,fe=ke;const Le={};for(;fe--;)Le[f[fe].key]=fe;const qe=[],Ae=new Map,Je=new Map,Ge=[];for(fe=Pe;fe--;){const At=se(R,F,fe),Ct=b(At);let qt=Z.get(Ct);qt?C&&Ge.push(()=>qt.p(At,g)):(qt=B(Ct,At),qt.c()),Ae.set(Ct,qe[fe]=qt),Ct in Le&&Je.set(Ct,Math.abs(fe-Le[Ct]))}const pt=new Set,Pt=new Set;function ri(At){jr(At,1),At.m(a,he),Z.set(At.key,At),he=At.first,Pe--}for(;ke&&Pe;){const At=qe[Pe-1],Ct=f[ke-1],qt=At.key,Dt=Ct.key;At===Ct?(he=At.first,ke--,Pe--):Ae.has(Dt)?!Z.has(qt)||pt.has(qt)?ri(At):Pt.has(Dt)?ke--:Je.get(qt)>Je.get(Dt)?(Pt.add(qt),ri(At)):(pt.add(Dt),ke--):(W(Ct,Z),ke--)}for(;ke--;){const At=f[ke];Ae.has(At.key)||W(At,Z)}for(;Pe;)ri(qe[Pe-1]);return ts(Ge),qe}function fm(f,g){const b={},C={},R={$$scope:1};let F=f.length;for(;F--;){const Z=f[F],a=g[F];if(a){for(const W in Z)W in a||(C[W]=1);for(const W in a)R[W]||(b[W]=a[W],R[W]=1);f[F]=a}else for(const W in Z)R[W]=1}for(const Z in C)Z in b||(b[Z]=void 0);return b}function Kg(f,g,b){const C=f.$$.props[g];C!==void 0&&(f.$$.bound[C]=b,b(f.$$.ctx[C]))}function $d(f){f&&f.c()}function Ru(f,g,b){const{fragment:C,after_update:R}=f.$$;C&&C.m(g,b),ac(()=>{const F=f.$$.on_mount.map(Dd).filter(Lu);f.$$.on_destroy?f.$$.on_destroy.push(...F):ts(F),f.$$.on_mount=[]}),R.forEach(ac)}function Fu(f,g){const b=f.$$;b.fragment!==null&&(cm(b.after_update),ts(b.on_destroy),b.fragment&&b.fragment.d(g),b.on_destroy=b.fragment=null,b.ctx=[])}function mm(f,g){f.$$.dirty[0]===-1&&(Lo.push(f),am(),f.$$.dirty.fill(0)),f.$$.dirty[g/31|0]|=1<{const fe=Pe.length?Pe[0]:ke;return B.ctx&&R(B.ctx[se],B.ctx[se]=fe)&&(!B.skip_bound&&B.bound[se]&&B.bound[se](fe),he&&mm(f,se)),ke}):[],B.update(),he=!0,ts(B.before_update),B.fragment=C?C(B.ctx):!1,g.target){if(g.hydrate){const se=Yf(g.target);B.fragment&&B.fragment.l(se),se.forEach(kn)}else B.fragment&&B.fragment.c();g.intro&&jr(f.$$.fragment),Ru(f,g.target,g.anchor),Nd()}ja(W)}class Ps{constructor(){Iu(this,"$$");Iu(this,"$$set")}$destroy(){Fu(this,1),this.$destroy=Gr}$on(g,b){if(!Lu(b))return Gr;const C=this.$$.callbacks[g]||(this.$$.callbacks[g]=[]);return C.push(b),()=>{const R=C.indexOf(b);R!==-1&&C.splice(R,1)}}$set(g){this.$$set&&!qf(g)&&(this.$$.skip_bound=!0,this.$$set(g),this.$$.skip_bound=!1)}}const gm="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(gm);function Wt(f,g){if(window.NodeList.prototype.forEach)return f.forEach(g);for(var b=0;b1&&R.shift();var F=R.join(".");b[F]=f[C]}}return b}(function(f){var g="defineProperty"in Object&&function(){try{var b={};return Object.defineProperty(b,"test",{value:42}),!0}catch{return!1}}();g||function(b){var C=Object.prototype.hasOwnProperty("__defineGetter__"),R="Getters & setters cannot be defined on this javascript engine",F="A property cannot both have accessors and be writable or have a value";Object.defineProperty=function(a,W,B){if(b&&(a===window||a===document||a===Element.prototype||a instanceof Element))return b(a,W,B);if(a===null||!(a instanceof Object||typeof a=="object"))throw new TypeError("Object.defineProperty called on non-object");if(!(B instanceof Object))throw new TypeError("Property description must be an object");var he=String(W),se="value"in B||"writable"in B,ke="get"in B&&typeof B.get,Pe="set"in B&&typeof B.set;if(ke){if(ke!=="function")throw new TypeError("Getter must be a function");if(!C)throw new TypeError(R);if(se)throw new TypeError(F);Object.__defineGetter__.call(a,he,B.get)}else a[he]=B.value;if(Pe){if(Pe!=="function")throw new TypeError("Setter must be a function");if(!C)throw new TypeError(R);if(se)throw new TypeError(F);Object.__defineSetter__.call(a,he,B.set)}return"value"in B&&(a[he]=B.value),a}}(Object.defineProperty)}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="Document"in this;g||typeof WorkerGlobalScope>"u"&&typeof importScripts!="function"&&(this.HTMLDocument?this.Document=this.HTMLDocument:(this.Document=this.HTMLDocument=document.constructor=new Function("return function Document() {}")(),this.Document.prototype=document))}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="Element"in this&&"HTMLElement"in this;g||function(){if(window.Element&&!window.HTMLElement){window.HTMLElement=window.Element;return}window.Element=window.HTMLElement=new Function("return function Element() {}")();var b=document.appendChild(document.createElement("body")),C=b.appendChild(document.createElement("iframe")),R=C.contentWindow.document,F=Element.prototype=R.appendChild(R.createElement("*")),Z={},a=function(Pe,fe){var Le=Pe.childNodes||[],qe=-1,Ae,Je,Ge;if(Pe.nodeType===1&&Pe.constructor!==Element){Pe.constructor=Element;for(Ae in Z)Je=Z[Ae],Pe[Ae]=Je}for(;Ge=fe&&Le[++qe];)a(Ge,fe);return Pe},W=document.getElementsByTagName("*"),B=document.createElement,he,se=100;F.attachEvent("onpropertychange",function(Pe){for(var fe=Pe.propertyName,Le=!Z.hasOwnProperty(fe),qe=F[fe],Ae=Z[fe],Je=-1,Ge;Ge=W[++Je];)Ge.nodeType===1&&(Le||Ge[fe]===Ae)&&(Ge[fe]=qe);Z[fe]=qe}),F.constructor=Element,F.hasAttribute||(F.hasAttribute=function(fe){return this.getAttribute(fe)!==null});function ke(){return se--||clearTimeout(he),document.body&&!document.body.prototype&&/(complete|interactive)/.test(document.readyState)?(a(document,!0),he&&document.body.prototype&&clearTimeout(he),!!document.body.prototype):!1}ke()||(document.onreadystatechange=ke,he=setInterval(ke,25)),document.createElement=function(fe){var Le=B(String(fe).toLowerCase());return a(Le)},document.removeChild(b)}()}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g=function(){if(!document.documentElement.dataset)return!1;var b=document.createElement("div");return b.setAttribute("data-a-b","c"),b.dataset&&b.dataset.aB=="c"}();g||Object.defineProperty(Element.prototype,"dataset",{get:function(){for(var b=this,C=this.attributes,R={},F=0;F0&&isFinite(Number(g))?Number(g):f}function Oo(f){var g={};for(var b in f)g[b]=ym(f[b]);return g}function Oi(f,g){this.translations=f||{},this.locale=g&&g.locale||document.documentElement.lang||"en"}Oi.prototype.t=function(f,g){if(!f)throw new Error("i18n: lookup key missing");g&&typeof g.count=="number"&&(f=f+"."+this.getPluralSuffix(f,g.count));var b=this.translations[f];if(typeof b=="string")if(b.match(/%{(.\S+)}/)){if(!g)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(b,g)}else return b;else return f};Oi.prototype.replacePlaceholders=function(f,g){var b;return this.hasIntlNumberFormatSupport()&&(b=new Intl.NumberFormat(this.locale)),f.replace(/%{(.\S+)}/g,function(C,R){if(Object.prototype.hasOwnProperty.call(g,R)){var F=g[R];return F===!1||typeof F!="number"&&typeof F!="string"?"":typeof F=="number"?b?b.format(F):F.toString():F}else throw new Error("i18n: no data found to replace "+C+" placeholder in string")})};Oi.prototype.hasIntlPluralRulesSupport=function(){return!!(window.Intl&&"PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)};Oi.prototype.hasIntlNumberFormatSupport=function(){return!!(window.Intl&&"NumberFormat"in window.Intl&&Intl.NumberFormat.supportedLocalesOf(this.locale).length)};Oi.prototype.getPluralSuffix=function(f,g){if(g=Number(g),!isFinite(g))return"other";var b;if(this.hasIntlPluralRulesSupport()?b=new Intl.PluralRules(this.locale).select(g):b=this.selectPluralFormUsingFallbackRules(g),f+"."+b in this.translations)return b;if(f+".other"in this.translations)return console&&"warn"in console&&console.warn('i18n: Missing plural form ".'+b+'" for "'+this.locale+'" locale. Falling back to ".other".'),"other";throw new Error('i18n: Plural form ".other" is required for "'+this.locale+'" locale')};Oi.prototype.selectPluralFormUsingFallbackRules=function(f){f=Math.abs(Math.floor(f));var g=this.getPluralRulesForLocale();return g?Oi.pluralRules[g](f):"other"};Oi.prototype.getPluralRulesForLocale=function(){var f=this.locale,g=f.split("-")[0];for(var b in Oi.pluralRulesMap)if(Object.prototype.hasOwnProperty.call(Oi.pluralRulesMap,b)){for(var C=Oi.pluralRulesMap[b],R=0;R=3&&f%100<=10?"few":f%100>=11&&f%100<=99?"many":"other"},chinese:function(){return"other"},french:function(f){return f===0||f===1?"one":"other"},german:function(f){return f===1?"one":"other"},irish:function(f){return f===1?"one":f===2?"two":f>=3&&f<=6?"few":f>=7&&f<=10?"many":"other"},russian:function(f){var g=f%100,b=g%10;return b===1&&g!==11?"one":b>=2&&b<=4&&!(g>=12&&g<=14)?"few":b===0||b>=5&&b<=9||g>=11&&g<=14?"many":"other"},scottish:function(f){return f===1||f===11?"one":f===2||f===12?"two":f>=3&&f<=10||f>=13&&f<=19?"few":"other"},spanish:function(f){return f===1?"one":f%1e6===0&&f!==0?"many":"other"},welsh:function(f){return f===0?"zero":f===1?"one":f===2?"two":f===3?"few":f===6?"many":"other"}};(function(f){var g="DOMTokenList"in this&&function(b){return"classList"in b?!b.classList.toggle("x",!1)&&!b.className:!0}(document.createElement("x"));g||function(b){var C="DOMTokenList"in b&&b.DOMTokenList;(!C||document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg")&&!(document.createElementNS("http://www.w3.org/2000/svg","svg").classList instanceof DOMTokenList))&&(b.DOMTokenList=function(){var R=!0,F=function(a,W,B,he){Object.defineProperty?Object.defineProperty(a,W,{configurable:R===!1?!0:!!he,get:B}):a.__defineGetter__(W,B)};try{F({},"support")}catch{R=!1}var Z=function(a,W){var B=this,he=[],se={},ke=0,Pe=0,fe=function(Ae){F(B,Ae,function(){return qe(),he[Ae]},!1)},Le=function(){if(ke>=Pe)for(;Pe>>0,typeof a[W]=="object"?a[W].baseVal=he.join(" "):a[W]=he.join(" "),Le())},B.remove=function(){qe.apply(B,Ae=arguments);for(var Ae,Je={},Ge=0,pt=[];Ge>>0,typeof a[W]=="object"?a[W].baseVal=he.join(" "):a[W]=he.join(" "),Le()},B.toggle=function(Ae,Je){return qe.apply(B,[Ae]),f!==Je?Je?(B.add(Ae),!0):(B.remove(Ae),!1):se[Ae]?(B.remove(Ae),!1):(B.add(Ae),!0)},B};return Z}()),function(){var R=document.createElement("span");"classList"in R&&(R.classList.toggle("x",!1),R.classList.contains("x")&&(R.classList.constructor.prototype.toggle=function(Z){var a=arguments[1];if(a===f){var W=!this.contains(Z);return this[W?"add":"remove"](Z),W}return a=!!a,this[a?"add":"remove"](Z),a}))}(),function(){var R=document.createElement("span");if("classList"in R&&(R.classList.add("a","b"),!R.classList.contains("b"))){var F=R.classList.constructor.prototype.add;R.classList.constructor.prototype.add=function(){for(var Z=arguments,a=arguments.length,W=0;W"u"&&typeof importScripts!="function"&&function(b){b.constructor?b.Window=b.constructor:(b.Window=b.constructor=new Function("return function Window() {}")()).prototype=this}(this)}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g=function(b){if(!("Event"in b))return!1;if(typeof b.Event=="function")return!0;try{return new Event("click"),!0}catch{return!1}}(this);g||function(){var b={click:1,dblclick:1,keyup:1,keypress:1,keydown:1,mousedown:1,mouseup:1,mousemove:1,mouseover:1,mouseenter:1,mouseleave:1,mouseout:1,storage:1,storagecommit:1,textinput:1};if(typeof document>"u"||typeof window>"u")return;function C(F,Z){for(var a=-1,W=F.length;++a=this.lastInputTimestamp)&&this.updateIfValueChanged()}.bind(this),1e3)};sr.prototype.handleBlur=function(){clearInterval(this.valueChecker)};sr.prototype.updateIfValueChanged=function(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())};sr.prototype.updateCountMessage=function(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()};sr.prototype.updateVisibleCountMessage=function(){var f=this.$textarea,g=this.$visibleCountMessage,b=this.maxLength-this.count(f.value);this.isOverThreshold()?g.classList.remove("govuk-character-count__message--disabled"):g.classList.add("govuk-character-count__message--disabled"),b<0?(f.classList.add("govuk-textarea--error"),g.classList.remove("govuk-hint"),g.classList.add("govuk-error-message")):(f.classList.remove("govuk-textarea--error"),g.classList.remove("govuk-error-message"),g.classList.add("govuk-hint")),g.innerText=this.getCountMessage()};sr.prototype.updateScreenReaderCountMessage=function(){var f=this.$screenReaderCountMessage;this.isOverThreshold()?f.removeAttribute("aria-hidden"):f.setAttribute("aria-hidden","true"),f.innerText=this.getCountMessage()};sr.prototype.count=function(f){if("maxwords"in this.config&&this.config.maxwords){var g=f.match(/\S+/g)||[];return g.length}else return f.length};sr.prototype.getCountMessage=function(){var f=this.maxLength-this.count(this.$textarea.value),g="maxwords"in this.config&&this.config.maxwords?"words":"characters";return this.formatCountMessage(f,g)};sr.prototype.formatCountMessage=function(f,g){if(f===0)return this.i18n.t(g+"AtLimit");var b=f<0?"OverLimit":"UnderLimit";return this.i18n.t(g+b,{count:Math.abs(f)})};sr.prototype.isOverThreshold=function(){if(!this.config.threshold)return!0;var f=this.$textarea,g=this.count(f.value),b=this.maxLength,C=b*this.config.threshold/100;return C<=g};function zs(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll('input[type="checkbox"]');if(!g.length)return this;this.$module=f,this.$inputs=g}zs.prototype.init=function(){if(!(!this.$module||!this.$inputs)){var f=this.$module,g=this.$inputs;Wt(g,function(b){var C=b.getAttribute("data-aria-controls");!C||!document.getElementById(C)||(b.setAttribute("aria-controls",C),b.removeAttribute("data-aria-controls"))}),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.syncAllConditionalReveals.bind(this)),this.syncAllConditionalReveals(),f.addEventListener("click",this.handleClick.bind(this))}};zs.prototype.syncAllConditionalReveals=function(){Wt(this.$inputs,this.syncConditionalRevealWithInputState.bind(this))};zs.prototype.syncConditionalRevealWithInputState=function(f){var g=f.getAttribute("aria-controls");if(g){var b=document.getElementById(g);if(b&&b.classList.contains("govuk-checkboxes__conditional")){var C=f.checked;f.setAttribute("aria-expanded",C.toString()),b.classList.toggle("govuk-checkboxes__conditional--hidden",!C)}}};zs.prototype.unCheckAllInputsExcept=function(f){var g=this,b=document.querySelectorAll('input[type="checkbox"][name="'+f.name+'"]');Wt(b,function(C){var R=f.form===C.form;R&&C!==f&&(C.checked=!1,g.syncConditionalRevealWithInputState(C))})};zs.prototype.unCheckExclusiveInputs=function(f){var g=this,b=document.querySelectorAll('input[data-behaviour="exclusive"][type="checkbox"][name="'+f.name+'"]');Wt(b,function(C){var R=f.form===C.form;R&&(C.checked=!1,g.syncConditionalRevealWithInputState(C))})};zs.prototype.handleClick=function(f){var g=f.target;if(!(!(g instanceof HTMLInputElement)||g.type!=="checkbox")){var b=g.getAttribute("aria-controls");if(b&&this.syncConditionalRevealWithInputState(g),!!g.checked){var C=g.getAttribute("data-behaviour")==="exclusive";C?this.unCheckAllInputsExcept(g):this.unCheckExclusiveInputs(g)}}};var Sm=13,Md=32;function Ha(f){if(!(f instanceof HTMLElement))return this;this.$module=f,this.$summary=null,this.$content=null}Ha.prototype.init=function(){if(this.$module){var f="HTMLDetailsElement"in window&&this.$module instanceof HTMLDetailsElement;f||this.polyfillDetails()}};Ha.prototype.polyfillDetails=function(){var f=this.$module,g=this.$summary=f.getElementsByTagName("summary").item(0),b=this.$content=f.getElementsByTagName("div").item(0);!g||!b||(b.id||(b.id="details-content-"+_m()),f.setAttribute("role","group"),g.setAttribute("role","button"),g.setAttribute("aria-controls",b.id),g.tabIndex=0,this.$module.hasAttribute("open")?g.setAttribute("aria-expanded","true"):(g.setAttribute("aria-expanded","false"),b.style.display="none"),this.polyfillHandleInputs(this.polyfillSetAttributes.bind(this)))};Ha.prototype.polyfillSetAttributes=function(){return this.$module.hasAttribute("open")?(this.$module.removeAttribute("open"),this.$summary.setAttribute("aria-expanded","false"),this.$content.style.display="none"):(this.$module.setAttribute("open","open"),this.$summary.setAttribute("aria-expanded","true"),this.$content.style.display=""),!0};Ha.prototype.polyfillHandleInputs=function(f){this.$summary.addEventListener("keypress",function(g){var b=g.target;(g.keyCode===Sm||g.keyCode===Md)&&b instanceof HTMLElement&&b.nodeName.toLowerCase()==="summary"&&(g.preventDefault(),b.click?b.click():f(g))}),this.$summary.addEventListener("keyup",function(g){var b=g.target;g.keyCode===Md&&b instanceof HTMLElement&&b.nodeName.toLowerCase()==="summary"&&g.preventDefault()}),this.$summary.addEventListener("click",f)};function Ls(f,g){if(!(f instanceof HTMLElement))return this;this.$module=f;var b={disableAutoFocus:!1};this.config=Fo(b,g||{},Oo(f.dataset))}Ls.prototype.init=function(){if(this.$module){var f=this.$module;this.setFocus(),f.addEventListener("click",this.handleClick.bind(this))}};Ls.prototype.setFocus=function(){var f=this.$module;this.config.disableAutoFocus||(f.setAttribute("tabindex","-1"),f.addEventListener("blur",function(){f.removeAttribute("tabindex")}),f.focus())};Ls.prototype.handleClick=function(f){var g=f.target;this.focusTarget(g)&&f.preventDefault()};Ls.prototype.focusTarget=function(f){if(!(f instanceof HTMLAnchorElement))return!1;var g=this.getFragmentFromUrl(f.href);if(!g)return!1;var b=document.getElementById(g);if(!b)return!1;var C=this.getAssociatedLegendOrLabel(b);return C?(C.scrollIntoView(),b.focus({preventScroll:!0}),!0):!1};Ls.prototype.getFragmentFromUrl=function(f){if(f.indexOf("#")!==-1)return f.split("#").pop()};Ls.prototype.getAssociatedLegendOrLabel=function(f){var g=f.closest("fieldset");if(g){var b=g.getElementsByTagName("legend");if(b.length){var C=b[0];if(f instanceof HTMLInputElement&&(f.type==="checkbox"||f.type==="radio"))return C;var R=C.getBoundingClientRect().top,F=f.getBoundingClientRect();if(F.height&&window.innerHeight){var Z=F.top+F.height;if(Z-R0?this.$indicatorContainer.classList.add("govuk-exit-this-page__indicator--visible"):this.$indicatorContainer.classList.remove("govuk-exit-this-page__indicator--visible");var f=this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light");Wt(f,function(g,b){g.classList.toggle("govuk-exit-this-page__indicator-light--on",b=3?(this.keypressCounter=0,this.keypressTimeoutId!==null&&(clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null),this.exitPage()):this.keypressCounter===1?this.$updateSpan.innerText=this.i18n.t("pressTwoMoreTimes"):this.$updateSpan.innerText=this.i18n.t("pressOneMoreTime"),this.setKeypressTimer()):this.keypressTimeoutId!==null&&this.resetKeypressTimer(),this.lastKeyWasModified=f.shiftKey};Ar.prototype.setKeypressTimer=function(){clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=setTimeout(this.resetKeypressTimer.bind(this),this.timeoutTime)};Ar.prototype.resetKeypressTimer=function(){clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null,this.keypressCounter=0,this.$updateSpan.innerText=this.i18n.t("timedOut"),this.timeoutMessageId=setTimeout(function(){this.$updateSpan.innerText=""}.bind(this),this.timeoutTime),this.updateIndicator()};Ar.prototype.resetPage=function(){document.body.classList.remove("govuk-exit-this-page-hide-content"),this.$overlay&&(this.$overlay.remove(),this.$overlay=null),this.$updateSpan.setAttribute("role","status"),this.$updateSpan.innerText="",this.updateIndicator(),this.keypressTimeoutId&&clearTimeout(this.keypressTimeoutId),this.timeoutMessageId&&clearTimeout(this.timeoutMessageId)};Ar.prototype.init=function(){this.buildIndicator(),this.initUpdateSpan(),this.initButtonClickHandler(),"govukFrontendExitThisPageKeypress"in document.body.dataset||(document.addEventListener("keyup",this.handleKeypress.bind(this),!0),document.body.dataset.govukFrontendExitThisPageKeypress="true"),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.resetPage.bind(this))};function mc(f){if(!(f instanceof HTMLElement))return this;this.$module=f,this.$menuButton=f.querySelector(".govuk-js-header-toggle"),this.$menu=this.$menuButton&&f.querySelector("#"+this.$menuButton.getAttribute("aria-controls")),this.menuIsOpen=!1,this.mql=null}mc.prototype.init=function(){!this.$module||!this.$menuButton||!this.$menu||("matchMedia"in window?(this.mql=window.matchMedia("(min-width: 48.0625em)"),"addEventListener"in this.mql?this.mql.addEventListener("change",this.syncState.bind(this)):this.mql.addListener(this.syncState.bind(this)),this.syncState(),this.$menuButton.addEventListener("click",this.handleMenuButtonClick.bind(this))):this.$menuButton.setAttribute("hidden",""))};mc.prototype.syncState=function(){this.mql.matches?(this.$menu.removeAttribute("hidden"),this.$menuButton.setAttribute("hidden","")):(this.$menuButton.removeAttribute("hidden"),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden",""))};mc.prototype.handleMenuButtonClick=function(){this.menuIsOpen=!this.menuIsOpen,this.syncState()};function Uu(f,g){if(!(f instanceof HTMLElement))return this;this.$module=f;var b={disableAutoFocus:!1};this.config=Fo(b,g||{},Oo(f.dataset))}Uu.prototype.init=function(){this.$module&&this.setFocus()};Uu.prototype.setFocus=function(){var f=this.$module;this.config.disableAutoFocus||f.getAttribute("role")==="alert"&&(f.getAttribute("tabindex")||(f.setAttribute("tabindex","-1"),f.addEventListener("blur",function(){f.removeAttribute("tabindex")})),f.focus())};function Xa(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll('input[type="radio"]');if(!g.length)return this;this.$module=f,this.$inputs=g}Xa.prototype.init=function(){if(!(!this.$module||!this.$inputs)){var f=this.$module,g=this.$inputs;Wt(g,function(b){var C=b.getAttribute("data-aria-controls");!C||!document.getElementById(C)||(b.setAttribute("aria-controls",C),b.removeAttribute("data-aria-controls"))}),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.syncAllConditionalReveals.bind(this)),this.syncAllConditionalReveals(),f.addEventListener("click",this.handleClick.bind(this))}};Xa.prototype.syncAllConditionalReveals=function(){Wt(this.$inputs,this.syncConditionalRevealWithInputState.bind(this))};Xa.prototype.syncConditionalRevealWithInputState=function(f){var g=f.getAttribute("aria-controls");if(g){var b=document.getElementById(g);if(b&&b.classList.contains("govuk-radios__conditional")){var C=f.checked;f.setAttribute("aria-expanded",C.toString()),b.classList.toggle("govuk-radios__conditional--hidden",!C)}}};Xa.prototype.handleClick=function(f){var g=this,b=f.target;if(!(!(b instanceof HTMLInputElement)||b.type!=="radio")){var C=document.querySelectorAll('input[type="radio"][aria-controls]'),R=b.form,F=b.name;Wt(C,function(Z){var a=Z.form===R,W=Z.name===F;W&&a&&g.syncConditionalRevealWithInputState(Z)})}};function Uo(f){if(!(f instanceof HTMLAnchorElement))return this;this.$module=f,this.$linkedElement=null,this.linkedElementListener=!1}Uo.prototype.init=function(){if(this.$module){var f=this.getLinkedElement();f&&(this.$linkedElement=f,this.$module.addEventListener("click",this.focusLinkedElement.bind(this)))}};Uo.prototype.getLinkedElement=function(){var f=this.getFragmentFromUrl();return f?document.getElementById(f):null};Uo.prototype.focusLinkedElement=function(){var f=this.$linkedElement;f.getAttribute("tabindex")||(f.setAttribute("tabindex","-1"),f.classList.add("govuk-skip-link-focused-element"),this.linkedElementListener||(this.$linkedElement.addEventListener("blur",this.removeFocusProperties.bind(this)),this.linkedElementListener=!0)),f.focus()};Uo.prototype.removeFocusProperties=function(){this.$linkedElement.removeAttribute("tabindex"),this.$linkedElement.classList.remove("govuk-skip-link-focused-element")};Uo.prototype.getFragmentFromUrl=function(){if(this.$module.hash)return this.$module.hash.split("#").pop()};(function(f){var g="document"in this&&"nextElementSibling"in document.documentElement;g||Object.defineProperty(Element.prototype,"nextElementSibling",{get:function(){for(var b=this.nextSibling;b&&b.nodeType!==1;)b=b.nextSibling;return b}})}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="document"in this&&"previousElementSibling"in document.documentElement;g||Object.defineProperty(Element.prototype,"previousElementSibling",{get:function(){for(var b=this.previousSibling;b&&b.nodeType!==1;)b=b.previousSibling;return b}})}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});function $t(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll("a.govuk-tabs__tab");if(!g.length)return this;this.$module=f,this.$tabs=g,this.keys={left:37,right:39,up:38,down:40},this.jsHiddenClass="govuk-tabs__panel--hidden",this.boundTabClick=this.onTabClick.bind(this),this.boundTabKeydown=this.onTabKeydown.bind(this),this.boundOnHashChange=this.onHashChange.bind(this),this.changingHash=!1}$t.prototype.init=function(){!this.$module||!this.$tabs||(typeof window.matchMedia=="function"?this.setupResponsiveChecks():this.setup())};$t.prototype.setupResponsiveChecks=function(){this.mql=window.matchMedia("(min-width: 40.0625em)"),this.mql.addListener(this.checkMode.bind(this)),this.checkMode()};$t.prototype.checkMode=function(){this.mql.matches?this.setup():this.teardown()};$t.prototype.setup=function(){var f=this,g=this.$module,b=this.$tabs,C=g.querySelector(".govuk-tabs__list"),R=g.querySelectorAll(".govuk-tabs__list-item");if(!(!b||!C||!R)){C.setAttribute("role","tablist"),Wt(R,function(Z){Z.setAttribute("role","presentation")}),Wt(b,function(Z){f.setAttributes(Z),Z.addEventListener("click",f.boundTabClick,!0),Z.addEventListener("keydown",f.boundTabKeydown,!0),f.hideTab(Z)});var F=this.getTab(window.location.hash)||this.$tabs[0];F&&(this.showTab(F),window.addEventListener("hashchange",this.boundOnHashChange,!0))}};$t.prototype.teardown=function(){var f=this,g=this.$module,b=this.$tabs,C=g.querySelector(".govuk-tabs__list"),R=g.querySelectorAll("a.govuk-tabs__list-item");!b||!C||!R||(C.removeAttribute("role"),Wt(R,function(F){F.removeAttribute("role")}),Wt(b,function(F){F.removeEventListener("click",f.boundTabClick,!0),F.removeEventListener("keydown",f.boundTabKeydown,!0),f.unsetAttributes(F)}),window.removeEventListener("hashchange",this.boundOnHashChange,!0))};$t.prototype.onHashChange=function(){var f=window.location.hash,g=this.getTab(f);if(g){if(this.changingHash){this.changingHash=!1;return}var b=this.getCurrentTab();b&&(this.hideTab(b),this.showTab(g),g.focus())}};$t.prototype.hideTab=function(f){this.unhighlightTab(f),this.hidePanel(f)};$t.prototype.showTab=function(f){this.highlightTab(f),this.showPanel(f)};$t.prototype.getTab=function(f){return this.$module.querySelector('a.govuk-tabs__tab[href="'+f+'"]')};$t.prototype.setAttributes=function(f){var g=this.getHref(f).slice(1);f.setAttribute("id","tab_"+g),f.setAttribute("role","tab"),f.setAttribute("aria-controls",g),f.setAttribute("aria-selected","false"),f.setAttribute("tabindex","-1");var b=this.getPanel(f);b&&(b.setAttribute("role","tabpanel"),b.setAttribute("aria-labelledby",f.id),b.classList.add(this.jsHiddenClass))};$t.prototype.unsetAttributes=function(f){f.removeAttribute("id"),f.removeAttribute("role"),f.removeAttribute("aria-controls"),f.removeAttribute("aria-selected"),f.removeAttribute("tabindex");var g=this.getPanel(f);g&&(g.removeAttribute("role"),g.removeAttribute("aria-labelledby"),g.classList.remove(this.jsHiddenClass))};$t.prototype.onTabClick=function(f){var g=this.getCurrentTab(),b=f.currentTarget;!g||!(b instanceof HTMLAnchorElement)||(f.preventDefault(),this.hideTab(g),this.showTab(b),this.createHistoryEntry(b))};$t.prototype.createHistoryEntry=function(f){var g=this.getPanel(f);if(g){var b=g.id;g.id="",this.changingHash=!0,window.location.hash=this.getHref(f).slice(1),g.id=b}};$t.prototype.onTabKeydown=function(f){switch(f.keyCode){case this.keys.left:case this.keys.up:this.activatePreviousTab(),f.preventDefault();break;case this.keys.right:case this.keys.down:this.activateNextTab(),f.preventDefault();break}};$t.prototype.activateNextTab=function(){var f=this.getCurrentTab();if(!(!f||!f.parentElement)){var g=f.parentElement.nextElementSibling;if(g){var b=g.querySelector("a.govuk-tabs__tab");b&&(this.hideTab(f),this.showTab(b),b.focus(),this.createHistoryEntry(b))}}};$t.prototype.activatePreviousTab=function(){var f=this.getCurrentTab();if(!(!f||!f.parentElement)){var g=f.parentElement.previousElementSibling;if(g){var b=g.querySelector("a.govuk-tabs__tab");b&&(this.hideTab(f),this.showTab(b),b.focus(),this.createHistoryEntry(b))}}};$t.prototype.getPanel=function(f){return this.$module.querySelector(this.getHref(f))};$t.prototype.showPanel=function(f){var g=this.getPanel(f);g&&g.classList.remove(this.jsHiddenClass)};$t.prototype.hidePanel=function(f){var g=this.getPanel(f);g&&g.classList.add(this.jsHiddenClass)};$t.prototype.unhighlightTab=function(f){f.parentElement&&(f.setAttribute("aria-selected","false"),f.parentElement.classList.remove("govuk-tabs__list-item--selected"),f.setAttribute("tabindex","-1"))};$t.prototype.highlightTab=function(f){f.parentElement&&(f.setAttribute("aria-selected","true"),f.parentElement.classList.add("govuk-tabs__list-item--selected"),f.setAttribute("tabindex","0"))};$t.prototype.getCurrentTab=function(){return this.$module.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")};$t.prototype.getHref=function(f){var g=f.getAttribute("href"),b=g.slice(g.indexOf("#"),g.length);return b};function Yg(f){f=typeof f<"u"?f:{};var g=f.scope instanceof HTMLElement?f.scope:document,b=g.querySelectorAll('[data-module="govuk-accordion"]');Wt(b,function(fe){new Ki(fe,f.accordion).init()});var C=g.querySelectorAll('[data-module="govuk-button"]');Wt(C,function(fe){new fc(fe,f.button).init()});var R=g.querySelectorAll('[data-module="govuk-character-count"]');Wt(R,function(fe){new sr(fe,f.characterCount).init()});var F=g.querySelectorAll('[data-module="govuk-checkboxes"]');Wt(F,function(fe){new zs(fe).init()});var Z=g.querySelectorAll('[data-module="govuk-details"]');Wt(Z,function(fe){new Ha(fe).init()});var a=g.querySelector('[data-module="govuk-error-summary"]');a&&new Ls(a,f.errorSummary).init();var W=g.querySelectorAll('[data-module="govuk-exit-this-page"]');Wt(W,function(fe){new Ar(fe,f.exitThisPage).init()});var B=g.querySelector('[data-module="govuk-header"]');B&&new mc(B).init();var he=g.querySelectorAll('[data-module="govuk-notification-banner"]');Wt(he,function(fe){new Uu(fe,f.notificationBanner).init()});var se=g.querySelectorAll('[data-module="govuk-radios"]');Wt(se,function(fe){new Xa(fe).init()});var ke=g.querySelector('[data-module="govuk-skip-link"]');ke&&new Uo(ke).init();var Pe=g.querySelectorAll('[data-module="govuk-tabs"]');Wt(Pe,function(fe){new $t(fe).init()})}var Am=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Cm(f){return f&&f.__esModule&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f}function Jg(f){if(f.__esModule)return f;var g=f.default;if(typeof g=="function"){var b=function C(){if(this instanceof C){var R=[null];R.push.apply(R,arguments);var F=Function.bind.apply(g,R);return new F}return g.apply(this,arguments)};b.prototype=g.prototype}else b={};return Object.defineProperty(b,"__esModule",{value:!0}),Object.keys(f).forEach(function(C){var R=Object.getOwnPropertyDescriptor(f,C);Object.defineProperty(b,C,R.get?R:{enumerable:!0,get:function(){return f[C]}})}),b}var qd={exports:{}};(function(f,g){(function(b,C){f.exports=C()})(Am,function(){var b,C,R;function F(a,W){if(!b)b=W;else if(!C)C=W;else{var B="var sharedChunk = {}; ("+b+")(sharedChunk); ("+C+")(sharedChunk);",he={};b(he),R=W(he),typeof window<"u"&&(R.workerUrl=window.URL.createObjectURL(new Blob([B],{type:"text/javascript"})))}}F(["exports"],function(a){function W(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var B=he;function he(i,e){this.x=i,this.y=e}he.prototype={clone:function(){return new he(this.x,this.y)},add:function(i){return this.clone()._add(i)},sub:function(i){return this.clone()._sub(i)},multByPoint:function(i){return this.clone()._multByPoint(i)},divByPoint:function(i){return this.clone()._divByPoint(i)},mult:function(i){return this.clone()._mult(i)},div:function(i){return this.clone()._div(i)},rotate:function(i){return this.clone()._rotate(i)},rotateAround:function(i,e){return this.clone()._rotateAround(i,e)},matMult:function(i){return this.clone()._matMult(i)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(i){return this.x===i.x&&this.y===i.y},dist:function(i){return Math.sqrt(this.distSqr(i))},distSqr:function(i){var e=i.x-this.x,r=i.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(i){return Math.atan2(this.y-i.y,this.x-i.x)},angleWith:function(i){return this.angleWithSep(i.x,i.y)},angleWithSep:function(i,e){return Math.atan2(this.x*e-this.y*i,this.x*i+this.y*e)},_matMult:function(i){var e=i[2]*this.x+i[3]*this.y;return this.x=i[0]*this.x+i[1]*this.y,this.y=e,this},_add:function(i){return this.x+=i.x,this.y+=i.y,this},_sub:function(i){return this.x-=i.x,this.y-=i.y,this},_mult:function(i){return this.x*=i,this.y*=i,this},_div:function(i){return this.x/=i,this.y/=i,this},_multByPoint:function(i){return this.x*=i.x,this.y*=i.y,this},_divByPoint:function(i){return this.x/=i.x,this.y/=i.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var i=this.y;return this.y=this.x,this.x=-i,this},_rotate:function(i){var e=Math.cos(i),r=Math.sin(i),s=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=s,this},_rotateAround:function(i,e){var r=Math.cos(i),s=Math.sin(i),c=e.y+s*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-s*(this.y-e.y),this.y=c,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},he.convert=function(i){return i instanceof he?i:Array.isArray(i)?new he(i[0],i[1]):i};var se=W(B),ke=Pe;function Pe(i,e,r,s){this.cx=3*i,this.bx=3*(r-i)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(s-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=i,this.p1y=e,this.p2x=r,this.p2y=s}Pe.prototype={sampleCurveX:function(i){return((this.ax*i+this.bx)*i+this.cx)*i},sampleCurveY:function(i){return((this.ay*i+this.by)*i+this.cy)*i},sampleCurveDerivativeX:function(i){return(3*this.ax*i+2*this.bx)*i+this.cx},solveCurveX:function(i,e){if(e===void 0&&(e=1e-6),i<0)return 0;if(i>1)return 1;for(var r=i,s=0;s<8;s++){var c=this.sampleCurveX(r)-i;if(Math.abs(c)c?d=r:m=r,r=.5*(m-d)+d;return r},solve:function(i,e){return this.sampleCurveY(this.solveCurveX(i,e))}};var fe=W(ke);function Le(i,e,r,s){const c=new fe(i,e,r,s);return function(h){return c.solve(h)}}const qe=Le(.25,.1,.25,1);function Ae(i,e,r){return Math.min(r,Math.max(e,i))}function Je(i,e,r){const s=r-e,c=((i-e)%s+s)%s+e;return c===e?r:c}function Ge(i,...e){for(const r of e)for(const s in r)i[s]=r[s];return i}let pt=1;function Pt(i,e){i.forEach(r=>{e[r]&&(e[r]=e[r].bind(e))})}function ri(i,e,r){const s={};for(const c in i)s[c]=e.call(r||this,i[c],c,i);return s}function At(i,e,r){const s={};for(const c in i)e.call(r||this,i[c],c,i)&&(s[c]=i[c]);return s}function Ct(i){return Array.isArray(i)?i.map(Ct):typeof i=="object"&&i?ri(i,Ct):i}const qt={};function Dt(i){qt[i]||(typeof console<"u"&&console.warn(i),qt[i]=!0)}function ht(i,e,r){return(r.y-i.y)*(e.x-i.x)>(e.y-i.y)*(r.x-i.x)}function Cr(i){let e=0;for(let r,s,c=0,h=i.length,d=h-1;ccancelAnimationFrame(e)}},getImageData(i,e=0){return this.getImageCanvasContext(i).getImageData(-e,-e,i.width+2*e,i.height+2*e)},getImageCanvasContext(i){const e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=i.width,e.height=i.height,r.drawImage(i,0,0,i.width,i.height),r},resolveURL:i=>(Mn||(Mn=document.createElement("a")),Mn.href=i,Mn.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(cn==null&&(cn=matchMedia("(prefers-reduced-motion: reduce)")),cn.matches)}},rs={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};class Hr extends Error{constructor(e,r,s,c){super(`AJAXError: ${r} (${e}): ${s}`),this.status=e,this.statusText=r,this.url=s,this.body=c}}const Ii=_i()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol==="blob:"?window.parent:window).location.href,Yi=i=>rs.REGISTERED_PROTOCOLS[i.substring(0,i.indexOf("://"))];function pi(i,e){const r=new AbortController,s=new Request(i.url,{method:i.method||"GET",body:i.body,credentials:i.credentials,headers:i.headers,referrer:Ii(),signal:r.signal});let c=!1,h=!1;return i.type==="json"&&s.headers.set("Accept","application/json"),h||fetch(s).then(d=>d.ok?(m=>{(i.type==="arrayBuffer"||i.type==="image"?m.arrayBuffer():i.type==="json"?m.json():m.text()).then(y=>{h||(c=!0,e(null,y,m.headers.get("Cache-Control"),m.headers.get("Expires")))}).catch(y=>{h||e(new Error(y.message))})})(d):d.blob().then(m=>e(new Hr(d.status,d.statusText,i.url,m)))).catch(d=>{d.code!==20&&e(new Error(d.message))}),{cancel:()=>{h=!0,c||r.abort()}}}const zn=function(i,e){if(/:\/\//.test(i.url)&&!/^https?:|^file:/.test(i.url)){if(_i()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e);if(!_i())return(Yi(i.url)||pi)(i,e)}if(!(/^file:/.test(r=i.url)||/^file:/.test(Ii())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return pi(i,e);if(_i()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e,void 0,!0)}var r;return function(s,c){const h=new XMLHttpRequest;h.open(s.method||"GET",s.url,!0),s.type!=="arrayBuffer"&&s.type!=="image"||(h.responseType="arraybuffer");for(const d in s.headers)h.setRequestHeader(d,s.headers[d]);return s.type==="json"&&(h.responseType="text",h.setRequestHeader("Accept","application/json")),h.withCredentials=s.credentials==="include",h.onerror=()=>{c(new Error(h.statusText))},h.onload=()=>{if((h.status>=200&&h.status<300||h.status===0)&&h.response!==null){let d=h.response;if(s.type==="json")try{d=JSON.parse(h.response)}catch(m){return c(m)}c(null,d,h.getResponseHeader("Cache-Control"),h.getResponseHeader("Expires"))}else{const d=new Blob([h.response],{type:h.getResponseHeader("Content-Type")});c(new Hr(h.status,h.statusText,s.url,d))}},h.send(s.body),{cancel:()=>h.abort()}}(i,e)},Ln=function(i,e){return zn(Ge(i,{type:"arrayBuffer"}),e)};function un(i){if(!i||i.indexOf("://")<=0||i.indexOf("data:image/")===0||i.indexOf("blob:")===0)return!0;const e=new URL(i),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function Xr(i,e,r){r[i]&&r[i].indexOf(e)!==-1||(r[i]=r[i]||[],r[i].push(e))}function Pr(i,e,r){if(r&&r[i]){const s=r[i].indexOf(e);s!==-1&&r[i].splice(s,1)}}class zr{constructor(e,r={}){Ge(this,r),this.type=e}}class Ji extends zr{constructor(e,r={}){super("error",Ge({error:e},r))}}class Dn{on(e,r){return this._listeners=this._listeners||{},Xr(e,r,this._listeners),this}off(e,r){return Pr(e,r,this._listeners),Pr(e,r,this._oneTimeListeners),this}once(e,r){return r?(this._oneTimeListeners=this._oneTimeListeners||{},Xr(e,r,this._oneTimeListeners),this):new Promise(s=>this.once(e,s))}fire(e,r){typeof e=="string"&&(e=new zr(e,r||{}));const s=e.type;if(this.listens(s)){e.target=this;const c=this._listeners&&this._listeners[s]?this._listeners[s].slice():[];for(const m of c)m.call(this,e);const h=this._oneTimeListeners&&this._oneTimeListeners[s]?this._oneTimeListeners[s].slice():[];for(const m of h)Pr(s,m,this._oneTimeListeners),m.call(this,e);const d=this._eventedParent;d&&(Ge(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),d.fire(e))}else e instanceof Ji&&console.error(e.error);return this}listens(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)}setEventedParent(e,r){return this._eventedParent=e,this._eventedParentData=r,this}}var de={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};const Wr=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function ns(i,e){const r={};for(const s in i)s!=="ref"&&(r[s]=i[s]);return Wr.forEach(s=>{s in e&&(r[s]=e[s])}),r}function Tt(i,e){if(Array.isArray(i)){if(!Array.isArray(e)||i.length!==e.length)return!1;for(let r=0;r`:i.itemType.kind==="value"?"array":`array<${e}>`}return i.kind}const os=[Kr,Ee,ot,nt,zi,Dr,ni,fi(it),or,Br];function gr(i,e){if(e.kind==="error")return null;if(i.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!gr(i.itemType,e.itemType))&&(typeof i.N!="number"||i.N===e.N))return null}else{if(i.kind===e.kind)return null;if(i.kind==="value"){for(const r of os)if(!gr(r,e))return null}}return`Expected ${kt(i)} but found ${kt(e)} instead.`}function j(i,e){return e.some(r=>r.kind===i.kind)}function k(i,e){return e.some(r=>r==="null"?i===null:r==="array"?Array.isArray(i):r==="object"?i&&!Array.isArray(i)&&typeof i=="object":r===typeof i)}function P(i,e){return i.kind==="array"&&e.kind==="array"?i.itemType.kind===e.itemType.kind&&typeof i.N=="number":i.kind===e.kind}const O=.96422,X=.82521,K=4/29,ie=6/29,Q=3*ie*ie,Y=ie*ie*ie,ne=Math.PI/180,me=180/Math.PI;function _e(i){return(i%=360)<0&&(i+=360),i}function ge([i,e,r,s]){let c,h;const d=tt((.2225045*(i=We(i))+.7168786*(e=We(e))+.0606169*(r=We(r)))/1);i===e&&e===r?c=h=d:(c=tt((.4360747*i+.3850649*e+.1430804*r)/O),h=tt((.0139322*i+.0971045*e+.7141733*r)/X));const m=116*d-16;return[m<0?0:m,500*(c-d),200*(d-h),s]}function We(i){return i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function tt(i){return i>Y?Math.pow(i,1/3):i/Q+K}function Ve([i,e,r,s]){let c=(i+16)/116,h=isNaN(e)?c:c+e/500,d=isNaN(r)?c:c-r/200;return c=1*et(c),h=O*et(h),d=X*et(d),[Ze(3.1338561*h-1.6168667*c-.4906146*d),Ze(-.9787684*h+1.9161415*c+.033454*d),Ze(.0719453*h-.2289914*c+1.4052427*d),s]}function Ze(i){return(i=i<=.00304?12.92*i:1.055*Math.pow(i,1/2.4)-.055)<0?0:i>1?1:i}function et(i){return i>ie?i*i*i:Q*(i-K)}function dt(i){return parseInt(i.padEnd(2,i),16)/255}function at(i,e){return mt(e?i/100:i,0,1)}function mt(i,e,r){return Math.min(Math.max(e,i),r)}function St(i){return!i.some(Number.isNaN)}const Yt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Qe{constructor(e,r,s,c=1,h=!0){this.r=e,this.g=r,this.b=s,this.a=c,h||(this.r*=c,this.g*=c,this.b*=c,c||this.overwriteGetter("rgb",[e,r,s,c]))}static parse(e){if(e instanceof Qe)return e;if(typeof e!="string")return;const r=function(s){if((s=s.toLowerCase())==="transparent")return[0,0,0,0];const c=Yt[s];if(c){const[d,m,y]=c;return[d/255,m/255,y/255,1]}if(s.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(s)){const d=s.length<6?1:2;let m=1;return[dt(s.slice(m,m+=d)),dt(s.slice(m,m+=d)),dt(s.slice(m,m+=d)),dt(s.slice(m,m+d)||"ff")]}if(s.startsWith("rgb")){const d=s.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(d){const[m,y,E,T,A,M,z,D,q,N,te,re]=d,J=[T||" ",z||" ",N].join("");if(J===" "||J===" /"||J===",,"||J===",,,"){const ae=[E,M,q].join(""),ce=ae==="%%%"?100:ae===""?255:0;if(ce){const pe=[mt(+y/ce,0,1),mt(+A/ce,0,1),mt(+D/ce,0,1),te?at(+te,re):1];if(St(pe))return pe}}return}}const h=s.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(h){const[d,m,y,E,T,A,M,z,D]=h,q=[y||" ",T||" ",M].join("");if(q===" "||q===" /"||q===",,"||q===",,,"){const N=[+m,mt(+E,0,100),mt(+A,0,100),z?at(+z,D):1];if(St(N))return function([te,re,J,ae]){function ce(pe){const Oe=(pe+te/30)%12,Ne=re*Math.min(J,1-J);return J-Ne*Math.max(-1,Math.min(Oe-3,9-Oe,1))}return te=_e(te),re/=100,J/=100,[ce(0),ce(8),ce(4),ae]}(N)}}}(e);return r?new Qe(...r,!1):void 0}get rgb(){const{r:e,g:r,b:s,a:c}=this,h=c||1/0;return this.overwriteGetter("rgb",[e/h,r/h,s/h,c])}get hcl(){return this.overwriteGetter("hcl",function(e){const[r,s,c,h]=ge(e),d=Math.sqrt(s*s+c*c);return[Math.round(1e4*d)?_e(Math.atan2(c,s)*me):NaN,d,r,h]}(this.rgb))}get lab(){return this.overwriteGetter("lab",ge(this.rgb))}overwriteGetter(e,r){return Object.defineProperty(this,e,{value:r}),r}toString(){const[e,r,s,c]=this.rgb;return`rgba(${[e,r,s].map(h=>Math.round(255*h)).join(",")},${c})`}}Qe.black=new Qe(0,0,0,1),Qe.white=new Qe(1,1,1,1),Qe.transparent=new Qe(0,0,0,0),Qe.red=new Qe(1,0,0,1);class Ot{constructor(e,r,s){this.sensitivity=e?r?"variant":"case":r?"accent":"base",this.locale=s,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,r){return this.collator.compare(e,r)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Yr{constructor(e,r,s,c,h){this.text=e,this.image=r,this.scale=s,this.fontStack=c,this.textColor=h}}class mi{constructor(e){this.sections=e}static fromString(e){return new mi([new Yr(e,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.name.length!==0)}static factory(e){return e instanceof mi?e:mi.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}}class Ui{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ui)return e;if(typeof e=="number")return new Ui([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const r of e)if(typeof r!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new Ui(e)}}toString(){return JSON.stringify(this.values)}}class Qi{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new Qi({name:e,available:!1}):null}}function Fn(i,e,r,s){return typeof i=="number"&&i>=0&&i<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof r=="number"&&r>=0&&r<=255?s===void 0||typeof s=="number"&&s>=0&&s<=1?null:`Invalid rgba value [${[i,e,r,s].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof s=="number"?[i,e,r,s]:[i,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Bs(i){if(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"||i instanceof Qe||i instanceof Ot||i instanceof mi||i instanceof Ui||i instanceof Qi)return!0;if(Array.isArray(i)){for(const e of i)if(!Bs(e))return!1;return!0}if(typeof i=="object"){for(const e in i)if(!Bs(i[e]))return!1;return!0}return!1}function Jt(i){if(i===null)return Kr;if(typeof i=="string")return ot;if(typeof i=="boolean")return nt;if(typeof i=="number")return Ee;if(i instanceof Qe)return zi;if(i instanceof Ot)return Lr;if(i instanceof mi)return Dr;if(i instanceof Ui)return or;if(i instanceof Qi)return Br;if(Array.isArray(i)){const e=i.length;let r;for(const s of i){const c=Jt(s);if(r){if(r===c)continue;r=it;break}r=c}return fi(r||it,e)}return ni}function as(i){const e=typeof i;return i===null?"":e==="string"||e==="number"||e==="boolean"?String(i):i instanceof Qe||i instanceof mi||i instanceof Ui||i instanceof Qi?i.toString():JSON.stringify(i)}class Jr{constructor(e,r){this.type=e,this.value=r}static parse(e,r){if(e.length!==2)return r.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Bs(e[1]))return r.error("invalid value");const s=e[1];let c=Jt(s);const h=r.expectedType;return c.kind!=="array"||c.N!==0||!h||h.kind!=="array"||typeof h.N=="number"&&h.N!==0||(c=h),new Jr(c,s)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class jt{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const Rs={string:ot,number:Ee,boolean:nt,object:ni};class ar{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");let s,c=1;const h=e[0];if(h==="array"){let m,y;if(e.length>2){const E=e[1];if(typeof E!="string"||!(E in Rs)||E==="object")return r.error('The item type argument of "array" must be one of string, number, boolean',1);m=Rs[E],c++}else m=it;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return r.error('The length argument to "array" must be a positive integer literal',2);y=e[2],c++}s=fi(m,y)}else{if(!Rs[h])throw new Error(`Types doesn't contain name = ${h}`);s=Rs[h]}const d=[];for(;ce.outputDefined())}}const Wa={"to-boolean":nt,"to-color":zi,"to-number":Ee,"to-string":ot};class gi{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[0];if(!Wa[s])throw new Error(`Can't parse ${s} as it is not part of the known types`);if((s==="to-boolean"||s==="to-string")&&e.length!==2)return r.error("Expected one argument.");const c=Wa[s],h=[];for(let d=1;d4?`Invalid rbga value ${JSON.stringify(r)}: expected an array containing either three or four numeric values.`:Fn(r[0],r[1],r[2],r[3]),!s))return new Qe(r[0]/255,r[1]/255,r[2]/255,r[3])}throw new jt(s||`Could not parse color from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="padding"){let r;for(const s of this.args){r=s.evaluate(e);const c=Ui.parse(r);if(c)return c}throw new jt(`Could not parse padding from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="number"){let r=null;for(const s of this.args){if(r=s.evaluate(e),r===null)return 0;const c=Number(r);if(!isNaN(c))return c}throw new jt(`Could not convert ${JSON.stringify(r)} to number.`)}return this.type.kind==="formatted"?mi.fromString(as(this.args[0].evaluate(e))):this.type.kind==="resolvedImage"?Qi.fromString(as(this.args[0].evaluate(e))):as(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const No=["Unknown","Point","LineString","Polygon"];class Fs{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?No[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(e){let r=this._parseColorCache[e];return r||(r=this._parseColorCache[e]=Qe.parse(e)),r}}class Qr{constructor(e,r,s=[],c,h=new Rn,d=[]){this.registry=e,this.path=s,this.key=s.map(m=>`[${m}]`).join(""),this.scope=h,this.errors=d,this.expectedType=c,this._isConstant=r}parse(e,r,s,c,h={}){return r?this.concat(r,s,c)._parse(e,h):this._parse(e,h)}_parse(e,r){function s(c,h,d){return d==="assert"?new ar(h,[c]):d==="coerce"?new gi(h,[c]):c}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const c=e[0];if(typeof c!="string")return this.error(`Expression name must be a string, but found ${typeof c} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const h=this.registry[c];if(h){let d=h.parse(e,this);if(!d)return null;if(this.expectedType){const m=this.expectedType,y=d.type;if(m.kind!=="string"&&m.kind!=="number"&&m.kind!=="boolean"&&m.kind!=="object"&&m.kind!=="array"||y.kind!=="value")if(m.kind!=="color"&&m.kind!=="formatted"&&m.kind!=="resolvedImage"||y.kind!=="value"&&y.kind!=="string")if(m.kind!=="padding"||y.kind!=="value"&&y.kind!=="number"&&y.kind!=="array"){if(this.checkSubtype(m,y))return null}else d=s(d,m,r.typeAnnotation||"coerce");else d=s(d,m,r.typeAnnotation||"coerce");else d=s(d,m,r.typeAnnotation||"assert")}if(!(d instanceof Jr)&&d.type.kind!=="resolvedImage"&&this._isConstant(d)){const m=new Fs;try{d=new Jr(d.type,d.evaluate(m))}catch(y){return this.error(y.message),null}}return d}return this.error(`Unknown expression "${c}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,r,s){const c=typeof e=="number"?this.path.concat(e):this.path,h=s?this.scope.concat(s):this.scope;return new Qr(this.registry,this._isConstant,c,r||null,h,this.errors)}error(e,...r){const s=`${this.key}${r.map(c=>`[${c}]`).join("")}`;this.errors.push(new yi(s,e))}checkSubtype(e,r){const s=gr(e,r);return s&&this.error(s),s}}class xt{constructor(e,r,s){this.type=Lr,this.locale=s,this.caseSensitive=e,this.diacriticSensitive=r}static parse(e,r){if(e.length!==2)return r.error("Expected one argument.");const s=e[1];if(typeof s!="object"||Array.isArray(s))return r.error("Collator options argument must be an object.");const c=r.parse(s["case-sensitive"]!==void 0&&s["case-sensitive"],1,nt);if(!c)return null;const h=r.parse(s["diacritic-sensitive"]!==void 0&&s["diacritic-sensitive"],1,nt);if(!h)return null;let d=null;return s.locale&&(d=r.parse(s.locale,1,ot),!d)?null:new xt(c,h,d)}evaluate(e){return new Ot(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}}const en=8192;function ls(i,e){i[0]=Math.min(i[0],e[0]),i[1]=Math.min(i[1],e[1]),i[2]=Math.max(i[2],e[0]),i[3]=Math.max(i[3],e[1])}function Os(i,e){return!(i[0]<=e[0]||i[2]>=e[2]||i[1]<=e[1]||i[3]>=e[3])}function Ka(i,e){const r=(180+i[0])/360,s=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i[1]*Math.PI/360)))/360,c=Math.pow(2,e.z);return[Math.round(r*c*en),Math.round(s*c*en)]}function Ya(i,e,r){const s=i[0]-e[0],c=i[1]-e[1],h=i[0]-r[0],d=i[1]-r[1];return s*d-h*c==0&&s*h<=0&&c*d<=0}function $o(i,e){let r=!1;for(let d=0,m=e.length;d(s=i)[1]!=(h=y[E+1])[1]>s[1]&&s[0]<(h[0]-c[0])*(s[1]-c[1])/(h[1]-c[1])+c[0]&&(r=!r)}}var s,c,h;return r}function Ja(i,e){for(let r=0;r0&&m<0||d<0&&m>0}function yc(i,e,r){for(const E of r)for(let T=0;Tr[2]){const c=.5*s;let h=i[0]-r[0]>c?-s:r[0]-i[0]>c?s:0;h===0&&(h=i[0]-r[2]>c?-s:r[2]-i[0]>c?s:0),i[0]+=h}ls(e,i)}function el(i,e,r,s){const c=Math.pow(2,s.z)*en,h=[s.x*en,s.y*en],d=[];for(const m of i)for(const y of m){const E=[y.x+h[0],y.y+h[1]];Zo(E,e,r,c),d.push(E)}return d}function tl(i,e,r,s){const c=Math.pow(2,s.z)*en,h=[s.x*en,s.y*en],d=[];for(const y of i){const E=[];for(const T of y){const A=[T.x+h[0],T.y+h[1]];ls(e,A),E.push(A)}d.push(E)}if(e[2]-e[0]<=c/2){(m=e)[0]=m[1]=1/0,m[2]=m[3]=-1/0;for(const y of d)for(const E of y)Zo(E,e,r,c)}var m;return d}class Rr{constructor(e,r){this.type=nt,this.geojson=e,this.geometries=r}static parse(e,r){if(e.length!==2)return r.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Bs(e[1])){const s=e[1];if(s.type==="FeatureCollection")for(let c=0;c!Array.isArray(E)||E.length===e.length-1);let y=null;for(const[E,T]of m){y=new Qr(r.registry,Vs,r.path,null,r.scope);const A=[];let M=!1;for(let z=1;z{return M=A,Array.isArray(M)?`(${M.map(kt).join(", ")})`:`(${kt(M.type)}...)`;var M}).join(" | "),T=[];for(let A=1;A{r=e?r&&Vs(s):r&&s instanceof Jr}),!!r&&cs(i)&&Ns(i,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function cs(i){if(i instanceof er&&(i.name==="get"&&i.args.length===1||i.name==="feature-state"||i.name==="has"&&i.args.length===1||i.name==="properties"||i.name==="geometry-type"||i.name==="id"||/^filter-/.test(i.name))||i instanceof Rr)return!1;let e=!0;return i.eachChild(r=>{e&&!cs(r)&&(e=!1)}),e}function On(i){if(i instanceof er&&i.name==="feature-state")return!1;let e=!0;return i.eachChild(r=>{e&&!On(r)&&(e=!1)}),e}function Ns(i,e){if(i instanceof er&&e.indexOf(i.name)>=0)return!1;let r=!0;return i.eachChild(s=>{r&&!Ns(s,e)&&(r=!1)}),r}function $s(i,e){const r=i.length-1;let s,c,h=0,d=r,m=0;for(;h<=d;)if(m=Math.floor((h+d)/2),s=i[m],c=i[m+1],s<=e){if(m===r||ee))throw new jt("Input is not a number.");d=m-1}return 0}class Un{constructor(e,r,s){this.type=e,this.input=r,this.labels=[],this.outputs=[];for(const[c,h]of s)this.labels.push(c),this.outputs.push(h)}static parse(e,r){if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");const s=r.parse(e[1],1,Ee);if(!s)return null;const c=[];let h=null;r.expectedType&&r.expectedType.kind!=="value"&&(h=r.expectedType);for(let d=1;d=m)return r.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',E);const A=r.parse(y,T,h);if(!A)return null;h=h||A.type,c.push([m,A])}return new Un(h,s,c)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const c=this.input.evaluate(e);if(c<=r[0])return s[0].evaluate(e);const h=r.length;return c>=r[h-1]?s[h-1].evaluate(e):s[$s(r,c)].evaluate(e)}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Vn(i,e,r){return i+r*(e-i)}function qs(i,e,r){return i.map((s,c)=>Vn(s,e[c],r))}const Vi={number:Vn,color:function(i,e,r,s="rgb"){switch(s){case"rgb":{const[c,h,d,m]=qs(i.rgb,e.rgb,r);return new Qe(c,h,d,m,!1)}case"hcl":{const[c,h,d,m]=i.hcl,[y,E,T,A]=e.hcl;let M,z;if(isNaN(c)||isNaN(y))isNaN(c)?isNaN(y)?M=NaN:(M=y,d!==1&&d!==0||(z=E)):(M=c,T!==1&&T!==0||(z=h));else{let re=y-c;y>c&&re>180?re-=360:y180&&(re+=360),M=c+r*re}const[D,q,N,te]=function([re,J,ae,ce]){return re=isNaN(re)?0:re*ne,Ve([ae,Math.cos(re)*J,Math.sin(re)*J,ce])}([M,z??Vn(h,E,r),Vn(d,T,r),Vn(m,A,r)]);return new Qe(D,q,N,te,!1)}case"lab":{const[c,h,d,m]=Ve(qs(i.lab,e.lab,r));return new Qe(c,h,d,m,!1)}}},array:qs,padding:function(i,e,r){return new Ui(qs(i.values,e.values,r))}};class Ni{constructor(e,r,s,c,h){this.type=e,this.operator=r,this.interpolation=s,this.input=c,this.labels=[],this.outputs=[];for(const[d,m]of h)this.labels.push(d),this.outputs.push(m)}static interpolationFactor(e,r,s,c){let h=0;if(e.name==="exponential")h=Ho(r,e.base,s,c);else if(e.name==="linear")h=Ho(r,1,s,c);else if(e.name==="cubic-bezier"){const d=e.controlPoints;h=new fe(d[0],d[1],d[2],d[3]).solve(Ho(r,1,s,c))}return h}static parse(e,r){let[s,c,h,...d]=e;if(!Array.isArray(c)||c.length===0)return r.error("Expected an interpolation type expression.",1);if(c[0]==="linear")c={name:"linear"};else if(c[0]==="exponential"){const E=c[1];if(typeof E!="number")return r.error("Exponential interpolation requires a numeric base.",1,1);c={name:"exponential",base:E}}else{if(c[0]!=="cubic-bezier")return r.error(`Unknown interpolation type ${String(c[0])}`,1,0);{const E=c.slice(1);if(E.length!==4||E.some(T=>typeof T!="number"||T<0||T>1))return r.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);c={name:"cubic-bezier",controlPoints:E}}}if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");if(h=r.parse(h,2,Ee),!h)return null;const m=[];let y=null;s==="interpolate-hcl"||s==="interpolate-lab"?y=zi:r.expectedType&&r.expectedType.kind!=="value"&&(y=r.expectedType);for(let E=0;E=T)return r.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',M);const D=r.parse(A,z,y);if(!D)return null;y=y||D.type,m.push([T,D])}return P(y,Ee)||P(y,zi)||P(y,or)||P(y,fi(Ee))?new Ni(y,s,c,h,m):r.error(`Type ${kt(y)} is not interpolatable.`)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const c=this.input.evaluate(e);if(c<=r[0])return s[0].evaluate(e);const h=r.length;if(c>=r[h-1])return s[h-1].evaluate(e);const d=$s(r,c),m=Ni.interpolationFactor(this.interpolation,c,r[d],r[d+1]),y=s[d].evaluate(e),E=s[d+1].evaluate(e);switch(this.operator){case"interpolate":return Vi[this.type.kind](y,E,m);case"interpolate-hcl":return Vi.color(y,E,m,"hcl");case"interpolate-lab":return Vi.color(y,E,m,"lab")}}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ho(i,e,r,s){const c=s-r,h=i-r;return c===0?0:e===1?h/c:(Math.pow(e,h)-1)/(Math.pow(e,c)-1)}class js{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expectected at least one argument.");let s=null;const c=r.expectedType;c&&c.kind!=="value"&&(s=c);const h=[];for(const m of e.slice(1)){const y=r.parse(m,1+h.length,s,void 0,{typeAnnotation:"omit"});if(!y)return null;s=s||y.type,h.push(y)}if(!s)throw new Error("No output type");const d=c&&h.some(m=>gr(c,m.type));return new js(d?it:s,h)}evaluate(e){let r,s=null,c=0;for(const h of this.args)if(c++,s=h.evaluate(e),s&&s instanceof Qi&&!s.available&&(r||(r=s.name),s=null,c===this.args.length&&(s=r)),s!==null)break;return s}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}class Gs{constructor(e,r){this.type=r.type,this.bindings=[].concat(e),this.result=r}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const r of this.bindings)e(r[1]);e(this.result)}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const s=[];for(let h=1;h=s.length)throw new jt(`Array index out of bounds: ${r} > ${s.length-1}.`);if(r!==Math.floor(r))throw new jt(`Array index must be an integer, but found ${r} instead.`);return s[r]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class us{constructor(e,r){this.type=nt,this.needle=e,this.haystack=r}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,it);return s&&c?j(s.type,[nt,ot,Ee,Kr,it])?new us(s,c):r.error(`Expected first argument to be of type boolean, string, number or null, but found ${kt(s.type)} instead`):null}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!s)return!1;if(!k(r,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${kt(Jt(r))} instead.`);if(!k(s,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${kt(Jt(s))} instead.`);return s.indexOf(r)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class fn{constructor(e,r,s){this.type=Ee,this.needle=e,this.haystack=r,this.fromIndex=s}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,it);if(!s||!c)return null;if(!j(s.type,[nt,ot,Ee,Kr,it]))return r.error(`Expected first argument to be of type boolean, string, number or null, but found ${kt(s.type)} instead`);if(e.length===4){const h=r.parse(e[3],3,Ee);return h?new fn(s,c,h):null}return new fn(s,c)}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!k(r,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${kt(Jt(r))} instead.`);if(!k(s,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${kt(Jt(s))} instead.`);if(this.fromIndex){const c=this.fromIndex.evaluate(e);return s.indexOf(r,c)}return s.indexOf(r)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class gt{constructor(e,r,s,c,h,d){this.inputType=e,this.type=r,this.input=s,this.cases=c,this.outputs=h,this.otherwise=d}static parse(e,r){if(e.length<5)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return r.error("Expected an even number of arguments.");let s,c;r.expectedType&&r.expectedType.kind!=="value"&&(c=r.expectedType);const h={},d=[];for(let E=2;ENumber.MAX_SAFE_INTEGER)return M.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof D=="number"&&Math.floor(D)!==D)return M.error("Numeric branch labels must be integer values.");if(s){if(M.checkSubtype(s,Jt(D)))return null}else s=Jt(D);if(h[String(D)]!==void 0)return M.error("Branch labels must be unique.");h[String(D)]=d.length}const z=r.parse(A,E,c);if(!z)return null;c=c||z.type,d.push(z)}const m=r.parse(e[1],1,it);if(!m)return null;const y=r.parse(e[e.length-1],e.length-1,c);return y?m.type.kind!=="value"&&r.concat(1).checkSubtype(s,m.type)?null:new gt(s,c,m,h,d,y):null}evaluate(e){const r=this.input.evaluate(e);return(Jt(r)===this.inputType&&this.outputs[this.cases[r]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}}class Wo{constructor(e,r,s){this.type=e,this.branches=r,this.otherwise=s}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return r.error("Expected an odd number of arguments.");let s;r.expectedType&&r.expectedType.kind!=="value"&&(s=r.expectedType);const c=[];for(let d=1;dr.outputDefined())&&this.otherwise.outputDefined()}}class Zs{constructor(e,r,s,c){this.type=e,this.input=r,this.beginIndex=s,this.endIndex=c}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,Ee);if(!s||!c)return null;if(!j(s.type,[fi(it),ot,it]))return r.error(`Expected first argument to be of type array or string, but found ${kt(s.type)} instead`);if(e.length===4){const h=r.parse(e[3],3,Ee);return h?new Zs(s.type,s,c,h):null}return new Zs(s.type,s,c)}evaluate(e){const r=this.input.evaluate(e),s=this.beginIndex.evaluate(e);if(!k(r,["string","array"]))throw new jt(`Expected first argument to be of type array or string, but found ${kt(Jt(r))} instead.`);if(this.endIndex){const c=this.endIndex.evaluate(e);return r.slice(s,c)}return r.slice(s)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function il(i,e){return i==="=="||i==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function rl(i,e,r,s){return s.compare(e,r)===0}function Nn(i,e,r){const s=i!=="=="&&i!=="!=";return class jd{constructor(h,d,m){this.type=nt,this.lhs=h,this.rhs=d,this.collator=m,this.hasUntypedArgument=h.type.kind==="value"||d.type.kind==="value"}static parse(h,d){if(h.length!==3&&h.length!==4)return d.error("Expected two or three arguments.");const m=h[0];let y=d.parse(h[1],1,it);if(!y)return null;if(!il(m,y.type))return d.concat(1).error(`"${m}" comparisons are not supported for type '${kt(y.type)}'.`);let E=d.parse(h[2],2,it);if(!E)return null;if(!il(m,E.type))return d.concat(2).error(`"${m}" comparisons are not supported for type '${kt(E.type)}'.`);if(y.type.kind!==E.type.kind&&y.type.kind!=="value"&&E.type.kind!=="value")return d.error(`Cannot compare types '${kt(y.type)}' and '${kt(E.type)}'.`);s&&(y.type.kind==="value"&&E.type.kind!=="value"?y=new ar(E.type,[y]):y.type.kind!=="value"&&E.type.kind==="value"&&(E=new ar(y.type,[E])));let T=null;if(h.length===4){if(y.type.kind!=="string"&&E.type.kind!=="string"&&y.type.kind!=="value"&&E.type.kind!=="value")return d.error("Cannot use collator to compare non-string types.");if(T=d.parse(h[3],3,Lr),!T)return null}return new jd(y,E,T)}evaluate(h){const d=this.lhs.evaluate(h),m=this.rhs.evaluate(h);if(s&&this.hasUntypedArgument){const y=Jt(d),E=Jt(m);if(y.kind!==E.kind||y.kind!=="string"&&y.kind!=="number")throw new jt(`Expected arguments for "${i}" to be (string, string) or (number, number), but found (${y.kind}, ${E.kind}) instead.`)}if(this.collator&&!s&&this.hasUntypedArgument){const y=Jt(d),E=Jt(m);if(y.kind!=="string"||E.kind!=="string")return e(h,d,m)}return this.collator?r(h,d,m,this.collator.evaluate(h)):e(h,d,m)}eachChild(h){h(this.lhs),h(this.rhs),this.collator&&h(this.collator)}outputDefined(){return!0}}}const xc=Nn("==",function(i,e,r){return e===r},rl),bc=Nn("!=",function(i,e,r){return e!==r},function(i,e,r,s){return!rl(0,e,r,s)}),wc=Nn("<",function(i,e,r){return e",function(i,e,r){return e>r},function(i,e,r,s){return s.compare(e,r)>0}),Tc=Nn("<=",function(i,e,r){return e<=r},function(i,e,r,s){return s.compare(e,r)<=0}),Sc=Nn(">=",function(i,e,r){return e>=r},function(i,e,r,s){return s.compare(e,r)>=0});class Ko{constructor(e,r,s,c,h){this.type=ot,this.number=e,this.locale=r,this.currency=s,this.minFractionDigits=c,this.maxFractionDigits=h}static parse(e,r){if(e.length!==3)return r.error("Expected two arguments.");const s=r.parse(e[1],1,Ee);if(!s)return null;const c=e[2];if(typeof c!="object"||Array.isArray(c))return r.error("NumberFormat options argument must be an object.");let h=null;if(c.locale&&(h=r.parse(c.locale,1,ot),!h))return null;let d=null;if(c.currency&&(d=r.parse(c.currency,1,ot),!d))return null;let m=null;if(c["min-fraction-digits"]&&(m=r.parse(c["min-fraction-digits"],1,Ee),!m))return null;let y=null;return c["max-fraction-digits"]&&(y=r.parse(c["max-fraction-digits"],1,Ee),!y)?null:new Ko(s,h,d,m,y)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class Hs{constructor(e){this.type=Dr,this.sections=e}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[1];if(!Array.isArray(s)&&typeof s=="object")return r.error("First argument must be an image or text section.");const c=[];let h=!1;for(let d=1;d<=e.length-1;++d){const m=e[d];if(h&&typeof m=="object"&&!Array.isArray(m)){h=!1;let y=null;if(m["font-scale"]&&(y=r.parse(m["font-scale"],1,Ee),!y))return null;let E=null;if(m["text-font"]&&(E=r.parse(m["text-font"],1,fi(ot)),!E))return null;let T=null;if(m["text-color"]&&(T=r.parse(m["text-color"],1,zi),!T))return null;const A=c[c.length-1];A.scale=y,A.font=E,A.textColor=T}else{const y=r.parse(e[d],1,it);if(!y)return null;const E=y.type.kind;if(E!=="string"&&E!=="value"&&E!=="null"&&E!=="resolvedImage")return r.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");h=!0,c.push({content:y,scale:null,font:null,textColor:null})}}return new Hs(c)}evaluate(e){return new mi(this.sections.map(r=>{const s=r.content.evaluate(e);return Jt(s)===Br?new Yr("",s,null,null,null):new Yr(as(s),null,r.scale?r.scale.evaluate(e):null,r.font?r.font.evaluate(e).join(","):null,r.textColor?r.textColor.evaluate(e):null)}))}eachChild(e){for(const r of this.sections)e(r.content),r.scale&&e(r.scale),r.font&&e(r.font),r.textColor&&e(r.textColor)}outputDefined(){return!1}}class Yo{constructor(e){this.type=Br,this.input=e}static parse(e,r){if(e.length!==2)return r.error("Expected two arguments.");const s=r.parse(e[1],1,ot);return s?new Yo(s):r.error("No image name provided.")}evaluate(e){const r=this.input.evaluate(e),s=Qi.fromString(r);return s&&e.availableImages&&(s.available=e.availableImages.indexOf(r)>-1),s}eachChild(e){e(this.input)}outputDefined(){return!1}}class Jo{constructor(e){this.type=Ee,this.input=e}static parse(e,r){if(e.length!==2)return r.error(`Expected 1 argument, but found ${e.length-1} instead.`);const s=r.parse(e[1],1);return s?s.type.kind!=="array"&&s.type.kind!=="string"&&s.type.kind!=="value"?r.error(`Expected argument of type string or array, but found ${kt(s.type)} instead.`):new Jo(s):null}evaluate(e){const r=this.input.evaluate(e);if(typeof r=="string"||Array.isArray(r))return r.length;throw new jt(`Expected value to be of type string or array, but found ${kt(Jt(r))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const $n={"==":xc,"!=":bc,">":Ec,"<":wc,">=":Sc,"<=":Tc,array:ar,at:Xo,boolean:ar,case:Wo,coalesce:js,collator:xt,format:Hs,image:Yo,in:us,"index-of":fn,interpolate:Ni,"interpolate-hcl":Ni,"interpolate-lab":Ni,length:Jo,let:Gs,literal:Jr,match:gt,number:ar,"number-format":Ko,object:ar,slice:Zs,step:Un,string:ar,"to-boolean":gi,"to-color":gi,"to-number":gi,"to-string":gi,var:Us,within:Rr};function nl(i,[e,r,s,c]){e=e.evaluate(i),r=r.evaluate(i),s=s.evaluate(i);const h=c?c.evaluate(i):1,d=Fn(e,r,s,h);if(d)throw new jt(d);return new Qe(e/255,r/255,s/255,h,!1)}function sl(i,e){return i in e}function Qo(i,e){const r=e[i];return r===void 0?null:r}function mn(i){return{type:i}}function ol(i){return{result:"success",value:i}}function qn(i){return{result:"error",value:i}}function jn(i){return i["property-type"]==="data-driven"||i["property-type"]==="cross-faded-data-driven"}function al(i){return!!i.expression&&i.expression.parameters.indexOf("zoom")>-1}function ea(i){return!!i.expression&&i.expression.interpolated}function wt(i){return i instanceof Number?"number":i instanceof String?"string":i instanceof Boolean?"boolean":Array.isArray(i)?"array":i===null?"null":typeof i}function Xs(i){return typeof i=="object"&&i!==null&&!Array.isArray(i)}function Ic(i){return i}function ll(i,e){const r=e.type==="color",s=i.stops&&typeof i.stops[0][0]=="object",c=s||!(s||i.property!==void 0),h=i.type||(ea(e)?"exponential":"interval");if(r||e.type==="padding"){const T=r?Qe.parse:Ui.parse;(i=mr({},i)).stops&&(i.stops=i.stops.map(A=>[A[0],T(A[1])])),i.default=T(i.default?i.default:e.default)}if(i.colorSpace&&(d=i.colorSpace)!=="rgb"&&d!=="hcl"&&d!=="lab")throw new Error(`Unknown color space: "${i.colorSpace}"`);var d;let m,y,E;if(h==="exponential")m=cl;else if(h==="interval")m=ta;else if(h==="categorical"){m=Ac,y=Object.create(null);for(const T of i.stops)y[T[0]]=T[1];E=typeof i.stops[0][0]}else{if(h!=="identity")throw new Error(`Unknown function type "${h}"`);m=Cc}if(s){const T={},A=[];for(let D=0;DD[0]),evaluate:({zoom:D},q)=>cl({stops:M,base:i.base},e,D).evaluate(D,q)}}if(c){const T=h==="exponential"?{name:"exponential",base:i.base!==void 0?i.base:1}:null;return{kind:"camera",interpolationType:T,interpolationFactor:Ni.interpolationFactor.bind(void 0,T),zoomStops:i.stops.map(A=>A[0]),evaluate:({zoom:A})=>m(i,e,A,y,E)}}return{kind:"source",evaluate(T,A){const M=A&&A.properties?A.properties[i.property]:void 0;return M===void 0?hs(i.default,e.default):m(i,e,M,y,E)}}}function hs(i,e,r){return i!==void 0?i:e!==void 0?e:r!==void 0?r:void 0}function Ac(i,e,r,s,c){return hs(typeof r===c?s[r]:void 0,i.default,e.default)}function ta(i,e,r){if(wt(r)!=="number")return hs(i.default,e.default);const s=i.stops.length;if(s===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[s-1][0])return i.stops[s-1][1];const c=$s(i.stops.map(h=>h[0]),r);return i.stops[c][1]}function cl(i,e,r){const s=i.base!==void 0?i.base:1;if(wt(r)!=="number")return hs(i.default,e.default);const c=i.stops.length;if(c===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[c-1][0])return i.stops[c-1][1];const h=$s(i.stops.map(T=>T[0]),r),d=function(T,A,M,z){const D=z-M,q=T-M;return D===0?0:A===1?q/D:(Math.pow(A,q)-1)/(Math.pow(A,D)-1)}(r,s,i.stops[h][0],i.stops[h+1][0]),m=i.stops[h][1],y=i.stops[h+1][1],E=Vi[e.type]||Ic;return typeof m.evaluate=="function"?{evaluate(...T){const A=m.evaluate.apply(void 0,T),M=y.evaluate.apply(void 0,T);if(A!==void 0&&M!==void 0)return E(A,M,d,i.colorSpace)}}:E(m,y,d,i.colorSpace)}function Cc(i,e,r){switch(e.type){case"color":r=Qe.parse(r);break;case"formatted":r=mi.fromString(r.toString());break;case"resolvedImage":r=Qi.fromString(r.toString());break;case"padding":r=Ui.parse(r);break;default:wt(r)===e.type||e.type==="enum"&&e.values[r]||(r=void 0)}return hs(r,i.default,e.default)}er.register($n,{error:[{kind:"error"},[ot],(i,[e])=>{throw new jt(e.evaluate(i))}],typeof:[ot,[it],(i,[e])=>kt(Jt(e.evaluate(i)))],"to-rgba":[fi(Ee,4),[zi],(i,[e])=>{const[r,s,c,h]=e.evaluate(i).rgb;return[255*r,255*s,255*c,h]}],rgb:[zi,[Ee,Ee,Ee],nl],rgba:[zi,[Ee,Ee,Ee,Ee],nl],has:{type:nt,overloads:[[[ot],(i,[e])=>sl(e.evaluate(i),i.properties())],[[ot,ni],(i,[e,r])=>sl(e.evaluate(i),r.evaluate(i))]]},get:{type:it,overloads:[[[ot],(i,[e])=>Qo(e.evaluate(i),i.properties())],[[ot,ni],(i,[e,r])=>Qo(e.evaluate(i),r.evaluate(i))]]},"feature-state":[it,[ot],(i,[e])=>Qo(e.evaluate(i),i.featureState||{})],properties:[ni,[],i=>i.properties()],"geometry-type":[ot,[],i=>i.geometryType()],id:[it,[],i=>i.id()],zoom:[Ee,[],i=>i.globals.zoom],"heatmap-density":[Ee,[],i=>i.globals.heatmapDensity||0],"line-progress":[Ee,[],i=>i.globals.lineProgress||0],accumulated:[it,[],i=>i.globals.accumulated===void 0?null:i.globals.accumulated],"+":[Ee,mn(Ee),(i,e)=>{let r=0;for(const s of e)r+=s.evaluate(i);return r}],"*":[Ee,mn(Ee),(i,e)=>{let r=1;for(const s of e)r*=s.evaluate(i);return r}],"-":{type:Ee,overloads:[[[Ee,Ee],(i,[e,r])=>e.evaluate(i)-r.evaluate(i)],[[Ee],(i,[e])=>-e.evaluate(i)]]},"/":[Ee,[Ee,Ee],(i,[e,r])=>e.evaluate(i)/r.evaluate(i)],"%":[Ee,[Ee,Ee],(i,[e,r])=>e.evaluate(i)%r.evaluate(i)],ln2:[Ee,[],()=>Math.LN2],pi:[Ee,[],()=>Math.PI],e:[Ee,[],()=>Math.E],"^":[Ee,[Ee,Ee],(i,[e,r])=>Math.pow(e.evaluate(i),r.evaluate(i))],sqrt:[Ee,[Ee],(i,[e])=>Math.sqrt(e.evaluate(i))],log10:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))/Math.LN10],ln:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))],log2:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))/Math.LN2],sin:[Ee,[Ee],(i,[e])=>Math.sin(e.evaluate(i))],cos:[Ee,[Ee],(i,[e])=>Math.cos(e.evaluate(i))],tan:[Ee,[Ee],(i,[e])=>Math.tan(e.evaluate(i))],asin:[Ee,[Ee],(i,[e])=>Math.asin(e.evaluate(i))],acos:[Ee,[Ee],(i,[e])=>Math.acos(e.evaluate(i))],atan:[Ee,[Ee],(i,[e])=>Math.atan(e.evaluate(i))],min:[Ee,mn(Ee),(i,e)=>Math.min(...e.map(r=>r.evaluate(i)))],max:[Ee,mn(Ee),(i,e)=>Math.max(...e.map(r=>r.evaluate(i)))],abs:[Ee,[Ee],(i,[e])=>Math.abs(e.evaluate(i))],round:[Ee,[Ee],(i,[e])=>{const r=e.evaluate(i);return r<0?-Math.round(-r):Math.round(r)}],floor:[Ee,[Ee],(i,[e])=>Math.floor(e.evaluate(i))],ceil:[Ee,[Ee],(i,[e])=>Math.ceil(e.evaluate(i))],"filter-==":[nt,[ot,it],(i,[e,r])=>i.properties()[e.value]===r.value],"filter-id-==":[nt,[it],(i,[e])=>i.id()===e.value],"filter-type-==":[nt,[ot],(i,[e])=>i.geometryType()===e.value],"filter-<":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s{const r=i.id(),s=e.value;return typeof r==typeof s&&r":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s>c}],"filter-id->":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>s}],"filter-<=":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s<=c}],"filter-id-<=":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r<=s}],"filter->=":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s>=c}],"filter-id->=":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>=s}],"filter-has":[nt,[it],(i,[e])=>e.value in i.properties()],"filter-has-id":[nt,[],i=>i.id()!==null&&i.id()!==void 0],"filter-type-in":[nt,[fi(ot)],(i,[e])=>e.value.indexOf(i.geometryType())>=0],"filter-id-in":[nt,[fi(it)],(i,[e])=>e.value.indexOf(i.id())>=0],"filter-in-small":[nt,[ot,fi(it)],(i,[e,r])=>r.value.indexOf(i.properties()[e.value])>=0],"filter-in-large":[nt,[ot,fi(it)],(i,[e,r])=>function(s,c,h,d){for(;h<=d;){const m=h+d>>1;if(c[m]===s)return!0;c[m]>s?d=m-1:h=m+1}return!1}(i.properties()[e.value],r.value,0,r.value.length-1)],all:{type:nt,overloads:[[[nt,nt],(i,[e,r])=>e.evaluate(i)&&r.evaluate(i)],[mn(nt),(i,e)=>{for(const r of e)if(!r.evaluate(i))return!1;return!0}]]},any:{type:nt,overloads:[[[nt,nt],(i,[e,r])=>e.evaluate(i)||r.evaluate(i)],[mn(nt),(i,e)=>{for(const r of e)if(r.evaluate(i))return!0;return!1}]]},"!":[nt,[nt],(i,[e])=>!e.evaluate(i)],"is-supported-script":[nt,[ot],(i,[e])=>{const r=i.globals&&i.globals.isSupportedScript;return!r||r(e.evaluate(i))}],upcase:[ot,[ot],(i,[e])=>e.evaluate(i).toUpperCase()],downcase:[ot,[ot],(i,[e])=>e.evaluate(i).toLowerCase()],concat:[ot,mn(it),(i,e)=>e.map(r=>as(r.evaluate(i))).join("")],"resolved-locale":[ot,[Lr],(i,[e])=>e.evaluate(i).resolvedLocale()]});class ia{constructor(e,r){var s;this.expression=e,this._warningHistory={},this._evaluator=new Fs,this._defaultValue=r?(s=r).type==="color"&&Xs(s.default)?new Qe(0,0,0,0):s.type==="color"?Qe.parse(s.default)||null:s.type==="padding"?Ui.parse(s.default)||null:s.default===void 0?null:s.default:null,this._enumValues=r&&r.type==="enum"?r.values:null}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._evaluator.globals=e,this._evaluator.feature=r,this._evaluator.featureState=s,this._evaluator.canonical=c,this._evaluator.availableImages=h||null,this._evaluator.formattedSection=d,this.expression.evaluate(this._evaluator)}evaluate(e,r,s,c,h,d){this._evaluator.globals=e,this._evaluator.feature=r||null,this._evaluator.featureState=s||null,this._evaluator.canonical=c,this._evaluator.availableImages=h||null,this._evaluator.formattedSection=d||null;try{const m=this.expression.evaluate(this._evaluator);if(m==null||typeof m=="number"&&m!=m)return this._defaultValue;if(this._enumValues&&!(m in this._enumValues))throw new jt(`Expected value to be one of ${Object.keys(this._enumValues).map(y=>JSON.stringify(y)).join(", ")}, but found ${JSON.stringify(m)} instead.`);return m}catch(m){return this._warningHistory[m.message]||(this._warningHistory[m.message]=!0,typeof console<"u"&&console.warn(m.message)),this._defaultValue}}}function Ws(i){return Array.isArray(i)&&i.length>0&&typeof i[0]=="string"&&i[0]in $n}function Ft(i,e){const r=new Qr($n,Vs,[],e?function(c){const h={color:zi,string:ot,number:Ee,enum:ot,boolean:nt,formatted:Dr,padding:or,resolvedImage:Br};return c.type==="array"?fi(h[c.value]||it,c.length):h[c.type]}(e):void 0),s=r.parse(i,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return s?ol(new ia(s,e)):qn(r.errors)}class ra{constructor(e,r){this.kind=e,this._styleExpression=r,this.isStateDependent=e!=="constant"&&!On(r.expression)}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,c,h,d)}evaluate(e,r,s,c,h,d){return this._styleExpression.evaluate(e,r,s,c,h,d)}}class ut{constructor(e,r,s,c){this.kind=e,this.zoomStops=s,this._styleExpression=r,this.isStateDependent=e!=="camera"&&!On(r.expression),this.interpolationType=c}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,c,h,d)}evaluate(e,r,s,c,h,d){return this._styleExpression.evaluate(e,r,s,c,h,d)}interpolationFactor(e,r,s){return this.interpolationType?Ni.interpolationFactor(this.interpolationType,e,r,s):0}}function Ks(i,e){const r=Ft(i,e);if(r.result==="error")return r;const s=r.value.expression,c=cs(s);if(!c&&!jn(e))return qn([new yi("","data expressions not supported")]);const h=Ns(s,["zoom"]);if(!h&&!al(e))return qn([new yi("","zoom expressions not supported")]);const d=It(s);return d||h?d instanceof yi?qn([d]):d instanceof Ni&&!ea(e)?qn([new yi("",'"interpolate" expressions cannot be used with this property')]):ol(d?new ut(c?"camera":"composite",r.value,d.labels,d instanceof Ni?d.interpolation:void 0):new ra(c?"constant":"source",r.value)):qn([new yi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Mt{constructor(e,r){this._parameters=e,this._specification=r,mr(this,ll(this._parameters,this._specification))}static deserialize(e){return new Mt(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function It(i){let e=null;if(i instanceof Gs)e=It(i.result);else if(i instanceof js){for(const r of i.args)if(e=It(r),e)break}else(i instanceof Un||i instanceof Ni)&&i.input instanceof er&&i.input.name==="zoom"&&(e=i);return e instanceof yi||i.eachChild(r=>{const s=It(r);s instanceof yi?e=s:!e&&s?e=new yi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&s&&e!==s&&(e=new yi("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function Gn(i){if(i===!0||i===!1)return!0;if(!Array.isArray(i)||i.length===0)return!1;switch(i[0]){case"has":return i.length>=2&&i[1]!=="$id"&&i[1]!=="$type";case"in":return i.length>=3&&(typeof i[1]!="string"||Array.isArray(i[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return i.length!==3||Array.isArray(i[1])||Array.isArray(i[2]);case"any":case"all":for(const e of i.slice(1))if(!Gn(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}const ul={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function na(i){if(i==null)return{filter:()=>!0,needGeometry:!1};Gn(i)||(i=Ys(i));const e=Ft(i,ul);if(e.result==="error")throw new Error(e.value.map(r=>`${r.key}: ${r.message}`).join(", "));return{filter:(r,s,c)=>e.value.evaluate(r,s,{},c),needGeometry:hl(i)}}function kc(i,e){return ie?1:0}function hl(i){if(!Array.isArray(i))return!1;if(i[0]==="within")return!0;for(let e=1;e"||e==="<="||e===">="?Js(i[1],i[2],e):e==="any"?(r=i.slice(1),["any"].concat(r.map(Ys))):e==="all"?["all"].concat(i.slice(1).map(Ys)):e==="none"?["all"].concat(i.slice(1).map(Ys).map(ds)):e==="in"?sa(i[1],i.slice(2)):e==="!in"?ds(sa(i[1],i.slice(2))):e==="has"?oa(i[1]):e==="!has"?ds(oa(i[1])):e!=="within"||i;var r}function Js(i,e,r){switch(i){case"$type":return[`filter-type-${r}`,e];case"$id":return[`filter-id-${r}`,e];default:return[`filter-${r}`,i,e]}}function sa(i,e){if(e.length===0)return!1;switch(i){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(r=>typeof r!=typeof e[0])?["filter-in-large",i,["literal",e.sort(kc)]]:["filter-in-small",i,["literal",e]]}}function oa(i){switch(i){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",i]}}function ds(i){return["!",i]}function ps(i){const e=typeof i;if(e==="number"||e==="boolean"||e==="string"||i==null)return JSON.stringify(i);if(Array.isArray(i)){let c="[";for(const h of i)c+=`${ps(h)},`;return`${c}]`}const r=Object.keys(i).sort();let s="{";for(let c=0;cs.maximum?[new Te(e,r,`${r} is greater than the maximum value ${s.maximum}`)]:[]}function fl(i){const e=i.valueSpec,r=Gt(i.value.type);let s,c,h,d={};const m=r!=="categorical"&&i.value.property===void 0,y=!m,E=wt(i.value.stops)==="array"&&wt(i.value.stops[0])==="array"&&wt(i.value.stops[0][0])==="object",T=tr({key:i.key,value:i.value,valueSpec:i.styleSpec.function,validateSpec:i.validateSpec,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{stops:function(z){if(r==="identity")return[new Te(z.key,z.value,'identity function may not have a "stops" property')];let D=[];const q=z.value;return D=D.concat(pl({key:z.key,value:q,valueSpec:z.valueSpec,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec,arrayElementValidator:A})),wt(q)==="array"&&q.length===0&&D.push(new Te(z.key,q,"array must have at least one stop")),D},default:function(z){return z.validateSpec({key:z.key,value:z.value,valueSpec:e,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec})}}});return r==="identity"&&m&&T.push(new Te(i.key,i.value,'missing required property "property"')),r==="identity"||i.value.stops||T.push(new Te(i.key,i.value,'missing required property "stops"')),r==="exponential"&&i.valueSpec.expression&&!ea(i.valueSpec)&&T.push(new Te(i.key,i.value,"exponential functions not supported")),i.styleSpec.$version>=8&&(y&&!jn(i.valueSpec)?T.push(new Te(i.key,i.value,"property functions not supported")):m&&!al(i.valueSpec)&&T.push(new Te(i.key,i.value,"zoom functions not supported"))),r!=="categorical"&&!E||i.value.property!==void 0||T.push(new Te(i.key,i.value,'"property" property is required')),T;function A(z){let D=[];const q=z.value,N=z.key;if(wt(q)!=="array")return[new Te(N,q,`array expected, ${wt(q)} found`)];if(q.length!==2)return[new Te(N,q,`array length 2 expected, length ${q.length} found`)];if(E){if(wt(q[0])!=="object")return[new Te(N,q,`object expected, ${wt(q[0])} found`)];if(q[0].zoom===void 0)return[new Te(N,q,"object stop key must have zoom")];if(q[0].value===void 0)return[new Te(N,q,"object stop key must have value")];if(h&&h>Gt(q[0].zoom))return[new Te(N,q[0].zoom,"stop zoom values must appear in ascending order")];Gt(q[0].zoom)!==h&&(h=Gt(q[0].zoom),c=void 0,d={}),D=D.concat(tr({key:`${N}[0]`,value:q[0],valueSpec:{zoom:{}},validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec,objectElementValidators:{zoom:aa,value:M}}))}else D=D.concat(M({key:`${N}[0]`,value:q[0],valueSpec:{},validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec},q));return Ws(gn(q[1]))?D.concat([new Te(`${N}[1]`,q[1],"expressions are not allowed in function stops.")]):D.concat(z.validateSpec({key:`${N}[1]`,value:q[1],valueSpec:e,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec}))}function M(z,D){const q=wt(z.value),N=Gt(z.value),te=z.value!==null?z.value:D;if(s){if(q!==s)return[new Te(z.key,te,`${q} stop domain type must match previous stop domain type ${s}`)]}else s=q;if(q!=="number"&&q!=="string"&&q!=="boolean")return[new Te(z.key,te,"stop domain value must be a number, string, or boolean")];if(q!=="number"&&r!=="categorical"){let re=`number expected, ${q} found`;return jn(e)&&r===void 0&&(re+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Te(z.key,te,re)]}return r!=="categorical"||q!=="number"||isFinite(N)&&Math.floor(N)===N?r!=="categorical"&&q==="number"&&c!==void 0&&Nnew Te(`${i.key}${s.key}`,i.value,s.message));const r=e.value.expression||e.value._styleExpression.expression;if(i.expressionContext==="property"&&i.propertyKey==="text-font"&&!r.outputDefined())return[new Te(i.key,i.value,`Invalid data expression for "${i.propertyKey}". Output values must be contained as literals within the expression.`)];if(i.expressionContext==="property"&&i.propertyType==="layout"&&!On(r))return[new Te(i.key,i.value,'"feature-state" data expressions are not supported with layout properties.')];if(i.expressionContext==="filter"&&!On(r))return[new Te(i.key,i.value,'"feature-state" data expressions are not supported with filters.')];if(i.expressionContext&&i.expressionContext.indexOf("cluster")===0){if(!Ns(r,["zoom","feature-state"]))return[new Te(i.key,i.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(i.expressionContext==="cluster-initial"&&!cs(r))return[new Te(i.key,i.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function fs(i){const e=i.key,r=i.value,s=i.valueSpec,c=[];return Array.isArray(s.values)?s.values.indexOf(Gt(r))===-1&&c.push(new Te(e,r,`expected one of [${s.values.join(", ")}], ${JSON.stringify(r)} found`)):Object.keys(s.values).indexOf(Gt(r))===-1&&c.push(new Te(e,r,`expected one of [${Object.keys(s.values).join(", ")}], ${JSON.stringify(r)} found`)),c}function Zn(i){return Gn(gn(i.value))?_n(mr({},i,{expressionContext:"filter",valueSpec:{value:"boolean"}})):ml(i)}function ml(i){const e=i.value,r=i.key;if(wt(e)!=="array")return[new Te(r,e,`array expected, ${wt(e)} found`)];const s=i.styleSpec;let c,h=[];if(e.length<1)return[new Te(r,e,"filter array must have at least 1 element")];switch(h=h.concat(fs({key:`${r}[0]`,value:e[0],valueSpec:s.filter_operator,style:i.style,styleSpec:i.styleSpec})),Gt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Gt(e[1])==="$type"&&h.push(new Te(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&h.push(new Te(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(c=wt(e[1]),c!=="string"&&h.push(new Te(`${r}[1]`,e[1],`string expected, ${c} found`)));for(let d=2;dF.indexOf(g)<0:F=>F.indexOf("__svelte")===-1),R=b.length-C.length;R&&(f.style.animation=C.join(", "),oc-=R,oc||tm())}function tm(){Du(()=>{oc||(sc.forEach(f=>{const{ownerNode:g}=f.stylesheet;g&&kn(g)}),sc.clear())})}let Ga;function ja(f){Ga=f}function Za(){if(!Ga)throw new Error("Function called outside component initialization");return Ga}function im(f){Za().$$.on_mount.push(f)}function rm(f){Za().$$.on_destroy.push(f)}function nm(){const f=Za();return(g,b,{cancelable:C=!1}={})=>{const R=f.$$.callbacks[g];if(R){const F=Vd(g,b,{cancelable:C});return R.slice().forEach(Z=>{Z.call(f,F)}),!F.defaultPrevented}return!0}}function $g(f,g){return Za().$$.context.set(f,g),g}function qg(f){return Za().$$.context.get(f)}function sm(f,g){const b=f.$$.callbacks[g.type];b&&b.slice().forEach(C=>C.call(this,g))}const Lo=[],ku=[];let Bo=[];const Mu=[],om=Promise.resolve();let Pu=!1;function am(){Pu||(Pu=!0,om.then(Nd))}function ac(f){Bo.push(f)}function jg(f){Mu.push(f)}const Au=new Set;let Po=0;function Nd(){if(Po!==0)return;const f=Ga;do{try{for(;Pof.indexOf(C)===-1?g.push(C):b.push(C)),b.forEach(C=>C()),Bo=g}let qa;function um(){return qa||(qa=Promise.resolve(),qa.then(()=>{qa=null})),qa}function Cu(f,g,b){f.dispatchEvent(Vd(`${g?"intro":"outro"}${b}`))}const tc=new Set;let In;function hm(){In={r:0,c:[],p:In}}function dm(){In.r||ts(In.c),In=In.p}function jr(f,g){f&&f.i&&(tc.delete(f),f.i(g))}function Cn(f,g,b,C){if(f&&f.o){if(tc.has(f))return;tc.add(f),In.c.push(()=>{tc.delete(f),C&&(b&&f.d(1),C())}),f.o(g)}else C&&C()}const pm={duration:0};function Gg(f,g,b,C){let F=g(f,b,{direction:"both"}),Z=C?0:1,a=null,W=null,B=null,he;function se(){B&&em(f,B)}function ke(fe,Le){const qe=fe.b-Z;return Le*=Math.abs(qe),{a:Z,b:fe.b,d:qe,duration:Le,start:fe.start,end:fe.start+Le,group:fe.group}}function Pe(fe){const{delay:Le=0,duration:qe=300,easing:Ae=$f,tick:Je=Gr,css:Ge}=F||pm,pt={start:Gf()+Le,b:fe};fe||(pt.group=In,In.r+=1),"inert"in f&&(fe?he!==void 0&&(f.inert=he):(he=f.inert,f.inert=!0)),a||W?W=pt:(Ge&&(se(),B=kd(f,Z,fe,qe,Le,Ae,Ge)),fe&&Je(0,1),a=ke(pt,qe),ac(()=>Cu(f,fe,"start")),Zf(Pt=>{if(W&&Pt>W.start&&(a=ke(W,qe),W=null,Cu(f,a.b,"start"),Ge&&(se(),B=kd(f,Z,a.b,a.duration,0,Ae,F.css))),a){if(Pt>=a.end)Je(Z=a.b,1-Z),Cu(f,a.b,"end"),W||(a.b?se():--a.group.r||ts(a.group.c)),a=null;else if(Pt>=a.start){const ri=Pt-a.start;Z=a.a+a.d*Ae(ri/a.duration),Je(Z,1-Z)}}return!!(a||W)}))}return{run(fe){Lu(F)?um().then(()=>{F=F({direction:fe?"in":"out"}),Pe(fe)}):Pe(fe)},end(){se(),a=W=null}}}function Zg(f){return(f==null?void 0:f.length)!==void 0?f:Array.from(f)}function Hg(f,g){Cn(f,1,1,()=>{g.delete(f.key)})}function Xg(f,g,b,C,R,F,Z,a,W,B,he,se){let ke=f.length,Pe=F.length,fe=ke;const Le={};for(;fe--;)Le[f[fe].key]=fe;const qe=[],Ae=new Map,Je=new Map,Ge=[];for(fe=Pe;fe--;){const At=se(R,F,fe),Ct=b(At);let qt=Z.get(Ct);qt?C&&Ge.push(()=>qt.p(At,g)):(qt=B(Ct,At),qt.c()),Ae.set(Ct,qe[fe]=qt),Ct in Le&&Je.set(Ct,Math.abs(fe-Le[Ct]))}const pt=new Set,Pt=new Set;function ri(At){jr(At,1),At.m(a,he),Z.set(At.key,At),he=At.first,Pe--}for(;ke&&Pe;){const At=qe[Pe-1],Ct=f[ke-1],qt=At.key,Dt=Ct.key;At===Ct?(he=At.first,ke--,Pe--):Ae.has(Dt)?!Z.has(qt)||pt.has(qt)?ri(At):Pt.has(Dt)?ke--:Je.get(qt)>Je.get(Dt)?(Pt.add(qt),ri(At)):(pt.add(Dt),ke--):(W(Ct,Z),ke--)}for(;ke--;){const At=f[ke];Ae.has(At.key)||W(At,Z)}for(;Pe;)ri(qe[Pe-1]);return ts(Ge),qe}function fm(f,g){const b={},C={},R={$$scope:1};let F=f.length;for(;F--;){const Z=f[F],a=g[F];if(a){for(const W in Z)W in a||(C[W]=1);for(const W in a)R[W]||(b[W]=a[W],R[W]=1);f[F]=a}else for(const W in Z)R[W]=1}for(const Z in C)Z in b||(b[Z]=void 0);return b}function Wg(f,g,b){const C=f.$$.props[g];C!==void 0&&(f.$$.bound[C]=b,b(f.$$.ctx[C]))}function $d(f){f&&f.c()}function Ru(f,g,b){const{fragment:C,after_update:R}=f.$$;C&&C.m(g,b),ac(()=>{const F=f.$$.on_mount.map(Dd).filter(Lu);f.$$.on_destroy?f.$$.on_destroy.push(...F):ts(F),f.$$.on_mount=[]}),R.forEach(ac)}function Fu(f,g){const b=f.$$;b.fragment!==null&&(cm(b.after_update),ts(b.on_destroy),b.fragment&&b.fragment.d(g),b.on_destroy=b.fragment=null,b.ctx=[])}function mm(f,g){f.$$.dirty[0]===-1&&(Lo.push(f),am(),f.$$.dirty.fill(0)),f.$$.dirty[g/31|0]|=1<{const fe=Pe.length?Pe[0]:ke;return B.ctx&&R(B.ctx[se],B.ctx[se]=fe)&&(!B.skip_bound&&B.bound[se]&&B.bound[se](fe),he&&mm(f,se)),ke}):[],B.update(),he=!0,ts(B.before_update),B.fragment=C?C(B.ctx):!1,g.target){if(g.hydrate){const se=Yf(g.target);B.fragment&&B.fragment.l(se),se.forEach(kn)}else B.fragment&&B.fragment.c();g.intro&&jr(f.$$.fragment),Ru(f,g.target,g.anchor),Nd()}ja(W)}class Ps{constructor(){Iu(this,"$$");Iu(this,"$$set")}$destroy(){Fu(this,1),this.$destroy=Gr}$on(g,b){if(!Lu(b))return Gr;const C=this.$$.callbacks[g]||(this.$$.callbacks[g]=[]);return C.push(b),()=>{const R=C.indexOf(b);R!==-1&&C.splice(R,1)}}$set(g){this.$$set&&!qf(g)&&(this.$$.skip_bound=!0,this.$$set(g),this.$$.skip_bound=!1)}}const gm="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(gm);function Wt(f,g){if(window.NodeList.prototype.forEach)return f.forEach(g);for(var b=0;b1&&R.shift();var F=R.join(".");b[F]=f[C]}}return b}(function(f){var g="defineProperty"in Object&&function(){try{var b={};return Object.defineProperty(b,"test",{value:42}),!0}catch{return!1}}();g||function(b){var C=Object.prototype.hasOwnProperty("__defineGetter__"),R="Getters & setters cannot be defined on this javascript engine",F="A property cannot both have accessors and be writable or have a value";Object.defineProperty=function(a,W,B){if(b&&(a===window||a===document||a===Element.prototype||a instanceof Element))return b(a,W,B);if(a===null||!(a instanceof Object||typeof a=="object"))throw new TypeError("Object.defineProperty called on non-object");if(!(B instanceof Object))throw new TypeError("Property description must be an object");var he=String(W),se="value"in B||"writable"in B,ke="get"in B&&typeof B.get,Pe="set"in B&&typeof B.set;if(ke){if(ke!=="function")throw new TypeError("Getter must be a function");if(!C)throw new TypeError(R);if(se)throw new TypeError(F);Object.__defineGetter__.call(a,he,B.get)}else a[he]=B.value;if(Pe){if(Pe!=="function")throw new TypeError("Setter must be a function");if(!C)throw new TypeError(R);if(se)throw new TypeError(F);Object.__defineSetter__.call(a,he,B.set)}return"value"in B&&(a[he]=B.value),a}}(Object.defineProperty)}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="Document"in this;g||typeof WorkerGlobalScope>"u"&&typeof importScripts!="function"&&(this.HTMLDocument?this.Document=this.HTMLDocument:(this.Document=this.HTMLDocument=document.constructor=new Function("return function Document() {}")(),this.Document.prototype=document))}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="Element"in this&&"HTMLElement"in this;g||function(){if(window.Element&&!window.HTMLElement){window.HTMLElement=window.Element;return}window.Element=window.HTMLElement=new Function("return function Element() {}")();var b=document.appendChild(document.createElement("body")),C=b.appendChild(document.createElement("iframe")),R=C.contentWindow.document,F=Element.prototype=R.appendChild(R.createElement("*")),Z={},a=function(Pe,fe){var Le=Pe.childNodes||[],qe=-1,Ae,Je,Ge;if(Pe.nodeType===1&&Pe.constructor!==Element){Pe.constructor=Element;for(Ae in Z)Je=Z[Ae],Pe[Ae]=Je}for(;Ge=fe&&Le[++qe];)a(Ge,fe);return Pe},W=document.getElementsByTagName("*"),B=document.createElement,he,se=100;F.attachEvent("onpropertychange",function(Pe){for(var fe=Pe.propertyName,Le=!Z.hasOwnProperty(fe),qe=F[fe],Ae=Z[fe],Je=-1,Ge;Ge=W[++Je];)Ge.nodeType===1&&(Le||Ge[fe]===Ae)&&(Ge[fe]=qe);Z[fe]=qe}),F.constructor=Element,F.hasAttribute||(F.hasAttribute=function(fe){return this.getAttribute(fe)!==null});function ke(){return se--||clearTimeout(he),document.body&&!document.body.prototype&&/(complete|interactive)/.test(document.readyState)?(a(document,!0),he&&document.body.prototype&&clearTimeout(he),!!document.body.prototype):!1}ke()||(document.onreadystatechange=ke,he=setInterval(ke,25)),document.createElement=function(fe){var Le=B(String(fe).toLowerCase());return a(Le)},document.removeChild(b)}()}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g=function(){if(!document.documentElement.dataset)return!1;var b=document.createElement("div");return b.setAttribute("data-a-b","c"),b.dataset&&b.dataset.aB=="c"}();g||Object.defineProperty(Element.prototype,"dataset",{get:function(){for(var b=this,C=this.attributes,R={},F=0;F0&&isFinite(Number(g))?Number(g):f}function Oo(f){var g={};for(var b in f)g[b]=ym(f[b]);return g}function Oi(f,g){this.translations=f||{},this.locale=g&&g.locale||document.documentElement.lang||"en"}Oi.prototype.t=function(f,g){if(!f)throw new Error("i18n: lookup key missing");g&&typeof g.count=="number"&&(f=f+"."+this.getPluralSuffix(f,g.count));var b=this.translations[f];if(typeof b=="string")if(b.match(/%{(.\S+)}/)){if(!g)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(b,g)}else return b;else return f};Oi.prototype.replacePlaceholders=function(f,g){var b;return this.hasIntlNumberFormatSupport()&&(b=new Intl.NumberFormat(this.locale)),f.replace(/%{(.\S+)}/g,function(C,R){if(Object.prototype.hasOwnProperty.call(g,R)){var F=g[R];return F===!1||typeof F!="number"&&typeof F!="string"?"":typeof F=="number"?b?b.format(F):F.toString():F}else throw new Error("i18n: no data found to replace "+C+" placeholder in string")})};Oi.prototype.hasIntlPluralRulesSupport=function(){return!!(window.Intl&&"PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)};Oi.prototype.hasIntlNumberFormatSupport=function(){return!!(window.Intl&&"NumberFormat"in window.Intl&&Intl.NumberFormat.supportedLocalesOf(this.locale).length)};Oi.prototype.getPluralSuffix=function(f,g){if(g=Number(g),!isFinite(g))return"other";var b;if(this.hasIntlPluralRulesSupport()?b=new Intl.PluralRules(this.locale).select(g):b=this.selectPluralFormUsingFallbackRules(g),f+"."+b in this.translations)return b;if(f+".other"in this.translations)return console&&"warn"in console&&console.warn('i18n: Missing plural form ".'+b+'" for "'+this.locale+'" locale. Falling back to ".other".'),"other";throw new Error('i18n: Plural form ".other" is required for "'+this.locale+'" locale')};Oi.prototype.selectPluralFormUsingFallbackRules=function(f){f=Math.abs(Math.floor(f));var g=this.getPluralRulesForLocale();return g?Oi.pluralRules[g](f):"other"};Oi.prototype.getPluralRulesForLocale=function(){var f=this.locale,g=f.split("-")[0];for(var b in Oi.pluralRulesMap)if(Object.prototype.hasOwnProperty.call(Oi.pluralRulesMap,b)){for(var C=Oi.pluralRulesMap[b],R=0;R=3&&f%100<=10?"few":f%100>=11&&f%100<=99?"many":"other"},chinese:function(){return"other"},french:function(f){return f===0||f===1?"one":"other"},german:function(f){return f===1?"one":"other"},irish:function(f){return f===1?"one":f===2?"two":f>=3&&f<=6?"few":f>=7&&f<=10?"many":"other"},russian:function(f){var g=f%100,b=g%10;return b===1&&g!==11?"one":b>=2&&b<=4&&!(g>=12&&g<=14)?"few":b===0||b>=5&&b<=9||g>=11&&g<=14?"many":"other"},scottish:function(f){return f===1||f===11?"one":f===2||f===12?"two":f>=3&&f<=10||f>=13&&f<=19?"few":"other"},spanish:function(f){return f===1?"one":f%1e6===0&&f!==0?"many":"other"},welsh:function(f){return f===0?"zero":f===1?"one":f===2?"two":f===3?"few":f===6?"many":"other"}};(function(f){var g="DOMTokenList"in this&&function(b){return"classList"in b?!b.classList.toggle("x",!1)&&!b.className:!0}(document.createElement("x"));g||function(b){var C="DOMTokenList"in b&&b.DOMTokenList;(!C||document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg")&&!(document.createElementNS("http://www.w3.org/2000/svg","svg").classList instanceof DOMTokenList))&&(b.DOMTokenList=function(){var R=!0,F=function(a,W,B,he){Object.defineProperty?Object.defineProperty(a,W,{configurable:R===!1?!0:!!he,get:B}):a.__defineGetter__(W,B)};try{F({},"support")}catch{R=!1}var Z=function(a,W){var B=this,he=[],se={},ke=0,Pe=0,fe=function(Ae){F(B,Ae,function(){return qe(),he[Ae]},!1)},Le=function(){if(ke>=Pe)for(;Pe>>0,typeof a[W]=="object"?a[W].baseVal=he.join(" "):a[W]=he.join(" "),Le())},B.remove=function(){qe.apply(B,Ae=arguments);for(var Ae,Je={},Ge=0,pt=[];Ge>>0,typeof a[W]=="object"?a[W].baseVal=he.join(" "):a[W]=he.join(" "),Le()},B.toggle=function(Ae,Je){return qe.apply(B,[Ae]),f!==Je?Je?(B.add(Ae),!0):(B.remove(Ae),!1):se[Ae]?(B.remove(Ae),!1):(B.add(Ae),!0)},B};return Z}()),function(){var R=document.createElement("span");"classList"in R&&(R.classList.toggle("x",!1),R.classList.contains("x")&&(R.classList.constructor.prototype.toggle=function(Z){var a=arguments[1];if(a===f){var W=!this.contains(Z);return this[W?"add":"remove"](Z),W}return a=!!a,this[a?"add":"remove"](Z),a}))}(),function(){var R=document.createElement("span");if("classList"in R&&(R.classList.add("a","b"),!R.classList.contains("b"))){var F=R.classList.constructor.prototype.add;R.classList.constructor.prototype.add=function(){for(var Z=arguments,a=arguments.length,W=0;W"u"&&typeof importScripts!="function"&&function(b){b.constructor?b.Window=b.constructor:(b.Window=b.constructor=new Function("return function Window() {}")()).prototype=this}(this)}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g=function(b){if(!("Event"in b))return!1;if(typeof b.Event=="function")return!0;try{return new Event("click"),!0}catch{return!1}}(this);g||function(){var b={click:1,dblclick:1,keyup:1,keypress:1,keydown:1,mousedown:1,mouseup:1,mousemove:1,mouseover:1,mouseenter:1,mouseleave:1,mouseout:1,storage:1,storagecommit:1,textinput:1};if(typeof document>"u"||typeof window>"u")return;function C(F,Z){for(var a=-1,W=F.length;++a=this.lastInputTimestamp)&&this.updateIfValueChanged()}.bind(this),1e3)};sr.prototype.handleBlur=function(){clearInterval(this.valueChecker)};sr.prototype.updateIfValueChanged=function(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())};sr.prototype.updateCountMessage=function(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()};sr.prototype.updateVisibleCountMessage=function(){var f=this.$textarea,g=this.$visibleCountMessage,b=this.maxLength-this.count(f.value);this.isOverThreshold()?g.classList.remove("govuk-character-count__message--disabled"):g.classList.add("govuk-character-count__message--disabled"),b<0?(f.classList.add("govuk-textarea--error"),g.classList.remove("govuk-hint"),g.classList.add("govuk-error-message")):(f.classList.remove("govuk-textarea--error"),g.classList.remove("govuk-error-message"),g.classList.add("govuk-hint")),g.innerText=this.getCountMessage()};sr.prototype.updateScreenReaderCountMessage=function(){var f=this.$screenReaderCountMessage;this.isOverThreshold()?f.removeAttribute("aria-hidden"):f.setAttribute("aria-hidden","true"),f.innerText=this.getCountMessage()};sr.prototype.count=function(f){if("maxwords"in this.config&&this.config.maxwords){var g=f.match(/\S+/g)||[];return g.length}else return f.length};sr.prototype.getCountMessage=function(){var f=this.maxLength-this.count(this.$textarea.value),g="maxwords"in this.config&&this.config.maxwords?"words":"characters";return this.formatCountMessage(f,g)};sr.prototype.formatCountMessage=function(f,g){if(f===0)return this.i18n.t(g+"AtLimit");var b=f<0?"OverLimit":"UnderLimit";return this.i18n.t(g+b,{count:Math.abs(f)})};sr.prototype.isOverThreshold=function(){if(!this.config.threshold)return!0;var f=this.$textarea,g=this.count(f.value),b=this.maxLength,C=b*this.config.threshold/100;return C<=g};function zs(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll('input[type="checkbox"]');if(!g.length)return this;this.$module=f,this.$inputs=g}zs.prototype.init=function(){if(!(!this.$module||!this.$inputs)){var f=this.$module,g=this.$inputs;Wt(g,function(b){var C=b.getAttribute("data-aria-controls");!C||!document.getElementById(C)||(b.setAttribute("aria-controls",C),b.removeAttribute("data-aria-controls"))}),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.syncAllConditionalReveals.bind(this)),this.syncAllConditionalReveals(),f.addEventListener("click",this.handleClick.bind(this))}};zs.prototype.syncAllConditionalReveals=function(){Wt(this.$inputs,this.syncConditionalRevealWithInputState.bind(this))};zs.prototype.syncConditionalRevealWithInputState=function(f){var g=f.getAttribute("aria-controls");if(g){var b=document.getElementById(g);if(b&&b.classList.contains("govuk-checkboxes__conditional")){var C=f.checked;f.setAttribute("aria-expanded",C.toString()),b.classList.toggle("govuk-checkboxes__conditional--hidden",!C)}}};zs.prototype.unCheckAllInputsExcept=function(f){var g=this,b=document.querySelectorAll('input[type="checkbox"][name="'+f.name+'"]');Wt(b,function(C){var R=f.form===C.form;R&&C!==f&&(C.checked=!1,g.syncConditionalRevealWithInputState(C))})};zs.prototype.unCheckExclusiveInputs=function(f){var g=this,b=document.querySelectorAll('input[data-behaviour="exclusive"][type="checkbox"][name="'+f.name+'"]');Wt(b,function(C){var R=f.form===C.form;R&&(C.checked=!1,g.syncConditionalRevealWithInputState(C))})};zs.prototype.handleClick=function(f){var g=f.target;if(!(!(g instanceof HTMLInputElement)||g.type!=="checkbox")){var b=g.getAttribute("aria-controls");if(b&&this.syncConditionalRevealWithInputState(g),!!g.checked){var C=g.getAttribute("data-behaviour")==="exclusive";C?this.unCheckAllInputsExcept(g):this.unCheckExclusiveInputs(g)}}};var Sm=13,Md=32;function Ha(f){if(!(f instanceof HTMLElement))return this;this.$module=f,this.$summary=null,this.$content=null}Ha.prototype.init=function(){if(this.$module){var f="HTMLDetailsElement"in window&&this.$module instanceof HTMLDetailsElement;f||this.polyfillDetails()}};Ha.prototype.polyfillDetails=function(){var f=this.$module,g=this.$summary=f.getElementsByTagName("summary").item(0),b=this.$content=f.getElementsByTagName("div").item(0);!g||!b||(b.id||(b.id="details-content-"+_m()),f.setAttribute("role","group"),g.setAttribute("role","button"),g.setAttribute("aria-controls",b.id),g.tabIndex=0,this.$module.hasAttribute("open")?g.setAttribute("aria-expanded","true"):(g.setAttribute("aria-expanded","false"),b.style.display="none"),this.polyfillHandleInputs(this.polyfillSetAttributes.bind(this)))};Ha.prototype.polyfillSetAttributes=function(){return this.$module.hasAttribute("open")?(this.$module.removeAttribute("open"),this.$summary.setAttribute("aria-expanded","false"),this.$content.style.display="none"):(this.$module.setAttribute("open","open"),this.$summary.setAttribute("aria-expanded","true"),this.$content.style.display=""),!0};Ha.prototype.polyfillHandleInputs=function(f){this.$summary.addEventListener("keypress",function(g){var b=g.target;(g.keyCode===Sm||g.keyCode===Md)&&b instanceof HTMLElement&&b.nodeName.toLowerCase()==="summary"&&(g.preventDefault(),b.click?b.click():f(g))}),this.$summary.addEventListener("keyup",function(g){var b=g.target;g.keyCode===Md&&b instanceof HTMLElement&&b.nodeName.toLowerCase()==="summary"&&g.preventDefault()}),this.$summary.addEventListener("click",f)};function Ls(f,g){if(!(f instanceof HTMLElement))return this;this.$module=f;var b={disableAutoFocus:!1};this.config=Fo(b,g||{},Oo(f.dataset))}Ls.prototype.init=function(){if(this.$module){var f=this.$module;this.setFocus(),f.addEventListener("click",this.handleClick.bind(this))}};Ls.prototype.setFocus=function(){var f=this.$module;this.config.disableAutoFocus||(f.setAttribute("tabindex","-1"),f.addEventListener("blur",function(){f.removeAttribute("tabindex")}),f.focus())};Ls.prototype.handleClick=function(f){var g=f.target;this.focusTarget(g)&&f.preventDefault()};Ls.prototype.focusTarget=function(f){if(!(f instanceof HTMLAnchorElement))return!1;var g=this.getFragmentFromUrl(f.href);if(!g)return!1;var b=document.getElementById(g);if(!b)return!1;var C=this.getAssociatedLegendOrLabel(b);return C?(C.scrollIntoView(),b.focus({preventScroll:!0}),!0):!1};Ls.prototype.getFragmentFromUrl=function(f){if(f.indexOf("#")!==-1)return f.split("#").pop()};Ls.prototype.getAssociatedLegendOrLabel=function(f){var g=f.closest("fieldset");if(g){var b=g.getElementsByTagName("legend");if(b.length){var C=b[0];if(f instanceof HTMLInputElement&&(f.type==="checkbox"||f.type==="radio"))return C;var R=C.getBoundingClientRect().top,F=f.getBoundingClientRect();if(F.height&&window.innerHeight){var Z=F.top+F.height;if(Z-R0?this.$indicatorContainer.classList.add("govuk-exit-this-page__indicator--visible"):this.$indicatorContainer.classList.remove("govuk-exit-this-page__indicator--visible");var f=this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light");Wt(f,function(g,b){g.classList.toggle("govuk-exit-this-page__indicator-light--on",b=3?(this.keypressCounter=0,this.keypressTimeoutId!==null&&(clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null),this.exitPage()):this.keypressCounter===1?this.$updateSpan.innerText=this.i18n.t("pressTwoMoreTimes"):this.$updateSpan.innerText=this.i18n.t("pressOneMoreTime"),this.setKeypressTimer()):this.keypressTimeoutId!==null&&this.resetKeypressTimer(),this.lastKeyWasModified=f.shiftKey};Ar.prototype.setKeypressTimer=function(){clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=setTimeout(this.resetKeypressTimer.bind(this),this.timeoutTime)};Ar.prototype.resetKeypressTimer=function(){clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null,this.keypressCounter=0,this.$updateSpan.innerText=this.i18n.t("timedOut"),this.timeoutMessageId=setTimeout(function(){this.$updateSpan.innerText=""}.bind(this),this.timeoutTime),this.updateIndicator()};Ar.prototype.resetPage=function(){document.body.classList.remove("govuk-exit-this-page-hide-content"),this.$overlay&&(this.$overlay.remove(),this.$overlay=null),this.$updateSpan.setAttribute("role","status"),this.$updateSpan.innerText="",this.updateIndicator(),this.keypressTimeoutId&&clearTimeout(this.keypressTimeoutId),this.timeoutMessageId&&clearTimeout(this.timeoutMessageId)};Ar.prototype.init=function(){this.buildIndicator(),this.initUpdateSpan(),this.initButtonClickHandler(),"govukFrontendExitThisPageKeypress"in document.body.dataset||(document.addEventListener("keyup",this.handleKeypress.bind(this),!0),document.body.dataset.govukFrontendExitThisPageKeypress="true"),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.resetPage.bind(this))};function mc(f){if(!(f instanceof HTMLElement))return this;this.$module=f,this.$menuButton=f.querySelector(".govuk-js-header-toggle"),this.$menu=this.$menuButton&&f.querySelector("#"+this.$menuButton.getAttribute("aria-controls")),this.menuIsOpen=!1,this.mql=null}mc.prototype.init=function(){!this.$module||!this.$menuButton||!this.$menu||("matchMedia"in window?(this.mql=window.matchMedia("(min-width: 48.0625em)"),"addEventListener"in this.mql?this.mql.addEventListener("change",this.syncState.bind(this)):this.mql.addListener(this.syncState.bind(this)),this.syncState(),this.$menuButton.addEventListener("click",this.handleMenuButtonClick.bind(this))):this.$menuButton.setAttribute("hidden",""))};mc.prototype.syncState=function(){this.mql.matches?(this.$menu.removeAttribute("hidden"),this.$menuButton.setAttribute("hidden","")):(this.$menuButton.removeAttribute("hidden"),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden",""))};mc.prototype.handleMenuButtonClick=function(){this.menuIsOpen=!this.menuIsOpen,this.syncState()};function Uu(f,g){if(!(f instanceof HTMLElement))return this;this.$module=f;var b={disableAutoFocus:!1};this.config=Fo(b,g||{},Oo(f.dataset))}Uu.prototype.init=function(){this.$module&&this.setFocus()};Uu.prototype.setFocus=function(){var f=this.$module;this.config.disableAutoFocus||f.getAttribute("role")==="alert"&&(f.getAttribute("tabindex")||(f.setAttribute("tabindex","-1"),f.addEventListener("blur",function(){f.removeAttribute("tabindex")})),f.focus())};function Xa(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll('input[type="radio"]');if(!g.length)return this;this.$module=f,this.$inputs=g}Xa.prototype.init=function(){if(!(!this.$module||!this.$inputs)){var f=this.$module,g=this.$inputs;Wt(g,function(b){var C=b.getAttribute("data-aria-controls");!C||!document.getElementById(C)||(b.setAttribute("aria-controls",C),b.removeAttribute("data-aria-controls"))}),window.addEventListener("onpageshow"in window?"pageshow":"DOMContentLoaded",this.syncAllConditionalReveals.bind(this)),this.syncAllConditionalReveals(),f.addEventListener("click",this.handleClick.bind(this))}};Xa.prototype.syncAllConditionalReveals=function(){Wt(this.$inputs,this.syncConditionalRevealWithInputState.bind(this))};Xa.prototype.syncConditionalRevealWithInputState=function(f){var g=f.getAttribute("aria-controls");if(g){var b=document.getElementById(g);if(b&&b.classList.contains("govuk-radios__conditional")){var C=f.checked;f.setAttribute("aria-expanded",C.toString()),b.classList.toggle("govuk-radios__conditional--hidden",!C)}}};Xa.prototype.handleClick=function(f){var g=this,b=f.target;if(!(!(b instanceof HTMLInputElement)||b.type!=="radio")){var C=document.querySelectorAll('input[type="radio"][aria-controls]'),R=b.form,F=b.name;Wt(C,function(Z){var a=Z.form===R,W=Z.name===F;W&&a&&g.syncConditionalRevealWithInputState(Z)})}};function Uo(f){if(!(f instanceof HTMLAnchorElement))return this;this.$module=f,this.$linkedElement=null,this.linkedElementListener=!1}Uo.prototype.init=function(){if(this.$module){var f=this.getLinkedElement();f&&(this.$linkedElement=f,this.$module.addEventListener("click",this.focusLinkedElement.bind(this)))}};Uo.prototype.getLinkedElement=function(){var f=this.getFragmentFromUrl();return f?document.getElementById(f):null};Uo.prototype.focusLinkedElement=function(){var f=this.$linkedElement;f.getAttribute("tabindex")||(f.setAttribute("tabindex","-1"),f.classList.add("govuk-skip-link-focused-element"),this.linkedElementListener||(this.$linkedElement.addEventListener("blur",this.removeFocusProperties.bind(this)),this.linkedElementListener=!0)),f.focus()};Uo.prototype.removeFocusProperties=function(){this.$linkedElement.removeAttribute("tabindex"),this.$linkedElement.classList.remove("govuk-skip-link-focused-element")};Uo.prototype.getFragmentFromUrl=function(){if(this.$module.hash)return this.$module.hash.split("#").pop()};(function(f){var g="document"in this&&"nextElementSibling"in document.documentElement;g||Object.defineProperty(Element.prototype,"nextElementSibling",{get:function(){for(var b=this.nextSibling;b&&b.nodeType!==1;)b=b.nextSibling;return b}})}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});(function(f){var g="document"in this&&"previousElementSibling"in document.documentElement;g||Object.defineProperty(Element.prototype,"previousElementSibling",{get:function(){for(var b=this.previousSibling;b&&b.nodeType!==1;)b=b.previousSibling;return b}})}).call(typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||{});function $t(f){if(!(f instanceof HTMLElement))return this;var g=f.querySelectorAll("a.govuk-tabs__tab");if(!g.length)return this;this.$module=f,this.$tabs=g,this.keys={left:37,right:39,up:38,down:40},this.jsHiddenClass="govuk-tabs__panel--hidden",this.boundTabClick=this.onTabClick.bind(this),this.boundTabKeydown=this.onTabKeydown.bind(this),this.boundOnHashChange=this.onHashChange.bind(this),this.changingHash=!1}$t.prototype.init=function(){!this.$module||!this.$tabs||(typeof window.matchMedia=="function"?this.setupResponsiveChecks():this.setup())};$t.prototype.setupResponsiveChecks=function(){this.mql=window.matchMedia("(min-width: 40.0625em)"),this.mql.addListener(this.checkMode.bind(this)),this.checkMode()};$t.prototype.checkMode=function(){this.mql.matches?this.setup():this.teardown()};$t.prototype.setup=function(){var f=this,g=this.$module,b=this.$tabs,C=g.querySelector(".govuk-tabs__list"),R=g.querySelectorAll(".govuk-tabs__list-item");if(!(!b||!C||!R)){C.setAttribute("role","tablist"),Wt(R,function(Z){Z.setAttribute("role","presentation")}),Wt(b,function(Z){f.setAttributes(Z),Z.addEventListener("click",f.boundTabClick,!0),Z.addEventListener("keydown",f.boundTabKeydown,!0),f.hideTab(Z)});var F=this.getTab(window.location.hash)||this.$tabs[0];F&&(this.showTab(F),window.addEventListener("hashchange",this.boundOnHashChange,!0))}};$t.prototype.teardown=function(){var f=this,g=this.$module,b=this.$tabs,C=g.querySelector(".govuk-tabs__list"),R=g.querySelectorAll("a.govuk-tabs__list-item");!b||!C||!R||(C.removeAttribute("role"),Wt(R,function(F){F.removeAttribute("role")}),Wt(b,function(F){F.removeEventListener("click",f.boundTabClick,!0),F.removeEventListener("keydown",f.boundTabKeydown,!0),f.unsetAttributes(F)}),window.removeEventListener("hashchange",this.boundOnHashChange,!0))};$t.prototype.onHashChange=function(){var f=window.location.hash,g=this.getTab(f);if(g){if(this.changingHash){this.changingHash=!1;return}var b=this.getCurrentTab();b&&(this.hideTab(b),this.showTab(g),g.focus())}};$t.prototype.hideTab=function(f){this.unhighlightTab(f),this.hidePanel(f)};$t.prototype.showTab=function(f){this.highlightTab(f),this.showPanel(f)};$t.prototype.getTab=function(f){return this.$module.querySelector('a.govuk-tabs__tab[href="'+f+'"]')};$t.prototype.setAttributes=function(f){var g=this.getHref(f).slice(1);f.setAttribute("id","tab_"+g),f.setAttribute("role","tab"),f.setAttribute("aria-controls",g),f.setAttribute("aria-selected","false"),f.setAttribute("tabindex","-1");var b=this.getPanel(f);b&&(b.setAttribute("role","tabpanel"),b.setAttribute("aria-labelledby",f.id),b.classList.add(this.jsHiddenClass))};$t.prototype.unsetAttributes=function(f){f.removeAttribute("id"),f.removeAttribute("role"),f.removeAttribute("aria-controls"),f.removeAttribute("aria-selected"),f.removeAttribute("tabindex");var g=this.getPanel(f);g&&(g.removeAttribute("role"),g.removeAttribute("aria-labelledby"),g.classList.remove(this.jsHiddenClass))};$t.prototype.onTabClick=function(f){var g=this.getCurrentTab(),b=f.currentTarget;!g||!(b instanceof HTMLAnchorElement)||(f.preventDefault(),this.hideTab(g),this.showTab(b),this.createHistoryEntry(b))};$t.prototype.createHistoryEntry=function(f){var g=this.getPanel(f);if(g){var b=g.id;g.id="",this.changingHash=!0,window.location.hash=this.getHref(f).slice(1),g.id=b}};$t.prototype.onTabKeydown=function(f){switch(f.keyCode){case this.keys.left:case this.keys.up:this.activatePreviousTab(),f.preventDefault();break;case this.keys.right:case this.keys.down:this.activateNextTab(),f.preventDefault();break}};$t.prototype.activateNextTab=function(){var f=this.getCurrentTab();if(!(!f||!f.parentElement)){var g=f.parentElement.nextElementSibling;if(g){var b=g.querySelector("a.govuk-tabs__tab");b&&(this.hideTab(f),this.showTab(b),b.focus(),this.createHistoryEntry(b))}}};$t.prototype.activatePreviousTab=function(){var f=this.getCurrentTab();if(!(!f||!f.parentElement)){var g=f.parentElement.previousElementSibling;if(g){var b=g.querySelector("a.govuk-tabs__tab");b&&(this.hideTab(f),this.showTab(b),b.focus(),this.createHistoryEntry(b))}}};$t.prototype.getPanel=function(f){return this.$module.querySelector(this.getHref(f))};$t.prototype.showPanel=function(f){var g=this.getPanel(f);g&&g.classList.remove(this.jsHiddenClass)};$t.prototype.hidePanel=function(f){var g=this.getPanel(f);g&&g.classList.add(this.jsHiddenClass)};$t.prototype.unhighlightTab=function(f){f.parentElement&&(f.setAttribute("aria-selected","false"),f.parentElement.classList.remove("govuk-tabs__list-item--selected"),f.setAttribute("tabindex","-1"))};$t.prototype.highlightTab=function(f){f.parentElement&&(f.setAttribute("aria-selected","true"),f.parentElement.classList.add("govuk-tabs__list-item--selected"),f.setAttribute("tabindex","0"))};$t.prototype.getCurrentTab=function(){return this.$module.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")};$t.prototype.getHref=function(f){var g=f.getAttribute("href"),b=g.slice(g.indexOf("#"),g.length);return b};function Kg(f){f=typeof f<"u"?f:{};var g=f.scope instanceof HTMLElement?f.scope:document,b=g.querySelectorAll('[data-module="govuk-accordion"]');Wt(b,function(fe){new Ki(fe,f.accordion).init()});var C=g.querySelectorAll('[data-module="govuk-button"]');Wt(C,function(fe){new fc(fe,f.button).init()});var R=g.querySelectorAll('[data-module="govuk-character-count"]');Wt(R,function(fe){new sr(fe,f.characterCount).init()});var F=g.querySelectorAll('[data-module="govuk-checkboxes"]');Wt(F,function(fe){new zs(fe).init()});var Z=g.querySelectorAll('[data-module="govuk-details"]');Wt(Z,function(fe){new Ha(fe).init()});var a=g.querySelector('[data-module="govuk-error-summary"]');a&&new Ls(a,f.errorSummary).init();var W=g.querySelectorAll('[data-module="govuk-exit-this-page"]');Wt(W,function(fe){new Ar(fe,f.exitThisPage).init()});var B=g.querySelector('[data-module="govuk-header"]');B&&new mc(B).init();var he=g.querySelectorAll('[data-module="govuk-notification-banner"]');Wt(he,function(fe){new Uu(fe,f.notificationBanner).init()});var se=g.querySelectorAll('[data-module="govuk-radios"]');Wt(se,function(fe){new Xa(fe).init()});var ke=g.querySelector('[data-module="govuk-skip-link"]');ke&&new Uo(ke).init();var Pe=g.querySelectorAll('[data-module="govuk-tabs"]');Wt(Pe,function(fe){new $t(fe).init()})}var Am=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Cm(f){return f&&f.__esModule&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f}function Yg(f){if(f.__esModule)return f;var g=f.default;if(typeof g=="function"){var b=function C(){if(this instanceof C){var R=[null];R.push.apply(R,arguments);var F=Function.bind.apply(g,R);return new F}return g.apply(this,arguments)};b.prototype=g.prototype}else b={};return Object.defineProperty(b,"__esModule",{value:!0}),Object.keys(f).forEach(function(C){var R=Object.getOwnPropertyDescriptor(f,C);Object.defineProperty(b,C,R.get?R:{enumerable:!0,get:function(){return f[C]}})}),b}var qd={exports:{}};(function(f,g){(function(b,C){f.exports=C()})(Am,function(){var b,C,R;function F(a,W){if(!b)b=W;else if(!C)C=W;else{var B="var sharedChunk = {}; ("+b+")(sharedChunk); ("+C+")(sharedChunk);",he={};b(he),R=W(he),typeof window<"u"&&(R.workerUrl=window.URL.createObjectURL(new Blob([B],{type:"text/javascript"})))}}F(["exports"],function(a){function W(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var B=he;function he(i,e){this.x=i,this.y=e}he.prototype={clone:function(){return new he(this.x,this.y)},add:function(i){return this.clone()._add(i)},sub:function(i){return this.clone()._sub(i)},multByPoint:function(i){return this.clone()._multByPoint(i)},divByPoint:function(i){return this.clone()._divByPoint(i)},mult:function(i){return this.clone()._mult(i)},div:function(i){return this.clone()._div(i)},rotate:function(i){return this.clone()._rotate(i)},rotateAround:function(i,e){return this.clone()._rotateAround(i,e)},matMult:function(i){return this.clone()._matMult(i)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(i){return this.x===i.x&&this.y===i.y},dist:function(i){return Math.sqrt(this.distSqr(i))},distSqr:function(i){var e=i.x-this.x,r=i.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(i){return Math.atan2(this.y-i.y,this.x-i.x)},angleWith:function(i){return this.angleWithSep(i.x,i.y)},angleWithSep:function(i,e){return Math.atan2(this.x*e-this.y*i,this.x*i+this.y*e)},_matMult:function(i){var e=i[2]*this.x+i[3]*this.y;return this.x=i[0]*this.x+i[1]*this.y,this.y=e,this},_add:function(i){return this.x+=i.x,this.y+=i.y,this},_sub:function(i){return this.x-=i.x,this.y-=i.y,this},_mult:function(i){return this.x*=i,this.y*=i,this},_div:function(i){return this.x/=i,this.y/=i,this},_multByPoint:function(i){return this.x*=i.x,this.y*=i.y,this},_divByPoint:function(i){return this.x/=i.x,this.y/=i.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var i=this.y;return this.y=this.x,this.x=-i,this},_rotate:function(i){var e=Math.cos(i),r=Math.sin(i),s=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=s,this},_rotateAround:function(i,e){var r=Math.cos(i),s=Math.sin(i),c=e.y+s*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-s*(this.y-e.y),this.y=c,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},he.convert=function(i){return i instanceof he?i:Array.isArray(i)?new he(i[0],i[1]):i};var se=W(B),ke=Pe;function Pe(i,e,r,s){this.cx=3*i,this.bx=3*(r-i)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(s-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=i,this.p1y=e,this.p2x=r,this.p2y=s}Pe.prototype={sampleCurveX:function(i){return((this.ax*i+this.bx)*i+this.cx)*i},sampleCurveY:function(i){return((this.ay*i+this.by)*i+this.cy)*i},sampleCurveDerivativeX:function(i){return(3*this.ax*i+2*this.bx)*i+this.cx},solveCurveX:function(i,e){if(e===void 0&&(e=1e-6),i<0)return 0;if(i>1)return 1;for(var r=i,s=0;s<8;s++){var c=this.sampleCurveX(r)-i;if(Math.abs(c)c?d=r:m=r,r=.5*(m-d)+d;return r},solve:function(i,e){return this.sampleCurveY(this.solveCurveX(i,e))}};var fe=W(ke);function Le(i,e,r,s){const c=new fe(i,e,r,s);return function(h){return c.solve(h)}}const qe=Le(.25,.1,.25,1);function Ae(i,e,r){return Math.min(r,Math.max(e,i))}function Je(i,e,r){const s=r-e,c=((i-e)%s+s)%s+e;return c===e?r:c}function Ge(i,...e){for(const r of e)for(const s in r)i[s]=r[s];return i}let pt=1;function Pt(i,e){i.forEach(r=>{e[r]&&(e[r]=e[r].bind(e))})}function ri(i,e,r){const s={};for(const c in i)s[c]=e.call(r||this,i[c],c,i);return s}function At(i,e,r){const s={};for(const c in i)e.call(r||this,i[c],c,i)&&(s[c]=i[c]);return s}function Ct(i){return Array.isArray(i)?i.map(Ct):typeof i=="object"&&i?ri(i,Ct):i}const qt={};function Dt(i){qt[i]||(typeof console<"u"&&console.warn(i),qt[i]=!0)}function ht(i,e,r){return(r.y-i.y)*(e.x-i.x)>(e.y-i.y)*(r.x-i.x)}function Cr(i){let e=0;for(let r,s,c=0,h=i.length,d=h-1;ccancelAnimationFrame(e)}},getImageData(i,e=0){return this.getImageCanvasContext(i).getImageData(-e,-e,i.width+2*e,i.height+2*e)},getImageCanvasContext(i){const e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=i.width,e.height=i.height,r.drawImage(i,0,0,i.width,i.height),r},resolveURL:i=>(Mn||(Mn=document.createElement("a")),Mn.href=i,Mn.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(cn==null&&(cn=matchMedia("(prefers-reduced-motion: reduce)")),cn.matches)}},rs={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};class Hr extends Error{constructor(e,r,s,c){super(`AJAXError: ${r} (${e}): ${s}`),this.status=e,this.statusText=r,this.url=s,this.body=c}}const Ii=_i()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol==="blob:"?window.parent:window).location.href,Yi=i=>rs.REGISTERED_PROTOCOLS[i.substring(0,i.indexOf("://"))];function pi(i,e){const r=new AbortController,s=new Request(i.url,{method:i.method||"GET",body:i.body,credentials:i.credentials,headers:i.headers,referrer:Ii(),signal:r.signal});let c=!1,h=!1;return i.type==="json"&&s.headers.set("Accept","application/json"),h||fetch(s).then(d=>d.ok?(m=>{(i.type==="arrayBuffer"||i.type==="image"?m.arrayBuffer():i.type==="json"?m.json():m.text()).then(y=>{h||(c=!0,e(null,y,m.headers.get("Cache-Control"),m.headers.get("Expires")))}).catch(y=>{h||e(new Error(y.message))})})(d):d.blob().then(m=>e(new Hr(d.status,d.statusText,i.url,m)))).catch(d=>{d.code!==20&&e(new Error(d.message))}),{cancel:()=>{h=!0,c||r.abort()}}}const zn=function(i,e){if(/:\/\//.test(i.url)&&!/^https?:|^file:/.test(i.url)){if(_i()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e);if(!_i())return(Yi(i.url)||pi)(i,e)}if(!(/^file:/.test(r=i.url)||/^file:/.test(Ii())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return pi(i,e);if(_i()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e,void 0,!0)}var r;return function(s,c){const h=new XMLHttpRequest;h.open(s.method||"GET",s.url,!0),s.type!=="arrayBuffer"&&s.type!=="image"||(h.responseType="arraybuffer");for(const d in s.headers)h.setRequestHeader(d,s.headers[d]);return s.type==="json"&&(h.responseType="text",h.setRequestHeader("Accept","application/json")),h.withCredentials=s.credentials==="include",h.onerror=()=>{c(new Error(h.statusText))},h.onload=()=>{if((h.status>=200&&h.status<300||h.status===0)&&h.response!==null){let d=h.response;if(s.type==="json")try{d=JSON.parse(h.response)}catch(m){return c(m)}c(null,d,h.getResponseHeader("Cache-Control"),h.getResponseHeader("Expires"))}else{const d=new Blob([h.response],{type:h.getResponseHeader("Content-Type")});c(new Hr(h.status,h.statusText,s.url,d))}},h.send(s.body),{cancel:()=>h.abort()}}(i,e)},Ln=function(i,e){return zn(Ge(i,{type:"arrayBuffer"}),e)};function un(i){if(!i||i.indexOf("://")<=0||i.indexOf("data:image/")===0||i.indexOf("blob:")===0)return!0;const e=new URL(i),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function Xr(i,e,r){r[i]&&r[i].indexOf(e)!==-1||(r[i]=r[i]||[],r[i].push(e))}function Pr(i,e,r){if(r&&r[i]){const s=r[i].indexOf(e);s!==-1&&r[i].splice(s,1)}}class zr{constructor(e,r={}){Ge(this,r),this.type=e}}class Ji extends zr{constructor(e,r={}){super("error",Ge({error:e},r))}}class Dn{on(e,r){return this._listeners=this._listeners||{},Xr(e,r,this._listeners),this}off(e,r){return Pr(e,r,this._listeners),Pr(e,r,this._oneTimeListeners),this}once(e,r){return r?(this._oneTimeListeners=this._oneTimeListeners||{},Xr(e,r,this._oneTimeListeners),this):new Promise(s=>this.once(e,s))}fire(e,r){typeof e=="string"&&(e=new zr(e,r||{}));const s=e.type;if(this.listens(s)){e.target=this;const c=this._listeners&&this._listeners[s]?this._listeners[s].slice():[];for(const m of c)m.call(this,e);const h=this._oneTimeListeners&&this._oneTimeListeners[s]?this._oneTimeListeners[s].slice():[];for(const m of h)Pr(s,m,this._oneTimeListeners),m.call(this,e);const d=this._eventedParent;d&&(Ge(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),d.fire(e))}else e instanceof Ji&&console.error(e.error);return this}listens(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)}setEventedParent(e,r){return this._eventedParent=e,this._eventedParentData=r,this}}var de={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};const Wr=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function ns(i,e){const r={};for(const s in i)s!=="ref"&&(r[s]=i[s]);return Wr.forEach(s=>{s in e&&(r[s]=e[s])}),r}function Tt(i,e){if(Array.isArray(i)){if(!Array.isArray(e)||i.length!==e.length)return!1;for(let r=0;r`:i.itemType.kind==="value"?"array":`array<${e}>`}return i.kind}const os=[Kr,Ee,ot,nt,zi,Dr,ni,fi(it),or,Br];function gr(i,e){if(e.kind==="error")return null;if(i.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!gr(i.itemType,e.itemType))&&(typeof i.N!="number"||i.N===e.N))return null}else{if(i.kind===e.kind)return null;if(i.kind==="value"){for(const r of os)if(!gr(r,e))return null}}return`Expected ${kt(i)} but found ${kt(e)} instead.`}function j(i,e){return e.some(r=>r.kind===i.kind)}function k(i,e){return e.some(r=>r==="null"?i===null:r==="array"?Array.isArray(i):r==="object"?i&&!Array.isArray(i)&&typeof i=="object":r===typeof i)}function P(i,e){return i.kind==="array"&&e.kind==="array"?i.itemType.kind===e.itemType.kind&&typeof i.N=="number":i.kind===e.kind}const O=.96422,X=.82521,K=4/29,ie=6/29,Q=3*ie*ie,Y=ie*ie*ie,ne=Math.PI/180,me=180/Math.PI;function _e(i){return(i%=360)<0&&(i+=360),i}function ge([i,e,r,s]){let c,h;const d=tt((.2225045*(i=We(i))+.7168786*(e=We(e))+.0606169*(r=We(r)))/1);i===e&&e===r?c=h=d:(c=tt((.4360747*i+.3850649*e+.1430804*r)/O),h=tt((.0139322*i+.0971045*e+.7141733*r)/X));const m=116*d-16;return[m<0?0:m,500*(c-d),200*(d-h),s]}function We(i){return i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function tt(i){return i>Y?Math.pow(i,1/3):i/Q+K}function Ve([i,e,r,s]){let c=(i+16)/116,h=isNaN(e)?c:c+e/500,d=isNaN(r)?c:c-r/200;return c=1*et(c),h=O*et(h),d=X*et(d),[Ze(3.1338561*h-1.6168667*c-.4906146*d),Ze(-.9787684*h+1.9161415*c+.033454*d),Ze(.0719453*h-.2289914*c+1.4052427*d),s]}function Ze(i){return(i=i<=.00304?12.92*i:1.055*Math.pow(i,1/2.4)-.055)<0?0:i>1?1:i}function et(i){return i>ie?i*i*i:Q*(i-K)}function dt(i){return parseInt(i.padEnd(2,i),16)/255}function at(i,e){return mt(e?i/100:i,0,1)}function mt(i,e,r){return Math.min(Math.max(e,i),r)}function St(i){return!i.some(Number.isNaN)}const Yt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Qe{constructor(e,r,s,c=1,h=!0){this.r=e,this.g=r,this.b=s,this.a=c,h||(this.r*=c,this.g*=c,this.b*=c,c||this.overwriteGetter("rgb",[e,r,s,c]))}static parse(e){if(e instanceof Qe)return e;if(typeof e!="string")return;const r=function(s){if((s=s.toLowerCase())==="transparent")return[0,0,0,0];const c=Yt[s];if(c){const[d,m,y]=c;return[d/255,m/255,y/255,1]}if(s.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(s)){const d=s.length<6?1:2;let m=1;return[dt(s.slice(m,m+=d)),dt(s.slice(m,m+=d)),dt(s.slice(m,m+=d)),dt(s.slice(m,m+d)||"ff")]}if(s.startsWith("rgb")){const d=s.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(d){const[m,y,E,T,A,M,z,D,q,N,te,re]=d,J=[T||" ",z||" ",N].join("");if(J===" "||J===" /"||J===",,"||J===",,,"){const ae=[E,M,q].join(""),ce=ae==="%%%"?100:ae===""?255:0;if(ce){const pe=[mt(+y/ce,0,1),mt(+A/ce,0,1),mt(+D/ce,0,1),te?at(+te,re):1];if(St(pe))return pe}}return}}const h=s.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(h){const[d,m,y,E,T,A,M,z,D]=h,q=[y||" ",T||" ",M].join("");if(q===" "||q===" /"||q===",,"||q===",,,"){const N=[+m,mt(+E,0,100),mt(+A,0,100),z?at(+z,D):1];if(St(N))return function([te,re,J,ae]){function ce(pe){const Oe=(pe+te/30)%12,Ne=re*Math.min(J,1-J);return J-Ne*Math.max(-1,Math.min(Oe-3,9-Oe,1))}return te=_e(te),re/=100,J/=100,[ce(0),ce(8),ce(4),ae]}(N)}}}(e);return r?new Qe(...r,!1):void 0}get rgb(){const{r:e,g:r,b:s,a:c}=this,h=c||1/0;return this.overwriteGetter("rgb",[e/h,r/h,s/h,c])}get hcl(){return this.overwriteGetter("hcl",function(e){const[r,s,c,h]=ge(e),d=Math.sqrt(s*s+c*c);return[Math.round(1e4*d)?_e(Math.atan2(c,s)*me):NaN,d,r,h]}(this.rgb))}get lab(){return this.overwriteGetter("lab",ge(this.rgb))}overwriteGetter(e,r){return Object.defineProperty(this,e,{value:r}),r}toString(){const[e,r,s,c]=this.rgb;return`rgba(${[e,r,s].map(h=>Math.round(255*h)).join(",")},${c})`}}Qe.black=new Qe(0,0,0,1),Qe.white=new Qe(1,1,1,1),Qe.transparent=new Qe(0,0,0,0),Qe.red=new Qe(1,0,0,1);class Ot{constructor(e,r,s){this.sensitivity=e?r?"variant":"case":r?"accent":"base",this.locale=s,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,r){return this.collator.compare(e,r)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Yr{constructor(e,r,s,c,h){this.text=e,this.image=r,this.scale=s,this.fontStack=c,this.textColor=h}}class mi{constructor(e){this.sections=e}static fromString(e){return new mi([new Yr(e,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.name.length!==0)}static factory(e){return e instanceof mi?e:mi.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}}class Ui{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ui)return e;if(typeof e=="number")return new Ui([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const r of e)if(typeof r!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new Ui(e)}}toString(){return JSON.stringify(this.values)}}class Qi{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new Qi({name:e,available:!1}):null}}function Fn(i,e,r,s){return typeof i=="number"&&i>=0&&i<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof r=="number"&&r>=0&&r<=255?s===void 0||typeof s=="number"&&s>=0&&s<=1?null:`Invalid rgba value [${[i,e,r,s].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof s=="number"?[i,e,r,s]:[i,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Bs(i){if(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"||i instanceof Qe||i instanceof Ot||i instanceof mi||i instanceof Ui||i instanceof Qi)return!0;if(Array.isArray(i)){for(const e of i)if(!Bs(e))return!1;return!0}if(typeof i=="object"){for(const e in i)if(!Bs(i[e]))return!1;return!0}return!1}function Jt(i){if(i===null)return Kr;if(typeof i=="string")return ot;if(typeof i=="boolean")return nt;if(typeof i=="number")return Ee;if(i instanceof Qe)return zi;if(i instanceof Ot)return Lr;if(i instanceof mi)return Dr;if(i instanceof Ui)return or;if(i instanceof Qi)return Br;if(Array.isArray(i)){const e=i.length;let r;for(const s of i){const c=Jt(s);if(r){if(r===c)continue;r=it;break}r=c}return fi(r||it,e)}return ni}function as(i){const e=typeof i;return i===null?"":e==="string"||e==="number"||e==="boolean"?String(i):i instanceof Qe||i instanceof mi||i instanceof Ui||i instanceof Qi?i.toString():JSON.stringify(i)}class Jr{constructor(e,r){this.type=e,this.value=r}static parse(e,r){if(e.length!==2)return r.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Bs(e[1]))return r.error("invalid value");const s=e[1];let c=Jt(s);const h=r.expectedType;return c.kind!=="array"||c.N!==0||!h||h.kind!=="array"||typeof h.N=="number"&&h.N!==0||(c=h),new Jr(c,s)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class jt{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const Rs={string:ot,number:Ee,boolean:nt,object:ni};class ar{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");let s,c=1;const h=e[0];if(h==="array"){let m,y;if(e.length>2){const E=e[1];if(typeof E!="string"||!(E in Rs)||E==="object")return r.error('The item type argument of "array" must be one of string, number, boolean',1);m=Rs[E],c++}else m=it;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return r.error('The length argument to "array" must be a positive integer literal',2);y=e[2],c++}s=fi(m,y)}else{if(!Rs[h])throw new Error(`Types doesn't contain name = ${h}`);s=Rs[h]}const d=[];for(;ce.outputDefined())}}const Wa={"to-boolean":nt,"to-color":zi,"to-number":Ee,"to-string":ot};class gi{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[0];if(!Wa[s])throw new Error(`Can't parse ${s} as it is not part of the known types`);if((s==="to-boolean"||s==="to-string")&&e.length!==2)return r.error("Expected one argument.");const c=Wa[s],h=[];for(let d=1;d4?`Invalid rbga value ${JSON.stringify(r)}: expected an array containing either three or four numeric values.`:Fn(r[0],r[1],r[2],r[3]),!s))return new Qe(r[0]/255,r[1]/255,r[2]/255,r[3])}throw new jt(s||`Could not parse color from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="padding"){let r;for(const s of this.args){r=s.evaluate(e);const c=Ui.parse(r);if(c)return c}throw new jt(`Could not parse padding from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="number"){let r=null;for(const s of this.args){if(r=s.evaluate(e),r===null)return 0;const c=Number(r);if(!isNaN(c))return c}throw new jt(`Could not convert ${JSON.stringify(r)} to number.`)}return this.type.kind==="formatted"?mi.fromString(as(this.args[0].evaluate(e))):this.type.kind==="resolvedImage"?Qi.fromString(as(this.args[0].evaluate(e))):as(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const No=["Unknown","Point","LineString","Polygon"];class Fs{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?No[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(e){let r=this._parseColorCache[e];return r||(r=this._parseColorCache[e]=Qe.parse(e)),r}}class Qr{constructor(e,r,s=[],c,h=new Rn,d=[]){this.registry=e,this.path=s,this.key=s.map(m=>`[${m}]`).join(""),this.scope=h,this.errors=d,this.expectedType=c,this._isConstant=r}parse(e,r,s,c,h={}){return r?this.concat(r,s,c)._parse(e,h):this._parse(e,h)}_parse(e,r){function s(c,h,d){return d==="assert"?new ar(h,[c]):d==="coerce"?new gi(h,[c]):c}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const c=e[0];if(typeof c!="string")return this.error(`Expression name must be a string, but found ${typeof c} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const h=this.registry[c];if(h){let d=h.parse(e,this);if(!d)return null;if(this.expectedType){const m=this.expectedType,y=d.type;if(m.kind!=="string"&&m.kind!=="number"&&m.kind!=="boolean"&&m.kind!=="object"&&m.kind!=="array"||y.kind!=="value")if(m.kind!=="color"&&m.kind!=="formatted"&&m.kind!=="resolvedImage"||y.kind!=="value"&&y.kind!=="string")if(m.kind!=="padding"||y.kind!=="value"&&y.kind!=="number"&&y.kind!=="array"){if(this.checkSubtype(m,y))return null}else d=s(d,m,r.typeAnnotation||"coerce");else d=s(d,m,r.typeAnnotation||"coerce");else d=s(d,m,r.typeAnnotation||"assert")}if(!(d instanceof Jr)&&d.type.kind!=="resolvedImage"&&this._isConstant(d)){const m=new Fs;try{d=new Jr(d.type,d.evaluate(m))}catch(y){return this.error(y.message),null}}return d}return this.error(`Unknown expression "${c}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,r,s){const c=typeof e=="number"?this.path.concat(e):this.path,h=s?this.scope.concat(s):this.scope;return new Qr(this.registry,this._isConstant,c,r||null,h,this.errors)}error(e,...r){const s=`${this.key}${r.map(c=>`[${c}]`).join("")}`;this.errors.push(new yi(s,e))}checkSubtype(e,r){const s=gr(e,r);return s&&this.error(s),s}}class xt{constructor(e,r,s){this.type=Lr,this.locale=s,this.caseSensitive=e,this.diacriticSensitive=r}static parse(e,r){if(e.length!==2)return r.error("Expected one argument.");const s=e[1];if(typeof s!="object"||Array.isArray(s))return r.error("Collator options argument must be an object.");const c=r.parse(s["case-sensitive"]!==void 0&&s["case-sensitive"],1,nt);if(!c)return null;const h=r.parse(s["diacritic-sensitive"]!==void 0&&s["diacritic-sensitive"],1,nt);if(!h)return null;let d=null;return s.locale&&(d=r.parse(s.locale,1,ot),!d)?null:new xt(c,h,d)}evaluate(e){return new Ot(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}}const en=8192;function ls(i,e){i[0]=Math.min(i[0],e[0]),i[1]=Math.min(i[1],e[1]),i[2]=Math.max(i[2],e[0]),i[3]=Math.max(i[3],e[1])}function Os(i,e){return!(i[0]<=e[0]||i[2]>=e[2]||i[1]<=e[1]||i[3]>=e[3])}function Ka(i,e){const r=(180+i[0])/360,s=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i[1]*Math.PI/360)))/360,c=Math.pow(2,e.z);return[Math.round(r*c*en),Math.round(s*c*en)]}function Ya(i,e,r){const s=i[0]-e[0],c=i[1]-e[1],h=i[0]-r[0],d=i[1]-r[1];return s*d-h*c==0&&s*h<=0&&c*d<=0}function $o(i,e){let r=!1;for(let d=0,m=e.length;d(s=i)[1]!=(h=y[E+1])[1]>s[1]&&s[0]<(h[0]-c[0])*(s[1]-c[1])/(h[1]-c[1])+c[0]&&(r=!r)}}var s,c,h;return r}function Ja(i,e){for(let r=0;r0&&m<0||d<0&&m>0}function yc(i,e,r){for(const E of r)for(let T=0;Tr[2]){const c=.5*s;let h=i[0]-r[0]>c?-s:r[0]-i[0]>c?s:0;h===0&&(h=i[0]-r[2]>c?-s:r[2]-i[0]>c?s:0),i[0]+=h}ls(e,i)}function el(i,e,r,s){const c=Math.pow(2,s.z)*en,h=[s.x*en,s.y*en],d=[];for(const m of i)for(const y of m){const E=[y.x+h[0],y.y+h[1]];Zo(E,e,r,c),d.push(E)}return d}function tl(i,e,r,s){const c=Math.pow(2,s.z)*en,h=[s.x*en,s.y*en],d=[];for(const y of i){const E=[];for(const T of y){const A=[T.x+h[0],T.y+h[1]];ls(e,A),E.push(A)}d.push(E)}if(e[2]-e[0]<=c/2){(m=e)[0]=m[1]=1/0,m[2]=m[3]=-1/0;for(const y of d)for(const E of y)Zo(E,e,r,c)}var m;return d}class Rr{constructor(e,r){this.type=nt,this.geojson=e,this.geometries=r}static parse(e,r){if(e.length!==2)return r.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Bs(e[1])){const s=e[1];if(s.type==="FeatureCollection")for(let c=0;c!Array.isArray(E)||E.length===e.length-1);let y=null;for(const[E,T]of m){y=new Qr(r.registry,Vs,r.path,null,r.scope);const A=[];let M=!1;for(let z=1;z{return M=A,Array.isArray(M)?`(${M.map(kt).join(", ")})`:`(${kt(M.type)}...)`;var M}).join(" | "),T=[];for(let A=1;A{r=e?r&&Vs(s):r&&s instanceof Jr}),!!r&&cs(i)&&Ns(i,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function cs(i){if(i instanceof er&&(i.name==="get"&&i.args.length===1||i.name==="feature-state"||i.name==="has"&&i.args.length===1||i.name==="properties"||i.name==="geometry-type"||i.name==="id"||/^filter-/.test(i.name))||i instanceof Rr)return!1;let e=!0;return i.eachChild(r=>{e&&!cs(r)&&(e=!1)}),e}function On(i){if(i instanceof er&&i.name==="feature-state")return!1;let e=!0;return i.eachChild(r=>{e&&!On(r)&&(e=!1)}),e}function Ns(i,e){if(i instanceof er&&e.indexOf(i.name)>=0)return!1;let r=!0;return i.eachChild(s=>{r&&!Ns(s,e)&&(r=!1)}),r}function $s(i,e){const r=i.length-1;let s,c,h=0,d=r,m=0;for(;h<=d;)if(m=Math.floor((h+d)/2),s=i[m],c=i[m+1],s<=e){if(m===r||ee))throw new jt("Input is not a number.");d=m-1}return 0}class Un{constructor(e,r,s){this.type=e,this.input=r,this.labels=[],this.outputs=[];for(const[c,h]of s)this.labels.push(c),this.outputs.push(h)}static parse(e,r){if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");const s=r.parse(e[1],1,Ee);if(!s)return null;const c=[];let h=null;r.expectedType&&r.expectedType.kind!=="value"&&(h=r.expectedType);for(let d=1;d=m)return r.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',E);const A=r.parse(y,T,h);if(!A)return null;h=h||A.type,c.push([m,A])}return new Un(h,s,c)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const c=this.input.evaluate(e);if(c<=r[0])return s[0].evaluate(e);const h=r.length;return c>=r[h-1]?s[h-1].evaluate(e):s[$s(r,c)].evaluate(e)}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Vn(i,e,r){return i+r*(e-i)}function qs(i,e,r){return i.map((s,c)=>Vn(s,e[c],r))}const Vi={number:Vn,color:function(i,e,r,s="rgb"){switch(s){case"rgb":{const[c,h,d,m]=qs(i.rgb,e.rgb,r);return new Qe(c,h,d,m,!1)}case"hcl":{const[c,h,d,m]=i.hcl,[y,E,T,A]=e.hcl;let M,z;if(isNaN(c)||isNaN(y))isNaN(c)?isNaN(y)?M=NaN:(M=y,d!==1&&d!==0||(z=E)):(M=c,T!==1&&T!==0||(z=h));else{let re=y-c;y>c&&re>180?re-=360:y180&&(re+=360),M=c+r*re}const[D,q,N,te]=function([re,J,ae,ce]){return re=isNaN(re)?0:re*ne,Ve([ae,Math.cos(re)*J,Math.sin(re)*J,ce])}([M,z??Vn(h,E,r),Vn(d,T,r),Vn(m,A,r)]);return new Qe(D,q,N,te,!1)}case"lab":{const[c,h,d,m]=Ve(qs(i.lab,e.lab,r));return new Qe(c,h,d,m,!1)}}},array:qs,padding:function(i,e,r){return new Ui(qs(i.values,e.values,r))}};class Ni{constructor(e,r,s,c,h){this.type=e,this.operator=r,this.interpolation=s,this.input=c,this.labels=[],this.outputs=[];for(const[d,m]of h)this.labels.push(d),this.outputs.push(m)}static interpolationFactor(e,r,s,c){let h=0;if(e.name==="exponential")h=Ho(r,e.base,s,c);else if(e.name==="linear")h=Ho(r,1,s,c);else if(e.name==="cubic-bezier"){const d=e.controlPoints;h=new fe(d[0],d[1],d[2],d[3]).solve(Ho(r,1,s,c))}return h}static parse(e,r){let[s,c,h,...d]=e;if(!Array.isArray(c)||c.length===0)return r.error("Expected an interpolation type expression.",1);if(c[0]==="linear")c={name:"linear"};else if(c[0]==="exponential"){const E=c[1];if(typeof E!="number")return r.error("Exponential interpolation requires a numeric base.",1,1);c={name:"exponential",base:E}}else{if(c[0]!=="cubic-bezier")return r.error(`Unknown interpolation type ${String(c[0])}`,1,0);{const E=c.slice(1);if(E.length!==4||E.some(T=>typeof T!="number"||T<0||T>1))return r.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);c={name:"cubic-bezier",controlPoints:E}}}if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");if(h=r.parse(h,2,Ee),!h)return null;const m=[];let y=null;s==="interpolate-hcl"||s==="interpolate-lab"?y=zi:r.expectedType&&r.expectedType.kind!=="value"&&(y=r.expectedType);for(let E=0;E=T)return r.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',M);const D=r.parse(A,z,y);if(!D)return null;y=y||D.type,m.push([T,D])}return P(y,Ee)||P(y,zi)||P(y,or)||P(y,fi(Ee))?new Ni(y,s,c,h,m):r.error(`Type ${kt(y)} is not interpolatable.`)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const c=this.input.evaluate(e);if(c<=r[0])return s[0].evaluate(e);const h=r.length;if(c>=r[h-1])return s[h-1].evaluate(e);const d=$s(r,c),m=Ni.interpolationFactor(this.interpolation,c,r[d],r[d+1]),y=s[d].evaluate(e),E=s[d+1].evaluate(e);switch(this.operator){case"interpolate":return Vi[this.type.kind](y,E,m);case"interpolate-hcl":return Vi.color(y,E,m,"hcl");case"interpolate-lab":return Vi.color(y,E,m,"lab")}}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ho(i,e,r,s){const c=s-r,h=i-r;return c===0?0:e===1?h/c:(Math.pow(e,h)-1)/(Math.pow(e,c)-1)}class js{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expectected at least one argument.");let s=null;const c=r.expectedType;c&&c.kind!=="value"&&(s=c);const h=[];for(const m of e.slice(1)){const y=r.parse(m,1+h.length,s,void 0,{typeAnnotation:"omit"});if(!y)return null;s=s||y.type,h.push(y)}if(!s)throw new Error("No output type");const d=c&&h.some(m=>gr(c,m.type));return new js(d?it:s,h)}evaluate(e){let r,s=null,c=0;for(const h of this.args)if(c++,s=h.evaluate(e),s&&s instanceof Qi&&!s.available&&(r||(r=s.name),s=null,c===this.args.length&&(s=r)),s!==null)break;return s}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}class Gs{constructor(e,r){this.type=r.type,this.bindings=[].concat(e),this.result=r}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const r of this.bindings)e(r[1]);e(this.result)}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const s=[];for(let h=1;h=s.length)throw new jt(`Array index out of bounds: ${r} > ${s.length-1}.`);if(r!==Math.floor(r))throw new jt(`Array index must be an integer, but found ${r} instead.`);return s[r]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class us{constructor(e,r){this.type=nt,this.needle=e,this.haystack=r}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,it);return s&&c?j(s.type,[nt,ot,Ee,Kr,it])?new us(s,c):r.error(`Expected first argument to be of type boolean, string, number or null, but found ${kt(s.type)} instead`):null}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!s)return!1;if(!k(r,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${kt(Jt(r))} instead.`);if(!k(s,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${kt(Jt(s))} instead.`);return s.indexOf(r)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class fn{constructor(e,r,s){this.type=Ee,this.needle=e,this.haystack=r,this.fromIndex=s}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,it);if(!s||!c)return null;if(!j(s.type,[nt,ot,Ee,Kr,it]))return r.error(`Expected first argument to be of type boolean, string, number or null, but found ${kt(s.type)} instead`);if(e.length===4){const h=r.parse(e[3],3,Ee);return h?new fn(s,c,h):null}return new fn(s,c)}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!k(r,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${kt(Jt(r))} instead.`);if(!k(s,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${kt(Jt(s))} instead.`);if(this.fromIndex){const c=this.fromIndex.evaluate(e);return s.indexOf(r,c)}return s.indexOf(r)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class gt{constructor(e,r,s,c,h,d){this.inputType=e,this.type=r,this.input=s,this.cases=c,this.outputs=h,this.otherwise=d}static parse(e,r){if(e.length<5)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return r.error("Expected an even number of arguments.");let s,c;r.expectedType&&r.expectedType.kind!=="value"&&(c=r.expectedType);const h={},d=[];for(let E=2;ENumber.MAX_SAFE_INTEGER)return M.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof D=="number"&&Math.floor(D)!==D)return M.error("Numeric branch labels must be integer values.");if(s){if(M.checkSubtype(s,Jt(D)))return null}else s=Jt(D);if(h[String(D)]!==void 0)return M.error("Branch labels must be unique.");h[String(D)]=d.length}const z=r.parse(A,E,c);if(!z)return null;c=c||z.type,d.push(z)}const m=r.parse(e[1],1,it);if(!m)return null;const y=r.parse(e[e.length-1],e.length-1,c);return y?m.type.kind!=="value"&&r.concat(1).checkSubtype(s,m.type)?null:new gt(s,c,m,h,d,y):null}evaluate(e){const r=this.input.evaluate(e);return(Jt(r)===this.inputType&&this.outputs[this.cases[r]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}}class Wo{constructor(e,r,s){this.type=e,this.branches=r,this.otherwise=s}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return r.error("Expected an odd number of arguments.");let s;r.expectedType&&r.expectedType.kind!=="value"&&(s=r.expectedType);const c=[];for(let d=1;dr.outputDefined())&&this.otherwise.outputDefined()}}class Zs{constructor(e,r,s,c){this.type=e,this.input=r,this.beginIndex=s,this.endIndex=c}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,it),c=r.parse(e[2],2,Ee);if(!s||!c)return null;if(!j(s.type,[fi(it),ot,it]))return r.error(`Expected first argument to be of type array or string, but found ${kt(s.type)} instead`);if(e.length===4){const h=r.parse(e[3],3,Ee);return h?new Zs(s.type,s,c,h):null}return new Zs(s.type,s,c)}evaluate(e){const r=this.input.evaluate(e),s=this.beginIndex.evaluate(e);if(!k(r,["string","array"]))throw new jt(`Expected first argument to be of type array or string, but found ${kt(Jt(r))} instead.`);if(this.endIndex){const c=this.endIndex.evaluate(e);return r.slice(s,c)}return r.slice(s)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function il(i,e){return i==="=="||i==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function rl(i,e,r,s){return s.compare(e,r)===0}function Nn(i,e,r){const s=i!=="=="&&i!=="!=";return class jd{constructor(h,d,m){this.type=nt,this.lhs=h,this.rhs=d,this.collator=m,this.hasUntypedArgument=h.type.kind==="value"||d.type.kind==="value"}static parse(h,d){if(h.length!==3&&h.length!==4)return d.error("Expected two or three arguments.");const m=h[0];let y=d.parse(h[1],1,it);if(!y)return null;if(!il(m,y.type))return d.concat(1).error(`"${m}" comparisons are not supported for type '${kt(y.type)}'.`);let E=d.parse(h[2],2,it);if(!E)return null;if(!il(m,E.type))return d.concat(2).error(`"${m}" comparisons are not supported for type '${kt(E.type)}'.`);if(y.type.kind!==E.type.kind&&y.type.kind!=="value"&&E.type.kind!=="value")return d.error(`Cannot compare types '${kt(y.type)}' and '${kt(E.type)}'.`);s&&(y.type.kind==="value"&&E.type.kind!=="value"?y=new ar(E.type,[y]):y.type.kind!=="value"&&E.type.kind==="value"&&(E=new ar(y.type,[E])));let T=null;if(h.length===4){if(y.type.kind!=="string"&&E.type.kind!=="string"&&y.type.kind!=="value"&&E.type.kind!=="value")return d.error("Cannot use collator to compare non-string types.");if(T=d.parse(h[3],3,Lr),!T)return null}return new jd(y,E,T)}evaluate(h){const d=this.lhs.evaluate(h),m=this.rhs.evaluate(h);if(s&&this.hasUntypedArgument){const y=Jt(d),E=Jt(m);if(y.kind!==E.kind||y.kind!=="string"&&y.kind!=="number")throw new jt(`Expected arguments for "${i}" to be (string, string) or (number, number), but found (${y.kind}, ${E.kind}) instead.`)}if(this.collator&&!s&&this.hasUntypedArgument){const y=Jt(d),E=Jt(m);if(y.kind!=="string"||E.kind!=="string")return e(h,d,m)}return this.collator?r(h,d,m,this.collator.evaluate(h)):e(h,d,m)}eachChild(h){h(this.lhs),h(this.rhs),this.collator&&h(this.collator)}outputDefined(){return!0}}}const xc=Nn("==",function(i,e,r){return e===r},rl),bc=Nn("!=",function(i,e,r){return e!==r},function(i,e,r,s){return!rl(0,e,r,s)}),wc=Nn("<",function(i,e,r){return e",function(i,e,r){return e>r},function(i,e,r,s){return s.compare(e,r)>0}),Tc=Nn("<=",function(i,e,r){return e<=r},function(i,e,r,s){return s.compare(e,r)<=0}),Sc=Nn(">=",function(i,e,r){return e>=r},function(i,e,r,s){return s.compare(e,r)>=0});class Ko{constructor(e,r,s,c,h){this.type=ot,this.number=e,this.locale=r,this.currency=s,this.minFractionDigits=c,this.maxFractionDigits=h}static parse(e,r){if(e.length!==3)return r.error("Expected two arguments.");const s=r.parse(e[1],1,Ee);if(!s)return null;const c=e[2];if(typeof c!="object"||Array.isArray(c))return r.error("NumberFormat options argument must be an object.");let h=null;if(c.locale&&(h=r.parse(c.locale,1,ot),!h))return null;let d=null;if(c.currency&&(d=r.parse(c.currency,1,ot),!d))return null;let m=null;if(c["min-fraction-digits"]&&(m=r.parse(c["min-fraction-digits"],1,Ee),!m))return null;let y=null;return c["max-fraction-digits"]&&(y=r.parse(c["max-fraction-digits"],1,Ee),!y)?null:new Ko(s,h,d,m,y)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class Hs{constructor(e){this.type=Dr,this.sections=e}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[1];if(!Array.isArray(s)&&typeof s=="object")return r.error("First argument must be an image or text section.");const c=[];let h=!1;for(let d=1;d<=e.length-1;++d){const m=e[d];if(h&&typeof m=="object"&&!Array.isArray(m)){h=!1;let y=null;if(m["font-scale"]&&(y=r.parse(m["font-scale"],1,Ee),!y))return null;let E=null;if(m["text-font"]&&(E=r.parse(m["text-font"],1,fi(ot)),!E))return null;let T=null;if(m["text-color"]&&(T=r.parse(m["text-color"],1,zi),!T))return null;const A=c[c.length-1];A.scale=y,A.font=E,A.textColor=T}else{const y=r.parse(e[d],1,it);if(!y)return null;const E=y.type.kind;if(E!=="string"&&E!=="value"&&E!=="null"&&E!=="resolvedImage")return r.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");h=!0,c.push({content:y,scale:null,font:null,textColor:null})}}return new Hs(c)}evaluate(e){return new mi(this.sections.map(r=>{const s=r.content.evaluate(e);return Jt(s)===Br?new Yr("",s,null,null,null):new Yr(as(s),null,r.scale?r.scale.evaluate(e):null,r.font?r.font.evaluate(e).join(","):null,r.textColor?r.textColor.evaluate(e):null)}))}eachChild(e){for(const r of this.sections)e(r.content),r.scale&&e(r.scale),r.font&&e(r.font),r.textColor&&e(r.textColor)}outputDefined(){return!1}}class Yo{constructor(e){this.type=Br,this.input=e}static parse(e,r){if(e.length!==2)return r.error("Expected two arguments.");const s=r.parse(e[1],1,ot);return s?new Yo(s):r.error("No image name provided.")}evaluate(e){const r=this.input.evaluate(e),s=Qi.fromString(r);return s&&e.availableImages&&(s.available=e.availableImages.indexOf(r)>-1),s}eachChild(e){e(this.input)}outputDefined(){return!1}}class Jo{constructor(e){this.type=Ee,this.input=e}static parse(e,r){if(e.length!==2)return r.error(`Expected 1 argument, but found ${e.length-1} instead.`);const s=r.parse(e[1],1);return s?s.type.kind!=="array"&&s.type.kind!=="string"&&s.type.kind!=="value"?r.error(`Expected argument of type string or array, but found ${kt(s.type)} instead.`):new Jo(s):null}evaluate(e){const r=this.input.evaluate(e);if(typeof r=="string"||Array.isArray(r))return r.length;throw new jt(`Expected value to be of type string or array, but found ${kt(Jt(r))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const $n={"==":xc,"!=":bc,">":Ec,"<":wc,">=":Sc,"<=":Tc,array:ar,at:Xo,boolean:ar,case:Wo,coalesce:js,collator:xt,format:Hs,image:Yo,in:us,"index-of":fn,interpolate:Ni,"interpolate-hcl":Ni,"interpolate-lab":Ni,length:Jo,let:Gs,literal:Jr,match:gt,number:ar,"number-format":Ko,object:ar,slice:Zs,step:Un,string:ar,"to-boolean":gi,"to-color":gi,"to-number":gi,"to-string":gi,var:Us,within:Rr};function nl(i,[e,r,s,c]){e=e.evaluate(i),r=r.evaluate(i),s=s.evaluate(i);const h=c?c.evaluate(i):1,d=Fn(e,r,s,h);if(d)throw new jt(d);return new Qe(e/255,r/255,s/255,h,!1)}function sl(i,e){return i in e}function Qo(i,e){const r=e[i];return r===void 0?null:r}function mn(i){return{type:i}}function ol(i){return{result:"success",value:i}}function qn(i){return{result:"error",value:i}}function jn(i){return i["property-type"]==="data-driven"||i["property-type"]==="cross-faded-data-driven"}function al(i){return!!i.expression&&i.expression.parameters.indexOf("zoom")>-1}function ea(i){return!!i.expression&&i.expression.interpolated}function wt(i){return i instanceof Number?"number":i instanceof String?"string":i instanceof Boolean?"boolean":Array.isArray(i)?"array":i===null?"null":typeof i}function Xs(i){return typeof i=="object"&&i!==null&&!Array.isArray(i)}function Ic(i){return i}function ll(i,e){const r=e.type==="color",s=i.stops&&typeof i.stops[0][0]=="object",c=s||!(s||i.property!==void 0),h=i.type||(ea(e)?"exponential":"interval");if(r||e.type==="padding"){const T=r?Qe.parse:Ui.parse;(i=mr({},i)).stops&&(i.stops=i.stops.map(A=>[A[0],T(A[1])])),i.default=T(i.default?i.default:e.default)}if(i.colorSpace&&(d=i.colorSpace)!=="rgb"&&d!=="hcl"&&d!=="lab")throw new Error(`Unknown color space: "${i.colorSpace}"`);var d;let m,y,E;if(h==="exponential")m=cl;else if(h==="interval")m=ta;else if(h==="categorical"){m=Ac,y=Object.create(null);for(const T of i.stops)y[T[0]]=T[1];E=typeof i.stops[0][0]}else{if(h!=="identity")throw new Error(`Unknown function type "${h}"`);m=Cc}if(s){const T={},A=[];for(let D=0;DD[0]),evaluate:({zoom:D},q)=>cl({stops:M,base:i.base},e,D).evaluate(D,q)}}if(c){const T=h==="exponential"?{name:"exponential",base:i.base!==void 0?i.base:1}:null;return{kind:"camera",interpolationType:T,interpolationFactor:Ni.interpolationFactor.bind(void 0,T),zoomStops:i.stops.map(A=>A[0]),evaluate:({zoom:A})=>m(i,e,A,y,E)}}return{kind:"source",evaluate(T,A){const M=A&&A.properties?A.properties[i.property]:void 0;return M===void 0?hs(i.default,e.default):m(i,e,M,y,E)}}}function hs(i,e,r){return i!==void 0?i:e!==void 0?e:r!==void 0?r:void 0}function Ac(i,e,r,s,c){return hs(typeof r===c?s[r]:void 0,i.default,e.default)}function ta(i,e,r){if(wt(r)!=="number")return hs(i.default,e.default);const s=i.stops.length;if(s===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[s-1][0])return i.stops[s-1][1];const c=$s(i.stops.map(h=>h[0]),r);return i.stops[c][1]}function cl(i,e,r){const s=i.base!==void 0?i.base:1;if(wt(r)!=="number")return hs(i.default,e.default);const c=i.stops.length;if(c===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[c-1][0])return i.stops[c-1][1];const h=$s(i.stops.map(T=>T[0]),r),d=function(T,A,M,z){const D=z-M,q=T-M;return D===0?0:A===1?q/D:(Math.pow(A,q)-1)/(Math.pow(A,D)-1)}(r,s,i.stops[h][0],i.stops[h+1][0]),m=i.stops[h][1],y=i.stops[h+1][1],E=Vi[e.type]||Ic;return typeof m.evaluate=="function"?{evaluate(...T){const A=m.evaluate.apply(void 0,T),M=y.evaluate.apply(void 0,T);if(A!==void 0&&M!==void 0)return E(A,M,d,i.colorSpace)}}:E(m,y,d,i.colorSpace)}function Cc(i,e,r){switch(e.type){case"color":r=Qe.parse(r);break;case"formatted":r=mi.fromString(r.toString());break;case"resolvedImage":r=Qi.fromString(r.toString());break;case"padding":r=Ui.parse(r);break;default:wt(r)===e.type||e.type==="enum"&&e.values[r]||(r=void 0)}return hs(r,i.default,e.default)}er.register($n,{error:[{kind:"error"},[ot],(i,[e])=>{throw new jt(e.evaluate(i))}],typeof:[ot,[it],(i,[e])=>kt(Jt(e.evaluate(i)))],"to-rgba":[fi(Ee,4),[zi],(i,[e])=>{const[r,s,c,h]=e.evaluate(i).rgb;return[255*r,255*s,255*c,h]}],rgb:[zi,[Ee,Ee,Ee],nl],rgba:[zi,[Ee,Ee,Ee,Ee],nl],has:{type:nt,overloads:[[[ot],(i,[e])=>sl(e.evaluate(i),i.properties())],[[ot,ni],(i,[e,r])=>sl(e.evaluate(i),r.evaluate(i))]]},get:{type:it,overloads:[[[ot],(i,[e])=>Qo(e.evaluate(i),i.properties())],[[ot,ni],(i,[e,r])=>Qo(e.evaluate(i),r.evaluate(i))]]},"feature-state":[it,[ot],(i,[e])=>Qo(e.evaluate(i),i.featureState||{})],properties:[ni,[],i=>i.properties()],"geometry-type":[ot,[],i=>i.geometryType()],id:[it,[],i=>i.id()],zoom:[Ee,[],i=>i.globals.zoom],"heatmap-density":[Ee,[],i=>i.globals.heatmapDensity||0],"line-progress":[Ee,[],i=>i.globals.lineProgress||0],accumulated:[it,[],i=>i.globals.accumulated===void 0?null:i.globals.accumulated],"+":[Ee,mn(Ee),(i,e)=>{let r=0;for(const s of e)r+=s.evaluate(i);return r}],"*":[Ee,mn(Ee),(i,e)=>{let r=1;for(const s of e)r*=s.evaluate(i);return r}],"-":{type:Ee,overloads:[[[Ee,Ee],(i,[e,r])=>e.evaluate(i)-r.evaluate(i)],[[Ee],(i,[e])=>-e.evaluate(i)]]},"/":[Ee,[Ee,Ee],(i,[e,r])=>e.evaluate(i)/r.evaluate(i)],"%":[Ee,[Ee,Ee],(i,[e,r])=>e.evaluate(i)%r.evaluate(i)],ln2:[Ee,[],()=>Math.LN2],pi:[Ee,[],()=>Math.PI],e:[Ee,[],()=>Math.E],"^":[Ee,[Ee,Ee],(i,[e,r])=>Math.pow(e.evaluate(i),r.evaluate(i))],sqrt:[Ee,[Ee],(i,[e])=>Math.sqrt(e.evaluate(i))],log10:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))/Math.LN10],ln:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))],log2:[Ee,[Ee],(i,[e])=>Math.log(e.evaluate(i))/Math.LN2],sin:[Ee,[Ee],(i,[e])=>Math.sin(e.evaluate(i))],cos:[Ee,[Ee],(i,[e])=>Math.cos(e.evaluate(i))],tan:[Ee,[Ee],(i,[e])=>Math.tan(e.evaluate(i))],asin:[Ee,[Ee],(i,[e])=>Math.asin(e.evaluate(i))],acos:[Ee,[Ee],(i,[e])=>Math.acos(e.evaluate(i))],atan:[Ee,[Ee],(i,[e])=>Math.atan(e.evaluate(i))],min:[Ee,mn(Ee),(i,e)=>Math.min(...e.map(r=>r.evaluate(i)))],max:[Ee,mn(Ee),(i,e)=>Math.max(...e.map(r=>r.evaluate(i)))],abs:[Ee,[Ee],(i,[e])=>Math.abs(e.evaluate(i))],round:[Ee,[Ee],(i,[e])=>{const r=e.evaluate(i);return r<0?-Math.round(-r):Math.round(r)}],floor:[Ee,[Ee],(i,[e])=>Math.floor(e.evaluate(i))],ceil:[Ee,[Ee],(i,[e])=>Math.ceil(e.evaluate(i))],"filter-==":[nt,[ot,it],(i,[e,r])=>i.properties()[e.value]===r.value],"filter-id-==":[nt,[it],(i,[e])=>i.id()===e.value],"filter-type-==":[nt,[ot],(i,[e])=>i.geometryType()===e.value],"filter-<":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s{const r=i.id(),s=e.value;return typeof r==typeof s&&r":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s>c}],"filter-id->":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>s}],"filter-<=":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s<=c}],"filter-id-<=":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r<=s}],"filter->=":[nt,[ot,it],(i,[e,r])=>{const s=i.properties()[e.value],c=r.value;return typeof s==typeof c&&s>=c}],"filter-id->=":[nt,[it],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>=s}],"filter-has":[nt,[it],(i,[e])=>e.value in i.properties()],"filter-has-id":[nt,[],i=>i.id()!==null&&i.id()!==void 0],"filter-type-in":[nt,[fi(ot)],(i,[e])=>e.value.indexOf(i.geometryType())>=0],"filter-id-in":[nt,[fi(it)],(i,[e])=>e.value.indexOf(i.id())>=0],"filter-in-small":[nt,[ot,fi(it)],(i,[e,r])=>r.value.indexOf(i.properties()[e.value])>=0],"filter-in-large":[nt,[ot,fi(it)],(i,[e,r])=>function(s,c,h,d){for(;h<=d;){const m=h+d>>1;if(c[m]===s)return!0;c[m]>s?d=m-1:h=m+1}return!1}(i.properties()[e.value],r.value,0,r.value.length-1)],all:{type:nt,overloads:[[[nt,nt],(i,[e,r])=>e.evaluate(i)&&r.evaluate(i)],[mn(nt),(i,e)=>{for(const r of e)if(!r.evaluate(i))return!1;return!0}]]},any:{type:nt,overloads:[[[nt,nt],(i,[e,r])=>e.evaluate(i)||r.evaluate(i)],[mn(nt),(i,e)=>{for(const r of e)if(r.evaluate(i))return!0;return!1}]]},"!":[nt,[nt],(i,[e])=>!e.evaluate(i)],"is-supported-script":[nt,[ot],(i,[e])=>{const r=i.globals&&i.globals.isSupportedScript;return!r||r(e.evaluate(i))}],upcase:[ot,[ot],(i,[e])=>e.evaluate(i).toUpperCase()],downcase:[ot,[ot],(i,[e])=>e.evaluate(i).toLowerCase()],concat:[ot,mn(it),(i,e)=>e.map(r=>as(r.evaluate(i))).join("")],"resolved-locale":[ot,[Lr],(i,[e])=>e.evaluate(i).resolvedLocale()]});class ia{constructor(e,r){var s;this.expression=e,this._warningHistory={},this._evaluator=new Fs,this._defaultValue=r?(s=r).type==="color"&&Xs(s.default)?new Qe(0,0,0,0):s.type==="color"?Qe.parse(s.default)||null:s.type==="padding"?Ui.parse(s.default)||null:s.default===void 0?null:s.default:null,this._enumValues=r&&r.type==="enum"?r.values:null}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._evaluator.globals=e,this._evaluator.feature=r,this._evaluator.featureState=s,this._evaluator.canonical=c,this._evaluator.availableImages=h||null,this._evaluator.formattedSection=d,this.expression.evaluate(this._evaluator)}evaluate(e,r,s,c,h,d){this._evaluator.globals=e,this._evaluator.feature=r||null,this._evaluator.featureState=s||null,this._evaluator.canonical=c,this._evaluator.availableImages=h||null,this._evaluator.formattedSection=d||null;try{const m=this.expression.evaluate(this._evaluator);if(m==null||typeof m=="number"&&m!=m)return this._defaultValue;if(this._enumValues&&!(m in this._enumValues))throw new jt(`Expected value to be one of ${Object.keys(this._enumValues).map(y=>JSON.stringify(y)).join(", ")}, but found ${JSON.stringify(m)} instead.`);return m}catch(m){return this._warningHistory[m.message]||(this._warningHistory[m.message]=!0,typeof console<"u"&&console.warn(m.message)),this._defaultValue}}}function Ws(i){return Array.isArray(i)&&i.length>0&&typeof i[0]=="string"&&i[0]in $n}function Ft(i,e){const r=new Qr($n,Vs,[],e?function(c){const h={color:zi,string:ot,number:Ee,enum:ot,boolean:nt,formatted:Dr,padding:or,resolvedImage:Br};return c.type==="array"?fi(h[c.value]||it,c.length):h[c.type]}(e):void 0),s=r.parse(i,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return s?ol(new ia(s,e)):qn(r.errors)}class ra{constructor(e,r){this.kind=e,this._styleExpression=r,this.isStateDependent=e!=="constant"&&!On(r.expression)}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,c,h,d)}evaluate(e,r,s,c,h,d){return this._styleExpression.evaluate(e,r,s,c,h,d)}}class ut{constructor(e,r,s,c){this.kind=e,this.zoomStops=s,this._styleExpression=r,this.isStateDependent=e!=="camera"&&!On(r.expression),this.interpolationType=c}evaluateWithoutErrorHandling(e,r,s,c,h,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,c,h,d)}evaluate(e,r,s,c,h,d){return this._styleExpression.evaluate(e,r,s,c,h,d)}interpolationFactor(e,r,s){return this.interpolationType?Ni.interpolationFactor(this.interpolationType,e,r,s):0}}function Ks(i,e){const r=Ft(i,e);if(r.result==="error")return r;const s=r.value.expression,c=cs(s);if(!c&&!jn(e))return qn([new yi("","data expressions not supported")]);const h=Ns(s,["zoom"]);if(!h&&!al(e))return qn([new yi("","zoom expressions not supported")]);const d=It(s);return d||h?d instanceof yi?qn([d]):d instanceof Ni&&!ea(e)?qn([new yi("",'"interpolate" expressions cannot be used with this property')]):ol(d?new ut(c?"camera":"composite",r.value,d.labels,d instanceof Ni?d.interpolation:void 0):new ra(c?"constant":"source",r.value)):qn([new yi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Mt{constructor(e,r){this._parameters=e,this._specification=r,mr(this,ll(this._parameters,this._specification))}static deserialize(e){return new Mt(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function It(i){let e=null;if(i instanceof Gs)e=It(i.result);else if(i instanceof js){for(const r of i.args)if(e=It(r),e)break}else(i instanceof Un||i instanceof Ni)&&i.input instanceof er&&i.input.name==="zoom"&&(e=i);return e instanceof yi||i.eachChild(r=>{const s=It(r);s instanceof yi?e=s:!e&&s?e=new yi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&s&&e!==s&&(e=new yi("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function Gn(i){if(i===!0||i===!1)return!0;if(!Array.isArray(i)||i.length===0)return!1;switch(i[0]){case"has":return i.length>=2&&i[1]!=="$id"&&i[1]!=="$type";case"in":return i.length>=3&&(typeof i[1]!="string"||Array.isArray(i[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return i.length!==3||Array.isArray(i[1])||Array.isArray(i[2]);case"any":case"all":for(const e of i.slice(1))if(!Gn(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}const ul={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function na(i){if(i==null)return{filter:()=>!0,needGeometry:!1};Gn(i)||(i=Ys(i));const e=Ft(i,ul);if(e.result==="error")throw new Error(e.value.map(r=>`${r.key}: ${r.message}`).join(", "));return{filter:(r,s,c)=>e.value.evaluate(r,s,{},c),needGeometry:hl(i)}}function kc(i,e){return ie?1:0}function hl(i){if(!Array.isArray(i))return!1;if(i[0]==="within")return!0;for(let e=1;e"||e==="<="||e===">="?Js(i[1],i[2],e):e==="any"?(r=i.slice(1),["any"].concat(r.map(Ys))):e==="all"?["all"].concat(i.slice(1).map(Ys)):e==="none"?["all"].concat(i.slice(1).map(Ys).map(ds)):e==="in"?sa(i[1],i.slice(2)):e==="!in"?ds(sa(i[1],i.slice(2))):e==="has"?oa(i[1]):e==="!has"?ds(oa(i[1])):e!=="within"||i;var r}function Js(i,e,r){switch(i){case"$type":return[`filter-type-${r}`,e];case"$id":return[`filter-id-${r}`,e];default:return[`filter-${r}`,i,e]}}function sa(i,e){if(e.length===0)return!1;switch(i){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(r=>typeof r!=typeof e[0])?["filter-in-large",i,["literal",e.sort(kc)]]:["filter-in-small",i,["literal",e]]}}function oa(i){switch(i){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",i]}}function ds(i){return["!",i]}function ps(i){const e=typeof i;if(e==="number"||e==="boolean"||e==="string"||i==null)return JSON.stringify(i);if(Array.isArray(i)){let c="[";for(const h of i)c+=`${ps(h)},`;return`${c}]`}const r=Object.keys(i).sort();let s="{";for(let c=0;cs.maximum?[new Te(e,r,`${r} is greater than the maximum value ${s.maximum}`)]:[]}function fl(i){const e=i.valueSpec,r=Gt(i.value.type);let s,c,h,d={};const m=r!=="categorical"&&i.value.property===void 0,y=!m,E=wt(i.value.stops)==="array"&&wt(i.value.stops[0])==="array"&&wt(i.value.stops[0][0])==="object",T=tr({key:i.key,value:i.value,valueSpec:i.styleSpec.function,validateSpec:i.validateSpec,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{stops:function(z){if(r==="identity")return[new Te(z.key,z.value,'identity function may not have a "stops" property')];let D=[];const q=z.value;return D=D.concat(pl({key:z.key,value:q,valueSpec:z.valueSpec,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec,arrayElementValidator:A})),wt(q)==="array"&&q.length===0&&D.push(new Te(z.key,q,"array must have at least one stop")),D},default:function(z){return z.validateSpec({key:z.key,value:z.value,valueSpec:e,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec})}}});return r==="identity"&&m&&T.push(new Te(i.key,i.value,'missing required property "property"')),r==="identity"||i.value.stops||T.push(new Te(i.key,i.value,'missing required property "stops"')),r==="exponential"&&i.valueSpec.expression&&!ea(i.valueSpec)&&T.push(new Te(i.key,i.value,"exponential functions not supported")),i.styleSpec.$version>=8&&(y&&!jn(i.valueSpec)?T.push(new Te(i.key,i.value,"property functions not supported")):m&&!al(i.valueSpec)&&T.push(new Te(i.key,i.value,"zoom functions not supported"))),r!=="categorical"&&!E||i.value.property!==void 0||T.push(new Te(i.key,i.value,'"property" property is required')),T;function A(z){let D=[];const q=z.value,N=z.key;if(wt(q)!=="array")return[new Te(N,q,`array expected, ${wt(q)} found`)];if(q.length!==2)return[new Te(N,q,`array length 2 expected, length ${q.length} found`)];if(E){if(wt(q[0])!=="object")return[new Te(N,q,`object expected, ${wt(q[0])} found`)];if(q[0].zoom===void 0)return[new Te(N,q,"object stop key must have zoom")];if(q[0].value===void 0)return[new Te(N,q,"object stop key must have value")];if(h&&h>Gt(q[0].zoom))return[new Te(N,q[0].zoom,"stop zoom values must appear in ascending order")];Gt(q[0].zoom)!==h&&(h=Gt(q[0].zoom),c=void 0,d={}),D=D.concat(tr({key:`${N}[0]`,value:q[0],valueSpec:{zoom:{}},validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec,objectElementValidators:{zoom:aa,value:M}}))}else D=D.concat(M({key:`${N}[0]`,value:q[0],valueSpec:{},validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec},q));return Ws(gn(q[1]))?D.concat([new Te(`${N}[1]`,q[1],"expressions are not allowed in function stops.")]):D.concat(z.validateSpec({key:`${N}[1]`,value:q[1],valueSpec:e,validateSpec:z.validateSpec,style:z.style,styleSpec:z.styleSpec}))}function M(z,D){const q=wt(z.value),N=Gt(z.value),te=z.value!==null?z.value:D;if(s){if(q!==s)return[new Te(z.key,te,`${q} stop domain type must match previous stop domain type ${s}`)]}else s=q;if(q!=="number"&&q!=="string"&&q!=="boolean")return[new Te(z.key,te,"stop domain value must be a number, string, or boolean")];if(q!=="number"&&r!=="categorical"){let re=`number expected, ${q} found`;return jn(e)&&r===void 0&&(re+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Te(z.key,te,re)]}return r!=="categorical"||q!=="number"||isFinite(N)&&Math.floor(N)===N?r!=="categorical"&&q==="number"&&c!==void 0&&Nnew Te(`${i.key}${s.key}`,i.value,s.message));const r=e.value.expression||e.value._styleExpression.expression;if(i.expressionContext==="property"&&i.propertyKey==="text-font"&&!r.outputDefined())return[new Te(i.key,i.value,`Invalid data expression for "${i.propertyKey}". Output values must be contained as literals within the expression.`)];if(i.expressionContext==="property"&&i.propertyType==="layout"&&!On(r))return[new Te(i.key,i.value,'"feature-state" data expressions are not supported with layout properties.')];if(i.expressionContext==="filter"&&!On(r))return[new Te(i.key,i.value,'"feature-state" data expressions are not supported with filters.')];if(i.expressionContext&&i.expressionContext.indexOf("cluster")===0){if(!Ns(r,["zoom","feature-state"]))return[new Te(i.key,i.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(i.expressionContext==="cluster-initial"&&!cs(r))return[new Te(i.key,i.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function fs(i){const e=i.key,r=i.value,s=i.valueSpec,c=[];return Array.isArray(s.values)?s.values.indexOf(Gt(r))===-1&&c.push(new Te(e,r,`expected one of [${s.values.join(", ")}], ${JSON.stringify(r)} found`)):Object.keys(s.values).indexOf(Gt(r))===-1&&c.push(new Te(e,r,`expected one of [${Object.keys(s.values).join(", ")}], ${JSON.stringify(r)} found`)),c}function Zn(i){return Gn(gn(i.value))?_n(mr({},i,{expressionContext:"filter",valueSpec:{value:"boolean"}})):ml(i)}function ml(i){const e=i.value,r=i.key;if(wt(e)!=="array")return[new Te(r,e,`array expected, ${wt(e)} found`)];const s=i.styleSpec;let c,h=[];if(e.length<1)return[new Te(r,e,"filter array must have at least 1 element")];switch(h=h.concat(fs({key:`${r}[0]`,value:e[0],valueSpec:s.filter_operator,style:i.style,styleSpec:i.styleSpec})),Gt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Gt(e[1])==="$type"&&h.push(new Te(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&h.push(new Te(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(c=wt(e[1]),c!=="string"&&h.push(new Te(`${r}[1]`,e[1],`string expected, ${c} found`)));for(let d=2;d{E in r&&e.push(new Te(s,r[E],`"${E}" is prohibited for ref layers`))}),c.layers.forEach(E=>{Gt(E.id)===m&&(y=E)}),y?y.ref?e.push(new Te(s,r.ref,"ref cannot reference another ref layer")):d=Gt(y.type):e.push(new Te(s,r.ref,`ref layer "${m}" not found`))}else if(d!=="background")if(r.source){const y=c.sources&&c.sources[r.source],E=y&&Gt(y.type);y?E==="vector"&&d==="raster"?e.push(new Te(s,r.source,`layer "${r.id}" requires a raster source`)):E==="raster"&&d!=="raster"?e.push(new Te(s,r.source,`layer "${r.id}" requires a vector source`)):E!=="vector"||r["source-layer"]?E==="raster-dem"&&d!=="hillshade"?e.push(new Te(s,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):d!=="line"||!r.paint||!r.paint["line-gradient"]||E==="geojson"&&y.lineMetrics||e.push(new Te(s,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new Te(s,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new Te(s,r.source,`source "${r.source}" not found`))}else e.push(new Te(s,r,'missing required property "source"'));return e=e.concat(tr({key:s,value:r,valueSpec:h.layer,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,objectElementValidators:{"*":()=>[],type:()=>i.validateSpec({key:`${s}.type`,value:r.type,valueSpec:h.layer.type,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,object:r,objectKey:"type"}),filter:Zn,layout:y=>tr({layer:r,key:y.key,value:y.value,style:y.style,styleSpec:y.styleSpec,validateSpec:y.validateSpec,objectElementValidators:{"*":E=>gl(mr({layerType:d},E))}}),paint:y=>tr({layer:r,key:y.key,value:y.value,style:y.style,styleSpec:y.styleSpec,validateSpec:y.validateSpec,objectElementValidators:{"*":E=>ca(mr({layerType:d},E))}})}})),e}function _r(i){const e=i.value,r=i.key,s=wt(e);return s!=="string"?[new Te(r,e,`string expected, ${s} found`)]:[]}const eo={promoteId:function({key:i,value:e}){if(wt(e)==="string")return _r({key:i,value:e});{const r=[];for(const s in e)r.push(..._r({key:`${i}.${s}`,value:e[s]}));return r}}};function to(i){const e=i.value,r=i.key,s=i.styleSpec,c=i.style,h=i.validateSpec;if(!e.type)return[new Te(r,e,'"type" is required')];const d=Gt(e.type);let m;switch(d){case"vector":case"raster":case"raster-dem":return m=tr({key:r,value:e,valueSpec:s[`source_${d.replace("-","_")}`],style:i.style,styleSpec:s,objectElementValidators:eo,validateSpec:h}),m;case"geojson":if(m=tr({key:r,value:e,valueSpec:s.source_geojson,style:c,styleSpec:s,validateSpec:h,objectElementValidators:eo}),e.cluster)for(const y in e.clusterProperties){const[E,T]=e.clusterProperties[y],A=typeof E=="string"?[E,["accumulated"],["get",y]]:E;m.push(..._n({key:`${r}.${y}.map`,value:T,validateSpec:h,expressionContext:"cluster-map"})),m.push(..._n({key:`${r}.${y}.reduce`,value:A,validateSpec:h,expressionContext:"cluster-reduce"}))}return m;case"video":return tr({key:r,value:e,valueSpec:s.source_video,style:c,validateSpec:h,styleSpec:s});case"image":return tr({key:r,value:e,valueSpec:s.source_image,style:c,validateSpec:h,styleSpec:s});case"canvas":return[new Te(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return fs({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:c,validateSpec:h,styleSpec:s})}}function _l(i){const e=i.value,r=i.styleSpec,s=r.light,c=i.style;let h=[];const d=wt(e);if(e===void 0)return h;if(d!=="object")return h=h.concat([new Te("light",e,`object expected, ${d} found`)]),h;for(const m in e){const y=m.match(/^(.*)-transition$/);h=h.concat(y&&s[y[1]]&&s[y[1]].transition?i.validateSpec({key:m,value:e[m],valueSpec:r.transition,validateSpec:i.validateSpec,style:c,styleSpec:r}):s[m]?i.validateSpec({key:m,value:e[m],valueSpec:s[m],validateSpec:i.validateSpec,style:c,styleSpec:r}):[new Te(m,e[m],`unknown property "${m}"`)])}return h}function ms(i){const e=i.value,r=i.styleSpec,s=r.terrain,c=i.style;let h=[];const d=wt(e);if(e===void 0)return h;if(d!=="object")return h=h.concat([new Te("terrain",e,`object expected, ${d} found`)]),h;for(const m in e)h=h.concat(s[m]?i.validateSpec({key:m,value:e[m],valueSpec:s[m],validateSpec:i.validateSpec,style:c,styleSpec:r}):[new Te(m,e[m],`unknown property "${m}"`)]);return h}function yl(i){let e=[];const r=i.value,s=i.key;if(Array.isArray(r)){const c=[],h=[];for(const d in r)r[d].id&&c.includes(r[d].id)&&e.push(new Te(s,r,`all the sprites' ids must be unique, but ${r[d].id} is duplicated`)),c.push(r[d].id),r[d].url&&h.includes(r[d].url)&&e.push(new Te(s,r,`all the sprites' URLs must be unique, but ${r[d].url} is duplicated`)),h.push(r[d].url),e=e.concat(tr({key:`${s}[${d}]`,value:r[d],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:i.validateSpec}));return e}return _r({key:s,value:r})}const vl={"*":()=>[],array:pl,boolean:function(i){const e=i.value,r=i.key,s=wt(e);return s!=="boolean"?[new Te(r,e,`boolean expected, ${s} found`)]:[]},number:aa,color:function(i){const e=i.key,r=i.value,s=wt(r);return s!=="string"?[new Te(e,r,`color expected, ${s} found`)]:Qe.parse(String(r))?[]:[new Te(e,r,`color expected, "${r}" found`)]},constants:dl,enum:fs,filter:Zn,function:fl,layer:Qs,object:tr,source:to,light:_l,terrain:ms,string:_r,formatted:function(i){return _r(i).length===0?[]:_n(i)},resolvedImage:function(i){return _r(i).length===0?[]:_n(i)},padding:function(i){const e=i.key,r=i.value;if(wt(r)==="array"){if(r.length<1||r.length>4)return[new Te(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const s={type:"number"};let c=[];for(let h=0;h[]}})),i.constants&&(r=r.concat(dl({key:"constants",value:i.constants,style:i,styleSpec:e,validateSpec:gs}))),_s(r)}function ir(i){return function(e){return i({...e,validateSpec:gs})}}function _s(i){return[].concat(i).sort((e,r)=>e.line-r.line)}function Qt(i){return function(...e){return _s(i.apply(this,e))}}yr.source=Qt(ir(to)),yr.sprite=Qt(ir(yl)),yr.glyphs=Qt(ir(xl)),yr.light=Qt(ir(_l)),yr.terrain=Qt(ir(ms)),yr.layer=Qt(ir(Qs)),yr.filter=Qt(ir(Zn)),yr.paintProperty=Qt(ir(ca)),yr.layoutProperty=Qt(ir(gl));const tn=yr,Pc=tn.light,zc=tn.paintProperty,Lc=tn.layoutProperty;function Hn(i,e){let r=!1;if(e&&e.length)for(const s of e)i.fire(new Ji(new Error(s.message))),r=!0;return r}class ys{constructor(e,r,s){const c=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const d=new Int32Array(this.arrayBuffer);e=d[0],this.d=(r=d[1])+2*(s=d[2]);for(let y=0;y=A[D+0]&&c>=A[D+1])?(m[z]=!0,d.push(T[z])):m[z]=!1}}}}_forEachCell(e,r,s,c,h,d,m,y){const E=this._convertToCellCoord(e),T=this._convertToCellCoord(r),A=this._convertToCellCoord(s),M=this._convertToCellCoord(c);for(let z=E;z<=A;z++)for(let D=T;D<=M;D++){const q=this.d*D+z;if((!y||y(this._convertFromCellCoord(z),this._convertFromCellCoord(D),this._convertFromCellCoord(z+1),this._convertFromCellCoord(D+1)))&&h.call(this,e,r,s,c,q,d,m,y))return}}_convertFromCellCoord(e){return(e-this.padding)/this.scale}_convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const e=this.cells,r=3+this.cells.length+1+1;let s=0;for(let d=0;d=0)continue;const d=i[h];c[h]=vr[s].shallow.indexOf(h)>=0?d:vs(d,e)}i instanceof Error&&(c.message=i.message)}if(c.$name)throw new Error("$name property is reserved for worker serialization logic.");return s!=="Object"&&(c.$name=s),c}throw new Error("can't serialize object of type "+typeof i)}function Fr(i){if(i==null||typeof i=="boolean"||typeof i=="number"||typeof i=="string"||i instanceof Boolean||i instanceof Number||i instanceof String||i instanceof Date||i instanceof RegExp||i instanceof Blob||io(i)||ln(i)||ArrayBuffer.isView(i)||i instanceof ImageData)return i;if(Array.isArray(i))return i.map(Fr);if(typeof i=="object"){const e=i.$name||"Object";if(!vr[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=vr[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(i);const s=Object.create(r.prototype);for(const c of Object.keys(i)){if(c==="$name")continue;const h=i[c];s[c]=vr[e].shallow.indexOf(c)>=0?h:Fr(h)}return s}throw new Error("can't deserialize object of type "+typeof i)}class bl{constructor(){this.first=!0}update(e,r){const s=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=s,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=s,!0):(this.lastFloorZoom>s?(this.lastIntegerZoom=s+1,this.lastIntegerZoomTime=r):this.lastFloorZoomi>=128&&i<=255,Arabic:i=>i>=1536&&i<=1791,"Arabic Supplement":i=>i>=1872&&i<=1919,"Arabic Extended-A":i=>i>=2208&&i<=2303,"Hangul Jamo":i=>i>=4352&&i<=4607,"Unified Canadian Aboriginal Syllabics":i=>i>=5120&&i<=5759,Khmer:i=>i>=6016&&i<=6143,"Unified Canadian Aboriginal Syllabics Extended":i=>i>=6320&&i<=6399,"General Punctuation":i=>i>=8192&&i<=8303,"Letterlike Symbols":i=>i>=8448&&i<=8527,"Number Forms":i=>i>=8528&&i<=8591,"Miscellaneous Technical":i=>i>=8960&&i<=9215,"Control Pictures":i=>i>=9216&&i<=9279,"Optical Character Recognition":i=>i>=9280&&i<=9311,"Enclosed Alphanumerics":i=>i>=9312&&i<=9471,"Geometric Shapes":i=>i>=9632&&i<=9727,"Miscellaneous Symbols":i=>i>=9728&&i<=9983,"Miscellaneous Symbols and Arrows":i=>i>=11008&&i<=11263,"CJK Radicals Supplement":i=>i>=11904&&i<=12031,"Kangxi Radicals":i=>i>=12032&&i<=12255,"Ideographic Description Characters":i=>i>=12272&&i<=12287,"CJK Symbols and Punctuation":i=>i>=12288&&i<=12351,Hiragana:i=>i>=12352&&i<=12447,Katakana:i=>i>=12448&&i<=12543,Bopomofo:i=>i>=12544&&i<=12591,"Hangul Compatibility Jamo":i=>i>=12592&&i<=12687,Kanbun:i=>i>=12688&&i<=12703,"Bopomofo Extended":i=>i>=12704&&i<=12735,"CJK Strokes":i=>i>=12736&&i<=12783,"Katakana Phonetic Extensions":i=>i>=12784&&i<=12799,"Enclosed CJK Letters and Months":i=>i>=12800&&i<=13055,"CJK Compatibility":i=>i>=13056&&i<=13311,"CJK Unified Ideographs Extension A":i=>i>=13312&&i<=19903,"Yijing Hexagram Symbols":i=>i>=19904&&i<=19967,"CJK Unified Ideographs":i=>i>=19968&&i<=40959,"Yi Syllables":i=>i>=40960&&i<=42127,"Yi Radicals":i=>i>=42128&&i<=42191,"Hangul Jamo Extended-A":i=>i>=43360&&i<=43391,"Hangul Syllables":i=>i>=44032&&i<=55215,"Hangul Jamo Extended-B":i=>i>=55216&&i<=55295,"Private Use Area":i=>i>=57344&&i<=63743,"CJK Compatibility Ideographs":i=>i>=63744&&i<=64255,"Arabic Presentation Forms-A":i=>i>=64336&&i<=65023,"Vertical Forms":i=>i>=65040&&i<=65055,"CJK Compatibility Forms":i=>i>=65072&&i<=65103,"Small Form Variants":i=>i>=65104&&i<=65135,"Arabic Presentation Forms-B":i=>i>=65136&&i<=65279,"Halfwidth and Fullwidth Forms":i=>i>=65280&&i<=65519};function ro(i){for(const e of i)if(no(e.charCodeAt(0)))return!0;return!1}function ua(i){for(const e of i)if(!wl(e.charCodeAt(0)))return!1;return!0}function wl(i){return!(ze.Arabic(i)||ze["Arabic Supplement"](i)||ze["Arabic Extended-A"](i)||ze["Arabic Presentation Forms-A"](i)||ze["Arabic Presentation Forms-B"](i))}function no(i){return!(i!==746&&i!==747&&(i<4352||!(ze["Bopomofo Extended"](i)||ze.Bopomofo(i)||ze["CJK Compatibility Forms"](i)&&!(i>=65097&&i<=65103)||ze["CJK Compatibility Ideographs"](i)||ze["CJK Compatibility"](i)||ze["CJK Radicals Supplement"](i)||ze["CJK Strokes"](i)||!(!ze["CJK Symbols and Punctuation"](i)||i>=12296&&i<=12305||i>=12308&&i<=12319||i===12336)||ze["CJK Unified Ideographs Extension A"](i)||ze["CJK Unified Ideographs"](i)||ze["Enclosed CJK Letters and Months"](i)||ze["Hangul Compatibility Jamo"](i)||ze["Hangul Jamo Extended-A"](i)||ze["Hangul Jamo Extended-B"](i)||ze["Hangul Jamo"](i)||ze["Hangul Syllables"](i)||ze.Hiragana(i)||ze["Ideographic Description Characters"](i)||ze.Kanbun(i)||ze["Kangxi Radicals"](i)||ze["Katakana Phonetic Extensions"](i)||ze.Katakana(i)&&i!==12540||!(!ze["Halfwidth and Fullwidth Forms"](i)||i===65288||i===65289||i===65293||i>=65306&&i<=65310||i===65339||i===65341||i===65343||i>=65371&&i<=65503||i===65507||i>=65512&&i<=65519)||!(!ze["Small Form Variants"](i)||i>=65112&&i<=65118||i>=65123&&i<=65126)||ze["Unified Canadian Aboriginal Syllabics"](i)||ze["Unified Canadian Aboriginal Syllabics Extended"](i)||ze["Vertical Forms"](i)||ze["Yijing Hexagram Symbols"](i)||ze["Yi Syllables"](i)||ze["Yi Radicals"](i))))}function El(i){return!(no(i)||function(e){return!!(ze["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||ze["General Punctuation"](e)&&(e===8214||e===8224||e===8225||e===8240||e===8241||e===8251||e===8252||e===8258||e===8263||e===8264||e===8265||e===8273)||ze["Letterlike Symbols"](e)||ze["Number Forms"](e)||ze["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||e===9003||e>=9085&&e<=9114||e>=9150&&e<=9165||e===9167||e>=9169&&e<=9179||e>=9186&&e<=9215)||ze["Control Pictures"](e)&&e!==9251||ze["Optical Character Recognition"](e)||ze["Enclosed Alphanumerics"](e)||ze["Geometric Shapes"](e)||ze["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||ze["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||ze["CJK Symbols and Punctuation"](e)||ze.Katakana(e)||ze["Private Use Area"](e)||ze["CJK Compatibility Forms"](e)||ze["Small Form Variants"](e)||ze["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)}(i))}function so(i){return i>=1424&&i<=2303||ze["Arabic Presentation Forms-A"](i)||ze["Arabic Presentation Forms-B"](i)}function oo(i,e){return!(!e&&so(i)||i>=2304&&i<=3583||i>=3840&&i<=4255||ze.Khmer(i))}function Tl(i){for(const e of i)if(so(e.charCodeAt(0)))return!0;return!1}const ha="deferred",ao="loading",da="loaded";let xs=null,Li="unavailable",rn=null;const Sl=function(i){i&&typeof i=="string"&&i.indexOf("NetworkError")>-1&&(Li="error"),xs&&xs(i)};function pa(){lo.fire(new zr("pluginStateChange",{pluginStatus:Li,pluginURL:rn}))}const lo=new Dn,fa=function(){return Li},Il=function(){if(Li!==ha||!rn)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Li=ao,pa(),rn&&Ln({url:rn},i=>{i?Sl(i):(Li=da,pa())})},rr={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Li===da||rr.applyArabicShaping!=null,isLoading:()=>Li===ao,setState(i){if(!_i())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");Li=i.pluginStatus,rn=i.pluginURL},isParsed(){if(!_i())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return rr.applyArabicShaping!=null&&rr.processBidirectionalText!=null&&rr.processStyledBidirectionalText!=null},getPluginURL(){if(!_i())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return rn}};class Bt{constructor(e,r){this.zoom=e,r?(this.now=r.now,this.fadeDuration=r.fadeDuration,this.zoomHistory=r.zoomHistory,this.transition=r.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new bl,this.transition={})}isSupportedScript(e){return function(r,s){for(const c of r)if(!oo(c.charCodeAt(0),s))return!1;return!0}(e,rr.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,r=e-Math.floor(e),s=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:r+(1-r)*s}:{fromScale:.5,toScale:1,t:1-(1-s)*r}}}class co{constructor(e,r){this.property=e,this.value=r,this.expression=function(s,c){if(Xs(s))return new Mt(s,c);if(Ws(s)){const h=Ks(s,c);if(h.result==="error")throw new Error(h.value.map(d=>`${d.key}: ${d.message}`).join(", "));return h.value}{let h=s;return c.type==="color"&&typeof s=="string"?h=Qe.parse(s):c.type!=="padding"||typeof s!="number"&&!Array.isArray(s)||(h=Ui.parse(s)),{kind:"constant",evaluate:()=>h}}}(r===void 0?e.specification.default:r,e.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,r,s){return this.property.possiblyEvaluate(this,e,r,s)}}class ma{constructor(e){this.property=e,this.value=new co(e,void 0)}transitioned(e,r){return new bs(this.property,this.value,r,Ge({},e.transition,this.transition),e.now)}untransitioned(){return new bs(this.property,this.value,null,{},0)}}class Al{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return Ct(this._values[e].value.value)}setValue(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new ma(this._values[e].property)),this._values[e].value=new co(this._values[e].property,r===null?void 0:Ct(r))}getTransition(e){return Ct(this._values[e].transition)}setTransition(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new ma(this._values[e].property)),this._values[e].transition=Ct(r)||void 0}serialize(){const e={};for(const r of Object.keys(this._values)){const s=this.getValue(r);s!==void 0&&(e[r]=s);const c=this.getTransition(r);c!==void 0&&(e[`${r}-transition`]=c)}return e}transitioned(e,r){const s=new Cl(this._properties);for(const c of Object.keys(this._values))s._values[c]=this._values[c].transitioned(e,r._values[c]);return s}untransitioned(){const e=new Cl(this._properties);for(const r of Object.keys(this._values))e._values[r]=this._values[r].untransitioned();return e}}class bs{constructor(e,r,s,c,h){this.property=e,this.value=r,this.begin=h+c.delay||0,this.end=this.begin+c.duration||0,e.specification.transition&&(c.delay||c.duration)&&(this.prior=s)}possiblyEvaluate(e,r,s){const c=e.now||0,h=this.value.possiblyEvaluate(e,r,s),d=this.prior;if(d){if(c>this.end)return this.prior=null,h;if(this.value.isDataDriven())return this.prior=null,h;if(c=1)return 1;const E=y*y,T=E*y;return 4*(y<.5?T:3*(y-E)+T-.75)}(m))}}return h}}class Cl{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,r,s){const c=new uo(this._properties);for(const h of Object.keys(this._values))c._values[h]=this._values[h].possiblyEvaluate(e,r,s);return c}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class ga{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}getValue(e){return Ct(this._values[e].value)}setValue(e,r){this._values[e]=new co(this._values[e].property,r===null?void 0:Ct(r))}serialize(){const e={};for(const r of Object.keys(this._values)){const s=this.getValue(r);s!==void 0&&(e[r]=s)}return e}possiblyEvaluate(e,r,s){const c=new uo(this._properties);for(const h of Object.keys(this._values))c._values[h]=this._values[h].possiblyEvaluate(e,r,s);return c}}class xr{constructor(e,r,s){this.property=e,this.value=r,this.parameters=s}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,r,s,c){return this.property.evaluate(this.value,this.parameters,e,r,s,c)}}class uo{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class je{constructor(e){this.specification=e}possiblyEvaluate(e,r){if(e.isDataDriven())throw new Error("Value should not be data driven");return e.expression.evaluate(r)}interpolate(e,r,s){const c=Vi[this.specification.type];return c?c(e,r,s):e}}class Ke{constructor(e,r){this.specification=e,this.overrides=r}possiblyEvaluate(e,r,s,c){return new xr(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(r,null,{},s,c)}:e.expression,r)}interpolate(e,r,s){if(e.value.kind!=="constant"||r.value.kind!=="constant")return e;if(e.value.value===void 0||r.value.value===void 0)return new xr(this,{kind:"constant",value:void 0},e.parameters);const c=Vi[this.specification.type];if(c){const h=c(e.value.value,r.value.value,s);return new xr(this,{kind:"constant",value:h},e.parameters)}return e}evaluate(e,r,s,c,h,d){return e.kind==="constant"?e.value:e.evaluate(r,s,c,h,d)}}class ws extends Ke{possiblyEvaluate(e,r,s,c){if(e.value===void 0)return new xr(this,{kind:"constant",value:void 0},r);if(e.expression.kind==="constant"){const h=e.expression.evaluate(r,null,{},s,c),d=e.property.specification.type==="resolvedImage"&&typeof h!="string"?h.name:h,m=this._calculate(d,d,d,r);return new xr(this,{kind:"constant",value:m},r)}if(e.expression.kind==="camera"){const h=this._calculate(e.expression.evaluate({zoom:r.zoom-1}),e.expression.evaluate({zoom:r.zoom}),e.expression.evaluate({zoom:r.zoom+1}),r);return new xr(this,{kind:"constant",value:h},r)}return new xr(this,e.expression,r)}evaluate(e,r,s,c,h,d){if(e.kind==="source"){const m=e.evaluate(r,s,c,h,d);return this._calculate(m,m,m,r)}return e.kind==="composite"?this._calculate(e.evaluate({zoom:Math.floor(r.zoom)-1},s,c),e.evaluate({zoom:Math.floor(r.zoom)},s,c),e.evaluate({zoom:Math.floor(r.zoom)+1},s,c),r):e.value}_calculate(e,r,s,c){return c.zoom>c.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:s,to:r}}interpolate(e){return e}}class _a{constructor(e){this.specification=e}possiblyEvaluate(e,r,s,c){if(e.value!==void 0){if(e.expression.kind==="constant"){const h=e.expression.evaluate(r,null,{},s,c);return this._calculate(h,h,h,r)}return this._calculate(e.expression.evaluate(new Bt(Math.floor(r.zoom-1),r)),e.expression.evaluate(new Bt(Math.floor(r.zoom),r)),e.expression.evaluate(new Bt(Math.floor(r.zoom+1),r)),r)}}_calculate(e,r,s,c){return c.zoom>c.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:s,to:r}}interpolate(e){return e}}class ya{constructor(e){this.specification=e}possiblyEvaluate(e,r,s,c){return!!e.expression.evaluate(r,null,{},s,c)}interpolate(){return!1}}class Di{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const r in e){const s=e[r];s.specification.overridable&&this.overridableProperties.push(r);const c=this.defaultPropertyValues[r]=new co(s,void 0),h=this.defaultTransitionablePropertyValues[r]=new ma(s);this.defaultTransitioningPropertyValues[r]=h.untransitioned(),this.defaultPossiblyEvaluatedValues[r]=c.possiblyEvaluate({})}}}Ue("DataDrivenProperty",Ke),Ue("DataConstantProperty",je),Ue("CrossFadedDataDrivenProperty",ws),Ue("CrossFadedProperty",_a),Ue("ColorRampProperty",ya);const kl="-transition";class br extends Dn{constructor(e,r){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1},e.type!=="custom"&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!=="background"&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new ga(r.layout)),r.paint)){this._transitionablePaint=new Al(r.paint);for(const s in e.paint)this.setPaintProperty(s,e.paint[s],{validate:!1});for(const s in e.layout)this.setLayoutProperty(s,e.layout[s],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new uo(r.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,r,s={}){r!=null&&this._validate(Lc,`layers.${this.id}.layout.${e}`,e,r,s)||(e!=="visibility"?this._unevaluatedLayout.setValue(e,r):this.visibility=r)}getPaintProperty(e){return e.endsWith(kl)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,r,s={}){if(r!=null&&this._validate(zc,`layers.${this.id}.paint.${e}`,e,r,s))return!1;if(e.endsWith(kl))return this._transitionablePaint.setTransition(e.slice(0,-11),r||void 0),!1;{const c=this._transitionablePaint._values[e],h=c.property.specification["property-type"]==="cross-faded-data-driven",d=c.value.isDataDriven(),m=c.value;this._transitionablePaint.setValue(e,r),this._handleSpecialPaintPropertyUpdate(e);const y=this._transitionablePaint._values[e].value;return y.isDataDriven()||d||h||this._handleOverridablePaintPropertyUpdate(e,m,y)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,r,s){return!1}isHidden(e){return!!(this.minzoom&&e=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,r){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,r)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,r)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),At(e,(r,s)=>!(r===void 0||s==="layout"&&!Object.keys(r).length||s==="paint"&&!Object.keys(r).length))}_validate(e,r,s,c,h={}){return(!h||h.validate!==!1)&&Hn(this,e.call(tn,{key:r,layerType:this.type,objectKey:s,value:c,styleSpec:de,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const r=this.paint.get(e);if(r instanceof xr&&jn(r.property.specification)&&(r.value.kind==="source"||r.value.kind==="composite")&&r.value.isStateDependent)return!0}return!1}}const Dc={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Or{constructor(e,r){this._structArray=e,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Ut{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,r){return e._trim(),r&&(e.isTransferred=!0,r.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const r=Object.create(this.prototype);return r.arrayBuffer=e.arrayBuffer,r.length=e.length,r.capacity=e.arrayBuffer.byteLength/r.bytesPerElement,r._refreshViews(),r}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function ei(i,e=1){let r=0,s=0;return{members:i.map(c=>{const h=Dc[c.type].BYTES_PER_ELEMENT,d=r=Ml(r,Math.max(e,h)),m=c.components||1;return s=Math.max(s,h),r+=h*m,{name:c.name,type:c.type,components:m,offset:d}}),size:Ml(r,Math.max(s,e)),alignment:e}}function Ml(i,e){return Math.ceil(i/e)*e}class Xn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const c=2*e;return this.int16[c+0]=r,this.int16[c+1]=s,e}}Xn.prototype.bytesPerElement=4,Ue("StructArrayLayout2i4",Xn);class ho extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s){const c=this.length;return this.resize(c+1),this.emplace(c,e,r,s)}emplace(e,r,s,c){const h=3*e;return this.int16[h+0]=r,this.int16[h+1]=s,this.int16[h+2]=c,e}}ho.prototype.bytesPerElement=6,Ue("StructArrayLayout3i6",ho);class va extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,r,s,c)}emplace(e,r,s,c,h){const d=4*e;return this.int16[d+0]=r,this.int16[d+1]=s,this.int16[d+2]=c,this.int16[d+3]=h,e}}va.prototype.bytesPerElement=8,Ue("StructArrayLayout4i8",va);class wr extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,s,c,h,d)}emplace(e,r,s,c,h,d,m){const y=6*e;return this.int16[y+0]=r,this.int16[y+1]=s,this.int16[y+2]=c,this.int16[y+3]=h,this.int16[y+4]=d,this.int16[y+5]=m,e}}wr.prototype.bytesPerElement=12,Ue("StructArrayLayout2i4i12",wr);class po extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,s,c,h,d)}emplace(e,r,s,c,h,d,m){const y=4*e,E=8*e;return this.int16[y+0]=r,this.int16[y+1]=s,this.uint8[E+4]=c,this.uint8[E+5]=h,this.uint8[E+6]=d,this.uint8[E+7]=m,e}}po.prototype.bytesPerElement=8,Ue("StructArrayLayout2i4ub8",po);class yn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const c=2*e;return this.float32[c+0]=r,this.float32[c+1]=s,e}}yn.prototype.bytesPerElement=8,Ue("StructArrayLayout2f8",yn);class fo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d,m,y,E,T){const A=this.length;return this.resize(A+1),this.emplace(A,e,r,s,c,h,d,m,y,E,T)}emplace(e,r,s,c,h,d,m,y,E,T,A){const M=10*e;return this.uint16[M+0]=r,this.uint16[M+1]=s,this.uint16[M+2]=c,this.uint16[M+3]=h,this.uint16[M+4]=d,this.uint16[M+5]=m,this.uint16[M+6]=y,this.uint16[M+7]=E,this.uint16[M+8]=T,this.uint16[M+9]=A,e}}fo.prototype.bytesPerElement=20,Ue("StructArrayLayout10ui20",fo);class Es extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d,m,y,E,T,A,M){const z=this.length;return this.resize(z+1),this.emplace(z,e,r,s,c,h,d,m,y,E,T,A,M)}emplace(e,r,s,c,h,d,m,y,E,T,A,M,z){const D=12*e;return this.int16[D+0]=r,this.int16[D+1]=s,this.int16[D+2]=c,this.int16[D+3]=h,this.uint16[D+4]=d,this.uint16[D+5]=m,this.uint16[D+6]=y,this.uint16[D+7]=E,this.int16[D+8]=T,this.int16[D+9]=A,this.int16[D+10]=M,this.int16[D+11]=z,e}}Es.prototype.bytesPerElement=24,Ue("StructArrayLayout4i4ui4i24",Es);class xa extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s){const c=this.length;return this.resize(c+1),this.emplace(c,e,r,s)}emplace(e,r,s,c){const h=3*e;return this.float32[h+0]=r,this.float32[h+1]=s,this.float32[h+2]=c,e}}xa.prototype.bytesPerElement=12,Ue("StructArrayLayout3f12",xa);class Wn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint32[1*e+0]=r,e}}Wn.prototype.bytesPerElement=4,Ue("StructArrayLayout1ul4",Wn);class vn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d,m,y,E){const T=this.length;return this.resize(T+1),this.emplace(T,e,r,s,c,h,d,m,y,E)}emplace(e,r,s,c,h,d,m,y,E,T){const A=10*e,M=5*e;return this.int16[A+0]=r,this.int16[A+1]=s,this.int16[A+2]=c,this.int16[A+3]=h,this.int16[A+4]=d,this.int16[A+5]=m,this.uint32[M+3]=y,this.uint16[A+8]=E,this.uint16[A+9]=T,e}}vn.prototype.bytesPerElement=20,Ue("StructArrayLayout6i1ul2ui20",vn);class ba extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,s,c,h,d)}emplace(e,r,s,c,h,d,m){const y=6*e;return this.int16[y+0]=r,this.int16[y+1]=s,this.int16[y+2]=c,this.int16[y+3]=h,this.int16[y+4]=d,this.int16[y+5]=m,e}}ba.prototype.bytesPerElement=12,Ue("StructArrayLayout2i2i2i12",ba);class mo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h){const d=this.length;return this.resize(d+1),this.emplace(d,e,r,s,c,h)}emplace(e,r,s,c,h,d){const m=4*e,y=8*e;return this.float32[m+0]=r,this.float32[m+1]=s,this.float32[m+2]=c,this.int16[y+6]=h,this.int16[y+7]=d,e}}mo.prototype.bytesPerElement=16,Ue("StructArrayLayout2f1f2i16",mo);class xn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,r,s,c)}emplace(e,r,s,c,h){const d=12*e,m=3*e;return this.uint8[d+0]=r,this.uint8[d+1]=s,this.float32[m+1]=c,this.float32[m+2]=h,e}}xn.prototype.bytesPerElement=12,Ue("StructArrayLayout2ub2f12",xn);class go extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s){const c=this.length;return this.resize(c+1),this.emplace(c,e,r,s)}emplace(e,r,s,c){const h=3*e;return this.uint16[h+0]=r,this.uint16[h+1]=s,this.uint16[h+2]=c,e}}go.prototype.bytesPerElement=6,Ue("StructArrayLayout3ui6",go);class wa extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te){const re=this.length;return this.resize(re+1),this.emplace(re,e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te)}emplace(e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te,re){const J=24*e,ae=12*e,ce=48*e;return this.int16[J+0]=r,this.int16[J+1]=s,this.uint16[J+2]=c,this.uint16[J+3]=h,this.uint32[ae+2]=d,this.uint32[ae+3]=m,this.uint32[ae+4]=y,this.uint16[J+10]=E,this.uint16[J+11]=T,this.uint16[J+12]=A,this.float32[ae+7]=M,this.float32[ae+8]=z,this.uint8[ce+36]=D,this.uint8[ce+37]=q,this.uint8[ce+38]=N,this.uint32[ae+10]=te,this.int16[J+22]=re,e}}wa.prototype.bytesPerElement=48,Ue("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",wa);class _o extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te,re,J,ae,ce,pe,Oe,Ne,De,Ce,Se,Be){const Me=this.length;return this.resize(Me+1),this.emplace(Me,e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te,re,J,ae,ce,pe,Oe,Ne,De,Ce,Se,Be)}emplace(e,r,s,c,h,d,m,y,E,T,A,M,z,D,q,N,te,re,J,ae,ce,pe,Oe,Ne,De,Ce,Se,Be,Me){const be=34*e,Xe=17*e;return this.int16[be+0]=r,this.int16[be+1]=s,this.int16[be+2]=c,this.int16[be+3]=h,this.int16[be+4]=d,this.int16[be+5]=m,this.int16[be+6]=y,this.int16[be+7]=E,this.uint16[be+8]=T,this.uint16[be+9]=A,this.uint16[be+10]=M,this.uint16[be+11]=z,this.uint16[be+12]=D,this.uint16[be+13]=q,this.uint16[be+14]=N,this.uint16[be+15]=te,this.uint16[be+16]=re,this.uint16[be+17]=J,this.uint16[be+18]=ae,this.uint16[be+19]=ce,this.uint16[be+20]=pe,this.uint16[be+21]=Oe,this.uint16[be+22]=Ne,this.uint32[Xe+12]=De,this.float32[Xe+13]=Ce,this.float32[Xe+14]=Se,this.float32[Xe+15]=Be,this.float32[Xe+16]=Me,e}}_o.prototype.bytesPerElement=68,Ue("StructArrayLayout8i15ui1ul4f68",_o);class yo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.float32[1*e+0]=r,e}}yo.prototype.bytesPerElement=4,Ue("StructArrayLayout1f4",yo);class vo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s){const c=this.length;return this.resize(c+1),this.emplace(c,e,r,s)}emplace(e,r,s,c){const h=4*e;return this.uint32[2*e+0]=r,this.uint16[h+2]=s,this.uint16[h+3]=c,e}}vo.prototype.bytesPerElement=8,Ue("StructArrayLayout1ul2ui8",vo);class l extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const c=2*e;return this.uint16[c+0]=r,this.uint16[c+1]=s,e}}l.prototype.bytesPerElement=4,Ue("StructArrayLayout2ui4",l);class t extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint16[1*e+0]=r,e}}t.prototype.bytesPerElement=2,Ue("StructArrayLayout1ui2",t);class n extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,r,s,c)}emplace(e,r,s,c,h){const d=4*e;return this.float32[d+0]=r,this.float32[d+1]=s,this.float32[d+2]=c,this.float32[d+3]=h,e}}n.prototype.bytesPerElement=16,Ue("StructArrayLayout4f16",n);class o extends Or{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new se(this.anchorPointX,this.anchorPointY)}}o.prototype.size=20;class u extends vn{get(e){return new o(this,e)}}Ue("CollisionBoxArray",u);class p extends Or{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(e){this._structArray.uint8[this._pos1+37]=e}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(e){this._structArray.uint8[this._pos1+38]=e}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(e){this._structArray.uint32[this._pos4+10]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}p.prototype.size=48;class _ extends wa{get(e){return new p(this,e)}}Ue("PlacedSymbolArray",_);class x extends Or{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(e){this._structArray.uint32[this._pos4+12]=e}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get textOffset0(){return this._structArray.float32[this._pos4+14]}get textOffset1(){return this._structArray.float32[this._pos4+15]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+16]}}x.prototype.size=68;class v extends _o{get(e){return new x(this,e)}}Ue("SymbolInstanceArray",v);class w extends yo{getoffsetX(e){return this.float32[1*e+0]}}Ue("GlyphOffsetArray",w);class I extends ho{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}Ue("SymbolLineVertexArray",I);class S extends Or{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}S.prototype.size=8;class L extends vo{get(e){return new S(this,e)}}Ue("FeatureIndexArray",L);class $ extends Xn{}class U extends Xn{}class V extends Xn{}class H extends wr{}class ee extends po{}class le extends yn{}class G extends fo{}class oe extends Es{}class ue extends xa{}class ye extends Wn{}class xe extends ba{}class we extends xn{}class ve extends go{}class Re extends l{}const He=ei([{name:"a_pos",components:2,type:"Int16"}],4),{members:rt}=He;class Ie{constructor(e=[]){this.segments=e}prepareSegment(e,r,s,c){let h=this.segments[this.segments.length-1];return e>Ie.MAX_VERTEX_ARRAY_LENGTH&&Dt(`Max vertices per segment is ${Ie.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!h||h.vertexLength+e>Ie.MAX_VERTEX_ARRAY_LENGTH||h.sortKey!==c)&&(h={vertexOffset:r.length,primitiveOffset:s.length,vertexLength:0,primitiveLength:0},c!==void 0&&(h.sortKey=c),this.segments.push(h)),h}get(){return this.segments}destroy(){for(const e of this.segments)for(const r in e.vaos)e.vaos[r].destroy()}static simpleSegment(e,r,s,c){return new Ie([{vertexOffset:e,primitiveOffset:r,vertexLength:s,primitiveLength:c,vaos:{},sortKey:0}])}}function Ye(i,e){return 256*(i=Ae(Math.floor(i),0,255))+Ae(Math.floor(e),0,255)}Ie.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ue("SegmentVector",Ie);const Fe=ei([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var _t={exports:{}},Zt={exports:{}};Zt.exports=function(i,e){var r,s,c,h,d,m,y,E;for(s=i.length-(r=3&i.length),c=e,d=3432918353,m=461845907,E=0;E>>16)*d&65535)<<16)&4294967295)<<15|y>>>17))*m+(((y>>>16)*m&65535)<<16)&4294967295)<<13|c>>>19))+((5*(c>>>16)&65535)<<16)&4294967295))+((58964+(h>>>16)&65535)<<16);switch(y=0,r){case 3:y^=(255&i.charCodeAt(E+2))<<16;case 2:y^=(255&i.charCodeAt(E+1))<<8;case 1:c^=y=(65535&(y=(y=(65535&(y^=255&i.charCodeAt(E)))*d+(((y>>>16)*d&65535)<<16)&4294967295)<<15|y>>>17))*m+(((y>>>16)*m&65535)<<16)&4294967295}return c^=i.length,c=2246822507*(65535&(c^=c>>>16))+((2246822507*(c>>>16)&65535)<<16)&4294967295,c=3266489909*(65535&(c^=c>>>13))+((3266489909*(c>>>16)&65535)<<16)&4294967295,(c^=c>>>16)>>>0};var yt=Zt.exports,st={exports:{}};st.exports=function(i,e){for(var r,s=i.length,c=e^s,h=0;s>=4;)r=1540483477*(65535&(r=255&i.charCodeAt(h)|(255&i.charCodeAt(++h))<<8|(255&i.charCodeAt(++h))<<16|(255&i.charCodeAt(++h))<<24))+((1540483477*(r>>>16)&65535)<<16),c=1540483477*(65535&c)+((1540483477*(c>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),s-=4,++h;switch(s){case 3:c^=(255&i.charCodeAt(h+2))<<16;case 2:c^=(255&i.charCodeAt(h+1))<<8;case 1:c=1540483477*(65535&(c^=255&i.charCodeAt(h)))+((1540483477*(c>>>16)&65535)<<16)}return c=1540483477*(65535&(c^=c>>>13))+((1540483477*(c>>>16)&65535)<<16),(c^=c>>>15)>>>0};var Vt=yt,Ai=st.exports;_t.exports=Vt,_t.exports.murmur3=Vt,_t.exports.murmur2=Ai;var Ht=W(_t.exports);class li{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,r,s,c){this.ids.push($i(e)),this.positions.push(r,s,c)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const r=$i(e);let s=0,c=this.ids.length-1;for(;s>1;this.ids[d]>=r?c=d:s=d+1}const h=[];for(;this.ids[s]===r;)h.push({index:this.positions[3*s],start:this.positions[3*s+1],end:this.positions[3*s+2]}),s++;return h}static serialize(e,r){const s=new Float64Array(e.ids),c=new Uint32Array(e.positions);return lr(s,c,0,s.length-1),r&&r.push(s.buffer,c.buffer),{ids:s,positions:c}}static deserialize(e){const r=new li;return r.ids=e.ids,r.positions=e.positions,r.indexed=!0,r}}function $i(i){const e=+i;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:Ht(String(i))}function lr(i,e,r,s){for(;r>1];let h=r-1,d=s+1;for(;;){do h++;while(i[h]c);if(h>=d)break;cr(i,h,d),cr(e,3*h,3*d),cr(e,3*h+1,3*d+1),cr(e,3*h+2,3*d+2)}d-r`u_${c}`),this.type=s}setUniform(e,r,s){e.set(s.constantOr(this.value))}getBinding(e,r,s){return this.type==="color"?new vi(e,r):new Er(e,r)}}class ui{constructor(e,r){this.uniformNames=r.map(s=>`u_${s}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,r){this.pixelRatioFrom=r.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=r.tlbr,this.patternTo=e.tlbr}setUniform(e,r,s,c){const h=c==="u_pattern_to"?this.patternTo:c==="u_pattern_from"?this.patternFrom:c==="u_pixel_ratio_to"?this.pixelRatioTo:c==="u_pixel_ratio_from"?this.pixelRatioFrom:null;h&&e.set(h)}getBinding(e,r,s){return s.substr(0,9)==="u_pattern"?new Ts(e,r):new Er(e,r)}}class bt{constructor(e,r,s,c){this.expression=e,this.type=s,this.maxValue=0,this.paintVertexAttributes=r.map(h=>({name:`a_${h}`,type:"Float32",components:s==="color"?2:1,offset:0})),this.paintVertexArray=new c}populatePaintArray(e,r,s,c,h){const d=this.paintVertexArray.length,m=this.expression.evaluate(new Bt(0),r,{},c,[],h);this.paintVertexArray.resize(e),this._setPaintValue(d,e,m)}updatePaintArray(e,r,s,c){const h=this.expression.evaluate({zoom:0},s,c);this._setPaintValue(e,r,h)}_setPaintValue(e,r,s){if(this.type==="color"){const c=vt(s);for(let h=e;h`u_${m}_t`),this.type=s,this.useIntegerZoom=c,this.zoom=h,this.maxValue=0,this.paintVertexAttributes=r.map(m=>({name:`a_${m}`,type:"Float32",components:s==="color"?4:2,offset:0})),this.paintVertexArray=new d}populatePaintArray(e,r,s,c,h){const d=this.expression.evaluate(new Bt(this.zoom),r,{},c,[],h),m=this.expression.evaluate(new Bt(this.zoom+1),r,{},c,[],h),y=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(y,e,d,m)}updatePaintArray(e,r,s,c){const h=this.expression.evaluate({zoom:this.zoom},s,c),d=this.expression.evaluate({zoom:this.zoom+1},s,c);this._setPaintValue(e,r,h,d)}_setPaintValue(e,r,s,c){if(this.type==="color"){const h=vt(s),d=vt(c);for(let m=e;m`#define HAS_UNIFORM_${c}`))}return e}getBinderAttributes(){const e=[];for(const r in this.binders){const s=this.binders[r];if(s instanceof bt||s instanceof oi)for(let c=0;c!0){this.programConfigurations={};for(const c of e)this.programConfigurations[c.id]=new xo(c,r,s);this.needsUpload=!1,this._featureMap=new li,this._bufferOffset=0}populatePaintArrays(e,r,s,c,h,d){for(const m in this.programConfigurations)this.programConfigurations[m].populatePaintArrays(e,r,c,h,d);r.id!==void 0&&this._featureMap.add(r.id,s,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,r,s,c){for(const h of s)this.needsUpload=this.programConfigurations[h.id].updatePaintArrays(e,this._featureMap,r,h,c)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const r in this.programConfigurations)this.programConfigurations[r].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function Bc(i,e){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[i]||[i.replace(`${e}-`,"").replace(/-/g,"_")]}function Pl(i,e,r){const s={color:{source:yn,composite:n},number:{source:yo,composite:yn}},c=function(h){return{"line-pattern":{source:G,composite:G},"fill-pattern":{source:G,composite:G},"fill-extrusion-pattern":{source:G,composite:G}}[h]}(i);return c&&c[r]||s[e][r]}Ue("ConstantBinder",si),Ue("CrossFadedConstantBinder",ui),Ue("SourceExpressionBinder",bt),Ue("CrossFadedCompositeBinder",qi),Ue("CompositeExpressionBinder",oi),Ue("ProgramConfiguration",xo,{omit:["_buffers"]}),Ue("ProgramConfigurationSet",Ur);var zt=8192;const Ea=Math.pow(2,14)-1,Ss=-Ea-1;function Vr(i){const e=zt/i.extent,r=i.loadGeometry();for(let s=0;sd.x+1||yd.y+1)&&Dt("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return r}function Is(i,e){return{type:i.type,id:i.id,properties:i.properties,geometry:e?Vr(i):[]}}function zl(i,e,r,s,c){i.emplaceBack(2*e+(s+1)/2,2*r+(c+1)/2)}class Rc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new U,this.indexArray=new ve,this.segments=new Ie,this.programConfigurations=new Ur(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){const c=this.layers[0],h=[];let d=null,m=!1;c.type==="circle"&&(d=c.layout.get("circle-sort-key"),m=!d.isConstant());for(const{feature:y,id:E,index:T,sourceLayerIndex:A}of e){const M=this.layers[0]._featureFilter.needGeometry,z=Is(y,M);if(!this.layers[0]._featureFilter.filter(new Bt(this.zoom),z,s))continue;const D=m?d.evaluate(z,{},s):void 0,q={id:E,properties:y.properties,type:y.type,sourceLayerIndex:A,index:T,geometry:M?z.geometry:Vr(y),patterns:{},sortKey:D};h.push(q)}m&&h.sort((y,E)=>y.sortKey-E.sortKey);for(const y of h){const{geometry:E,index:T,sourceLayerIndex:A}=y,M=e[T].feature;this.addFeature(y,E,T,s),r.featureIndex.insert(M,E,T,A,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,rt),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,r,s,c){for(const h of r)for(const d of h){const m=d.x,y=d.y;if(m<0||m>=zt||y<0||y>=zt)continue;const E=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),T=E.vertexLength;zl(this.layoutVertexArray,m,y,-1,-1),zl(this.layoutVertexArray,m,y,1,-1),zl(this.layoutVertexArray,m,y,1,1),zl(this.layoutVertexArray,m,y,-1,1),this.indexArray.emplaceBack(T,T+1,T+2),this.indexArray.emplaceBack(T,T+3,T+2),E.vertexLength+=4,E.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{},c)}}function Xu(i,e){for(let r=0;r1){if(Fc(i,e))return!0;for(let s=0;s1?r:r.sub(e)._mult(c)._add(e))}function Yu(i,e){let r,s,c,h=!1;for(let d=0;de.y!=c.y>e.y&&e.x<(c.x-s.x)*(e.y-s.y)/(c.y-s.y)+s.x&&(h=!h)}return h}function bo(i,e){let r=!1;for(let s=0,c=i.length-1;se.y!=d.y>e.y&&e.x<(d.x-h.x)*(e.y-h.y)/(d.y-h.y)+h.x&&(r=!r)}return r}function sp(i,e,r){const s=r[0],c=r[2];if(i.xc.x&&e.x>c.x||i.yc.y&&e.y>c.y)return!1;const h=ht(i,e,r[0]);return h!==ht(i,e,r[1])||h!==ht(i,e,r[2])||h!==ht(i,e,r[3])}function Ta(i,e,r){const s=e.paint.get(i).value;return s.kind==="constant"?s.value:r.programConfigurations.get(e.id).getMaxValue(i)}function Ll(i){return Math.sqrt(i[0]*i[0]+i[1]*i[1])}function Dl(i,e,r,s,c){if(!e[0]&&!e[1])return i;const h=se.convert(e)._mult(c);r==="viewport"&&h._rotate(-s);const d=[];for(let m=0;mi.width||c.height>i.height||r.x>i.width-c.width||r.y>i.height-c.height)throw new RangeError("out of range source coordinates for image copy");if(c.width>e.width||c.height>e.height||s.x>e.width-c.width||s.y>e.height-c.height)throw new RangeError("out of range destination coordinates for image copy");const d=i.data,m=e.data;if(d===m)throw new Error("srcData equals dstData, so image is already copied");for(let y=0;y{e[i.evaluationKey]=y;const E=i.expression.evaluate(e);c.data[d+m+0]=Math.floor(255*E.r/E.a),c.data[d+m+1]=Math.floor(255*E.g/E.a),c.data[d+m+2]=Math.floor(255*E.b/E.a),c.data[d+m+3]=Math.floor(255*E.a)};if(i.clips)for(let d=0,m=0;d80*r){s=h=i[0],c=d=i[1];for(var D=r;Dh&&(h=m),y>d&&(d=y);E=(E=Math.max(h-s,d-c))!==0?32767/E:0}return Aa(M,z,r,s,c,E,0),z}function ah(i,e,r,s,c){var h,d;if(c===Gc(i,e,r,s)>0)for(h=e;h=e;h-=s)d=uh(h,i[h],i[h+1],d);return d&&Fl(d,d.next)&&(ka(d),d=d.next),d}function As(i,e){if(!i)return i;e||(e=i);var r,s=i;do if(r=!1,s.steiner||!Fl(s,s.next)&&Xt(s.prev,s,s.next)!==0)s=s.next;else{if(ka(s),(s=e=s.prev)===s.next)break;r=!0}while(r||s!==e);return e}function Aa(i,e,r,s,c,h,d){if(i){!d&&h&&function(T,A,M,z){var D=T;do D.z===0&&(D.z=qc(D.x,D.y,A,M,z)),D.prevZ=D.prev,D.nextZ=D.next,D=D.next;while(D!==T);D.prevZ.nextZ=null,D.prevZ=null,function(q){var N,te,re,J,ae,ce,pe,Oe,Ne=1;do{for(te=q,q=null,ae=null,ce=0;te;){for(ce++,re=te,pe=0,N=0;N0||Oe>0&&re;)pe!==0&&(Oe===0||!re||te.z<=re.z)?(J=te,te=te.nextZ,pe--):(J=re,re=re.nextZ,Oe--),ae?ae.nextZ=J:q=J,J.prevZ=ae,ae=J;te=re}ae.nextZ=null,Ne*=2}while(ce>1)}(D)}(i,s,c,h);for(var m,y,E=i;i.prev!==i.next;)if(m=i.prev,y=i.next,h?pp(i,s,c,h):dp(i))e.push(m.i/r|0),e.push(i.i/r|0),e.push(y.i/r|0),ka(i),i=y.next,E=y.next;else if((i=y)===E){d?d===1?Aa(i=fp(As(i),e,r),e,r,s,c,h,2):d===2&&mp(i,e,r,s,c,h):Aa(As(i),e,r,s,c,h,1);break}}}function dp(i){var e=i.prev,r=i,s=i.next;if(Xt(e,r,s)>=0)return!1;for(var c=e.x,h=r.x,d=s.x,m=e.y,y=r.y,E=s.y,T=ch?c>d?c:d:h>d?h:d,z=m>y?m>E?m:E:y>E?y:E,D=s.next;D!==e;){if(D.x>=T&&D.x<=M&&D.y>=A&&D.y<=z&&Eo(c,m,h,y,d,E,D.x,D.y)&&Xt(D.prev,D,D.next)>=0)return!1;D=D.next}return!0}function pp(i,e,r,s){var c=i.prev,h=i,d=i.next;if(Xt(c,h,d)>=0)return!1;for(var m=c.x,y=h.x,E=d.x,T=c.y,A=h.y,M=d.y,z=my?m>E?m:E:y>E?y:E,N=T>A?T>M?T:M:A>M?A:M,te=qc(z,D,e,r,s),re=qc(q,N,e,r,s),J=i.prevZ,ae=i.nextZ;J&&J.z>=te&&ae&&ae.z<=re;){if(J.x>=z&&J.x<=q&&J.y>=D&&J.y<=N&&J!==c&&J!==d&&Eo(m,T,y,A,E,M,J.x,J.y)&&Xt(J.prev,J,J.next)>=0||(J=J.prevZ,ae.x>=z&&ae.x<=q&&ae.y>=D&&ae.y<=N&&ae!==c&&ae!==d&&Eo(m,T,y,A,E,M,ae.x,ae.y)&&Xt(ae.prev,ae,ae.next)>=0))return!1;ae=ae.nextZ}for(;J&&J.z>=te;){if(J.x>=z&&J.x<=q&&J.y>=D&&J.y<=N&&J!==c&&J!==d&&Eo(m,T,y,A,E,M,J.x,J.y)&&Xt(J.prev,J,J.next)>=0)return!1;J=J.prevZ}for(;ae&&ae.z<=re;){if(ae.x>=z&&ae.x<=q&&ae.y>=D&&ae.y<=N&&ae!==c&&ae!==d&&Eo(m,T,y,A,E,M,ae.x,ae.y)&&Xt(ae.prev,ae,ae.next)>=0)return!1;ae=ae.nextZ}return!0}function fp(i,e,r){var s=i;do{var c=s.prev,h=s.next.next;!Fl(c,h)&&lh(c,s,s.next,h)&&Ca(c,h)&&Ca(h,c)&&(e.push(c.i/r|0),e.push(s.i/r|0),e.push(h.i/r|0),ka(s),ka(s.next),s=i=h),s=s.next}while(s!==i);return As(s)}function mp(i,e,r,s,c,h){var d=i;do{for(var m=d.next.next;m!==d.prev;){if(d.i!==m.i&&xp(d,m)){var y=ch(d,m);return d=As(d,d.next),y=As(y,y.next),Aa(d,e,r,s,c,h,0),void Aa(y,e,r,s,c,h,0)}m=m.next}d=d.next}while(d!==i)}function gp(i,e){return i.x-e.x}function _p(i,e){var r=function(c,h){var d,m=h,y=c.x,E=c.y,T=-1/0;do{if(E<=m.y&&E>=m.next.y&&m.next.y!==m.y){var A=m.x+(E-m.y)*(m.next.x-m.x)/(m.next.y-m.y);if(A<=y&&A>T&&(T=A,d=m.x=m.x&&m.x>=D&&y!==m.x&&Eo(Ed.x||m.x===d.x&&yp(d,m)))&&(d=m,N=M)),m=m.next;while(m!==z);return d}(i,e);if(!r)return e;var s=ch(r,i);return As(s,s.next),As(r,r.next)}function yp(i,e){return Xt(i.prev,i,e.prev)<0&&Xt(e.next,i,i.next)<0}function qc(i,e,r,s,c){return(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=(i-r)*c|0)|i<<8))|i<<4))|i<<2))|i<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-s)*c|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function vp(i){var e=i,r=i;do(e.x=(i-d)*(h-m)&&(i-d)*(s-m)>=(r-d)*(e-m)&&(r-d)*(h-m)>=(c-d)*(s-m)}function xp(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!function(r,s){var c=r;do{if(c.i!==r.i&&c.next.i!==r.i&&c.i!==s.i&&c.next.i!==s.i&&lh(c,c.next,r,s))return!0;c=c.next}while(c!==r);return!1}(i,e)&&(Ca(i,e)&&Ca(e,i)&&function(r,s){var c=r,h=!1,d=(r.x+s.x)/2,m=(r.y+s.y)/2;do c.y>m!=c.next.y>m&&c.next.y!==c.y&&d<(c.next.x-c.x)*(m-c.y)/(c.next.y-c.y)+c.x&&(h=!h),c=c.next;while(c!==r);return h}(i,e)&&(Xt(i.prev,i,e.prev)||Xt(i,e.prev,e))||Fl(i,e)&&Xt(i.prev,i,i.next)>0&&Xt(e.prev,e,e.next)>0)}function Xt(i,e,r){return(e.y-i.y)*(r.x-e.x)-(e.x-i.x)*(r.y-e.y)}function Fl(i,e){return i.x===e.x&&i.y===e.y}function lh(i,e,r,s){var c=Ul(Xt(i,e,r)),h=Ul(Xt(i,e,s)),d=Ul(Xt(r,s,i)),m=Ul(Xt(r,s,e));return c!==h&&d!==m||!(c!==0||!Ol(i,r,e))||!(h!==0||!Ol(i,s,e))||!(d!==0||!Ol(r,i,s))||!(m!==0||!Ol(r,e,s))}function Ol(i,e,r){return e.x<=Math.max(i.x,r.x)&&e.x>=Math.min(i.x,r.x)&&e.y<=Math.max(i.y,r.y)&&e.y>=Math.min(i.y,r.y)}function Ul(i){return i>0?1:i<0?-1:0}function Ca(i,e){return Xt(i.prev,i,i.next)<0?Xt(i,e,i.next)>=0&&Xt(i,i.prev,e)>=0:Xt(i,e,i.prev)<0||Xt(i,i.next,e)<0}function ch(i,e){var r=new jc(i.i,i.x,i.y),s=new jc(e.i,e.x,e.y),c=i.next,h=e.prev;return i.next=e,e.prev=i,r.next=c,c.prev=r,s.next=r,r.prev=s,h.next=s,s.prev=h,s}function uh(i,e,r,s){var c=new jc(i,e,r);return s?(c.next=s.next,c.prev=s,s.next.prev=c,s.next=c):(c.prev=c,c.next=c),c}function ka(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function jc(i,e,r){this.i=i,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Gc(i,e,r,s){for(var c=0,h=e,d=r-s;h0&&r.holes.push(s+=i[c-1].length)}return r};var hh=W($c.exports);function bp(i,e,r,s,c){dh(i,e,r||0,s||i.length-1,c||wp)}function dh(i,e,r,s,c){for(;s>r;){if(s-r>600){var h=s-r+1,d=e-r+1,m=Math.log(h),y=.5*Math.exp(2*m/3),E=.5*Math.sqrt(m*y*(h-y)/h)*(d-h/2<0?-1:1);dh(i,e,Math.max(r,Math.floor(e-d*y/h+E)),Math.min(s,Math.floor(e+(h-d)*y/h+E)),c)}var T=i[e],A=r,M=s;for(Ma(i,r,e),c(i[s],T)>0&&Ma(i,r,s);A0;)M--}c(i[r],T)===0?Ma(i,r,M):Ma(i,++M,s),M<=e&&(r=M+1),e<=M&&(s=M-1)}}function Ma(i,e,r){var s=i[e];i[e]=i[r],i[r]=s}function wp(i,e){return ie?1:0}function Zc(i,e){const r=i.length;if(r<=1)return[i];const s=[];let c,h;for(let d=0;d1)for(let d=0;dr.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new V,this.indexArray=new ve,this.indexArray2=new Re,this.programConfigurations=new Ur(e.layers,e.zoom),this.segments=new Ie,this.segments2=new Ie,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.hasPattern=Hc("fill",this.layers,r);const c=this.layers[0].layout.get("fill-sort-key"),h=!c.isConstant(),d=[];for(const{feature:m,id:y,index:E,sourceLayerIndex:T}of e){const A=this.layers[0]._featureFilter.needGeometry,M=Is(m,A);if(!this.layers[0]._featureFilter.filter(new Bt(this.zoom),M,s))continue;const z=h?c.evaluate(M,{},s,r.availableImages):void 0,D={id:y,properties:m.properties,type:m.type,sourceLayerIndex:T,index:E,geometry:A?M.geometry:Vr(m),patterns:{},sortKey:z};d.push(D)}h&&d.sort((m,y)=>m.sortKey-y.sortKey);for(const m of d){const{geometry:y,index:E,sourceLayerIndex:T}=m;if(this.hasPattern){const A=Xc("fill",this.layers,m,this.zoom,r);this.patternFeatures.push(A)}else this.addFeature(m,y,E,s,{});r.featureIndex.insert(e[E].feature,y,E,T,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}addFeatures(e,r,s){for(const c of this.patternFeatures)this.addFeature(c,c.geometry,c.index,r,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,hp),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,r,s,c,h){for(const d of Zc(r,500)){let m=0;for(const z of d)m+=z.length;const y=this.segments.prepareSegment(m,this.layoutVertexArray,this.indexArray),E=y.vertexLength,T=[],A=[];for(const z of d){if(z.length===0)continue;z!==d[0]&&A.push(T.length/2);const D=this.segments2.prepareSegment(z.length,this.layoutVertexArray,this.indexArray2),q=D.vertexLength;this.layoutVertexArray.emplaceBack(z[0].x,z[0].y),this.indexArray2.emplaceBack(q+z.length-1,q),T.push(z[0].x),T.push(z[0].y);for(let N=1;N>3}if(c--,s===1||s===2)h+=i.readSVarint(),d+=i.readSVarint(),s===1&&(e&&m.push(e),e=[]),e.push(new Cp(h,d));else{if(s!==7)throw new Error("unknown command "+s);e&&e.push(e[0].clone())}}return e&&m.push(e),m},To.prototype.bbox=function(){var i=this._pbf;i.pos=this._geometry;for(var e=i.readVarint()+i.pos,r=1,s=0,c=0,h=0,d=1/0,m=-1/0,y=1/0,E=-1/0;i.pos>3}if(s--,r===1||r===2)(c+=i.readSVarint())m&&(m=c),(h+=i.readSVarint())E&&(E=h);else if(r!==7)throw new Error("unknown command "+r)}return[d,y,m,E]},To.prototype.toGeoJSON=function(i,e,r){var s,c,h=this.extent*Math.pow(2,r),d=this.extent*i,m=this.extent*e,y=this.loadGeometry(),E=To.types[this.type];function T(z){for(var D=0;D>3;c=d===1?s.readString():d===2?s.readFloat():d===3?s.readDouble():d===4?s.readVarint64():d===5?s.readVarint():d===6?s.readSVarint():d===7?s.readBoolean():null}return c}(r))}_h.prototype.feature=function(i){if(i<0||i>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[i];var e=this._pbf.readVarint()+this._pbf.pos;return new Pp(this._pbf,e,this.extent,this._keys,this._values)};var Lp=gh;function Dp(i,e,r){if(i===3){var s=new Lp(r,r.readVarint()+r.pos);s.length&&(e[s.name]=s)}}Kn.VectorTile=function(i,e){this.layers=i.readFields(Dp,{},e)},Kn.VectorTileFeature=mh,Kn.VectorTileLayer=gh;const Bp=Kn.VectorTileFeature.types,Kc=Math.pow(2,13);function Pa(i,e,r,s,c,h,d,m){i.emplaceBack(e,r,2*Math.floor(s*Kc)+d,c*Kc*2,h*Kc*2,Math.round(m))}class Yc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new H,this.centroidVertexArray=new $,this.indexArray=new ve,this.programConfigurations=new Ur(e.layers,e.zoom),this.segments=new Ie,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.features=[],this.hasPattern=Hc("fill-extrusion",this.layers,r);for(const{feature:c,id:h,index:d,sourceLayerIndex:m}of e){const y=this.layers[0]._featureFilter.needGeometry,E=Is(c,y);if(!this.layers[0]._featureFilter.filter(new Bt(this.zoom),E,s))continue;const T={id:h,sourceLayerIndex:m,index:d,geometry:y?E.geometry:Vr(c),properties:c.properties,type:c.type,patterns:{}};this.hasPattern?this.features.push(Xc("fill-extrusion",this.layers,T,this.zoom,r)):this.addFeature(T,T.geometry,d,s,{}),r.featureIndex.insert(c,T.geometry,d,m,this.index,!0)}}addFeatures(e,r,s){for(const c of this.features){const{geometry:h}=c;this.addFeature(c,h,c.index,r,s)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Ap),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Ip.members,!0),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(e,r,s,c,h){const d={x:0,y:0,vertexCount:0};for(const m of Zc(r,500)){let y=0;for(const D of m)y+=D.length;let E=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const D of m){if(D.length===0||Fp(D))continue;let q=0;for(let N=0;N=1){const re=D[N-1];if(!Rp(te,re)){E.vertexLength+4>Ie.MAX_VERTEX_ARRAY_LENGTH&&(E=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const J=te.sub(re)._perp()._unit(),ae=re.dist(te);q+ae>32768&&(q=0),Pa(this.layoutVertexArray,te.x,te.y,J.x,J.y,0,0,q),Pa(this.layoutVertexArray,te.x,te.y,J.x,J.y,0,1,q),d.x+=2*te.x,d.y+=2*te.y,d.vertexCount+=2,q+=ae,Pa(this.layoutVertexArray,re.x,re.y,J.x,J.y,0,0,q),Pa(this.layoutVertexArray,re.x,re.y,J.x,J.y,0,1,q),d.x+=2*re.x,d.y+=2*re.y,d.vertexCount+=2;const ce=E.vertexLength;this.indexArray.emplaceBack(ce,ce+2,ce+1),this.indexArray.emplaceBack(ce+1,ce+2,ce+3),E.vertexLength+=4,E.primitiveLength+=2}}}}if(E.vertexLength+y>Ie.MAX_VERTEX_ARRAY_LENGTH&&(E=this.segments.prepareSegment(y,this.layoutVertexArray,this.indexArray)),Bp[e.type]!=="Polygon")continue;const T=[],A=[],M=E.vertexLength;for(const D of m)if(D.length!==0){D!==m[0]&&A.push(T.length/2);for(let q=0;qzt)||i.y===e.y&&(i.y<0||i.y>zt)}function Fp(i){return i.every(e=>e.x<0)||i.every(e=>e.x>zt)||i.every(e=>e.y<0)||i.every(e=>e.y>zt)}let yh;Ue("FillExtrusionBucket",Yc,{omit:["layers","features"]});var Op={get paint(){return yh=yh||new Di({"fill-extrusion-opacity":new je(de["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ke(de["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new je(de["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new je(de["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new ws(de["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ke(de["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ke(de["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new je(de["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};function za(i,e){return i.x*e.x+i.y*e.y}function vh(i,e){if(i.length===1){let r=0;const s=e[r++];let c;for(;!c||s.equals(c);)if(c=e[r++],!c)return 1/0;for(;rr.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(r=>{this.gradients[r.id]={}}),this.layoutVertexArray=new ee,this.layoutVertexArray2=new le,this.indexArray=new ve,this.programConfigurations=new Ur(e.layers,e.zoom),this.segments=new Ie,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.hasPattern=Hc("line",this.layers,r);const c=this.layers[0].layout.get("line-sort-key"),h=!c.isConstant(),d=[];for(const{feature:m,id:y,index:E,sourceLayerIndex:T}of e){const A=this.layers[0]._featureFilter.needGeometry,M=Is(m,A);if(!this.layers[0]._featureFilter.filter(new Bt(this.zoom),M,s))continue;const z=h?c.evaluate(M,{},s):void 0,D={id:y,properties:m.properties,type:m.type,sourceLayerIndex:T,index:E,geometry:A?M.geometry:Vr(m),patterns:{},sortKey:z};d.push(D)}h&&d.sort((m,y)=>m.sortKey-y.sortKey);for(const m of d){const{geometry:y,index:E,sourceLayerIndex:T}=m;if(this.hasPattern){const A=Xc("line",this.layers,m,this.zoom,r);this.patternFeatures.push(A)}else this.addFeature(m,y,E,s,{});r.featureIndex.insert(e[E].feature,y,E,T,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}addFeatures(e,r,s){for(const c of this.patternFeatures)this.addFeature(c,c.geometry,c.index,r,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,$p)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Vp),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,r,s,c,h){const d=this.layers[0].layout,m=d.get("line-join").evaluate(e,{}),y=d.get("line-cap"),E=d.get("line-miter-limit"),T=d.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const A of r)this.addLine(A,e,m,y,E,T);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,h,c)}addLine(e,r,s,c,h,d){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let te=0;te=2&&e[y-1].equals(e[y-2]);)y--;let E=0;for(;E0;if(Oe&&te>E){const Se=M.dist(z);if(Se>2*T){const Be=M.sub(M.sub(z)._mult(T/Se)._round());this.updateDistance(z,Be),this.addCurrentVertex(Be,q,0,0,A),z=Be}}const De=z&&D;let Ce=De?s:m?"butt":c;if(De&&Ce==="round"&&(ceh&&(Ce="bevel"),Ce==="bevel"&&(ce>2&&(Ce="flipbevel"),ce100)re=N.mult(-1);else{const Se=ce*q.add(N).mag()/q.sub(N).mag();re._perp()._mult(Se*(Ne?-1:1))}this.addCurrentVertex(M,re,0,0,A),this.addCurrentVertex(M,re.mult(-1),0,0,A)}else if(Ce==="bevel"||Ce==="fakeround"){const Se=-Math.sqrt(ce*ce-1),Be=Ne?Se:0,Me=Ne?0:Se;if(z&&this.addCurrentVertex(M,q,Be,Me,A),Ce==="fakeround"){const be=Math.round(180*pe/Math.PI/20);for(let Xe=1;Xe2*T){const Be=M.add(D.sub(M)._mult(T/Se)._round());this.updateDistance(M,Be),this.addCurrentVertex(Be,N,0,0,A),M=Be}}}}addCurrentVertex(e,r,s,c,h,d=!1){const m=r.y*c-r.x,y=-r.y-r.x*c;this.addHalfVertex(e,r.x+r.y*s,r.y-r.x*s,d,!1,s,h),this.addHalfVertex(e,m,y,d,!0,-c,h),this.distance>xh/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,r,s,c,h,d))}addHalfVertex({x:e,y:r},s,c,h,d,m,y){const E=.5*(this.lineClips?this.scaledDistance*(xh-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(h?1:0),(r<<1)+(d?1:0),Math.round(63*s)+128,Math.round(63*c)+128,1+(m===0?0:m<0?-1:1)|(63&E)<<2,E>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const T=y.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,T),y.primitiveLength++),d?this.e2=T:this.e1=T}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,r){this.distance+=e.dist(r),this.updateScaledDistance()}}let bh,wh;Ue("LineBucket",Jc,{omit:["layers","patternFeatures"]});var Eh={get paint(){return wh=wh||new Di({"line-opacity":new Ke(de.paint_line["line-opacity"]),"line-color":new Ke(de.paint_line["line-color"]),"line-translate":new je(de.paint_line["line-translate"]),"line-translate-anchor":new je(de.paint_line["line-translate-anchor"]),"line-width":new Ke(de.paint_line["line-width"]),"line-gap-width":new Ke(de.paint_line["line-gap-width"]),"line-offset":new Ke(de.paint_line["line-offset"]),"line-blur":new Ke(de.paint_line["line-blur"]),"line-dasharray":new _a(de.paint_line["line-dasharray"]),"line-pattern":new ws(de.paint_line["line-pattern"]),"line-gradient":new ya(de.paint_line["line-gradient"])})},get layout(){return bh=bh||new Di({"line-cap":new je(de.layout_line["line-cap"]),"line-join":new Ke(de.layout_line["line-join"]),"line-miter-limit":new je(de.layout_line["line-miter-limit"]),"line-round-limit":new je(de.layout_line["line-round-limit"]),"line-sort-key":new Ke(de.layout_line["line-sort-key"])})}};class Gp extends Ke{possiblyEvaluate(e,r){return r=new Bt(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),super.possiblyEvaluate(e,r)}evaluate(e,r,s,c){return r=Ge({},r,{zoom:Math.floor(r.zoom)}),super.evaluate(e,r,s,c)}}let Vl;function Th(i,e){return e>0?e+2*i:i}const Zp=ei([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Hp=ei([{name:"a_projected_pos",components:3,type:"Float32"}],4);ei([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const Xp=ei([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);ei([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const Sh=ei([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Wp=ei([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Kp(i,e,r){return i.sections.forEach(s=>{s.text=function(c,h,d){const m=h.layout.get("text-transform").evaluate(d,{});return m==="uppercase"?c=c.toLocaleUpperCase():m==="lowercase"&&(c=c.toLocaleLowerCase()),rr.applyArabicShaping&&(c=rr.applyArabicShaping(c)),c}(s.text,e,r)}),i}ei([{name:"triangle",components:3,type:"Uint16"}]),ei([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),ei([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),ei([{type:"Float32",name:"offsetX"}]),ei([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);const La={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var hi=24,Ih=Et,Ah=function(i,e,r,s,c){var h,d,m=8*c-s-1,y=(1<>1,T=-7,A=r?c-1:0,M=r?-1:1,z=i[e+A];for(A+=M,h=z&(1<<-T)-1,z>>=-T,T+=m;T>0;h=256*h+i[e+A],A+=M,T-=8);for(d=h&(1<<-T)-1,h>>=-T,T+=s;T>0;d=256*d+i[e+A],A+=M,T-=8);if(h===0)h=1-E;else{if(h===y)return d?NaN:1/0*(z?-1:1);d+=Math.pow(2,s),h-=E}return(z?-1:1)*d*Math.pow(2,h-s)},Ch=function(i,e,r,s,c,h){var d,m,y,E=8*h-c-1,T=(1<>1,M=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,z=s?0:h-1,D=s?1:-1,q=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(m=isNaN(e)?1:0,d=T):(d=Math.floor(Math.log(e)/Math.LN2),e*(y=Math.pow(2,-d))<1&&(d--,y*=2),(e+=d+A>=1?M/y:M*Math.pow(2,1-A))*y>=2&&(d++,y/=2),d+A>=T?(m=0,d=T):d+A>=1?(m=(e*y-1)*Math.pow(2,c),d+=A):(m=e*Math.pow(2,A-1)*Math.pow(2,c),d=0));c>=8;i[r+z]=255&m,z+=D,m/=256,c-=8);for(d=d<0;i[r+z]=255&d,z+=D,d/=256,E-=8);i[r+z-D]|=128*q};function Et(i){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(i)?i:new Uint8Array(i||0),this.pos=0,this.type=0,this.length=this.buf.length}Et.Varint=0,Et.Fixed64=1,Et.Bytes=2,Et.Fixed32=5;var Qc=4294967296,kh=1/Qc,Mh=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function bn(i){return i.type===Et.Bytes?i.readVarint()+i.pos:i.pos+1}function So(i,e,r){return r?4294967296*e+(i>>>0):4294967296*(e>>>0)+(i>>>0)}function Ph(i,e,r){var s=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(s);for(var c=r.pos-1;c>=i;c--)r.buf[c+s]=r.buf[c]}function Yp(i,e){for(var r=0;r>>8,i[r+2]=e>>>16,i[r+3]=e>>>24}function zh(i,e){return(i[e]|i[e+1]<<8|i[e+2]<<16)+(i[e+3]<<24)}Et.prototype={destroy:function(){this.buf=null},readFields:function(i,e,r){for(r=r||this.length;this.pos>3,h=this.pos;this.type=7&s,i(c,e,this),this.pos===h&&this.skip(s)}return e},readMessage:function(i,e){return this.readFields(i,e,this.readVarint()+this.pos)},readFixed32:function(){var i=Nl(this.buf,this.pos);return this.pos+=4,i},readSFixed32:function(){var i=zh(this.buf,this.pos);return this.pos+=4,i},readFixed64:function(){var i=Nl(this.buf,this.pos)+Nl(this.buf,this.pos+4)*Qc;return this.pos+=8,i},readSFixed64:function(){var i=Nl(this.buf,this.pos)+zh(this.buf,this.pos+4)*Qc;return this.pos+=8,i},readFloat:function(){var i=Ah(this.buf,this.pos,!0,23,4);return this.pos+=4,i},readDouble:function(){var i=Ah(this.buf,this.pos,!0,52,8);return this.pos+=8,i},readVarint:function(i){var e,r,s=this.buf;return e=127&(r=s[this.pos++]),r<128?e:(e|=(127&(r=s[this.pos++]))<<7,r<128?e:(e|=(127&(r=s[this.pos++]))<<14,r<128?e:(e|=(127&(r=s[this.pos++]))<<21,r<128?e:function(c,h,d){var m,y,E=d.buf;if(m=(112&(y=E[d.pos++]))>>4,y<128||(m|=(127&(y=E[d.pos++]))<<3,y<128)||(m|=(127&(y=E[d.pos++]))<<10,y<128)||(m|=(127&(y=E[d.pos++]))<<17,y<128)||(m|=(127&(y=E[d.pos++]))<<24,y<128)||(m|=(1&(y=E[d.pos++]))<<31,y<128))return So(c,m,h);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=s[this.pos]))<<28,i,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var i=this.readVarint();return i%2==1?(i+1)/-2:i/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var i=this.readVarint()+this.pos,e=this.pos;return this.pos=i,i-e>=12&&Mh?function(r,s,c){return Mh.decode(r.subarray(s,c))}(this.buf,e,i):function(r,s,c){for(var h="",d=s;d239?4:T>223?3:T>191?2:1;if(d+M>c)break;M===1?T<128&&(A=T):M===2?(192&(m=r[d+1]))==128&&(A=(31&T)<<6|63&m)<=127&&(A=null):M===3?(y=r[d+2],(192&(m=r[d+1]))==128&&(192&y)==128&&((A=(15&T)<<12|(63&m)<<6|63&y)<=2047||A>=55296&&A<=57343)&&(A=null)):M===4&&(y=r[d+2],E=r[d+3],(192&(m=r[d+1]))==128&&(192&y)==128&&(192&E)==128&&((A=(15&T)<<18|(63&m)<<12|(63&y)<<6|63&E)<=65535||A>=1114112)&&(A=null)),A===null?(A=65533,M=1):A>65535&&(A-=65536,h+=String.fromCharCode(A>>>10&1023|55296),A=56320|1023&A),h+=String.fromCharCode(A),d+=M}return h}(this.buf,e,i)},readBytes:function(){var i=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,i);return this.pos=i,e},readPackedVarint:function(i,e){if(this.type!==Et.Bytes)return i.push(this.readVarint(e));var r=bn(this);for(i=i||[];this.pos127;);else if(e===Et.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Et.Fixed32)this.pos+=4;else{if(e!==Et.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(i,e){this.writeVarint(i<<3|e)},realloc:function(i){for(var e=this.length||16;e268435455||i<0?function(e,r){var s,c;if(e>=0?(s=e%4294967296|0,c=e/4294967296|0):(c=~(-e/4294967296),4294967295^(s=~(-e%4294967296))?s=s+1|0:(s=0,c=c+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");r.realloc(10),function(h,d,m){m.buf[m.pos++]=127&h|128,h>>>=7,m.buf[m.pos++]=127&h|128,h>>>=7,m.buf[m.pos++]=127&h|128,h>>>=7,m.buf[m.pos++]=127&h|128,m.buf[m.pos]=127&(h>>>=7)}(s,0,r),function(h,d){var m=(7&h)<<4;d.buf[d.pos++]|=m|((h>>>=3)?128:0),h&&(d.buf[d.pos++]=127&h|((h>>>=7)?128:0),h&&(d.buf[d.pos++]=127&h|((h>>>=7)?128:0),h&&(d.buf[d.pos++]=127&h|((h>>>=7)?128:0),h&&(d.buf[d.pos++]=127&h|((h>>>=7)?128:0),h&&(d.buf[d.pos++]=127&h)))))}(c,r)}(i,this):(this.realloc(4),this.buf[this.pos++]=127&i|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=i>>>7&127))))},writeSVarint:function(i){this.writeVarint(i<0?2*-i-1:2*i)},writeBoolean:function(i){this.writeVarint(!!i)},writeString:function(i){i=String(i),this.realloc(4*i.length),this.pos++;var e=this.pos;this.pos=function(s,c,h){for(var d,m,y=0;y55295&&d<57344){if(!m){d>56319||y+1===c.length?(s[h++]=239,s[h++]=191,s[h++]=189):m=d;continue}if(d<56320){s[h++]=239,s[h++]=191,s[h++]=189,m=d;continue}d=m-55296<<10|d-56320|65536,m=null}else m&&(s[h++]=239,s[h++]=191,s[h++]=189,m=null);d<128?s[h++]=d:(d<2048?s[h++]=d>>6|192:(d<65536?s[h++]=d>>12|224:(s[h++]=d>>18|240,s[h++]=d>>12&63|128),s[h++]=d>>6&63|128),s[h++]=63&d|128)}return h}(this.buf,i,this.pos);var r=this.pos-e;r>=128&&Ph(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(i){this.realloc(4),Ch(this.buf,i,this.pos,!0,23,4),this.pos+=4},writeDouble:function(i){this.realloc(8),Ch(this.buf,i,this.pos,!0,52,8),this.pos+=8},writeBytes:function(i){var e=i.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Ph(r,s,this),this.pos=r-1,this.writeVarint(s),this.pos+=s},writeMessage:function(i,e,r){this.writeTag(i,Et.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(i,e){e.length&&this.writeMessage(i,Yp,e)},writePackedSVarint:function(i,e){e.length&&this.writeMessage(i,Jp,e)},writePackedBoolean:function(i,e){e.length&&this.writeMessage(i,tf,e)},writePackedFloat:function(i,e){e.length&&this.writeMessage(i,Qp,e)},writePackedDouble:function(i,e){e.length&&this.writeMessage(i,ef,e)},writePackedFixed32:function(i,e){e.length&&this.writeMessage(i,rf,e)},writePackedSFixed32:function(i,e){e.length&&this.writeMessage(i,nf,e)},writePackedFixed64:function(i,e){e.length&&this.writeMessage(i,sf,e)},writePackedSFixed64:function(i,e){e.length&&this.writeMessage(i,of,e)},writeBytesField:function(i,e){this.writeTag(i,Et.Bytes),this.writeBytes(e)},writeFixed32Field:function(i,e){this.writeTag(i,Et.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(i,e){this.writeTag(i,Et.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(i,e){this.writeTag(i,Et.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(i,e){this.writeTag(i,Et.Fixed64),this.writeSFixed64(e)},writeVarintField:function(i,e){this.writeTag(i,Et.Varint),this.writeVarint(e)},writeSVarintField:function(i,e){this.writeTag(i,Et.Varint),this.writeSVarint(e)},writeStringField:function(i,e){this.writeTag(i,Et.Bytes),this.writeString(e)},writeFloatField:function(i,e){this.writeTag(i,Et.Fixed32),this.writeFloat(e)},writeDoubleField:function(i,e){this.writeTag(i,Et.Fixed64),this.writeDouble(e)},writeBooleanField:function(i,e){this.writeVarintField(i,!!e)}};var eu=W(Ih);const tu=3;function af(i,e,r){i===1&&r.readMessage(lf,e)}function lf(i,e,r){if(i===3){const{id:s,bitmap:c,width:h,height:d,left:m,top:y,advance:E}=r.readMessage(cf,{});e.push({id:s,bitmap:new Ia({width:h+2*tu,height:d+2*tu},c),metrics:{width:h,height:d,left:m,top:y,advance:E}})}}function cf(i,e,r){i===1?e.id=r.readVarint():i===2?e.bitmap=r.readBytes():i===3?e.width=r.readVarint():i===4?e.height=r.readVarint():i===5?e.left=r.readSVarint():i===6?e.top=r.readSVarint():i===7&&(e.advance=r.readVarint())}const Lh=tu;function Dh(i){let e=0,r=0;for(const d of i)e+=d.w*d.h,r=Math.max(r,d.w);i.sort((d,m)=>m.h-d.h);const s=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let c=0,h=0;for(const d of i)for(let m=s.length-1;m>=0;m--){const y=s[m];if(!(d.w>y.w||d.h>y.h)){if(d.x=y.x,d.y=y.y,h=Math.max(h,d.y+d.h),c=Math.max(c,d.x+d.w),d.w===y.w&&d.h===y.h){const E=s.pop();m=0&&s>=e&&ql[this.text.charCodeAt(s)];s--)r--;this.text=this.text.substring(e,r),this.sectionIndex=this.sectionIndex.slice(e,r)}substring(e,r){const s=new Ao;return s.text=this.text.substring(e,r),s.sectionIndex=this.sectionIndex.slice(e,r),s.sections=this.sections,s}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,r)=>Math.max(e,this.sections[r].scale),0)}addTextSection(e,r){this.text+=e.text,this.sections.push(Ba.forText(e.scale,e.fontStack||r));const s=this.sections.length-1;for(let c=0;c=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function $l(i,e,r,s,c,h,d,m,y,E,T,A,M,z,D,q){const N=Ao.fromFeature(i,c);let te;A===a.WritingMode.vertical&&N.verticalizePunctuation();const{processBidirectionalText:re,processStyledBidirectionalText:J}=rr;if(re&&N.sections.length===1){te=[];const pe=re(N.toString(),ru(N,E,h,e,s,z,D));for(const Oe of pe){const Ne=new Ao;Ne.text=Oe,Ne.sections=N.sections;for(let De=0;De0&&En>Hi&&(Hi=En)}else{const pr=Ne[ct.fontStack],Xi=pr&&pr[Ti];if(Xi&&Xi.rect)Nr=Xi.rect,Tr=Xi.metrics;else{const En=Oe[ct.fontStack],Va=En&&En[Ti];if(!Va)continue;Tr=Va.metrics}Pi=(wi-ct.scale)*hi}Sr?(pe.verticalizable=!0,Zi.push({glyph:Ti,imageName:$r,x:Lt,y:Rt+Pi,vertical:Sr,scale:ct.scale,fontStack:ct.fontStack,sectionIndex:nr,metrics:Tr,rect:Nr}),Lt+=wn*ct.scale+Xe):(Zi.push({glyph:Ti,imageName:$r,x:Lt,y:Rt+Pi,vertical:Sr,scale:ct.scale,fontStack:ct.fontStack,sectionIndex:nr,metrics:Tr,rect:Nr}),Lt+=Tr.advance*ct.scale+Xe)}Zi.length!==0&&(ai=Math.max(Lt-Xe,ai),df(Zi,0,Zi.length-1,xi,Hi)),Lt=0;const Nt=Se*wi+Hi;Ri.lineOffset=Math.max(Hi,Mi),Rt+=Nt,dr=Math.max(Nt,dr),++ti}var di;const bi=Rt-Da,{horizontalAlign:ki,verticalAlign:Gi}=nu(Be);(function(ii,wi,Mi,Ri,Zi,Hi,Nt,Ei,ct){const nr=(wi-Mi)*Zi;let Ti=0;Ti=Hi!==Nt?-Ei*Ri-Da:(-Ri*ct+.5)*Nt;for(const Pi of ii)for(const Tr of Pi.positionedGlyphs)Tr.x+=nr,Tr.y+=Ti})(pe.positionedLines,xi,ki,Gi,ai,dr,Se,bi,Ce.length),pe.top+=-Gi*bi,pe.bottom=pe.top+bi,pe.left+=-ki*ai,pe.right=pe.left+ai}(ce,e,r,s,te,d,m,y,A,E,M,q),!function(pe){for(const Oe of pe)if(Oe.positionedGlyphs.length!==0)return!1;return!0}(ae)&&ce}const ql={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},uf={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function Rh(i,e,r,s,c,h){if(e.imageName){const d=s[e.imageName];return d?d.displaySize[0]*e.scale*hi/h+c:0}{const d=r[e.fontStack],m=d&&d[i];return m?m.metrics.advance*e.scale+c:0}}function Fh(i,e,r,s){const c=Math.pow(i-e,2);return s?i=0;let T=0;for(let M=0;Md.id),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Uc([]),this.placementViewportMatrix=Uc([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Nh(this.zoom,r["text-size"]),this.iconSizeData=Nh(this.zoom,r["icon-size"]);const s=this.layers[0].layout,c=s.get("symbol-sort-key"),h=s.get("symbol-z-order");this.canOverlap=su(s,"text-overlap","text-allow-overlap")!=="never"||su(s,"icon-overlap","icon-allow-overlap")!=="never"||s.get("text-ignore-placement")||s.get("icon-ignore-placement"),this.sortFeaturesByKey=h!=="viewport-y"&&!c.isConstant(),this.sortFeaturesByY=(h==="viewport-y"||h==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,s.get("symbol-placement")==="point"&&(this.writingModes=s.get("text-writing-mode").map(d=>a.WritingMode[d])),this.stateDependentLayerIds=this.layers.filter(d=>d.isStateDependent()).map(d=>d.id),this.sourceID=e.sourceID}createArrays(){this.text=new au(new Ur(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new au(new Ur(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new w,this.lineVertexArray=new I,this.symbolInstances=new v}calculateGlyphDependencies(e,r,s,c,h){for(let d=0;d0)&&(d.value.kind!=="constant"||d.value.value.length>0),T=y.value.kind!=="constant"||!!y.value.value||Object.keys(y.parameters).length>0,A=h.get("symbol-sort-key");if(this.features=[],!E&&!T)return;const M=r.iconDependencies,z=r.glyphDependencies,D=r.availableImages,q=new Bt(this.zoom);for(const{feature:N,id:te,index:re,sourceLayerIndex:J}of e){const ae=c._featureFilter.needGeometry,ce=Is(N,ae);if(!c._featureFilter.filter(q,ce,s))continue;let pe,Oe;if(ae||(ce.geometry=Vr(N)),E){const De=c.getValueAndResolveTokens("text-field",ce,s,D),Ce=mi.factory(De);gf(Ce)&&(this.hasRTLText=!0),(!this.hasRTLText||fa()==="unavailable"||this.hasRTLText&&rr.isParsed())&&(pe=Kp(Ce,c,ce))}if(T){const De=c.getValueAndResolveTokens("icon-image",ce,s,D);Oe=De instanceof Qi?De:Qi.fromString(De)}if(!pe&&!Oe)continue;const Ne=this.sortFeaturesByKey?A.evaluate(ce,{},s):void 0;if(this.features.push({id:te,text:pe,icon:Oe,index:re,sourceLayerIndex:J,geometry:ce.geometry,properties:N.properties,type:ff[N.type],sortKey:Ne}),Oe&&(M[Oe.name]=!0),pe){const De=d.evaluate(ce,{},s).join(","),Ce=h.get("text-rotation-alignment")!=="viewport"&&h.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(a.WritingMode.vertical)>=0;for(const Se of pe.sections)if(Se.image)M[Se.image.name]=!0;else{const Be=ro(pe.toString()),Me=Se.fontStack||De,be=z[Me]=z[Me]||{};this.calculateGlyphDependencies(Se.text,be,Ce,this.allowVerticalPlacement,Be)}}}h.get("symbol-placement")==="line"&&(this.features=function(N){const te={},re={},J=[];let ae=0;function ce(De){J.push(N[De]),ae++}function pe(De,Ce,Se){const Be=re[De];return delete re[De],re[Ce]=Be,J[Be].geometry[0].pop(),J[Be].geometry[0]=J[Be].geometry[0].concat(Se[0]),Be}function Oe(De,Ce,Se){const Be=te[Ce];return delete te[Ce],te[De]=Be,J[Be].geometry[0].shift(),J[Be].geometry[0]=Se[0].concat(J[Be].geometry[0]),Be}function Ne(De,Ce,Se){const Be=Se?Ce[0][Ce[0].length-1]:Ce[0][0];return`${De}:${Be.x}:${Be.y}`}for(let De=0;DeDe.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((N,te)=>N.sortKey-te.sortKey)}update(e,r,s){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,r,this.layers,s),this.icon.programConfigurations.updatePaintArrays(e,r,this.layers,s))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,r){const s=this.lineVertexArray.length;if(e.segment!==void 0){let c=e.dist(r[e.segment+1]),h=e.dist(r[e.segment]);const d={};for(let m=e.segment+1;m=0;m--)d[m]={x:r[m].x,y:r[m].y,tileUnitDistanceFromAnchor:h},m>0&&(h+=r[m-1].dist(r[m]));for(let m=0;m0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,r){const s=e.placedSymbolArray.get(r),c=s.vertexStartIndex+4*s.numGlyphs;for(let h=s.vertexStartIndex;hc[m]-c[y]||h[y]-h[m]),d}addToSortKeyRanges(e,r){const s=this.sortKeyRanges[this.sortKeyRanges.length-1];s&&s.sortKey===r?s.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:r,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const r of this.symbolInstanceIndexes){const s=this.symbolInstances.get(r);this.featureSortOrder.push(s.featureIndex),[s.rightJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.leftJustifiedTextSymbolIndex].forEach((c,h,d)=>{c>=0&&d.indexOf(c)===h&&this.addIndicesForPlacedSymbol(this.text,c)}),s.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,s.verticalPlacedTextSymbolIndex),s.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,s.placedIconSymbolIndex),s.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,s.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let $h,qh;Ue("SymbolBucket",Co,{omit:["layers","collisionBoxArray","features","compareText"]}),Co.MAX_GLYPHS=65535,Co.addDynamicAttributes=ou;var cu={get paint(){return qh=qh||new Di({"icon-opacity":new Ke(de.paint_symbol["icon-opacity"]),"icon-color":new Ke(de.paint_symbol["icon-color"]),"icon-halo-color":new Ke(de.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ke(de.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ke(de.paint_symbol["icon-halo-blur"]),"icon-translate":new je(de.paint_symbol["icon-translate"]),"icon-translate-anchor":new je(de.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ke(de.paint_symbol["text-opacity"]),"text-color":new Ke(de.paint_symbol["text-color"],{runtimeType:zi,getOverride:i=>i.textColor,hasOverride:i=>!!i.textColor}),"text-halo-color":new Ke(de.paint_symbol["text-halo-color"]),"text-halo-width":new Ke(de.paint_symbol["text-halo-width"]),"text-halo-blur":new Ke(de.paint_symbol["text-halo-blur"]),"text-translate":new je(de.paint_symbol["text-translate"]),"text-translate-anchor":new je(de.paint_symbol["text-translate-anchor"])})},get layout(){return $h=$h||new Di({"symbol-placement":new je(de.layout_symbol["symbol-placement"]),"symbol-spacing":new je(de.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new je(de.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ke(de.layout_symbol["symbol-sort-key"]),"symbol-z-order":new je(de.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new je(de.layout_symbol["icon-allow-overlap"]),"icon-overlap":new je(de.layout_symbol["icon-overlap"]),"icon-ignore-placement":new je(de.layout_symbol["icon-ignore-placement"]),"icon-optional":new je(de.layout_symbol["icon-optional"]),"icon-rotation-alignment":new je(de.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ke(de.layout_symbol["icon-size"]),"icon-text-fit":new je(de.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new je(de.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ke(de.layout_symbol["icon-image"]),"icon-rotate":new Ke(de.layout_symbol["icon-rotate"]),"icon-padding":new Ke(de.layout_symbol["icon-padding"]),"icon-keep-upright":new je(de.layout_symbol["icon-keep-upright"]),"icon-offset":new Ke(de.layout_symbol["icon-offset"]),"icon-anchor":new Ke(de.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new je(de.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new je(de.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new je(de.layout_symbol["text-rotation-alignment"]),"text-field":new Ke(de.layout_symbol["text-field"]),"text-font":new Ke(de.layout_symbol["text-font"]),"text-size":new Ke(de.layout_symbol["text-size"]),"text-max-width":new Ke(de.layout_symbol["text-max-width"]),"text-line-height":new je(de.layout_symbol["text-line-height"]),"text-letter-spacing":new Ke(de.layout_symbol["text-letter-spacing"]),"text-justify":new Ke(de.layout_symbol["text-justify"]),"text-radial-offset":new Ke(de.layout_symbol["text-radial-offset"]),"text-variable-anchor":new je(de.layout_symbol["text-variable-anchor"]),"text-anchor":new Ke(de.layout_symbol["text-anchor"]),"text-max-angle":new je(de.layout_symbol["text-max-angle"]),"text-writing-mode":new je(de.layout_symbol["text-writing-mode"]),"text-rotate":new Ke(de.layout_symbol["text-rotate"]),"text-padding":new je(de.layout_symbol["text-padding"]),"text-keep-upright":new je(de.layout_symbol["text-keep-upright"]),"text-transform":new Ke(de.layout_symbol["text-transform"]),"text-offset":new Ke(de.layout_symbol["text-offset"]),"text-allow-overlap":new je(de.layout_symbol["text-allow-overlap"]),"text-overlap":new je(de.layout_symbol["text-overlap"]),"text-ignore-placement":new je(de.layout_symbol["text-ignore-placement"]),"text-optional":new je(de.layout_symbol["text-optional"])})}};class jh{constructor(e){if(e.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:Kr,this.defaultValue=e}evaluate(e){if(e.formattedSection){const r=this.defaultValue.property.overrides;if(r&&r.hasOverride(e.formattedSection))return r.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ue("FormatSectionOverride",jh,{omit:["defaultValue"]});class Gl extends br{constructor(e){super(e,cu)}recalculate(e,r){if(super.recalculate(e,r),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){const s=this.layout.get("text-writing-mode");if(s){const c=[];for(const h of s)c.indexOf(h)<0&&c.push(h);this.layout._values["text-writing-mode"]=c}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,r,s,c){const h=this.layout.get(e).evaluate(r,{},s,c),d=this._unevaluatedLayout._values[e];return d.isDataDriven()||Ws(d.value)||!h?h:function(m,y){return y.replace(/{([^{}]+)}/g,(E,T)=>T in m?String(m[T]):"")}(r.properties,h)}createBucket(e){return new Co(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of cu.paint.overridableProperties){if(!Gl.hasPaintOverride(this.layout,e))continue;const r=this.paint.get(e),s=new jh(r),c=new ia(s,r.property.specification);let h=null;h=r.value.kind==="constant"||r.value.kind==="source"?new ra("source",c):new ut("composite",c,r.value.zoomStops),this.paint._values[e]=new xr(r.property,h,r.parameters)}}_handleOverridablePaintPropertyUpdate(e,r,s){return!(!this.layout||r.isDataDriven()||s.isDataDriven())&&Gl.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,r){const s=e.get("text-field"),c=cu.paint.properties[r];let h=!1;const d=m=>{for(const y of m)if(c.overrides&&c.overrides.hasOverride(y))return void(h=!0)};if(s.value.kind==="constant"&&s.value.value instanceof mi)d(s.value.value.sections);else if(s.value.kind==="source"){const m=E=>{h||(E instanceof Jr&&Jt(E.value)===Dr?d(E.value.sections):E instanceof Hs?d(E.sections):E.eachChild(m))},y=s.value;y._styleExpression&&m(y._styleExpression.expression)}return h}}let Gh;var _f={get paint(){return Gh=Gh||new Di({"background-color":new je(de.paint_background["background-color"]),"background-pattern":new _a(de.paint_background["background-pattern"]),"background-opacity":new je(de.paint_background["background-opacity"])})}};let Zh;var yf={get paint(){return Zh=Zh||new Di({"raster-opacity":new je(de.paint_raster["raster-opacity"]),"raster-hue-rotate":new je(de.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new je(de.paint_raster["raster-brightness-min"]),"raster-brightness-max":new je(de.paint_raster["raster-brightness-max"]),"raster-saturation":new je(de.paint_raster["raster-saturation"]),"raster-contrast":new je(de.paint_raster["raster-contrast"]),"raster-resampling":new je(de.paint_raster["raster-resampling"]),"raster-fade-duration":new je(de.paint_raster["raster-fade-duration"])})}};class vf extends br{constructor(e){super(e,{}),this.onAdd=r=>{this.implementation.onAdd&&this.implementation.onAdd(r,r.painter.context.gl)},this.onRemove=r=>{this.implementation.onRemove&&this.implementation.onRemove(r,r.painter.context.gl)},this.implementation=e}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}const xf={circle:class extends br{constructor(i){super(i,op)}createBucket(i){return new Rc(i)}queryRadius(i){const e=i;return Ta("circle-radius",this,e)+Ta("circle-stroke-width",this,e)+Ll(this.paint.get("circle-translate"))}queryIntersectsFeature(i,e,r,s,c,h,d,m){const y=Dl(i,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),h.angle,d),E=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),T=this.paint.get("circle-pitch-alignment")==="map",A=T?y:function(z,D){return z.map(q=>th(q,D))}(y,m),M=T?E*d:E;for(const z of s)for(const D of z){const q=T?D:th(D,m);let N=M;const te=Bl([],[D.x,D.y,0,1],m);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?N*=te[3]/h.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(N*=h.cameraToCenterDistance/te[3]),ip(A,q,N))return!0}return!1}},heatmap:class extends br{createBucket(i){return new ih(i)}constructor(i){super(i,lp),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(i){i==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=sh({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(){return 0}queryIntersectsFeature(){return!1}hasOffscreenPass(){return this.paint.get("heatmap-opacity")!==0&&this.visibility!=="none"}},hillshade:class extends br{constructor(i){super(i,cp)}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}},fill:class extends br{constructor(i){super(i,Tp)}recalculate(i,e){super.recalculate(i,e);const r=this.paint._values["fill-outline-color"];r.value.kind==="constant"&&r.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(i){return new Wc(i)}queryRadius(){return Ll(this.paint.get("fill-translate"))}queryIntersectsFeature(i,e,r,s,c,h,d){return Wu(Dl(i,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),h.angle,d),s)}isTileClipped(){return!0}},"fill-extrusion":class extends br{constructor(i){super(i,Op)}createBucket(i){return new Yc(i)}queryRadius(){return Ll(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(i,e,r,s,c,h,d,m){const y=Dl(i,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),h.angle,d),E=this.paint.get("fill-extrusion-height").evaluate(e,r),T=this.paint.get("fill-extrusion-base").evaluate(e,r),A=function(z,D,q,N){const te=[];for(const re of z){const J=[re.x,re.y,0,1];Bl(J,J,D),te.push(new se(J[0]/J[3],J[1]/J[3]))}return te}(y,m),M=function(z,D,q,N){const te=[],re=[],J=N[8]*D,ae=N[9]*D,ce=N[10]*D,pe=N[11]*D,Oe=N[8]*q,Ne=N[9]*q,De=N[10]*q,Ce=N[11]*q;for(const Se of z){const Be=[],Me=[];for(const be of Se){const Xe=be.x,$e=be.y,lt=N[0]*Xe+N[4]*$e+N[12],Lt=N[1]*Xe+N[5]*$e+N[13],Rt=N[2]*Xe+N[6]*$e+N[14],ai=N[3]*Xe+N[7]*$e+N[15],dr=Rt+ce,xi=ai+pe,ti=lt+Oe,di=Lt+Ne,bi=Rt+De,ki=ai+Ce,Gi=new se((lt+J)/xi,(Lt+ae)/xi);Gi.z=dr/xi,Be.push(Gi);const ii=new se(ti/ki,di/ki);ii.z=bi/ki,Me.push(ii)}te.push(Be),re.push(Me)}return[te,re]}(s,T,E,m);return function(z,D,q){let N=1/0;Wu(q,D)&&(N=vh(q,D[0]));for(let te=0;te=3){for(let q=0;q{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){delete this._channel,this._callback=()=>{}}}const uu=63710088e-1;class Qn{constructor(e,r){if(isNaN(e)||isNaN(r))throw new Error(`Invalid LngLat object: (${e}, ${r})`);if(this.lng=+e,this.lat=+r,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Qn(Je(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const r=Math.PI/180,s=this.lat*r,c=e.lat*r,h=Math.sin(s)*Math.sin(c)+Math.cos(s)*Math.cos(c)*Math.cos((e.lng-this.lng)*r);return uu*Math.acos(Math.min(h,1))}static convert(e){if(e instanceof Qn)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new Qn(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new Qn(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}const Hh=2*Math.PI*uu;function Xh(i){return Hh*Math.cos(i*Math.PI/180)}function Wh(i){return(180+i)/360}function Kh(i){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360}function Yh(i,e){return i/Xh(e)}function hu(i){return 360/Math.PI*Math.atan(Math.exp((180-360*i)*Math.PI/180))-90}class Zl{constructor(e,r,s=0){this.x=+e,this.y=+r,this.z=+s}static fromLngLat(e,r=0){const s=Qn.convert(e);return new Zl(Wh(s.lng),Kh(s.lat),Yh(r,s.lat))}toLngLat(){return new Qn(360*this.x-180,hu(this.y))}toAltitude(){return this.z*Xh(hu(this.y))}meterInMercatorCoordinateUnits(){return 1/Hh*(e=hu(this.y),1/Math.cos(e*Math.PI/180));var e}}function Jh(i,e,r){var s=2*Math.PI*6378137/256/Math.pow(2,r);return[i*s-2*Math.PI*6378137/2,e*s-2*Math.PI*6378137/2]}class du{constructor(e,r,s){if(e<0||e>25||s<0||s>=Math.pow(2,e)||r<0||r>=Math.pow(2,e))throw new Error(`x=${r}, y=${s}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);this.z=e,this.x=r,this.y=s,this.key=Fa(0,e,e,r,s)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,r,s){const c=(d=this.y,m=this.z,y=Jh(256*(h=this.x),256*(d=Math.pow(2,m)-d-1),m),E=Jh(256*(h+1),256*(d+1),m),y[0]+","+y[1]+","+E[0]+","+E[1]);var h,d,m,y,E;const T=function(A,M,z){let D,q="";for(let N=A;N>0;N--)D=1<1?"@2x":"").replace(/{quadkey}/g,T).replace(/{bbox-epsg-3857}/g,c)}isChildOf(e){const r=this.z-e.z;return r>0&&e.x===this.x>>r&&e.y===this.y>>r}getTilePoint(e){const r=Math.pow(2,this.z);return new se((e.x*r-this.x)*zt,(e.y*r-this.y)*zt)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Qh{constructor(e,r){this.wrap=e,this.canonical=r,this.key=Fa(e,r.z,r.z,r.x,r.y)}}class hr{constructor(e,r,s,c,h){if(e= z; overscaledZ = ${e}; z = ${s}`);this.overscaledZ=e,this.wrap=r,this.canonical=new du(s,+c,+h),this.key=Fa(r,e,s,c,h)}clone(){return new hr(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-e;return e>this.canonical.z?new hr(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new hr(e,this.wrap,e,this.canonical.x>>r,this.canonical.y>>r)}calculateScaledKey(e,r){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const s=this.canonical.z-e;return e>this.canonical.z?Fa(this.wrap*+r,e,this.canonical.z,this.canonical.x,this.canonical.y):Fa(this.wrap*+r,e,e,this.canonical.x>>s,this.canonical.y>>s)}isChildOf(e){if(e.wrap!==this.wrap)return!1;const r=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ>r&&e.canonical.y===this.canonical.y>>r}children(e){if(this.overscaledZ>=e)return[new hr(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const r=this.canonical.z+1,s=2*this.canonical.x,c=2*this.canonical.y;return[new hr(r,this.wrap,r,s,c),new hr(r,this.wrap,r,s+1,c),new hr(r,this.wrap,r,s,c+1),new hr(r,this.wrap,r,s+1,c+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.ythis.max&&(this.max=m),m=this.dim+1||r<-1||r>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(r+1)*this.stride+(e+1)}_unpackMapbox(e,r,s){return(256*e*256+256*r+s)/10-1e4}_unpackTerrarium(e,r,s){return 256*e+r+s/256-32768}getPixels(){return new ur({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,r,s){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let c=r*this.dim,h=r*this.dim+this.dim,d=s*this.dim,m=s*this.dim+this.dim;switch(r){case-1:c=h-1;break;case 1:h=c+1}switch(s){case-1:d=m-1;break;case 1:m=d+1}const y=-r*this.dim,E=-s*this.dim;for(let T=d;T=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}}class id{constructor(e,r,s,c,h){this.type="Feature",this._vectorTileFeature=e,e._z=r,e._x=s,e._y=c,this.properties=e.properties,this.id=h}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const r in this)r!=="_geometry"&&r!=="_vectorTileFeature"&&(e[r]=this[r]);return e}}class rd{constructor(e,r){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new ys(zt,16,0),this.grid3D=new ys(zt,16,0),this.featureIndexArray=new L,this.promoteId=r}insert(e,r,s,c,h,d){const m=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(s,c,h);const y=d?this.grid3D:this.grid;for(let E=0;E=0&&A[3]>=0&&y.insert(m,A[0],A[1],A[2],A[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Kn.VectorTile(new eu(this.rawTileData)).layers,this.sourceLayerCoder=new td(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(e,r,s,c){this.loadVTLayers();const h=e.params||{},d=zt/e.tileSize/e.scale,m=na(h.filter),y=e.queryGeometry,E=e.queryPadding*d,T=sd(y),A=this.grid.query(T.minX-E,T.minY-E,T.maxX+E,T.maxY+E),M=sd(e.cameraQueryGeometry),z=this.grid3D.query(M.minX-E,M.minY-E,M.maxX+E,M.maxY+E,(N,te,re,J)=>function(ae,ce,pe,Oe,Ne){for(const Ce of ae)if(ce<=Ce.x&&pe<=Ce.y&&Oe>=Ce.x&&Ne>=Ce.y)return!0;const De=[new se(ce,pe),new se(ce,Ne),new se(Oe,Ne),new se(Oe,pe)];if(ae.length>2){for(const Ce of De)if(bo(ae,Ce))return!0}for(let Ce=0;Ce(J||(J=Vr(ae)),ce.queryIntersectsFeature(y,ae,pe,J,this.z,e.transform,d,e.pixelPosMatrix)))}return D}loadMatchingFeature(e,r,s,c,h,d,m,y,E,T,A){const M=this.bucketLayerIDs[r];if(d&&!function(N,te){for(let re=0;re=0)return!0;return!1}(d,M))return;const z=this.sourceLayerCoder.decode(s),D=this.vtLayers[z].feature(c);if(h.needGeometry){const N=Is(D,!0);if(!h.filter(new Bt(this.tileID.overscaledZ),N,this.tileID.canonical))return}else if(!h.filter(new Bt(this.tileID.overscaledZ),D))return;const q=this.getId(D,z);for(let N=0;N{const m=e instanceof uo?e.get(d):null;return m&&m.evaluate?m.evaluate(r,s,c):m})}function sd(i){let e=1/0,r=1/0,s=-1/0,c=-1/0;for(const h of i)e=Math.min(e,h.x),r=Math.min(r,h.y),s=Math.max(s,h.x),c=Math.max(c,h.y);return{minX:e,minY:r,maxX:s,maxY:c}}function wf(i,e){return e-i}function od(i,e,r,s,c){const h=[];for(let d=0;d=s&&A.x>=s||(T.x>=s?T=new se(s,T.y+(s-T.x)/(A.x-T.x)*(A.y-T.y))._round():A.x>=s&&(A=new se(s,T.y+(s-T.x)/(A.x-T.x)*(A.y-T.y))._round()),T.y>=c&&A.y>=c||(T.y>=c?T=new se(T.x+(c-T.y)/(A.y-T.y)*(A.x-T.x),c)._round():A.y>=c&&(A=new se(T.x+(c-T.y)/(A.y-T.y)*(A.x-T.x),c)._round()),y&&T.equals(y[y.length-1])||(y=[T],h.push(y)),y.push(A)))))}}return h}Ue("FeatureIndex",rd,{omit:["rawTileData","sourceLayerCoder"]});class es extends se{constructor(e,r,s,c){super(e,r),this.angle=s,c!==void 0&&(this.segment=c)}clone(){return new es(this.x,this.y,this.angle,this.segment)}}function ad(i,e,r,s,c){if(e.segment===void 0)return!0;let h=e,d=e.segment+1,m=0;for(;m>-r/2;){if(d--,d<0)return!1;m-=i[d].dist(h),h=i[d]}m+=i[d].dist(i[d+1]),d++;const y=[];let E=0;for(;ms;)E-=y.shift().angleDelta;if(E>c)return!1;d++,m+=T.dist(A)}return!0}function ld(i){let e=0;for(let r=0;rE){const D=(E-y)/z,q=Vi.number(A.x,M.x,D),N=Vi.number(A.y,M.y,D),te=new es(q,N,M.angleTo(A),T);return te._round(),!d||ad(i,te,m,d,e)?te:void 0}y+=z}}function Tf(i,e,r,s,c,h,d,m,y){const E=cd(s,h,d),T=ud(s,c),A=T*d,M=i[0].x===0||i[0].x===y||i[0].y===0||i[0].y===y;return e-A=0&&ae=0&&ce=0&&M+E<=T){const pe=new es(ae,ce,re,D);pe._round(),s&&!ad(i,pe,h,s,c)||z.push(pe)}}A+=te}return m||z.length||d||(z=hd(i,A/2,r,s,c,h,d,!0,y)),z}Ue("Anchor",es);const ko=ji;function dd(i,e,r,s){const c=[],h=i.image,d=h.pixelRatio,m=h.paddedRect.w-2*ko,y=h.paddedRect.h-2*ko,E=i.right-i.left,T=i.bottom-i.top,A=h.stretchX||[[0,m]],M=h.stretchY||[[0,y]],z=(Se,Be)=>Se+Be[1]-Be[0],D=A.reduce(z,0),q=M.reduce(z,0),N=m-D,te=y-q;let re=0,J=D,ae=0,ce=q,pe=0,Oe=N,Ne=0,De=te;if(h.content&&s){const Se=h.content;re=Hl(A,0,Se[0]),ae=Hl(M,0,Se[1]),J=Hl(A,Se[0],Se[2]),ce=Hl(M,Se[1],Se[3]),pe=Se[0]-re,Ne=Se[1]-ae,Oe=Se[2]-Se[0]-J,De=Se[3]-Se[1]-ce}const Ce=(Se,Be,Me,be)=>{const Xe=Xl(Se.stretch-re,J,E,i.left),$e=Wl(Se.fixed-pe,Oe,Se.stretch,D),lt=Xl(Be.stretch-ae,ce,T,i.top),Lt=Wl(Be.fixed-Ne,De,Be.stretch,q),Rt=Xl(Me.stretch-re,J,E,i.left),ai=Wl(Me.fixed-pe,Oe,Me.stretch,D),dr=Xl(be.stretch-ae,ce,T,i.top),xi=Wl(be.fixed-Ne,De,be.stretch,q),ti=new se(Xe,lt),di=new se(Rt,lt),bi=new se(Rt,dr),ki=new se(Xe,dr),Gi=new se($e/d,Lt/d),ii=new se(ai/d,xi/d),wi=e*Math.PI/180;if(wi){const Zi=Math.sin(wi),Hi=Math.cos(wi),Nt=[Hi,-Zi,Zi,Hi];ti._matMult(Nt),di._matMult(Nt),ki._matMult(Nt),bi._matMult(Nt)}const Mi=Se.stretch+Se.fixed,Ri=Be.stretch+Be.fixed;return{tl:ti,tr:di,bl:ki,br:bi,tex:{x:h.paddedRect.x+ko+Mi,y:h.paddedRect.y+ko+Ri,w:Me.stretch+Me.fixed-Mi,h:be.stretch+be.fixed-Ri},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Gi,pixelOffsetBR:ii,minFontScaleX:Oe/d/E,minFontScaleY:De/d/T,isSDF:r}};if(s&&(h.stretchX||h.stretchY)){const Se=pd(A,N,D),Be=pd(M,te,q);for(let Me=0;Me0&&(D=Math.max(10,D),this.circleDiameter=D)}else{let A=d.top*m-y[0],M=d.bottom*m+y[2],z=d.left*m-y[3],D=d.right*m+y[1];const q=d.collisionPadding;if(q&&(z-=q[0]*m,A-=q[1]*m,D+=q[2]*m,M+=q[3]*m),T){const N=new se(z,A),te=new se(D,A),re=new se(z,M),J=new se(D,M),ae=T*Math.PI/180;N._rotate(ae),te._rotate(ae),re._rotate(ae),J._rotate(ae),z=Math.min(N.x,te.x,re.x,J.x),D=Math.max(N.x,te.x,re.x,J.x),A=Math.min(N.y,te.y,re.y,J.y),M=Math.max(N.y,te.y,re.y,J.y)}e.emplaceBack(r.x,r.y,z,A,D,M,s,c,h)}this.boxEndIndex=e.length}}class Sf{constructor(e=[],r=If){if(this.data=e,this.length=this.data.length,this.compare=r,this.length>0)for(let s=(this.length>>1)-1;s>=0;s--)this._down(s)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const e=this.data[0],r=this.data.pop();return this.length--,this.length>0&&(this.data[0]=r,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:r,compare:s}=this,c=r[e];for(;e>0;){const h=e-1>>1,d=r[h];if(s(c,d)>=0)break;r[e]=d,e=h}r[e]=c}_down(e){const{data:r,compare:s}=this,c=this.length>>1,h=r[e];for(;e=0)break;r[e]=m,e=d}r[e]=h}}function If(i,e){return ie?1:0}function Af(i,e=1,r=!1){let s=1/0,c=1/0,h=-1/0,d=-1/0;const m=i[0];for(let z=0;zh)&&(h=D.x),(!z||D.y>d)&&(d=D.y)}const y=Math.min(h-s,d-c);let E=y/2;const T=new Sf([],Cf);if(y===0)return new se(s,c);for(let z=s;zA.d||!A.d)&&(A=z,r&&console.log("found best %d after %d probes",Math.round(1e4*z.d)/1e4,M)),z.max-A.d<=e||(E=z.h/2,T.push(new Mo(z.p.x-E,z.p.y-E,E,i)),T.push(new Mo(z.p.x+E,z.p.y-E,E,i)),T.push(new Mo(z.p.x-E,z.p.y+E,E,i)),T.push(new Mo(z.p.x+E,z.p.y+E,E,i)),M+=4)}return r&&(console.log(`num probes: ${M}`),console.log(`best distance: ${A.d}`)),A.p}function Cf(i,e){return e.max-i.max}function Mo(i,e,r,s){this.p=new se(i,e),this.h=r,this.d=function(c,h){let d=!1,m=1/0;for(let y=0;yc.y!=D.y>c.y&&c.x<(D.x-z.x)*(c.y-z.y)/(D.y-z.y)+z.x&&(d=!d),m=Math.min(m,Ku(c,z,D))}}return(d?1:-1)*Math.sqrt(m)}(this.p,s),this.max=this.d+this.h*Math.SQRT2}const pu=Number.POSITIVE_INFINITY;function fd(i,e){return e[1]!==pu?function(r,s,c){let h=0,d=0;switch(s=Math.abs(s),c=Math.abs(c),r){case"top-right":case"top-left":case"top":d=c-7;break;case"bottom-right":case"bottom-left":case"bottom":d=7-c}switch(r){case"top-right":case"bottom-right":case"right":h=-s;break;case"top-left":case"bottom-left":case"left":h=s}return[h,d]}(i,e[0],e[1]):function(r,s){let c=0,h=0;s<0&&(s=0);const d=s/Math.sqrt(2);switch(r){case"top-right":case"top-left":h=d-7;break;case"bottom-right":case"bottom-left":h=7-d;break;case"bottom":h=7-s;break;case"top":h=s-7}switch(r){case"top-right":case"bottom-right":c=-d;break;case"top-left":case"bottom-left":c=d;break;case"left":c=s;break;case"right":c=-s}return[c,h]}(i,e[0])}function fu(i){switch(i){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function kf(i,e,r,s,c,h,d,m,y,E,T){let A=h.textMaxSize.evaluate(e,{});A===void 0&&(A=d);const M=i.layers[0].layout,z=M.get("icon-offset").evaluate(e,{},T),D=gd(r.horizontal),q=d/24,N=i.tilePixelRatio*q,te=i.tilePixelRatio*A/24,re=i.tilePixelRatio*m,J=i.tilePixelRatio*M.get("symbol-spacing"),ae=M.get("text-padding")*i.tilePixelRatio,ce=function(be,Xe,$e,lt=1){const Lt=be.get("icon-padding").evaluate(Xe,{},$e),Rt=Lt&&Lt.values;return[Rt[0]*lt,Rt[1]*lt,Rt[2]*lt,Rt[3]*lt]}(M,e,T,i.tilePixelRatio),pe=M.get("text-max-angle")/180*Math.PI,Oe=M.get("text-rotation-alignment")!=="viewport"&&M.get("symbol-placement")!=="point",Ne=M.get("icon-rotation-alignment")==="map"&&M.get("symbol-placement")!=="point",De=M.get("symbol-placement"),Ce=J/2,Se=M.get("icon-text-fit");let Be;s&&Se!=="none"&&(i.allowVerticalPlacement&&r.vertical&&(Be=Vh(s,r.vertical,Se,M.get("icon-text-fit-padding"),z,q)),D&&(s=Vh(s,D,Se,M.get("icon-text-fit-padding"),z,q)));const Me=(be,Xe)=>{Xe.x<0||Xe.x>=zt||Xe.y<0||Xe.y>=zt||function($e,lt,Lt,Rt,ai,dr,xi,ti,di,bi,ki,Gi,ii,wi,Mi,Ri,Zi,Hi,Nt,Ei,ct,nr,Ti,Pi,Tr){const Nr=$e.addToLineVertexArray(lt,Lt);let $r,wn,Sr,pr,Xi=0,En=0,Va=0,xd=0,wu=-1,Eu=-1;const Tn={};let bd=Ht(""),Tu=0,Su=0;if(ti._unevaluatedLayout.getValue("text-radial-offset")===void 0?[Tu,Su]=ti.layout.get("text-offset").evaluate(ct,{},Pi).map(Wi=>Wi*hi):(Tu=ti.layout.get("text-radial-offset").evaluate(ct,{},Pi)*hi,Su=pu),$e.allowVerticalPlacement&&Rt.vertical){const Wi=ti.layout.get("text-rotate").evaluate(ct,{},Pi)+90;Sr=new Kl(di,lt,bi,ki,Gi,Rt.vertical,ii,wi,Mi,Wi),xi&&(pr=new Kl(di,lt,bi,ki,Gi,xi,Zi,Hi,Mi,Wi))}if(ai){const Wi=ti.layout.get("icon-rotate").evaluate(ct,{}),sn=ti.layout.get("icon-text-fit")!=="none",Na=dd(ai,Wi,Ti,sn),$a=xi?dd(xi,Wi,Ti,sn):void 0;wn=new Kl(di,lt,bi,ki,Gi,ai,Zi,Hi,!1,Wi),Xi=4*Na.length;const Td=$e.iconSizeData;let Cs=null;Td.kind==="source"?(Cs=[nn*ti.layout.get("icon-size").evaluate(ct,{})],Cs[0]>Jn&&Dt(`${$e.layerIds[0]}: Value for "icon-size" is >= ${Ra}. Reduce your "icon-size".`)):Td.kind==="composite"&&(Cs=[nn*nr.compositeIconSizes[0].evaluate(ct,{},Pi),nn*nr.compositeIconSizes[1].evaluate(ct,{},Pi)],(Cs[0]>Jn||Cs[1]>Jn)&&Dt(`${$e.layerIds[0]}: Value for "icon-size" is >= ${Ra}. Reduce your "icon-size".`)),$e.addSymbols($e.icon,Na,Cs,Ei,Nt,ct,a.WritingMode.none,lt,Nr.lineStartIndex,Nr.lineLength,-1,Pi),wu=$e.icon.placedSymbolArray.length-1,$a&&(En=4*$a.length,$e.addSymbols($e.icon,$a,Cs,Ei,Nt,ct,a.WritingMode.vertical,lt,Nr.lineStartIndex,Nr.lineLength,-1,Pi),Eu=$e.icon.placedSymbolArray.length-1)}const wd=Object.keys(Rt.horizontal);for(const Wi of wd){const sn=Rt.horizontal[Wi];if(!$r){bd=Ht(sn.text);const $a=ti.layout.get("text-rotate").evaluate(ct,{},Pi);$r=new Kl(di,lt,bi,ki,Gi,sn,ii,wi,Mi,$a)}const Na=sn.positionedLines.length===1;if(Va+=md($e,lt,sn,dr,ti,Mi,ct,Ri,Nr,Rt.vertical?a.WritingMode.horizontal:a.WritingMode.horizontalOnly,Na?wd:[Wi],Tn,wu,nr,Pi),Na)break}Rt.vertical&&(xd+=md($e,lt,Rt.vertical,dr,ti,Mi,ct,Ri,Nr,a.WritingMode.vertical,["vertical"],Tn,Eu,nr,Pi));const zf=$r?$r.boxStartIndex:$e.collisionBoxArray.length,Lf=$r?$r.boxEndIndex:$e.collisionBoxArray.length,Df=Sr?Sr.boxStartIndex:$e.collisionBoxArray.length,Bf=Sr?Sr.boxEndIndex:$e.collisionBoxArray.length,Rf=wn?wn.boxStartIndex:$e.collisionBoxArray.length,Ff=wn?wn.boxEndIndex:$e.collisionBoxArray.length,Of=pr?pr.boxStartIndex:$e.collisionBoxArray.length,Uf=pr?pr.boxEndIndex:$e.collisionBoxArray.length;let qr=-1;const Jl=(Wi,sn)=>Wi&&Wi.circleDiameter?Math.max(Wi.circleDiameter,sn):sn;qr=Jl($r,qr),qr=Jl(Sr,qr),qr=Jl(wn,qr),qr=Jl(pr,qr);const Ed=qr>-1?1:0;Ed&&(qr*=Tr/hi),$e.glyphOffsetArray.length>=Co.MAX_GLYPHS&&Dt("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),ct.sortKey!==void 0&&$e.addToSortKeyRanges($e.symbolInstances.length,ct.sortKey),$e.symbolInstances.emplaceBack(lt.x,lt.y,Tn.right>=0?Tn.right:-1,Tn.center>=0?Tn.center:-1,Tn.left>=0?Tn.left:-1,Tn.vertical||-1,wu,Eu,bd,zf,Lf,Df,Bf,Rf,Ff,Of,Uf,bi,Va,xd,Xi,En,Ed,0,ii,Tu,Su,qr)}(i,Xe,be,r,s,c,Be,i.layers[0],i.collisionBoxArray,e.index,e.sourceLayerIndex,i.index,N,[ae,ae,ae,ae],Oe,y,re,ce,Ne,z,e,h,E,T,d)};if(De==="line")for(const be of od(e.geometry,0,0,zt,zt)){const Xe=Tf(be,J,pe,r.vertical||D,s,24,te,i.overscaling,zt);for(const $e of Xe)D&&Mf(i,D.text,Ce,$e)||Me(be,$e)}else if(De==="line-center"){for(const be of e.geometry)if(be.length>1){const Xe=Ef(be,pe,r.vertical||D,s,24,te);Xe&&Me(be,Xe)}}else if(e.type==="Polygon")for(const be of Zc(e.geometry,0)){const Xe=Af(be,16);Me(be[0],new es(Xe.x,Xe.y,0))}else if(e.type==="LineString")for(const be of e.geometry)Me(be,new es(be[0].x,be[0].y,0));else if(e.type==="Point")for(const be of e.geometry)for(const Xe of be)Me([Xe],new es(Xe.x,Xe.y,0))}function md(i,e,r,s,c,h,d,m,y,E,T,A,M,z,D){const q=function(re,J,ae,ce,pe,Oe,Ne,De){const Ce=ce.layout.get("text-rotate").evaluate(Oe,{})*Math.PI/180,Se=[];for(const Be of J.positionedLines)for(const Me of Be.positionedGlyphs){if(!Me.rect)continue;const be=Me.rect||{};let Xe=Lh+1,$e=!0,lt=1,Lt=0;const Rt=(pe||De)&&Me.vertical,ai=Me.metrics.advance*Me.scale/2;if(De&&J.verticalizable&&(Lt=Be.lineOffset/2-(Me.imageName?-(hi-Me.metrics.width*Me.scale)/2:(Me.scale-1)*hi)),Me.imageName){const Nt=Ne[Me.imageName];$e=Nt.sdf,lt=Nt.pixelRatio,Xe=ji/lt}const dr=pe?[Me.x+ai,Me.y]:[0,0];let xi=pe?[0,0]:[Me.x+ai+ae[0],Me.y+ae[1]-Lt],ti=[0,0];Rt&&(ti=xi,xi=[0,0]);const di=(Me.metrics.left-Xe)*Me.scale-ai+xi[0],bi=(-Me.metrics.top-Xe)*Me.scale+xi[1],ki=di+be.w*Me.scale/lt,Gi=bi+be.h*Me.scale/lt,ii=new se(di,bi),wi=new se(ki,bi),Mi=new se(di,Gi),Ri=new se(ki,Gi);if(Rt){const Nt=new se(-ai,ai-Da),Ei=-Math.PI/2,ct=hi/2-ai,nr=new se(5-Da-ct,-(Me.imageName?ct:0)),Ti=new se(...ti);ii._rotateAround(Ei,Nt)._add(nr)._add(Ti),wi._rotateAround(Ei,Nt)._add(nr)._add(Ti),Mi._rotateAround(Ei,Nt)._add(nr)._add(Ti),Ri._rotateAround(Ei,Nt)._add(nr)._add(Ti)}if(Ce){const Nt=Math.sin(Ce),Ei=Math.cos(Ce),ct=[Ei,-Nt,Nt,Ei];ii._matMult(ct),wi._matMult(ct),Mi._matMult(ct),Ri._matMult(ct)}const Zi=new se(0,0),Hi=new se(0,0);Se.push({tl:ii,tr:wi,bl:Mi,br:Ri,tex:be,writingMode:J.writingMode,glyphOffset:dr,sectionIndex:Me.sectionIndex,isSDF:$e,pixelOffsetTL:Zi,pixelOffsetBR:Hi,minFontScaleX:0,minFontScaleY:0})}return Se}(0,r,m,c,h,d,s,i.allowVerticalPlacement),N=i.textSizeData;let te=null;N.kind==="source"?(te=[nn*c.layout.get("text-size").evaluate(d,{})],te[0]>Jn&&Dt(`${i.layerIds[0]}: Value for "text-size" is >= ${Ra}. Reduce your "text-size".`)):N.kind==="composite"&&(te=[nn*z.compositeTextSizes[0].evaluate(d,{},D),nn*z.compositeTextSizes[1].evaluate(d,{},D)],(te[0]>Jn||te[1]>Jn)&&Dt(`${i.layerIds[0]}: Value for "text-size" is >= ${Ra}. Reduce your "text-size".`)),i.addSymbols(i.text,q,te,m,h,d,E,e,y.lineStartIndex,y.lineLength,M,D);for(const re of T)A[re]=i.text.placedSymbolArray.length-1;return 4*q.length}function gd(i){for(const e in i)return i[e];return null}function Mf(i,e,r,s){const c=i.compareText;if(e in c){const h=c[e];for(let d=h.length-1;d>=0;d--)if(s.dist(h[d])>4;if(c!==1)throw new Error(`Got v${c} data when expected v1.`);const h=_d[15&s];if(!h)throw new Error("Unrecognized array type.");const[d]=new Uint16Array(e,2,1),[m]=new Uint32Array(e,4,1);return new mu(m,d,h,e)}constructor(e,r=64,s=Float64Array,c){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+r,2),65535),this.ArrayType=s,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const h=_d.indexOf(this.ArrayType),d=2*e*this.ArrayType.BYTES_PER_ELEMENT,m=e*this.IndexArrayType.BYTES_PER_ELEMENT,y=(8-m%8)%8;if(h<0)throw new Error(`Unexpected typed array class: ${s}.`);c&&c instanceof ArrayBuffer?(this.data=c,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+m+y,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+d+m+y),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+m+y,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+h]),new Uint16Array(this.data,2,1)[0]=r,new Uint32Array(this.data,4,1)[0]=e)}add(e,r){const s=this._pos>>1;return this.ids[s]=s,this.coords[this._pos++]=e,this.coords[this._pos++]=r,s}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return gu(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,r,s,c){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:h,coords:d,nodeSize:m}=this,y=[0,h.length-1,0],E=[];for(;y.length;){const T=y.pop()||0,A=y.pop()||0,M=y.pop()||0;if(A-M<=m){for(let N=M;N<=A;N++){const te=d[2*N],re=d[2*N+1];te>=e&&te<=s&&re>=r&&re<=c&&E.push(h[N])}continue}const z=M+A>>1,D=d[2*z],q=d[2*z+1];D>=e&&D<=s&&q>=r&&q<=c&&E.push(h[z]),(T===0?e<=D:r<=q)&&(y.push(M),y.push(z-1),y.push(1-T)),(T===0?s>=D:c>=q)&&(y.push(z+1),y.push(A),y.push(1-T))}return E}within(e,r,s){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:c,coords:h,nodeSize:d}=this,m=[0,c.length-1,0],y=[],E=s*s;for(;m.length;){const T=m.pop()||0,A=m.pop()||0,M=m.pop()||0;if(A-M<=d){for(let N=M;N<=A;N++)vd(h[2*N],h[2*N+1],e,r)<=E&&y.push(c[N]);continue}const z=M+A>>1,D=h[2*z],q=h[2*z+1];vd(D,q,e,r)<=E&&y.push(c[z]),(T===0?e-s<=D:r-s<=q)&&(m.push(M),m.push(z-1),m.push(1-T)),(T===0?e+s>=D:r+s>=q)&&(m.push(z+1),m.push(A),m.push(1-T))}return y}}function gu(i,e,r,s,c,h){if(c-s<=r)return;const d=s+c>>1;yd(i,e,d,s,c,h),gu(i,e,r,s,d-1,1-h),gu(i,e,r,d+1,c,1-h)}function yd(i,e,r,s,c,h){for(;c>s;){if(c-s>600){const E=c-s+1,T=r-s+1,A=Math.log(E),M=.5*Math.exp(2*A/3),z=.5*Math.sqrt(A*M*(E-M)/E)*(T-E/2<0?-1:1);yd(i,e,r,Math.max(s,Math.floor(r-T*M/E+z)),Math.min(c,Math.floor(r+(E-T)*M/E+z)),h)}const d=e[2*r+h];let m=s,y=c;for(Oa(i,e,s,r),e[2*c+h]>d&&Oa(i,e,s,c);md;)y--}e[2*s+h]===d?Oa(i,e,s,y):(y++,Oa(i,e,y,c)),y<=r&&(s=y+1),r<=y&&(c=y-1)}}function Oa(i,e,r,s){_u(i,r,s),_u(e,2*r,2*s),_u(e,2*r+1,2*s+1)}function _u(i,e,r){const s=i[e];i[e]=i[r],i[r]=s}function vd(i,e,r,s){const c=i-r,h=e-s;return c*c+h*h}var yu;a.PerformanceMarkers=void 0,(yu=a.PerformanceMarkers||(a.PerformanceMarkers={})).create="create",yu.load="load",yu.fullLoad="fullLoad";let Yl=null,Ua=[];const vu=1e3/60,xu="loadTime",bu="fullLoadTime",Pf={mark(i){performance.mark(i)},frame(i){const e=i;Yl!=null&&Ua.push(e-Yl),Yl=e},clearMetrics(){Yl=null,Ua=[],performance.clearMeasures(xu),performance.clearMeasures(bu);for(const i in a.PerformanceMarkers)performance.clearMarks(a.PerformanceMarkers[i])},getPerformanceMetrics(){performance.measure(xu,a.PerformanceMarkers.create,a.PerformanceMarkers.load),performance.measure(bu,a.PerformanceMarkers.create,a.PerformanceMarkers.fullLoad);const i=performance.getEntriesByName(xu)[0].duration,e=performance.getEntriesByName(bu)[0].duration,r=Ua.length,s=1/(Ua.reduce((h,d)=>h+d,0)/r/1e3),c=Ua.filter(h=>h>vu).reduce((h,d)=>h+(d-vu)/vu,0);return{loadTime:i,fullLoadTime:e,fps:s,percentDroppedFrames:c/(r+c)*100,totalFrames:r}}};a.AJAXError=Hr,a.ARRAY_TYPE=wo,a.Actor=class{constructor(i,e,r){this.target=i,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},Pt(["receive","process"],this),this.invoker=new bf(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=_i()?i:window}send(i,e,r,s,c=!1){const h=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[h]=r);const d=Zr(this.globalScope)?void 0:[];return this.target.postMessage({id:h,type:i,hasCallback:!!r,targetMapId:s,mustQueue:c,sourceMapId:this.mapId,data:vs(e,d)},d),{cancel:()=>{r&&delete this.callbacks[h],this.target.postMessage({id:h,type:"",targetMapId:s,sourceMapId:this.mapId})}}}receive(i){const e=i.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(e.type===""){delete this.tasks[r];const s=this.cancelCallbacks[r];delete this.cancelCallbacks[r],s&&s()}else _i()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)}process(){if(!this.taskQueue.length)return;const i=this.taskQueue.shift(),e=this.tasks[i];delete this.tasks[i],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(i,e)}processTask(i,e){if(e.type===""){const r=this.callbacks[i];delete this.callbacks[i],r&&(e.error?r(Fr(e.error)):r(null,Fr(e.data)))}else{let r=!1;const s=Zr(this.globalScope)?void 0:[],c=e.hasCallback?(m,y)=>{r=!0,delete this.cancelCallbacks[i],this.target.postMessage({id:i,type:"",sourceMapId:this.mapId,error:m?vs(m):null,data:vs(y,s)},s)}:m=>{r=!0};let h=null;const d=Fr(e.data);if(this.parent[e.type])h=this.parent[e.type](e.sourceMapId,d,c);else if(this.parent.getWorkerSource){const m=e.type.split(".");h=this.parent.getWorkerSource(e.sourceMapId,m[0],d.source)[m[1]](d,c)}else c(new Error(`Could not find function ${e.type}`));!r&&h&&h.cancel&&(this.cancelCallbacks[i]=h.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)}},a.AlphaImage=Ia,a.CanonicalTileID=du,a.CollisionBoxArray=u,a.CollisionCircleLayoutArray=class extends mo{},a.Color=Qe,a.DEMData=ed,a.DataConstantProperty=je,a.DictionaryCoder=td,a.EXTENT=zt,a.ErrorEvent=Ji,a.EvaluationParameters=Bt,a.Event=zr,a.Evented=Dn,a.FeatureIndex=rd,a.FillBucket=Wc,a.FillExtrusionBucket=Yc,a.GeoJSONFeature=id,a.ImageAtlas=Bh,a.ImagePosition=iu,a.KDBush=mu,a.LineBucket=Jc,a.LineStripIndexArray=class extends t{},a.LngLat=Qn,a.MercatorCoordinate=Zl,a.ONE_EM=hi,a.OverscaledTileID=hr,a.PerformanceUtils=Pf,a.Point=se,a.Pos3dArray=class extends ho{},a.PosArray=$,a.Properties=Di,a.Protobuf=eu,a.QuadTriangleArray=class extends go{},a.RGBAImage=ur,a.RasterBoundsArray=class extends va{},a.RequestPerformance=class{constructor(i){this._marks={start:[i.url,"start"].join("#"),end:[i.url,"end"].join("#"),measure:i.url.toString()},performance.mark(this._marks.start)}finish(){performance.mark(this._marks.end);let i=performance.getEntriesByName(this._marks.measure);return i.length===0&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),i=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),i}},a.SegmentVector=Ie,a.SymbolBucket=Co,a.Transitionable=Al,a.TriangleIndexArray=ve,a.Uniform1f=Er,a.Uniform1i=class extends Ci{constructor(i,e){super(i,e),this.current=0}set(i){this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},a.Uniform2f=class extends Ci{constructor(i,e){super(i,e),this.current=[0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]||(this.current=i,this.gl.uniform2f(this.location,i[0],i[1]))}},a.Uniform3f=class extends Ci{constructor(i,e){super(i,e),this.current=[0,0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]&&i[2]===this.current[2]||(this.current=i,this.gl.uniform3f(this.location,i[0],i[1],i[2]))}},a.Uniform4f=Ts,a.UniformColor=vi,a.UniformMatrix4f=class extends Ci{constructor(i,e){super(i,e),this.current=ci}set(i){if(i[12]!==this.current[12]||i[0]!==this.current[0])return this.current=i,void this.gl.uniformMatrix4fv(this.location,!1,i);for(let e=1;e<16;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}},a.UnwrappedTileID=Qh,a.ValidationError=Te,a.ZoomHistory=bl,a.addDynamicAttributes=ou,a.arrayBufferToImage=function(i,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame(()=>{r.src=Mr})},r.onerror=()=>e(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const s=new Blob([new Uint8Array(i)],{type:"image/png"});r.src=i.byteLength?URL.createObjectURL(s):Mr},a.arrayBufferToImageBitmap=function(i,e){const r=new Blob([new Uint8Array(i)],{type:"image/png"});createImageBitmap(r).then(s=>{e(null,s)}).catch(s=>{e(new Error(`Could not load image because of ${s.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})},a.asyncAll=function(i,e,r){if(!i.length)return r(null,[]);let s=i.length;const c=new Array(i.length);let h=null;i.forEach((d,m)=>{e(d,(y,E)=>{y&&(h=y),c[m]=E,--s==0&&r(h,c)})})},a.bezier=Le,a.bindAll=Pt,a.clamp=Ae,a.clipLine=od,a.clone=function(i){var e=new wo(16);return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],e},a.clone$1=Ct,a.collisionCircleLayout=Wp,a.config=rs,a.copy=function(i,e){return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},a.create=function(){var i=new wo(16);return wo!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0),i[0]=1,i[5]=1,i[10]=1,i[15]=1,i},a.createExpression=Ft,a.createFilter=na,a.createLayout=ei,a.createStyleLayer=function(i){return i.type==="custom"?new vf(i):new xf[i.type](i)},a.deepEqual=function i(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(let s=0;s{s[d.source]?r.push({command:ft.removeLayer,args:[d.id]}):h.push(d)}),r=r.concat(c),function(d,m,y){m=m||[];const E=(d=d||[]).map(Bn),T=m.map(Bn),A=d.reduce(pn,{}),M=m.reduce(pn,{}),z=E.slice(),D=Object.create(null);let q,N,te,re,J,ae,ce;for(q=0,N=0;q{}}},a.groupByLayout=function(i,e){const r={};for(let c=0;c@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(r,s,c,h)=>{const d=c||h;return e[s]=!d||d.toLowerCase(),""}),e["max-age"]){const r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e},a.parseGlyphPbf=function(i){return new eu(i).readFields(af,[])},a.pbf=Ih,a.performSymbolLayout=function(i){i.bucket.createArrays(),i.bucket.tilePixelRatio=zt/(512*i.bucket.overscaling),i.bucket.compareText={},i.bucket.iconsNeedLinear=!1;const e=i.bucket.layers[0].layout,r=i.bucket.layers[0]._unevaluatedLayout._values,s={layoutIconSize:r["icon-size"].possiblyEvaluate(new Bt(i.bucket.zoom+1),i.canonical),layoutTextSize:r["text-size"].possiblyEvaluate(new Bt(i.bucket.zoom+1),i.canonical),textMaxSize:r["text-size"].possiblyEvaluate(new Bt(18))};if(i.bucket.textSizeData.kind==="composite"){const{minZoom:y,maxZoom:E}=i.bucket.textSizeData;s.compositeTextSizes=[r["text-size"].possiblyEvaluate(new Bt(y),i.canonical),r["text-size"].possiblyEvaluate(new Bt(E),i.canonical)]}if(i.bucket.iconSizeData.kind==="composite"){const{minZoom:y,maxZoom:E}=i.bucket.iconSizeData;s.compositeIconSizes=[r["icon-size"].possiblyEvaluate(new Bt(y),i.canonical),r["icon-size"].possiblyEvaluate(new Bt(E),i.canonical)]}const c=e.get("text-line-height")*hi,h=e.get("text-rotation-alignment")!=="viewport"&&e.get("symbol-placement")!=="point",d=e.get("text-keep-upright"),m=e.get("text-size");for(const y of i.bucket.features){const E=e.get("text-font").evaluate(y,{},i.canonical).join(","),T=m.evaluate(y,{},i.canonical),A=s.layoutTextSize.evaluate(y,{},i.canonical),M=s.layoutIconSize.evaluate(y,{},i.canonical),z={horizontal:{},vertical:void 0},D=y.text;let q,N=[0,0];if(D){const J=D.toString(),ae=e.get("text-letter-spacing").evaluate(y,{},i.canonical)*hi,ce=ua(J)?ae:0,pe=e.get("text-anchor").evaluate(y,{},i.canonical),Oe=e.get("text-variable-anchor");if(!Oe){const Be=e.get("text-radial-offset").evaluate(y,{},i.canonical);N=Be?fd(pe,[Be*hi,pu]):e.get("text-offset").evaluate(y,{},i.canonical).map(Me=>Me*hi)}let Ne=h?"center":e.get("text-justify").evaluate(y,{},i.canonical);const De=e.get("symbol-placement"),Ce=De==="point"?e.get("text-max-width").evaluate(y,{},i.canonical)*hi:0,Se=()=>{i.bucket.allowVerticalPlacement&&ro(J)&&(z.vertical=$l(D,i.glyphMap,i.glyphPositions,i.imagePositions,E,Ce,c,pe,"left",ce,N,a.WritingMode.vertical,!0,De,A,T))};if(!h&&Oe){const Be=Ne==="auto"?Oe.map(be=>fu(be)):[Ne];let Me=!1;for(let be=0;bethis._layers[_e.id]),ie=K[0];if(ie.visibility==="none")continue;const Q=ie.source||"";let Y=this.familiesBySource[Q];Y||(Y=this.familiesBySource[Q]={});const ne=ie.sourceLayer||"_geojsonTileLayer";let me=Y[ne];me||(me=Y[ne]=[]),me.push(K)}}}class B{constructor(k){const P={},O=[];for(const Q in k){const Y=k[Q],ne=P[Q]={};for(const me in Y){const _e=Y[+me];if(!_e||_e.bitmap.width===0||_e.bitmap.height===0)continue;const ge={x:0,y:0,w:_e.bitmap.width+2,h:_e.bitmap.height+2};O.push(ge),ne[me]={rect:ge,metrics:_e.metrics}}}const{w:X,h:K}=a.potpack(O),ie=new a.AlphaImage({width:X||1,height:K||1});for(const Q in k){const Y=k[Q];for(const ne in Y){const me=Y[+ne];if(!me||me.bitmap.width===0||me.bitmap.height===0)continue;const _e=P[Q][ne].rect;a.AlphaImage.copy(me.bitmap,ie,{x:0,y:0},{x:_e.x+1,y:_e.y+1},me.bitmap)}}this.image=ie,this.positions=P}}a.register("GlyphAtlas",B);class he{constructor(k){this.tileID=new a.OverscaledTileID(k.tileID.overscaledZ,k.tileID.wrap,k.tileID.canonical.z,k.tileID.canonical.x,k.tileID.canonical.y),this.uid=k.uid,this.zoom=k.zoom,this.pixelRatio=k.pixelRatio,this.tileSize=k.tileSize,this.source=k.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=k.showCollisionBoxes,this.collectResourceTiming=!!k.collectResourceTiming,this.returnDependencies=!!k.returnDependencies,this.promoteId=k.promoteId}parse(k,P,O,X,K){this.status="parsing",this.data=k,this.collisionBoxArray=new a.CollisionBoxArray;const ie=new a.DictionaryCoder(Object.keys(k.layers).sort()),Q=new a.FeatureIndex(this.tileID,this.promoteId);Q.bucketLayerIDs=[];const Y={},ne={featureIndex:Q,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:O},me=P.familiesBySource[this.source];for(const at in me){const mt=k.layers[at];if(!mt)continue;mt.version===1&&a.warnOnce(`Vector tile source "${this.source}" layer "${at}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const St=ie.encode(at),Yt=[];for(let Qe=0;Qe=Ot.maxzoom||Ot.visibility!=="none"&&(se(Qe,this.zoom,O),(Y[Ot.id]=Ot.createBucket({index:Q.bucketLayerIDs.length,layers:Qe,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:St,sourceID:this.source})).populate(Yt,ne,this.tileID.canonical),Q.bucketLayerIDs.push(Qe.map(Yr=>Yr.id)))}}let _e,ge,We,tt;const Ve=a.mapObject(ne.glyphDependencies,at=>Object.keys(at).map(Number));Object.keys(Ve).length?X.send("getGlyphs",{uid:this.uid,stacks:Ve,source:this.source,tileID:this.tileID,type:"glyphs"},(at,mt)=>{_e||(_e=at,ge=mt,dt.call(this))}):ge={};const Ze=Object.keys(ne.iconDependencies);Ze.length?X.send("getImages",{icons:Ze,source:this.source,tileID:this.tileID,type:"icons"},(at,mt)=>{_e||(_e=at,We=mt,dt.call(this))}):We={};const et=Object.keys(ne.patternDependencies);function dt(){if(_e)return K(_e);if(ge&&We&&tt){const at=new B(ge),mt=new a.ImageAtlas(We,tt);for(const St in Y){const Yt=Y[St];Yt instanceof a.SymbolBucket?(se(Yt.layers,this.zoom,O),a.performSymbolLayout({bucket:Yt,glyphMap:ge,glyphPositions:at.positions,imageMap:We,imagePositions:mt.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Yt.hasPattern&&(Yt instanceof a.LineBucket||Yt instanceof a.FillBucket||Yt instanceof a.FillExtrusionBucket)&&(se(Yt.layers,this.zoom,O),Yt.addFeatures(ne,this.tileID.canonical,mt.patternPositions))}this.status="done",K(null,{buckets:Object.values(Y).filter(St=>!St.isEmpty()),featureIndex:Q,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:at.image,imageAtlas:mt,glyphMap:this.returnDependencies?ge:null,iconMap:this.returnDependencies?We:null,glyphPositions:this.returnDependencies?at.positions:null})}}et.length?X.send("getImages",{icons:et,source:this.source,tileID:this.tileID,type:"patterns"},(at,mt)=>{_e||(_e=at,tt=mt,dt.call(this))}):tt={},dt.call(this)}}function se(j,k,P){const O=new a.EvaluationParameters(k);for(const X of j)X.recalculate(O,P)}function ke(j,k){const P=a.getArrayBuffer(j.request,(O,X,K,ie)=>{O?k(O):X&&k(null,{vectorTile:new a.vectorTile.VectorTile(new a.Protobuf(X)),rawData:X,cacheControl:K,expires:ie})});return()=>{P.cancel(),k()}}class Pe{constructor(k,P,O,X){this.actor=k,this.layerIndex=P,this.availableImages=O,this.loadVectorData=X||ke,this.loading={},this.loaded={}}loadTile(k,P){const O=k.uid;this.loading||(this.loading={});const X=!!(k&&k.request&&k.request.collectResourceTiming)&&new a.RequestPerformance(k.request),K=this.loading[O]=new he(k);K.abort=this.loadVectorData(k,(ie,Q)=>{if(delete this.loading[O],ie||!Q)return K.status="done",this.loaded[O]=K,P(ie);const Y=Q.rawData,ne={};Q.expires&&(ne.expires=Q.expires),Q.cacheControl&&(ne.cacheControl=Q.cacheControl);const me={};if(X){const _e=X.finish();_e&&(me.resourceTiming=JSON.parse(JSON.stringify(_e)))}K.vectorTile=Q.vectorTile,K.parse(Q.vectorTile,this.layerIndex,this.availableImages,this.actor,(_e,ge)=>{if(_e||!ge)return P(_e);P(null,a.extend({rawTileData:Y.slice(0)},ge,ne,me))}),this.loaded=this.loaded||{},this.loaded[O]=K})}reloadTile(k,P){const O=this.loaded,X=k.uid,K=this;if(O&&O[X]){const ie=O[X];ie.showCollisionBoxes=k.showCollisionBoxes;const Q=(Y,ne)=>{const me=ie.reloadCallback;me&&(delete ie.reloadCallback,ie.parse(ie.vectorTile,K.layerIndex,this.availableImages,K.actor,me)),P(Y,ne)};ie.status==="parsing"?ie.reloadCallback=Q:ie.status==="done"&&(ie.vectorTile?ie.parse(ie.vectorTile,this.layerIndex,this.availableImages,this.actor,Q):Q())}}abortTile(k,P){const O=this.loading,X=k.uid;O&&O[X]&&O[X].abort&&(O[X].abort(),delete O[X]),P()}removeTile(k,P){const O=this.loaded,X=k.uid;O&&O[X]&&delete O[X],P()}}class fe{constructor(){this.loaded={}}loadTile(k,P){const{uid:O,encoding:X,rawImageData:K}=k,ie=a.isImageBitmap(K)?this.getImageData(K):K,Q=new a.DEMData(O,ie,X);this.loaded=this.loaded||{},this.loaded[O]=Q,P(null,Q)}getImageData(k){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(k.width,k.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d",{willReadFrequently:!0})),this.offscreenCanvas.width=k.width,this.offscreenCanvas.height=k.height,this.offscreenCanvasContext.drawImage(k,0,0,k.width,k.height);const P=this.offscreenCanvasContext.getImageData(-1,-1,k.width+2,k.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new a.RGBAImage({width:P.width,height:P.height},P.data)}removeTile(k){const P=this.loaded,O=k.uid;P&&P[O]&&delete P[O]}}function Le(j,k){if(j.length!==0){qe(j[0],k);for(var P=1;P=Math.abs(Q)?P-Y+Q:Q-Y+P,P=Y}P+O>=0!=!!k&&j.reverse()}var Ae=a.getDefaultExportFromCjs(function j(k,P){var O,X=k&&k.type;if(X==="FeatureCollection")for(O=0;O>31}function Mr(j,k){for(var P=j.loadGeometry(),O=j.type,X=0,K=0,ie=P.length,Q=0;Qj},rs=Math.fround||(Hr=new Float32Array(1),j=>(Hr[0]=+j,Hr[0]));var Hr;const Ii=3,Yi=5,pi=6;class zn{constructor(k){this.options=Object.assign(Object.create(Pn),k),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(k){const{log:P,minZoom:O,maxZoom:X}=this.options;P&&console.time("total time");const K=`prepare ${k.length} points`;P&&console.time(K),this.points=k;const ie=[];for(let Y=0;Y=O;Y--){const ne=+Date.now();Q=this.trees[Y]=this._createTree(this._cluster(Q,Y)),P&&console.log("z%d: %d clusters in %dms",Y,Q.numItems,+Date.now()-ne)}return P&&console.timeEnd("total time"),this}getClusters(k,P){let O=((k[0]+180)%360+360)%360-180;const X=Math.max(-90,Math.min(90,k[1]));let K=k[2]===180?180:((k[2]+180)%360+360)%360-180;const ie=Math.max(-90,Math.min(90,k[3]));if(k[2]-k[0]>=360)O=-180,K=180;else if(O>K){const _e=this.getClusters([O,X,180,ie],P),ge=this.getClusters([-180,X,K,ie],P);return _e.concat(ge)}const Q=this.trees[this._limitZoom(P)],Y=Q.range(Xr(O),Pr(ie),Xr(K),Pr(X)),ne=Q.data,me=[];for(const _e of Y){const ge=this.stride*_e;me.push(ne[ge+Yi]>1?Ln(ne,ge,this.clusterProps):this.points[ne[ge+Ii]])}return me}getChildren(k){const P=this._getOriginId(k),O=this._getOriginZoom(k),X="No cluster with the specified id.",K=this.trees[O];if(!K)throw new Error(X);const ie=K.data;if(P*this.stride>=ie.length)throw new Error(X);const Q=this.options.radius/(this.options.extent*Math.pow(2,O-1)),Y=K.within(ie[P*this.stride],ie[P*this.stride+1],Q),ne=[];for(const me of Y){const _e=me*this.stride;ie[_e+4]===k&&ne.push(ie[_e+Yi]>1?Ln(ie,_e,this.clusterProps):this.points[ie[_e+Ii]])}if(ne.length===0)throw new Error(X);return ne}getLeaves(k,P,O){const X=[];return this._appendLeaves(X,k,P=P||10,O=O||0,0),X}getTile(k,P,O){const X=this.trees[this._limitZoom(k)],K=Math.pow(2,k),{extent:ie,radius:Q}=this.options,Y=Q/ie,ne=(O-Y)/K,me=(O+1+Y)/K,_e={features:[]};return this._addTileFeatures(X.range((P-Y)/K,ne,(P+1+Y)/K,me),X.data,P,O,K,_e),P===0&&this._addTileFeatures(X.range(1-Y/K,ne,1,me),X.data,K,O,K,_e),P===K-1&&this._addTileFeatures(X.range(0,ne,Y/K,me),X.data,-1,O,K,_e),_e.features.length?_e:null}getClusterExpansionZoom(k){let P=this._getOriginZoom(k)-1;for(;P<=this.options.maxZoom;){const O=this.getChildren(k);if(P++,O.length!==1)break;k=O[0].properties.cluster_id}return P}_appendLeaves(k,P,O,X,K){const ie=this.getChildren(P);for(const Q of ie){const Y=Q.properties;if(Y&&Y.cluster?K+Y.point_count<=X?K+=Y.point_count:K=this._appendLeaves(k,Y.cluster_id,O,X,K):K1;let me,_e,ge;if(ne)me=un(P,Y,this.clusterProps),_e=P[Y],ge=P[Y+1];else{const Ve=this.points[P[Y+Ii]];me=Ve.properties;const[Ze,et]=Ve.geometry.coordinates;_e=Xr(Ze),ge=Pr(et)}const We={type:1,geometry:[[Math.round(this.options.extent*(_e*K-O)),Math.round(this.options.extent*(ge*K-X))]],tags:me};let tt;tt=ne||this.options.generateId?P[Y+Ii]:this.points[P[Y+Ii]].id,tt!==void 0&&(We.id=tt),ie.features.push(We)}}_limitZoom(k){return Math.max(this.options.minZoom,Math.min(Math.floor(+k),this.options.maxZoom+1))}_cluster(k,P){const{radius:O,extent:X,reduce:K,minPoints:ie}=this.options,Q=O/(X*Math.pow(2,P)),Y=k.data,ne=[],me=this.stride;for(let _e=0;_eP&&(Ze+=Y[dt+Yi])}if(Ze>Ve&&Ze>=ie){let et,dt=ge*Ve,at=We*Ve,mt=-1;const St=((_e/me|0)<<5)+(P+1)+this.points.length;for(const Yt of tt){const Qe=Yt*me;if(Y[Qe+2]<=P)continue;Y[Qe+2]=P;const Ot=Y[Qe+Yi];dt+=Y[Qe]*Ot,at+=Y[Qe+1]*Ot,Y[Qe+4]=St,K&&(et||(et=this._map(Y,_e,!0),mt=this.clusterProps.length,this.clusterProps.push(et)),K(et,this._map(Y,Qe)))}Y[_e+4]=St,ne.push(dt/Ze,at/Ze,1/0,St,-1,Ze),K&&ne.push(mt)}else{for(let et=0;et1)for(const et of tt){const dt=et*me;if(!(Y[dt+2]<=P)){Y[dt+2]=P;for(let at=0;at>5}_getOriginZoom(k){return(k-this.points.length)%32}_map(k,P,O){if(k[P+Yi]>1){const ie=this.clusterProps[k[P+pi]];return O?Object.assign({},ie):ie}const X=this.points[k[P+Ii]].properties,K=this.options.map(X);return O&&K===X?Object.assign({},K):K}}function Ln(j,k,P){return{type:"Feature",id:j[k+Ii],properties:un(j,k,P),geometry:{type:"Point",coordinates:[(O=j[k],360*(O-.5)),zr(j[k+1])]}};var O}function un(j,k,P){const O=j[k+Yi],X=O>=1e4?`${Math.round(O/1e3)}k`:O>=1e3?Math.round(O/100)/10+"k":O,K=j[k+pi],ie=K===-1?{}:Object.assign({},P[K]);return Object.assign(ie,{cluster:!0,cluster_id:j[k+Ii],point_count:O,point_count_abbreviated:X})}function Xr(j){return j/360+.5}function Pr(j){const k=Math.sin(j*Math.PI/180),P=.5-.25*Math.log((1+k)/(1-k))/Math.PI;return P<0?0:P>1?1:P}function zr(j){const k=(180-360*j)*Math.PI/180;return 360*Math.atan(Math.exp(k))/Math.PI-90}function Ji(j,k,P,O){for(var X,K=O,ie=P-k>>1,Q=P-k,Y=j[k],ne=j[k+1],me=j[P],_e=j[P+1],ge=k+3;geK)X=ge,K=We;else if(We===K){var tt=Math.abs(ge-ie);ttO&&(X-k>3&&Ji(j,k,X,O),j[X+2]=K,P-X>3&&Ji(j,X,P,O))}function Dn(j,k,P,O,X,K){var ie=X-P,Q=K-O;if(ie!==0||Q!==0){var Y=((j-P)*ie+(k-O)*Q)/(ie*ie+Q*Q);Y>1?(P=X,O=K):Y>0&&(P+=ie*Y,O+=Q*Y)}return(ie=j-P)*ie+(Q=k-O)*Q}function de(j,k,P,O){var X={id:j===void 0?null:j,type:k,geometry:P,tags:O,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(K){var ie=K.geometry,Q=K.type;if(Q==="Point"||Q==="MultiPoint"||Q==="LineString")Wr(K,ie);else if(Q==="Polygon"||Q==="MultiLineString")for(var Y=0;Y0&&(ie+=O?(X*ne-Y*K)/2:Math.sqrt(Math.pow(Y-X,2)+Math.pow(ne-K,2))),X=Y,K=ne}var me=k.length-3;k[2]=1,Ji(k,0,me,P),k[me+2]=1,k.size=Math.abs(ie),k.start=0,k.end=k.size}function hn(j,k,P,O){for(var X=0;X1?1:P}function Kt(j,k,P,O,X,K,ie,Q){if(O/=k,K>=(P/=k)&&ie=O)return null;for(var Y=[],ne=0;ne=P&&tt=O)){var Ve=[];if(ge==="Point"||ge==="MultiPoint")dn(_e,Ve,P,O,X);else if(ge==="LineString")Bn(_e,Ve,P,O,X,!1,Q.lineMetrics);else if(ge==="MultiLineString")Te(_e,Ve,P,O,X,!1);else if(ge==="Polygon")Te(_e,Ve,P,O,X,!0);else if(ge==="MultiPolygon")for(var Ze=0;Ze<_e.length;Ze++){var et=[];Te(_e[Ze],et,P,O,X,!0),et.length&&Ve.push(et)}if(Ve.length){if(Q.lineMetrics&&ge==="LineString"){for(Ze=0;Ze=P&&ie<=O&&(k.push(j[K]),k.push(j[K+1]),k.push(j[K+2]))}}function Bn(j,k,P,O,X,K,ie){for(var Q,Y,ne=pn(j),me=X===0?yi:Rn,_e=j.start,ge=0;geP&&(Y=me(ne,We,tt,Ze,et,P),ie&&(ne.start=_e+Q*Y)):dt>O?at=P&&(Y=me(ne,We,tt,Ze,et,P),mt=!0),at>O&&dt<=O&&(Y=me(ne,We,tt,Ze,et,O),mt=!0),!K&&mt&&(ie&&(ne.end=_e+Q*Y),k.push(ne),ne=pn(j)),ie&&(_e+=Q)}var St=j.length-3;We=j[St],tt=j[St+1],Ve=j[St+2],(dt=X===0?We:tt)>=P&&dt<=O&&mr(ne,We,tt,Ve),St=ne.length-3,K&&St>=3&&(ne[St]!==ne[0]||ne[St+1]!==ne[1])&&mr(ne,ne[0],ne[1],ne[2]),ne.length&&k.push(ne)}function pn(j){var k=[];return k.size=j.size,k.start=j.start,k.end=j.end,k}function Te(j,k,P,O,X,K){for(var ie=0;ieie.maxX&&(ie.maxX=me),_e>ie.maxY&&(ie.maxY=_e)}return ie}function ni(j,k,P,O){var X=k.geometry,K=k.type,ie=[];if(K==="Point"||K==="MultiPoint")for(var Q=0;Q0&&k.size<(X?ie:O))P.numPoints+=k.length/3;else{for(var Q=[],Y=0;Yie)&&(P.numSimplified++,Q.push(k[Y]),Q.push(k[Y+1])),P.numPoints++;X&&function(ne,me){for(var _e=0,ge=0,We=ne.length,tt=We-2;ge0===me)for(ge=0,We=ne.length;ge24)throw new Error("maxZoom should be in the 0-24 range");if(k.promoteId&&k.generateId)throw new Error("promoteId and generateId cannot be used together.");var O=function(X,K){var ie=[];if(X.type==="FeatureCollection")for(var Q=0;Q1&&console.time("creation"),ge=this.tiles[_e]=zi(j,k,P,O,Y),this.tileCoords.push({z:k,x:P,y:O}),ne)){ne>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",k,P,O,ge.numFeatures,ge.numPoints,ge.numSimplified),console.timeEnd("creation"));var We="z"+k;this.stats[We]=(this.stats[We]||0)+1,this.total++}if(ge.source=j,X){if(k===Y.maxZoom||k===X)continue;var tt=1<1&&console.time("clipping");var Ve,Ze,et,dt,at,mt,St=.5*Y.buffer/Y.extent,Yt=.5-St,Qe=.5+St,Ot=1+St;Ve=Ze=et=dt=null,at=Kt(j,me,P-St,P+Qe,0,ge.minX,ge.maxX,Y),mt=Kt(j,me,P+Yt,P+Ot,0,ge.minX,ge.maxX,Y),j=null,at&&(Ve=Kt(at,me,O-St,O+Qe,1,ge.minY,ge.maxY,Y),Ze=Kt(at,me,O+Yt,O+Ot,1,ge.minY,ge.maxY,Y),at=null),mt&&(et=Kt(mt,me,O-St,O+Qe,1,ge.minY,ge.maxY,Y),dt=Kt(mt,me,O+Yt,O+Ot,1,ge.minY,ge.maxY,Y),mt=null),ne>1&&console.timeEnd("clipping"),Q.push(Ve||[],k+1,2*P,2*O),Q.push(Ze||[],k+1,2*P,2*O+1),Q.push(et||[],k+1,2*P+1,2*O),Q.push(dt||[],k+1,2*P+1,2*O+1)}}},Lr.prototype.getTile=function(j,k,P){var O=this.options,X=O.extent,K=O.debug;if(j<0||j>24)return null;var ie=1<1&&console.log("drilling down to z%d-%d-%d",j,k,P);for(var Y,ne=j,me=k,_e=P;!Y&&ne>0;)ne--,me=Math.floor(me/2),_e=Math.floor(_e/2),Y=this.tiles[Dr(ne,me,_e)];return Y&&Y.source?(K>1&&console.log("found parent tile z%d-%d-%d",ne,me,_e),K>1&&console.time("drilling down"),this.splitTile(Y.source,ne,me,_e,j,k,P),K>1&&console.timeEnd("drilling down"),this.tiles[Q]?ot(this.tiles[Q],X):null):null};class os extends Pe{constructor(k,P,O,X){super(k,P,O,kt),this._dataUpdateable=new Map,this.loadGeoJSON=(K,ie)=>{const{promoteId:Q}=K;if(K.request)return a.getJSON(K.request,(Y,ne,me,_e)=>{this._dataUpdateable=Br(ne,Q)?fi(ne,Q):void 0,ie(Y,ne,me,_e)});if(typeof K.data=="string")try{const Y=JSON.parse(K.data);this._dataUpdateable=Br(Y,Q)?fi(Y,Q):void 0,ie(null,Y)}catch{ie(new Error(`Input data given to '${K.source}' is not a valid GeoJSON object.`))}else K.dataDiff?this._dataUpdateable?(function(Y,ne,me){var _e,ge,We,tt;if(ne.removeAll&&Y.clear(),ne.remove)for(const Ve of ne.remove)Y.delete(Ve);if(ne.add)for(const Ve of ne.add){const Ze=or(Ve,me);Ze!=null&&Y.set(Ze,Ve)}if(ne.update)for(const Ve of ne.update){let Ze=Y.get(Ve.id);if(Ze==null)continue;const et=!Ve.removeAllProperties&&(((_e=Ve.removeProperties)===null||_e===void 0?void 0:_e.length)>0||((ge=Ve.addOrUpdateProperties)===null||ge===void 0?void 0:ge.length)>0);if((Ve.newGeometry||Ve.removeAllProperties||et)&&(Ze={...Ze},Y.set(Ve.id,Ze),et&&(Ze.properties={...Ze.properties})),Ve.newGeometry&&(Ze.geometry=Ve.newGeometry),Ve.removeAllProperties)Ze.properties={};else if(((We=Ve.removeProperties)===null||We===void 0?void 0:We.length)>0)for(const dt of Ve.removeProperties)Object.prototype.hasOwnProperty.call(Ze.properties,dt)&&delete Ze.properties[dt];if(((tt=Ve.addOrUpdateProperties)===null||tt===void 0?void 0:tt.length)>0)for(const{key:dt,value:at}of Ve.addOrUpdateProperties)Ze.properties[dt]=at}}(this._dataUpdateable,K.dataDiff,Q),ie(null,{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())})):ie(new Error(`Cannot update existing geojson data in ${K.source}`)):ie(new Error(`Input data given to '${K.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},X&&(this.loadGeoJSON=X)}loadData(k,P){var O;(O=this._pendingRequest)===null||O===void 0||O.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const X=!!(k&&k.request&&k.request.collectResourceTiming)&&new a.RequestPerformance(k.request);this._pendingCallback=P,this._pendingRequest=this.loadGeoJSON(k,(K,ie)=>{if(delete this._pendingCallback,delete this._pendingRequest,K||!ie)return P(K);if(typeof ie!="object")return P(new Error(`Input data given to '${k.source}' is not a valid GeoJSON object.`));{Ae(ie,!0);try{if(k.filter){const Y=a.createExpression(k.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Y.result==="error")throw new Error(Y.value.map(me=>`${me.key}: ${me.message}`).join(", "));ie={type:"FeatureCollection",features:ie.features.filter(me=>Y.value.evaluate({zoom:0},me))}}this._geoJSONIndex=k.cluster?new zn(function({superclusterOptions:Y,clusterProperties:ne}){if(!ne||!Y)return Y;const me={},_e={},ge={accumulated:null,zoom:0},We={properties:null},tt=Object.keys(ne);for(const Ve of tt){const[Ze,et]=ne[Ve],dt=a.createExpression(et),at=a.createExpression(typeof Ze=="string"?[Ze,["accumulated"],["get",Ve]]:Ze);me[Ve]=dt.value,_e[Ve]=at.value}return Y.map=Ve=>{We.properties=Ve;const Ze={};for(const et of tt)Ze[et]=me[et].evaluate(ge,We);return Ze},Y.reduce=(Ve,Ze)=>{We.properties=Ze;for(const et of tt)ge.accumulated=Ve[et],Ve[et]=_e[et].evaluate(ge,We)},Y}(k)).load(ie.features):function(Y,ne){return new Lr(Y,ne)}(ie,k.geojsonVtOptions)}catch(Y){return P(Y)}this.loaded={};const Q={};if(X){const Y=X.finish();Y&&(Q.resourceTiming={},Q.resourceTiming[k.source]=JSON.parse(JSON.stringify(Y)))}P(null,Q)}})}reloadTile(k,P){const O=this.loaded;return O&&O[k.uid]?super.reloadTile(k,P):this.loadTile(k,P)}removeSource(k,P){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),P()}getClusterExpansionZoom(k,P){try{P(null,this._geoJSONIndex.getClusterExpansionZoom(k.clusterId))}catch(O){P(O)}}getClusterChildren(k,P){try{P(null,this._geoJSONIndex.getChildren(k.clusterId))}catch(O){P(O)}}getClusterLeaves(k,P){try{P(null,this._geoJSONIndex.getLeaves(k.clusterId,k.limit,k.offset))}catch(O){P(O)}}}class gr{constructor(k){this.self=k,this.actor=new a.Actor(k,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:Pe,geojson:os},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(P,O)=>{if(this.workerSourceTypes[P])throw new Error(`Worker source with name "${P}" already registered.`);this.workerSourceTypes[P]=O},this.self.registerRTLTextPlugin=P=>{if(a.plugin.isParsed())throw new Error("RTL text plugin already registered.");a.plugin.applyArabicShaping=P.applyArabicShaping,a.plugin.processBidirectionalText=P.processBidirectionalText,a.plugin.processStyledBidirectionalText=P.processStyledBidirectionalText}}setReferrer(k,P){this.referrer=P}setImages(k,P,O){this.availableImages[k]=P;for(const X in this.workerSources[k]){const K=this.workerSources[k][X];for(const ie in K)K[ie].availableImages=P}O()}setLayers(k,P,O){this.getLayerIndex(k).replace(P),O()}updateLayers(k,P,O){this.getLayerIndex(k).update(P.layers,P.removedIds),O()}loadTile(k,P,O){this.getWorkerSource(k,P.type,P.source).loadTile(P,O)}loadDEMTile(k,P,O){this.getDEMWorkerSource(k,P.source).loadTile(P,O)}reloadTile(k,P,O){this.getWorkerSource(k,P.type,P.source).reloadTile(P,O)}abortTile(k,P,O){this.getWorkerSource(k,P.type,P.source).abortTile(P,O)}removeTile(k,P,O){this.getWorkerSource(k,P.type,P.source).removeTile(P,O)}removeDEMTile(k,P){this.getDEMWorkerSource(k,P.source).removeTile(P)}removeSource(k,P,O){if(!this.workerSources[k]||!this.workerSources[k][P.type]||!this.workerSources[k][P.type][P.source])return;const X=this.workerSources[k][P.type][P.source];delete this.workerSources[k][P.type][P.source],X.removeSource!==void 0?X.removeSource(P,O):O()}loadWorkerSource(k,P,O){try{this.self.importScripts(P.url),O()}catch(X){O(X.toString())}}syncRTLPluginState(k,P,O){try{a.plugin.setState(P);const X=a.plugin.getPluginURL();if(a.plugin.isLoaded()&&!a.plugin.isParsed()&&X!=null){this.self.importScripts(X);const K=a.plugin.isParsed();O(K?void 0:new Error(`RTL Text Plugin failed to import scripts from ${X}`),K)}}catch(X){O(X.toString())}}getAvailableImages(k){let P=this.availableImages[k];return P||(P=[]),P}getLayerIndex(k){let P=this.layerIndexes[k];return P||(P=this.layerIndexes[k]=new W),P}getWorkerSource(k,P,O){if(this.workerSources[k]||(this.workerSources[k]={}),this.workerSources[k][P]||(this.workerSources[k][P]={}),!this.workerSources[k][P][O]){const X={send:(K,ie,Q)=>{this.actor.send(K,ie,Q,k)}};this.workerSources[k][P][O]=new this.workerSourceTypes[P](X,this.getLayerIndex(k),this.getAvailableImages(k))}return this.workerSources[k][P][O]}getDEMWorkerSource(k,P){return this.demWorkerSources[k]||(this.demWorkerSources[k]={}),this.demWorkerSources[k][P]||(this.demWorkerSources[k][P]=new fe),this.demWorkerSources[k][P]}}return a.isWorker()&&(self.worker=new gr(self)),gr}),F(["./shared"],function(a){var W="3.1.0";class B{static testProp(t){if(!B.docStyle)return t[0];for(let n=0;n{window.removeEventListener("click",B.suppressClickInternal,!0)},0)}static mousePos(t,n){const o=t.getBoundingClientRect();return new a.Point(n.clientX-o.left-t.clientLeft,n.clientY-o.top-t.clientTop)}static touchPos(t,n){const o=t.getBoundingClientRect(),u=[];for(let p=0;p{t=[],n=0,o=0,u={}},l.addThrottleControl=w=>{const I=o++;return u[I]=w,I},l.removeThrottleControl=w=>{delete u[w],x()},l.getImage=(w,I,S=!0)=>{he.supported&&(w.headers||(w.headers={}),w.headers.accept="image/webp,*/*");const L={requestParameters:w,supportImageRefresh:S,callback:I,cancelled:!1,completed:!1,cancel:()=>{L.completed||L.cancelled||(L.cancelled=!0,L.innerRequest&&(L.innerRequest.cancel(),n--),x())}};return t.push(L),x(),L};const p=w=>{const{requestParameters:I,supportImageRefresh:S,callback:L}=w;return a.extend(I,{type:"image"}),(S!==!1||a.isWorker()||a.getProtocolAction(I.url)||I.headers&&!Object.keys(I.headers).reduce(($,U)=>$&&U==="accept",!0)?a.makeRequest:v)(I,($,U,V,H)=>{_(w,L,$,U,V,H)})},_=(w,I,S,L,$,U)=>{S?I(S):L instanceof HTMLImageElement||L instanceof ImageBitmap?I(null,L):L&&((V,H)=>{typeof createImageBitmap=="function"?a.arrayBufferToImageBitmap(V,H):a.arrayBufferToImage(V,H)})(L,(V,H)=>{V!=null?I(V):H!=null&&I(null,H,{cacheControl:$,expires:U})}),w.cancelled||(w.completed=!0,n--,x())},x=()=>{const w=(()=>{const I=Object.keys(u);let S=!1;if(I.length>0){for(const L of I)if(S=u[L](),S)break}return S})()?a.config.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.config.MAX_PARALLEL_IMAGE_REQUESTS;for(let I=n;I0;I++){const S=t.shift();if(S.cancelled){I--;continue}const L=p(S);n++,S.innerRequest=L}},v=(w,I)=>{const S=new Image,L=w.url;let $=!1;const U=w.credentials;return U&&U==="include"?S.crossOrigin="use-credentials":(U&&U==="same-origin"||!a.sameOrigin(L))&&(S.crossOrigin="anonymous"),S.fetchPriority="high",S.onload=()=>{I(null,S),S.onerror=S.onload=null},S.onerror=()=>{$||I(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.")),S.onerror=S.onload=null},S.src=L,{cancel:()=>{$=!0,S.src=""}}}}(qe||(qe={})),qe.resetRequestQueue();var Ae,Je=qe;(function(l){l.Glyphs="Glyphs",l.Image="Image",l.Source="Source",l.SpriteImage="SpriteImage",l.SpriteJSON="SpriteJSON",l.Style="Style",l.Tile="Tile",l.Unknown="Unknown"})(Ae||(Ae={}));class Ge{constructor(t){this._transformRequestFn=t}transformRequest(t,n){return this._transformRequestFn&&this._transformRequestFn(t,n)||{url:t}}normalizeSpriteURL(t,n,o){const u=function(p){const _=p.match(pt);if(!_)throw new Error(`Unable to parse URL "${p}"`);return{protocol:_[1],authority:_[2],path:_[3]||"/",params:_[4]?_[4].split("&"):[]}}(t);return u.path+=`${n}${o}`,function(p){const _=p.params.length?`?${p.params.join("&")}`:"";return`${p.protocol}://${p.authority}${p.path}${_}`}(u)}setTransformRequest(t){this._transformRequestFn=t}}const pt=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function Pt(l){var t=new a.ARRAY_TYPE(3);return t[0]=l[0],t[1]=l[1],t[2]=l[2],t}var ri,At=function(l,t,n){return l[0]=t[0]-n[0],l[1]=t[1]-n[1],l[2]=t[2]-n[2],l};ri=new a.ARRAY_TYPE(3),a.ARRAY_TYPE!=Float32Array&&(ri[0]=0,ri[1]=0,ri[2]=0);var Ct=function(l){var t=l[0],n=l[1];return t*t+n*n};function qt(l){const t=[];if(typeof l=="string")t.push({id:"default",url:l});else if(l&&l.length>0){const n=[];for(const{id:o,url:u}of l){const p=`${o}${u}`;n.indexOf(p)===-1&&(n.push(p),t.push({id:o,url:u}))}}return t}function Dt(l,t,n,o,u){if(o)return void l(o);if(u!==Object.values(t).length||u!==Object.values(n).length)return;const p={};for(const _ in t){p[_]={};const x=a.exported.getImageCanvasContext(n[_]),v=t[_];for(const w in v){const{width:I,height:S,x:L,y:$,sdf:U,pixelRatio:V,stretchX:H,stretchY:ee,content:le}=v[w];p[_][w]={data:null,pixelRatio:V,sdf:U,stretchX:H,stretchY:ee,content:le,spriteData:{width:I,height:S,x:L,y:$,context:x}}}}l(null,p)}(function(){var l=new a.ARRAY_TYPE(2);a.ARRAY_TYPE!=Float32Array&&(l[0]=0,l[1]=0)})();class ht{constructor(t,n,o,u){this.context=t,this.format=o,this.texture=t.gl.createTexture(),this.update(n,u)}update(t,n,o){const{width:u,height:p}=t,_=!(this.size&&this.size[0]===u&&this.size[1]===p||o),{context:x}=this,{gl:v}=x;if(this.useMipmap=!!(n&&n.useMipmap),v.bindTexture(v.TEXTURE_2D,this.texture),x.pixelStoreUnpackFlipY.set(!1),x.pixelStoreUnpack.set(1),x.pixelStoreUnpackPremultiplyAlpha.set(this.format===v.RGBA&&(!n||n.premultiply!==!1)),_)this.size=[u,p],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||a.isImageBitmap(t)?v.texImage2D(v.TEXTURE_2D,0,this.format,this.format,v.UNSIGNED_BYTE,t):v.texImage2D(v.TEXTURE_2D,0,this.format,u,p,0,this.format,v.UNSIGNED_BYTE,t.data);else{const{x:w,y:I}=o||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||a.isImageBitmap(t)?v.texSubImage2D(v.TEXTURE_2D,0,w,I,v.RGBA,v.UNSIGNED_BYTE,t):v.texSubImage2D(v.TEXTURE_2D,0,w,I,u,p,v.RGBA,v.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&v.generateMipmap(v.TEXTURE_2D)}bind(t,n,o){const{context:u}=this,{gl:p}=u;p.bindTexture(p.TEXTURE_2D,this.texture),o!==p.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(o=p.LINEAR),t!==this.filter&&(p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,t),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,o||t),this.filter=t),n!==this.wrap&&(p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,n),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,n),this.wrap=n)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null}}function Cr(l){const{userImage:t}=l;return!!(t&&t.render&&t.render())&&(l.data.replace(new Uint8Array(t.data.buffer)),!0)}class _i extends a.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:n,callback:o}of this.requestors)this._notify(n,o);this.requestors=[]}}getImage(t){const n=this.images[t];if(n&&!n.data&&n.spriteData){const o=n.spriteData;n.data=new a.RGBAImage({width:o.width,height:o.height},o.context.getImageData(o.x,o.y,o.width,o.height).data),n.spriteData=null}return n}addImage(t,n){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,n)&&(this.images[t]=n)}_validate(t,n){let o=!0;const u=n.data||n.spriteData;return this._validateStretch(n.stretchX,u&&u.width)||(this.fire(new a.ErrorEvent(new Error(`Image "${t}" has invalid "stretchX" value`))),o=!1),this._validateStretch(n.stretchY,u&&u.height)||(this.fire(new a.ErrorEvent(new Error(`Image "${t}" has invalid "stretchY" value`))),o=!1),this._validateContent(n.content,n)||(this.fire(new a.ErrorEvent(new Error(`Image "${t}" has invalid "content" value`))),o=!1),o}_validateStretch(t,n){if(!t)return!0;let o=0;for(const u of t){if(u[0]-1);v++,p[v]=x,_[v]=w,_[v+1]=kr}for(let x=0,v=0;x{let x=this.entries[u];x||(x=this.entries[u]={glyphs:{},requests:{},ranges:{}});let v=x.glyphs[p];if(v!==void 0)return void _(null,{stack:u,id:p,glyph:v});if(v=this._tinySDF(x,u,p),v)return x.glyphs[p]=v,void _(null,{stack:u,id:p,glyph:v});const w=Math.floor(p/256);if(256*w>65535)return void _(new Error("glyphs > 65535 not supported"));if(x.ranges[w])return void _(null,{stack:u,id:p,glyph:v});if(!this.url)return void _(new Error("glyphsUrl is not set"));let I=x.requests[w];I||(I=x.requests[w]=[],Mr.loadGlyphRange(u,w,this.url,this.requestManager,(S,L)=>{if(L){for(const $ in L)this._doesCharSupportLocalGlyph(+$)||(x.glyphs[+$]=L[+$]);x.ranges[w]=!0}for(const $ of I)$(S,L);delete x.requests[w]})),I.push((S,L)=>{S?_(S):L&&_(null,{stack:u,id:p,glyph:L[p]||null})})},(u,p)=>{if(u)n(u);else if(p){const _={};for(const{stack:x,id:v,glyph:w}of p)(_[x]||(_[x]={}))[v]=w&&{id:w.id,bitmap:w.bitmap.clone(),metrics:w.metrics};n(null,_)}})}_doesCharSupportLocalGlyph(t){return!!this.localIdeographFontFamily&&(a.unicodeBlockLookup["CJK Unified Ideographs"](t)||a.unicodeBlockLookup["Hangul Syllables"](t)||a.unicodeBlockLookup.Hiragana(t)||a.unicodeBlockLookup.Katakana(t))}_tinySDF(t,n,o){const u=this.localIdeographFontFamily;if(!u||!this._doesCharSupportLocalGlyph(o))return;let p=t.tinySDF;if(!p){let x="400";/bold/i.test(n)?x="900":/medium/i.test(n)?x="500":/light/i.test(n)&&(x="200"),p=t.tinySDF=new Mr.TinySDF({fontSize:24,buffer:3,radius:8,cutoff:.25,fontFamily:u,fontWeight:x})}const _=p.draw(String.fromCharCode(o));return{id:o,bitmap:new a.AlphaImage({width:_.width||30,height:_.height||30},_.data),metrics:{width:_.glyphWidth||24,height:_.glyphHeight||24,left:_.glyphLeft||0,top:_.glyphTop-27||-8,advance:_.glyphAdvance||24}}}}Mr.loadGlyphRange=function(l,t,n,o,u){const p=256*t,_=p+255,x=o.transformRequest(n.replace("{fontstack}",l).replace("{range}",`${p}-${_}`),Ae.Glyphs);a.getArrayBuffer(x,(v,w)=>{if(v)u(v);else if(w){const I={};for(const S of a.parseGlyphPbf(w))I[S.id]=S;u(null,I)}})},Mr.TinySDF=class{constructor({fontSize:l=24,buffer:t=3,radius:n=8,cutoff:o=.25,fontFamily:u="sans-serif",fontWeight:p="normal",fontStyle:_="normal"}={}){this.buffer=t,this.cutoff=o,this.radius=n;const x=this.size=l+4*t,v=this._createCanvas(x),w=this.ctx=v.getContext("2d",{willReadFrequently:!0});w.font=`${_} ${p} ${l}px ${u}`,w.textBaseline="alphabetic",w.textAlign="left",w.fillStyle="black",this.gridOuter=new Float64Array(x*x),this.gridInner=new Float64Array(x*x),this.f=new Float64Array(x),this.z=new Float64Array(x+1),this.v=new Uint16Array(x)}_createCanvas(l){const t=document.createElement("canvas");return t.width=t.height=l,t}draw(l){const{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:o,actualBoundingBoxLeft:u,actualBoundingBoxRight:p}=this.ctx.measureText(l),_=Math.ceil(n),x=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(p-u))),v=Math.min(this.size-this.buffer,_+Math.ceil(o)),w=x+2*this.buffer,I=v+2*this.buffer,S=Math.max(w*I,0),L=new Uint8ClampedArray(S),$={data:L,width:w,height:I,glyphWidth:x,glyphHeight:v,glyphTop:_,glyphLeft:0,glyphAdvance:t};if(x===0||v===0)return $;const{ctx:U,buffer:V,gridInner:H,gridOuter:ee}=this;U.clearRect(V,V,x,v),U.fillText(l,V,V+_);const le=U.getImageData(V,V,x,v);ee.fill(kr,0,S),H.fill(0,0,S);for(let G=0;G0?xe*xe:0,H[ye]=xe<0?xe*xe:0}}Zr(ee,0,0,w,I,w,this.f,this.v,this.z),Zr(H,V,V,x,v,w,this.f,this.v,this.z);for(let G=0;G1&&(v=t[++x]);const I=Math.abs(w-v.left),S=Math.abs(w-v.right),L=Math.min(I,S);let $;const U=p/o*(u+1);if(v.isDash){const V=u-Math.abs(U);$=Math.sqrt(L*L+V*V)}else $=u-Math.sqrt(L*L+U*U);this.data[_+w]=Math.max(0,Math.min(255,$+128))}}}addRegularDash(t){for(let x=t.length-1;x>=0;--x){const v=t[x],w=t[x+1];v.zeroLength?t.splice(x,1):w&&w.isDash===v.isDash&&(w.left=v.left,t.splice(x,1))}const n=t[0],o=t[t.length-1];n.isDash===o.isDash&&(n.left=o.left-this.width,o.right=n.right+this.width);const u=this.width*this.nextRow;let p=0,_=t[p];for(let x=0;x1&&(_=t[++p]);const v=Math.abs(x-_.left),w=Math.abs(x-_.right),I=Math.min(v,w);this.data[u+x]=Math.max(0,Math.min(255,(_.isDash?I:-I)+128))}}addDash(t,n){const o=n?7:0,u=2*o+1;if(this.nextRow+u>this.height)return a.warnOnce("LineAtlas out of space"),null;let p=0;for(let x=0;x{u.send(t,n,p)},o=o||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach(n=>{n.remove()}),this.actors=[],t&&this.workerPool.release(this.id)}}function Yi(l,t,n){const o=function(u,p){if(u)return n(u);if(p){const _=a.pick(a.extend(p,l),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);p.vector_layers&&(_.vectorLayers=p.vector_layers,_.vectorLayerIds=_.vectorLayers.map(x=>x.id)),n(null,_)}};return l.url?a.getJSON(t.transformRequest(l.url,Ae.Source),o):a.exported.frame(()=>o(null,l))}Ii.Actor=a.Actor;class pi{constructor(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):Array.isArray(t)&&(t.length===4?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof a.LngLat?new a.LngLat(t.lng,t.lat):a.LngLat.convert(t),this}setSouthWest(t){return this._sw=t instanceof a.LngLat?new a.LngLat(t.lng,t.lat):a.LngLat.convert(t),this}extend(t){const n=this._sw,o=this._ne;let u,p;if(t instanceof a.LngLat)u=t,p=t;else{if(!(t instanceof pi))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(pi.convert(t)):this.extend(a.LngLat.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(a.LngLat.convert(t)):this;if(u=t._sw,p=t._ne,!u||!p)return this}return n||o?(n.lng=Math.min(u.lng,n.lng),n.lat=Math.min(u.lat,n.lat),o.lng=Math.max(p.lng,o.lng),o.lat=Math.max(p.lat,o.lat)):(this._sw=new a.LngLat(u.lng,u.lat),this._ne=new a.LngLat(p.lng,p.lat)),this}getCenter(){return new a.LngLat((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.LngLat(this.getWest(),this.getNorth())}getSouthEast(){return new a.LngLat(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(t){const{lng:n,lat:o}=a.LngLat.convert(t);let u=this._sw.lng<=n&&n<=this._ne.lng;return this._sw.lng>this._ne.lng&&(u=this._sw.lng>=n&&n>=this._ne.lng),this._sw.lat<=o&&o<=this._ne.lat&&u}static convert(t){return t instanceof pi?t:t&&new pi(t)}static fromLngLat(t,n=0){const o=360*n/40075017,u=o/Math.cos(Math.PI/180*t.lat);return new pi(new a.LngLat(t.lng-u,t.lat-o),new a.LngLat(t.lng+u,t.lat+o))}}class zn{constructor(t,n,o){this.bounds=pi.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=o||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){const n=Math.pow(2,t.z),o=Math.floor(a.mercatorXfromLng(this.bounds.getWest())*n),u=Math.floor(a.mercatorYfromLat(this.bounds.getNorth())*n),p=Math.ceil(a.mercatorXfromLng(this.bounds.getEast())*n),_=Math.ceil(a.mercatorYfromLat(this.bounds.getSouth())*n);return t.x>=o&&t.x=u&&t.y<_}}class Ln extends a.Evented{constructor(t,n,o,u){if(super(),this.id=t,this.dispatcher=o,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,a.extend(this,a.pick(n,["url","scheme","tileSize","promoteId"])),this._options=a.extend({type:"vector"},n),this._collectResourceTiming=n.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(u)}load(){this._loaded=!1,this.fire(new a.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=Yi(this._options,this.map._requestManager,(t,n)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),t?this.fire(new a.ErrorEvent(t)):n&&(a.extend(this,n),n.bounds&&(this.tileBounds=new zn(n.bounds,this.minzoom,this.maxzoom)),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"content"})))})}loaded(){return this._loaded}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load()}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load()}setTiles(t){return this.setSourceProperty(()=>{this._options.tiles=t}),this}setUrl(t){return this.setSourceProperty(()=>{this.url=t,this._options.url=t}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return a.extend({},this._options)}loadTile(t,n){const o=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),u={request:this.map._requestManager.transformRequest(o,Ae.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function p(_,x){return delete t.request,t.aborted?n(null):_&&_.status!==404?n(_):(x&&x.resourceTiming&&(t.resourceTiming=x.resourceTiming),this.map._refreshExpiredTiles&&x&&t.setExpiryData(x),t.loadVectorData(x,this.map.painter),n(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}u.request.collectResourceTiming=this._collectResourceTiming,t.actor&&t.state!=="expired"?t.state==="loading"?t.reloadCallback=n:t.request=t.actor.send("reloadTile",u,p.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send("loadTile",u,p.bind(this)))}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0)}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class un extends a.Evented{constructor(t,n,o,u){super(),this.id=t,this.dispatcher=o,this.setEventedParent(u),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.extend({type:"raster"},n),a.extend(this,a.pick(n,["url","scheme","tileSize"]))}load(){this._loaded=!1,this.fire(new a.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=Yi(this._options,this.map._requestManager,(t,n)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new a.ErrorEvent(t)):n&&(a.extend(this,n),n.bounds&&(this.tileBounds=new zn(n.bounds,this.minzoom,this.maxzoom)),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"content"})))})}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return a.extend({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,n){const o=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=Je.getImage(this.map._requestManager.transformRequest(o,Ae.Tile),(u,p,_)=>{if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(u)t.state="errored",n(u);else if(p){this.map._refreshExpiredTiles&&_&&t.setExpiryData(_);const x=this.map.painter.context,v=x.gl;t.texture=this.map.painter.getTileTexture(p.width),t.texture?t.texture.update(p,{useMipmap:!0}):(t.texture=new ht(x,p,v.RGBA,{useMipmap:!0}),t.texture.bind(v.LINEAR,v.CLAMP_TO_EDGE,v.LINEAR_MIPMAP_NEAREST),x.extTextureFilterAnisotropic&&v.texParameterf(v.TEXTURE_2D,x.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,x.extTextureFilterAnisotropicMax)),t.state="loaded",n(null)}},this.map._refreshExpiredTiles)}abortTile(t,n){t.request&&(t.request.cancel(),delete t.request),n()}unloadTile(t,n){t.texture&&this.map.painter.saveTileTexture(t.texture),n()}hasTransition(){return!1}}class Xr extends un{constructor(t,n,o,u){super(t,n,o,u),this.type="raster-dem",this.maxzoom=22,this._options=a.extend({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox"}serialize(){return{type:"raster-dem",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}}loadTile(t,n){const o=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);function u(p,_){p&&(t.state="errored",n(p)),_&&(t.dem=_,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded",n(null))}t.request=Je.getImage(this.map._requestManager.transformRequest(o,Ae.Tile),function(p,_){if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(p)t.state="errored",n(p);else if(_){this.map._refreshExpiredTiles&&t.setExpiryData(_),delete _.cacheControl,delete _.expires;const x=a.isImageBitmap(_)&&(Pn==null&&(Pn=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),Pn)?_:a.exported.getImageData(_,1),v={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:x,encoding:this.encoding};t.actor&&t.state!=="expired"||(t.actor=this.dispatcher.getActor(),t.actor.send("loadDEMTile",v,u.bind(this)))}}.bind(this),this.map._refreshExpiredTiles),t.neighboringTiles=this._getNeighboringTiles(t.tileID)}_getNeighboringTiles(t){const n=t.canonical,o=Math.pow(2,n.z),u=(n.x-1+o)%o,p=n.x===0?t.wrap-1:t.wrap,_=(n.x+1+o)%o,x=n.x+1===o?t.wrap+1:t.wrap,v={};return v[new a.OverscaledTileID(t.overscaledZ,p,n.z,u,n.y).key]={backfilled:!1},v[new a.OverscaledTileID(t.overscaledZ,x,n.z,_,n.y).key]={backfilled:!1},n.y>0&&(v[new a.OverscaledTileID(t.overscaledZ,p,n.z,u,n.y-1).key]={backfilled:!1},v[new a.OverscaledTileID(t.overscaledZ,t.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},v[new a.OverscaledTileID(t.overscaledZ,x,n.z,_,n.y-1).key]={backfilled:!1}),n.y+1{if(this._pendingLoads--,this._removed||u&&u.abandoned)return void this.fire(new a.Event("dataabort",{dataType:"source"}));let p=null;if(u&&u.resourceTiming&&u.resourceTiming[this.id]&&(p=u.resourceTiming[this.id].slice(0)),o)return void this.fire(new a.ErrorEvent(o));const _={dataType:"source"};this._collectResourceTiming&&p&&p.length>0&&a.extend(_,{resourceTiming:p}),this.fire(new a.Event("data",{..._,sourceDataType:"metadata"})),this.fire(new a.Event("data",{..._,sourceDataType:"content"}))})}loaded(){return this._pendingLoads===0}loadTile(t,n){const o=t.actor?"reloadTile":"loadTile";t.actor=this.actor;const u={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(o,u,(p,_)=>(delete t.request,t.unloadVectorData(),t.aborted?n(null):p?n(p):(t.loadVectorData(_,this.map.painter,o==="reloadTile"),n(null))))}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0}unloadTile(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})}serialize(){return a.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var zr=a.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Ji extends a.Evented{constructor(t,n,o,u){super(),this.id=t,this.dispatcher=o,this.coordinates=n.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(u),this.options=n}load(t,n){this._loaded=!1,this.fire(new a.Event("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=Je.getImage(this.map._requestManager.transformRequest(this.url,Ae.Image),(o,u)=>{this._request=null,this._loaded=!0,o?this.fire(new a.ErrorEvent(o)):u&&(this.image=u,t&&(this.coordinates=t),n&&n(),this._finishLoading())})}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=t.url,this.load(t.coordinates,()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(t){this.coordinates=t;const n=t.map(a.MercatorCoordinate.fromLngLat);this.tileID=function(u){let p=1/0,_=1/0,x=-1/0,v=-1/0;for(const L of u)p=Math.min(p,L.x),_=Math.min(_,L.y),x=Math.max(x,L.x),v=Math.max(v,L.y);const w=Math.max(x-p,v-_),I=Math.max(0,Math.floor(-Math.log(w)/Math.LN2)),S=Math.pow(2,I);return new a.CanonicalTileID(I,Math.floor((p+x)/2*S),Math.floor((_+v)/2*S))}(n),this.minzoom=this.maxzoom=this.tileID.z;const o=n.map(u=>this.tileID.getTilePoint(u)._round());return this._boundsArray=new a.RasterBoundsArray,this._boundsArray.emplaceBack(o[0].x,o[0].y,0,0),this._boundsArray.emplaceBack(o[1].x,o[1].y,a.EXTENT,0),this._boundsArray.emplaceBack(o[3].x,o[3].y,0,a.EXTENT),this._boundsArray.emplaceBack(o[2].x,o[2].y,a.EXTENT,a.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.Event("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;const t=this.map.painter.context,n=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,zr.members)),this.boundsSegments||(this.boundsSegments=a.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new ht(t,this.image,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let o=!1;for(const u in this.tiles){const p=this.tiles[u];p.state!=="loaded"&&(p.state="loaded",p.texture=this.texture,o=!0)}o&&this.fire(new a.Event("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(t,n){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},n(null)):(t.state="errored",n(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class Dn extends Ji{constructor(t,n,o,u){super(t,n,o,u),this.roundZoom=!0,this.type="video",this.options=n}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const n of t.urls)this.urls.push(this.map._requestManager.transformRequest(n,Ae.Source).url);a.getVideo(this.urls,(n,o)=>{this._loaded=!0,n?this.fire(new a.ErrorEvent(n)):o&&(this.video=o,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){const n=this.video.seekable;tn.end(0)?this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${n.start(0)} and ${n.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const t=this.map.painter.context,n=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,zr.members)),this.boundsSegments||(this.boundsSegments=a.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),n.texSubImage2D(n.TEXTURE_2D,0,0,0,n.RGBA,n.UNSIGNED_BYTE,this.video)):(this.texture=new ht(t,this.video,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let o=!1;for(const u in this.tiles){const p=this.tiles[u];p.state!=="loaded"&&(p.state="loaded",p.texture=this.texture,o=!0)}o&&this.fire(new a.Event("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class de extends Ji{constructor(t,n,o,u){super(t,n,o,u),n.coordinates?Array.isArray(n.coordinates)&&n.coordinates.length===4&&!n.coordinates.some(p=>!Array.isArray(p)||p.length!==2||p.some(_=>typeof _!="number"))||this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${t}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),n.canvas?typeof n.canvas=="string"||n.canvas instanceof HTMLCanvasElement||this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${t}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.ErrorEvent(new a.ValidationError(`sources.${t}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const n=this.map.painter.context,o=n.gl;this.boundsBuffer||(this.boundsBuffer=n.createVertexBuffer(this._boundsArray,zr.members)),this.boundsSegments||(this.boundsSegments=a.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new ht(n,this.canvas,o.RGBA,{premultiply:!0});let u=!1;for(const p in this.tiles){const _=this.tiles[p];_.state!=="loaded"&&(_.state="loaded",_.texture=this.texture,u=!0)}u&&this.fire(new a.Event("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of[this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return!0;return!1}}const Wr={vector:Ln,raster:un,"raster-dem":Xr,geojson:Pr,video:Dn,image:Ji,canvas:de};function ns(l,t){const n=a.create();return a.translate(n,n,[1,1,0]),a.scale(n,n,[.5*l.width,.5*l.height,1]),a.multiply(n,n,l.calculatePosMatrix(t.toUnwrapped()))}function Tt(l,t,n,o,u,p){const _=function(S,L,$){if(S)for(const U of S){const V=L[U];if(V&&V.source===$&&V.type==="fill-extrusion")return!0}else for(const U in L){const V=L[U];if(V.source===$&&V.type==="fill-extrusion")return!0}return!1}(u&&u.layers,t,l.id),x=p.maxPitchScaleFactor(),v=l.tilesIn(o,x,_);v.sort(ft);const w=[];for(const S of v)w.push({wrappedTileID:S.tileID.wrapped().key,queryResults:S.tile.queryRenderedFeatures(t,n,l._state,S.queryGeometry,S.cameraQueryGeometry,S.scale,u,p,x,ns(l.transform,S.tileID))});const I=function(S){const L={},$={};for(const U of S){const V=U.queryResults,H=U.wrappedTileID,ee=$[H]=$[H]||{};for(const le in V){const G=V[le],oe=ee[le]=ee[le]||{},ue=L[le]=L[le]||[];for(const ye of G)oe[ye.featureIndex]||(oe[ye.featureIndex]=!0,ue.push(ye))}}return L}(w);for(const S in I)I[S].forEach(L=>{const $=L.feature,U=l.getFeatureState($.layer["source-layer"],$.id);$.source=$.layer.source,$.layer["source-layer"]&&($.sourceLayer=$.layer["source-layer"]),$.state=U});return I}function ft(l,t){const n=l.tileID,o=t.tileID;return n.overscaledZ-o.overscaledZ||n.canonical.y-o.canonical.y||n.wrap-o.wrap||n.canonical.x-o.canonical.x}class hn{constructor(t,n){this.timeAdded=0,this.fadeEndTime=0,this.tileID=t,this.uid=a.uniqueId(),this.uses=0,this.tileSize=n,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(t){const n=t+this.timeAdded;np.getLayer(w)).filter(Boolean);if(v.length!==0){x.layers=v,x.stateDependentLayerIds&&(x.stateDependentLayers=x.stateDependentLayerIds.map(w=>v.filter(I=>I.id===w)[0]));for(const w of v)_[w.id]=x}}return _}(t.buckets,n.style),this.hasSymbolBuckets=!1;for(const u in this.buckets){const p=this.buckets[u];if(p instanceof a.SymbolBucket){if(this.hasSymbolBuckets=!0,!o)break;p.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const u in this.buckets){const p=this.buckets[u];if(p instanceof a.SymbolBucket&&p.hasRTLText){this.hasRTLText=!0,a.lazyLoadRTLTextPlugin();break}}this.queryPadding=0;for(const u in this.buckets){const p=this.buckets[u];this.queryPadding=Math.max(this.queryPadding,n.style.getLayer(u).queryRadius(p))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new a.CollisionBoxArray}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(const o in this.buckets){const u=this.buckets[o];u.uploadPending()&&u.upload(t)}const n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new ht(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new ht(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,n,o,u,p,_,x,v,w,I){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:u,cameraQueryGeometry:p,scale:_,tileSize:this.tileSize,pixelPosMatrix:I,transform:v,params:x,queryPadding:this.queryPadding*w},t,n,o):{}}querySourceFeatures(t,n){const o=this.latestFeatureIndex;if(!o||!o.rawTileData)return;const u=o.loadVTLayers(),p=n&&n.sourceLayer?n.sourceLayer:"",_=u._geojsonTileLayer||u[p];if(!_)return;const x=a.createFilter(n&&n.filter),{z:v,x:w,y:I}=this.tileID.canonical,S={z:v,x:w,y:I};for(let L=0;L<_.length;L++){const $=_.feature(L);if(x.needGeometry){const H=a.toEvaluationFeature($,!0);if(!x.filter(new a.EvaluationParameters(this.tileID.overscaledZ),H,this.tileID.canonical))continue}else if(!x.filter(new a.EvaluationParameters(this.tileID.overscaledZ),$))continue;const U=o.getId($,p),V=new a.GeoJSONFeature($,v,w,I,U);V.tile=S,t.push(V)}}hasData(){return this.state==="loaded"||this.state==="reloading"||this.state==="expired"}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const n=this.expirationTime;if(t.cacheControl){const o=a.parseCacheControl(t.cacheControl);o["max-age"]&&(this.expirationTime=Date.now()+1e3*o["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const o=Date.now();let u=!1;if(this.expirationTime>o)u=!1;else if(n)if(this.expirationTime{this.remove(t,p)},o)),this.data[u].push(p),this.order.push(u),this.order.length>this.max){const _=this._getAndRemoveByKey(this.order[0]);_&&this.onRemove(_)}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const n=this.data[t].shift();return n.timeout&&clearTimeout(n.timeout),this.data[t].length===0&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),n.value}getByKey(t){const n=this.data[t];return n?n[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,n){if(!this.has(t))return this;const o=t.wrapped().key,u=n===void 0?0:this.data[o].indexOf(n),p=this.data[o][u];return this.data[o].splice(u,1),p.timeout&&clearTimeout(p.timeout),this.data[o].length===0&&delete this.data[o],this.onRemove(p.value),this.order.splice(this.order.indexOf(o),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n)}return this}filter(t){const n=[];for(const o in this.data)for(const u of this.data[o])t(u.value)||n.push(u);for(const o of n)this.remove(o.value.tileID,o)}}class Ds{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,n,o){const u=String(n);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][u]=this.stateChanges[t][u]||{},a.extend(this.stateChanges[t][u],o),this.deletedStates[t]===null){this.deletedStates[t]={};for(const p in this.state[t])p!==u&&(this.deletedStates[t][p]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][u]===null){this.deletedStates[t][u]={};for(const p in this.state[t][u])o[p]||(this.deletedStates[t][u][p]=null)}else for(const p in o)this.deletedStates[t]&&this.deletedStates[t][u]&&this.deletedStates[t][u][p]===null&&delete this.deletedStates[t][u][p]}removeFeatureState(t,n,o){if(this.deletedStates[t]===null)return;const u=String(n);if(this.deletedStates[t]=this.deletedStates[t]||{},o&&n!==void 0)this.deletedStates[t][u]!==null&&(this.deletedStates[t][u]=this.deletedStates[t][u]||{},this.deletedStates[t][u][o]=null);else if(n!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][u])for(o in this.deletedStates[t][u]={},this.stateChanges[t][u])this.deletedStates[t][u][o]=null;else this.deletedStates[t][u]=null;else this.deletedStates[t]=null}getState(t,n){const o=String(n),u=a.extend({},(this.state[t]||{})[o],(this.stateChanges[t]||{})[o]);if(this.deletedStates[t]===null)return{};if(this.deletedStates[t]){const p=this.deletedStates[t][n];if(p===null)return{};for(const _ in p)delete u[_]}return u}initializeTileState(t,n){t.setFeatureState(this.state,n)}coalesceChanges(t,n){const o={};for(const u in this.stateChanges){this.state[u]=this.state[u]||{};const p={};for(const _ in this.stateChanges[u])this.state[u][_]||(this.state[u][_]={}),a.extend(this.state[u][_],this.stateChanges[u][_]),p[_]=this.state[u][_];o[u]=p}for(const u in this.deletedStates){this.state[u]=this.state[u]||{};const p={};if(this.deletedStates[u]===null)for(const _ in this.state[u])p[_]={},this.state[u][_]={};else for(const _ in this.deletedStates[u]){if(this.deletedStates[u][_]===null)this.state[u][_]={};else for(const x of Object.keys(this.deletedStates[u][_]))delete this.state[u][_][x];p[_]=this.state[u][_]}o[u]=o[u]||{},a.extend(o[u],p)}if(this.stateChanges={},this.deletedStates={},Object.keys(o).length!==0)for(const u in t)t[u].setFeatureState(o,n)}}class Kt extends a.Evented{constructor(t,n,o){super(),this.id=t,this.dispatcher=o,this.on("data",u=>{u.dataType==="source"&&u.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&u.dataType==="source"&&u.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=function(u,p,_,x){const v=new Wr[p.type](u,p,_,x);if(v.id!==u)throw new Error(`Expected Source id to be ${u} instead of ${v.id}`);return a.bindAll(["load","abort","unload","serialize","prepare"],v),v}(t,n,o,this),this._tiles={},this._cache=new ss(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Ds,this._didEmitContent=!1,this._updated=!1}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t)}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(const t in this._tiles){const n=this._tiles[t];if(n.state!=="loaded"&&n.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(t,n){return this._source.loadTile(t,n)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,()=>{})}_abortTile(t){this._source.abortTile&&this._source.abortTile(t,()=>{}),this._source.fire(new a.Event("dataabort",{tile:t,coord:t.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const n in this._tiles){const o=this._tiles[n];o.upload(t),o.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(t=>t.tileID).sort(dn).map(t=>t.key)}getRenderableIds(t){const n=[];for(const o in this._tiles)this._isIdRenderable(o,t)&&n.push(this._tiles[o]);return t?n.sort((o,u)=>{const p=o.tileID,_=u.tileID,x=new a.Point(p.canonical.x,p.canonical.y)._rotate(this.transform.angle),v=new a.Point(_.canonical.x,_.canonical.y)._rotate(this.transform.angle);return p.overscaledZ-_.overscaledZ||v.y-x.y||v.x-x.x}).map(o=>o.tileID.key):n.map(o=>o.tileID).sort(dn).map(o=>o.key)}hasRenderableParent(t){const n=this.findLoadedParent(t,0);return!!n&&this._isIdRenderable(n.tileID.key)}_isIdRenderable(t,n){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(n||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const t in this._tiles)this._tiles[t].state!=="errored"&&this._reloadTile(t,"reloading")}}_reloadTile(t,n){const o=this._tiles[t];o&&(o.state!=="loading"&&(o.state=n),this._loadTile(o,this._tileLoaded.bind(this,o,t,n)))}_tileLoaded(t,n,o,u){if(u)return t.state="errored",void(u.status!==404?this._source.fire(new a.ErrorEvent(u,{tile:t})):this.update(this.transform,this.terrain));t.timeAdded=a.exported.now(),o==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(n,t),this.getSource().type==="raster-dem"&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new a.Event("data",{dataType:"source",tile:t,coord:t.tileID}))}_backfillDEM(t){const n=this.getRenderableIds();for(let u=0;u1||(Math.abs(_)>1&&(Math.abs(_+v)===1?_+=v:Math.abs(_-v)===1&&(_-=v)),p.dem&&u.dem&&(u.dem.backfillBorder(p.dem,_,x),u.neighboringTiles&&u.neighboringTiles[w]&&(u.neighboringTiles[w].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,n,o,u){for(const p in this._tiles){let _=this._tiles[p];if(u[p]||!_.hasData()||_.tileID.overscaledZ<=n||_.tileID.overscaledZ>o)continue;let x=_.tileID;for(;_&&_.tileID.overscaledZ>n+1;){const w=_.tileID.scaledTo(_.tileID.overscaledZ-1);_=this._tiles[w.key],_&&_.hasData()&&(x=w)}let v=x;for(;v.overscaledZ>n;)if(v=v.scaledTo(v.overscaledZ-1),t[v.key]){u[x.key]=x;break}}}findLoadedParent(t,n){if(t.key in this._loadedParentTiles){const o=this._loadedParentTiles[t.key];return o&&o.tileID.overscaledZ>=n?o:null}for(let o=t.overscaledZ-1;o>=n;o--){const u=t.scaledTo(o),p=this._getLoadedTile(u);if(p)return p}}_getLoadedTile(t){const n=this._tiles[t.key];return n&&n.hasData()?n:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){const n=Math.ceil(t.width/this._source.tileSize)+1,o=Math.ceil(t.height/this._source.tileSize)+1,u=Math.floor(n*o*(this._maxTileCacheZoomLevels===null?a.config.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),p=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,u):u;this._cache.setMaxSize(p)}handleWrapJump(t){const n=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);if(this._prevLng=t,n){const o={};for(const u in this._tiles){const p=this._tiles[u];p.tileID=p.tileID.unwrapTo(p.tileID.wrap+n),o[p.tileID.key]=p}this._tiles=o;for(const u in this._timers)clearTimeout(this._timers[u]),delete this._timers[u];for(const u in this._tiles)this._setTileReloadTimer(u,this._tiles[u])}}update(t,n){if(this.transform=t,this.terrain=n,!this._sourceLoaded||this._paused)return;let o;this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?o=t.getVisibleUnwrappedCoordinates(this._source.tileID).map(I=>new a.OverscaledTileID(I.canonical.z,I.wrap,I.canonical.z,I.canonical.x,I.canonical.y)):(o=t.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:n}),this._source.hasTile&&(o=o.filter(I=>this._source.hasTile(I)))):o=[];const u=t.coveringZoomLevel(this._source),p=Math.max(u-Kt.maxOverzooming,this._source.minzoom),_=Math.max(u+Kt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const I={};for(const S of o)if(S.canonical.z>this._source.minzoom){const L=S.scaledTo(S.canonical.z-1);I[L.key]=L;const $=S.scaledTo(Math.max(this._source.minzoom,Math.min(S.canonical.z,5)));I[$.key]=$}o=o.concat(Object.values(I))}const x=o.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,x&&this.fire(new a.Event("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const v=this._updateRetainedTiles(o,u);if(Bn(this._source.type)){const I={},S={},L=Object.keys(v),$=a.exported.now();for(const U of L){const V=v[U],H=this._tiles[U];if(!H||H.fadeEndTime!==0&&H.fadeEndTime<=$)continue;const ee=this.findLoadedParent(V,p);ee&&(this._addTile(ee.tileID),I[ee.tileID.key]=ee.tileID),S[U]=V}this._retainLoadedChildren(S,u,_,v);for(const U in I)v[U]||(this._coveredTiles[U]=!0,v[U]=I[U]);if(n){const U={},V={};for(const H of o)this._tiles[H.key].hasData()?U[H.key]=H:V[H.key]=H;for(const H in V){const ee=V[H].children(this._source.maxzoom);this._tiles[ee[0].key]&&this._tiles[ee[1].key]&&this._tiles[ee[2].key]&&this._tiles[ee[3].key]&&(U[ee[0].key]=v[ee[0].key]=ee[0],U[ee[1].key]=v[ee[1].key]=ee[1],U[ee[2].key]=v[ee[2].key]=ee[2],U[ee[3].key]=v[ee[3].key]=ee[3],delete V[H])}for(const H in V){const ee=this.findLoadedParent(V[H],this._source.minzoom);if(ee){U[ee.tileID.key]=v[ee.tileID.key]=ee.tileID;for(const le in U)U[le].isChildOf(ee.tileID)&&delete U[le]}}for(const H in this._tiles)U[H]||(this._coveredTiles[H]=!0)}}for(const I in v)this._tiles[I].clearFadeHold();const w=a.keysDifference(this._tiles,v);for(const I of w){const S=this._tiles[I];S.hasSymbolBuckets&&!S.holdingForFade()?S.setHoldDuration(this.map._fadeDuration):S.hasSymbolBuckets&&!S.symbolFadeFinished()||this._removeTile(I)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)}_updateRetainedTiles(t,n){const o={},u={},p=Math.max(n-Kt.maxOverzooming,this._source.minzoom),_=Math.max(n+Kt.maxUnderzooming,this._source.minzoom),x={};for(const v of t){const w=this._addTile(v);o[v.key]=v,w.hasData()||nthis._source.maxzoom){const S=v.children(this._source.maxzoom)[0],L=this.getTile(S);if(L&&L.hasData()){o[S.key]=S;continue}}else{const S=v.children(this._source.maxzoom);if(o[S[0].key]&&o[S[1].key]&&o[S[2].key]&&o[S[3].key])continue}let I=w.wasRequested();for(let S=v.overscaledZ-1;S>=p;--S){const L=v.scaledTo(S);if(u[L.key])break;if(u[L.key]=!0,w=this.getTile(L),!w&&I&&(w=this._addTile(L)),w){const $=w.hasData();if((I||$)&&(o[L.key]=L),I=w.wasRequested(),$)break}}}return o}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const n=[];let o,u=this._tiles[t].tileID;for(;u.overscaledZ>0;){if(u.key in this._loadedParentTiles){o=this._loadedParentTiles[u.key];break}n.push(u.key);const p=u.scaledTo(u.overscaledZ-1);if(o=this._getLoadedTile(p),o)break;u=p}for(const p of n)this._loadedParentTiles[p]=o}}_addTile(t){let n=this._tiles[t.key];if(n)return n;n=this._cache.getAndRemove(t),n&&(this._setTileReloadTimer(t.key,n),n.tileID=t,this._state.initializeTileState(n,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,n)));const o=n;return n||(n=new hn(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(n,this._tileLoaded.bind(this,n,t.key,n.state))),n.uses++,this._tiles[t.key]=n,o||this._source.fire(new a.Event("dataloading",{tile:n,coord:n.tileID,dataType:"source"})),n}_setTileReloadTimer(t,n){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const o=n.getExpiryTimeout();o&&(this._timers[t]=setTimeout(()=>{this._reloadTile(t,"expired"),delete this._timers[t]},o))}_removeTile(t){const n=this._tiles[t];n&&(n.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),n.uses>0||(n.hasData()&&n.state!=="reloading"?this._cache.add(n.tileID,n,n.getExpiryTimeout()):(n.aborted=!0,this._abortTile(n),this._unloadTile(n))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset()}tilesIn(t,n,o){const u=[],p=this.transform;if(!p)return u;const _=o?p.getCameraQueryGeometry(t):t,x=t.map(U=>p.pointCoordinate(U,this.terrain)),v=_.map(U=>p.pointCoordinate(U,this.terrain)),w=this.getIds();let I=1/0,S=1/0,L=-1/0,$=-1/0;for(const U of v)I=Math.min(I,U.x),S=Math.min(S,U.y),L=Math.max(L,U.x),$=Math.max($,U.y);for(let U=0;U=0&&G[1].y+le>=0){const oe=x.map(ye=>H.getTilePoint(ye)),ue=v.map(ye=>H.getTilePoint(ye));u.push({tile:V,tileID:H,queryGeometry:oe,cameraQueryGeometry:ue,scale:ee})}}return u}getVisibleCoordinates(t){const n=this.getRenderableIds(t).map(o=>this._tiles[o].tileID);for(const o of n)o.posMatrix=this.transform.calculatePosMatrix(o.toUnwrapped());return n}hasTransition(){if(this._source.hasTransition())return!0;if(Bn(this._source.type)){const t=a.exported.now();for(const n in this._tiles)if(this._tiles[n].fadeEndTime>=t)return!0}return!1}setFeatureState(t,n,o){this._state.updateState(t=t||"_geojsonTileLayer",n,o)}removeFeatureState(t,n,o){this._state.removeFeatureState(t=t||"_geojsonTileLayer",n,o)}getFeatureState(t,n){return this._state.getState(t=t||"_geojsonTileLayer",n)}setDependencies(t,n,o){const u=this._tiles[t];u&&u.setDependencies(n,o)}reloadTilesForDependencies(t,n){for(const o in this._tiles)this._tiles[o].hasDependency(t,n)&&this._reloadTile(o,"reloading");this._cache.filter(o=>!o.hasDependency(t,n))}}function dn(l,t){const n=Math.abs(2*l.wrap)-+(l.wrap<0),o=Math.abs(2*t.wrap)-+(t.wrap<0);return l.overscaledZ-t.overscaledZ||o-n||t.canonical.y-l.canonical.y||t.canonical.x-l.canonical.x}function Bn(l){return l==="raster"||l==="image"||l==="video"}Kt.maxOverzooming=10,Kt.maxUnderzooming=3;const pn="mapboxgl_preloaded_worker_pool";class Te{constructor(){this.active={}}acquire(t){if(!this.workers)for(this.workers=[];this.workers.length{n.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[pn]}numActive(){return Object.keys(this.active).length}}const mr=Math.floor(a.exported.hardwareConcurrency/2);let yi;function Rn(){return yi||(yi=new Te),yi}Te.workerCount=a.isSafari(globalThis)?Math.max(Math.min(mr,3),1):1;class Kr{constructor(t,n){this.reset(t,n)}reset(t,n){this.points=t||[],this._distances=[0];for(let o=1;o0?(u-_)/x:0;return this.points[p].mult(1-v).add(this.points[n].mult(v))}}function Ee(l,t){let n=!0;return l==="always"||l!=="never"&&t!=="never"||(n=!1),n}class ot{constructor(t,n,o){const u=this.boxCells=[],p=this.circleCells=[];this.xCellCount=Math.ceil(t/o),this.yCellCount=Math.ceil(n/o);for(let _=0;_this.width||u<0||n>this.height)return[];const v=[];if(t<=0&&n<=0&&this.width<=o&&this.height<=u){if(p)return[{key:null,x1:t,y1:n,x2:o,y2:u}];for(let w=0;w0}hitTestCircle(t,n,o,u,p){const _=t-o,x=t+o,v=n-o,w=n+o;if(x<0||_>this.width||w<0||v>this.height)return!1;const I=[];return this._forEachCell(_,v,x,w,this._queryCellCircle,I,{hitTest:!0,overlapMode:u,circle:{x:t,y:n,radius:o},seenUids:{box:{},circle:{}}},p),I.length>0}_queryCell(t,n,o,u,p,_,x,v){const{seenUids:w,hitTest:I,overlapMode:S}=x,L=this.boxCells[p];if(L!==null){const U=this.bboxes;for(const V of L)if(!w.box[V]){w.box[V]=!0;const H=4*V,ee=this.boxKeys[V];if(t<=U[H+2]&&n<=U[H+3]&&o>=U[H+0]&&u>=U[H+1]&&(!v||v(ee))&&(!I||!Ee(S,ee.overlapMode))&&(_.push({key:ee,x1:U[H],y1:U[H+1],x2:U[H+2],y2:U[H+3]}),I))return!0}}const $=this.circleCells[p];if($!==null){const U=this.circles;for(const V of $)if(!w.circle[V]){w.circle[V]=!0;const H=3*V,ee=this.circleKeys[V];if(this._circleAndRectCollide(U[H],U[H+1],U[H+2],t,n,o,u)&&(!v||v(ee))&&(!I||!Ee(S,ee.overlapMode))){const le=U[H],G=U[H+1],oe=U[H+2];if(_.push({key:ee,x1:le-oe,y1:G-oe,x2:le+oe,y2:G+oe}),I)return!0}}}return!1}_queryCellCircle(t,n,o,u,p,_,x,v){const{circle:w,seenUids:I,overlapMode:S}=x,L=this.boxCells[p];if(L!==null){const U=this.bboxes;for(const V of L)if(!I.box[V]){I.box[V]=!0;const H=4*V,ee=this.boxKeys[V];if(this._circleAndRectCollide(w.x,w.y,w.radius,U[H+0],U[H+1],U[H+2],U[H+3])&&(!v||v(ee))&&!Ee(S,ee.overlapMode))return _.push(!0),!0}}const $=this.circleCells[p];if($!==null){const U=this.circles;for(const V of $)if(!I.circle[V]){I.circle[V]=!0;const H=3*V,ee=this.circleKeys[V];if(this._circlesCollide(U[H],U[H+1],U[H+2],w.x,w.y,w.radius)&&(!v||v(ee))&&!Ee(S,ee.overlapMode))return _.push(!0),!0}}}_forEachCell(t,n,o,u,p,_,x,v){const w=this._convertToXCellCoord(t),I=this._convertToYCellCoord(n),S=this._convertToXCellCoord(o),L=this._convertToYCellCoord(u);for(let $=w;$<=S;$++)for(let U=I;U<=L;U++)if(p.call(this,t,n,o,u,this.xCellCount*U+$,_,x,v))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,n,o,u,p,_){const x=u-t,v=p-n,w=o+_;return w*w>x*x+v*v}_circleAndRectCollide(t,n,o,u,p,_,x){const v=(_-u)/2,w=Math.abs(t-(u+v));if(w>v+o)return!1;const I=(x-p)/2,S=Math.abs(n-(p+I));if(S>I+o)return!1;if(w<=v||S<=I)return!0;const L=w-v,$=S-I;return L*L+$*$<=o*o}}function nt(l,t,n,o,u){const p=a.create();return t?(a.scale(p,p,[1/u,1/u,1]),n||a.rotateZ(p,p,o.angle)):a.multiply(p,o.labelPlaneMatrix,l),p}function zi(l,t,n,o,u){if(t){const p=a.clone(l);return a.scale(p,p,[u,u,1]),n||a.rotateZ(p,p,-o.angle),p}return o.glCoordMatrix}function ni(l,t,n){let o;n?(o=[l.x,l.y,n(l.x,l.y),1],a.transformMat4(o,o,t)):(o=[l.x,l.y,0,1],X(o,o,t));const u=o[3];return{point:new a.Point(o[0]/u,o[1]/u),signedDistanceFromCamera:u}}function it(l,t){return .5+l/t*.5}function Lr(l,t){const n=l[0]/l[3],o=l[1]/l[3];return n>=-t[0]&&n<=t[0]&&o>=-t[1]&&o<=t[1]}function Dr(l,t,n,o,u,p,_,x,v,w){const I=o?l.textSizeData:l.iconSizeData,S=a.evaluateSizeForZoom(I,n.transform.zoom),L=[256/n.width*2+1,256/n.height*2+1],$=o?l.text.dynamicLayoutVertexArray:l.icon.dynamicLayoutVertexArray;$.clear();const U=l.lineVertexArray,V=o?l.text.placedSymbolArray:l.icon.placedSymbolArray,H=n.transform.width/n.transform.height;let ee=!1;for(let le=0;leMath.abs(n.x-t.x)*o?{useVertical:!0}:(l===a.WritingMode.vertical?t.yn.x)?{needsFlipping:!0}:null}function fi(l,t,n,o,u,p,_,x,v,w,I,S,L,$,U,V){const H=t/24,ee=l.lineOffsetX*H,le=l.lineOffsetY*H;let G;if(l.numGlyphs>1){const oe=l.glyphStartIndex+l.numGlyphs,ue=l.lineStartIndex,ye=l.lineStartIndex+l.lineLength,xe=or(H,x,ee,le,n,I,S,l,v,p,L,U,V);if(!xe)return{notEnoughRoom:!0};const we=ni(xe.first.point,_,V).point,ve=ni(xe.last.point,_,V).point;if(o&&!n){const Re=Br(l.writingMode,we,ve,$);if(Re)return Re}G=[xe.first];for(let Re=l.glyphStartIndex+1;Re0?we.point:kt(S,xe,ue,1,u,V),Re=Br(l.writingMode,ue,ve,$);if(Re)return Re}const oe=k(H*x.getoffsetX(l.glyphStartIndex),ee,le,n,I,S,l.segment,l.lineStartIndex,l.lineStartIndex+l.lineLength,v,p,L,U,V);if(!oe)return{notEnoughRoom:!0};G=[oe]}for(const oe of G)a.addDynamicAttributes(w,oe.point,oe.angle);return{}}function kt(l,t,n,o,u,p){const _=ni(l.add(l.sub(t)._unit()),u,p).point,x=n.sub(_);return n.add(x._mult(o/x.mag()))}function os(l,t){const{projectionCache:n,lineVertexArray:o,labelPlaneMatrix:u,tileAnchorPoint:p,distanceFromAnchor:_,getElevation:x,previousVertex:v,direction:w,absOffsetX:I}=t;if(n.projections[l])return n.projections[l];const S=new a.Point(o.getx(l),o.gety(l)),L=ni(S,u,x);if(L.signedDistanceFromCamera>0)return n.projections[l]=L.point,L.point;const $=l-w;return kt(_===0?p:new a.Point(o.getx($),o.gety($)),S,v,I-_+1,u,x)}function gr(l,t,n){return l._unit()._perp()._mult(t*n)}function j(l,t,n,o,u,p,_,x){const{projectionCache:v,direction:w}=x;if(v.offsets[l])return v.offsets[l];const I=n.add(t);if(l+w=u)return v.offsets[l]=I,I;const S=os(l+w,x),L=gr(S.sub(n),_,w),$=n.add(L),U=S.add(L);return v.offsets[l]=a.findLineIntersection(p,I,$,U)||I,v.offsets[l]}function k(l,t,n,o,u,p,_,x,v,w,I,S,L,$){const U=o?l-t:l+t;let V=U>0?1:-1,H=0;o&&(V*=-1,H=Math.PI),V<0&&(H+=Math.PI);let ee,le,G=V>0?x+_:x+_+1,oe=u,ue=u,ye=0,xe=0;const we=Math.abs(U),ve=[];let Re;for(;ye+xe<=we;){if(G+=V,G=v)return null;ye+=xe,ue=oe,le=ee;const Ie={projectionCache:S,lineVertexArray:w,labelPlaneMatrix:I,tileAnchorPoint:p,distanceFromAnchor:ye,getElevation:$,previousVertex:ue,direction:V,absOffsetX:we};if(oe=os(G,Ie),n===0)ve.push(ue),Re=oe.sub(ue);else{let Ye;const Fe=oe.sub(ue);Ye=Fe.mag()===0?gr(os(G+V,Ie).sub(oe),n,V):gr(Fe,n,V),le||(le=ue.add(Ye)),ee=j(G,Ye,oe,x,v,le,n,Ie),ve.push(le),Re=ee.sub(le)}xe=Re.mag()}const He=Re._mult((we-ye)/xe)._add(le||ue),rt=H+Math.atan2(oe.y-ue.y,oe.x-ue.x);return ve.push(He),{point:He,angle:L?rt:0,path:ve}}const P=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function O(l,t){for(let n=0;n=1;yt--)Fe.push(Ie.path[yt]);for(let yt=1;ytni(st,v,U));Fe=yt.some(st=>st.signedDistanceFromCamera<=0)?[]:yt.map(st=>st.point)}let Zt=[];if(Fe.length>0){const yt=Fe[0].clone(),st=Fe[0].clone();for(let Vt=1;Vt=Re.x&&st.x<=He.x&&yt.y>=Re.y&&st.y<=He.y?[Fe]:st.xHe.x||st.yHe.y?[]:a.clipLine([Fe],Re.x,Re.y,He.x,He.y)}for(const yt of Zt){rt.reset(yt,.25*ve);let st=0;st=rt.length<=.5*ve?1:Math.ceil(rt.paddedLength/_t)+1;for(let Vt=0;Vt=this.screenRightBoundary||uthis.screenBottomBoundary}isInsideGrid(t,n,o,u){return o>=0&&t=0&&no.collisionGroupID===n}}return this.collisionGroups[t]}}function tt(l,t,n,o,u){const{horizontalAlign:p,verticalAlign:_}=a.getAnchorAlignment(l),x=-(p-.5)*t,v=-(_-.5)*n,w=a.evaluateVariableOffset(l,o);return new a.Point(x+w[0]*u,v+w[1]*u)}function Ve(l,t,n,o,u,p){const{x1:_,x2:x,y1:v,y2:w,anchorPointX:I,anchorPointY:S}=l,L=new a.Point(t,n);return o&&L._rotate(u?p:-p),{x1:_+L.x,y1:v+L.y,x2:x+L.x,y2:w+L.y,anchorPointX:I,anchorPointY:S}}class Ze{constructor(t,n,o,u,p){this.transform=t.clone(),this.terrain=n,this.collisionIndex=new ie(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=o,this.retainedQueryData={},this.collisionGroups=new We(u),this.collisionCircleArrays={},this.prevPlacement=p,p&&(p.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,n,o,u){const p=o.getBucket(n),_=o.latestFeatureIndex;if(!p||!_||n.id!==p.layerIds[0])return;const x=o.collisionBoxArray,v=p.layers[0].layout,w=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),I=o.tileSize/a.EXTENT,S=this.transform.calculatePosMatrix(o.tileID.toUnwrapped()),L=v.get("text-pitch-alignment")==="map",$=v.get("text-rotation-alignment")==="map",U=Q(o,1,this.transform.zoom),V=nt(S,L,$,this.transform,U);let H=null;if(L){const le=zi(S,L,$,this.transform,U);H=a.multiply([],this.transform.labelPlaneMatrix,le)}this.retainedQueryData[p.bucketInstanceId]=new ge(p.bucketInstanceId,_,p.sourceLayerIndex,p.index,o.tileID);const ee={bucket:p,layout:v,posMatrix:S,textLabelPlaneMatrix:V,labelToScreenMatrix:H,scale:w,textPixelRatio:I,holdingForFade:o.holdingForFade(),collisionBoxArray:x,partiallyEvaluatedTextSize:a.evaluateSizeForZoom(p.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(p.sourceID)};if(u)for(const le of p.sortKeyRanges){const{sortKey:G,symbolInstanceStart:oe,symbolInstanceEnd:ue}=le;t.push({sortKey:G,symbolInstanceStart:oe,symbolInstanceEnd:ue,parameters:ee})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:p.symbolInstances.length,parameters:ee})}attemptAnchorPlacement(t,n,o,u,p,_,x,v,w,I,S,L,$,U,V,H){const ee=[L.textOffset0,L.textOffset1],le=tt(t,o,u,ee,p),G=this.collisionIndex.placeCollisionBox(Ve(n,le.x,le.y,_,x,this.transform.angle),S,v,w,I.predicate,H);if((!V||this.collisionIndex.placeCollisionBox(Ve(V,le.x,le.y,_,x,this.transform.angle),S,v,w,I.predicate,H).box.length!==0)&&G.box.length>0){let oe;if(this.prevPlacement&&this.prevPlacement.variableOffsets[L.crossTileID]&&this.prevPlacement.placements[L.crossTileID]&&this.prevPlacement.placements[L.crossTileID].text&&(oe=this.prevPlacement.variableOffsets[L.crossTileID].anchor),L.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[L.crossTileID]={textOffset:ee,width:o,height:u,anchor:t,textBoxScale:p,prevAnchor:oe},this.markUsedJustification($,t,L,U),$.allowVerticalPlacement&&(this.markUsedOrientation($,U,L),this.placedOrientations[L.crossTileID]=U),{shift:le,placedGlyphBoxes:G}}}placeLayerBucketPart(t,n,o){const{bucket:u,layout:p,posMatrix:_,textLabelPlaneMatrix:x,labelToScreenMatrix:v,textPixelRatio:w,holdingForFade:I,collisionBoxArray:S,partiallyEvaluatedTextSize:L,collisionGroup:$}=t.parameters,U=p.get("text-optional"),V=p.get("icon-optional"),H=a.getOverlapMode(p,"text-overlap","text-allow-overlap"),ee=H==="always",le=a.getOverlapMode(p,"icon-overlap","icon-allow-overlap"),G=le==="always",oe=p.get("text-rotation-alignment")==="map",ue=p.get("text-pitch-alignment")==="map",ye=p.get("icon-text-fit")!=="none",xe=p.get("symbol-z-order")==="viewport-y",we=ee&&(G||!u.hasIconData()||V),ve=G&&(ee||!u.hasTextData()||U);!u.collisionArrays&&S&&u.deserializeCollisionBoxes(S);const Re=this.retainedQueryData[u.bucketInstanceId].tileID,He=this.terrain?(Ie,Ye)=>this.terrain.getElevation(Re,Ie,Ye):null,rt=(Ie,Ye)=>{if(n[Ie.crossTileID])return;if(I)return void(this.placements[Ie.crossTileID]=new me(!1,!1,!1));let Fe=!1,_t=!1,Zt=!0,yt=null,st={box:null,offscreen:null},Vt={box:null,offscreen:null},Ai=null,Ht=null,li=null,$i=0,lr=0,cr=0;Ye.textFeatureIndex?$i=Ye.textFeatureIndex:Ie.useRuntimeCollisionCircles&&($i=Ie.featureIndex),Ye.verticalTextFeatureIndex&&(lr=Ye.verticalTextFeatureIndex);const Ci=Ye.textBox;if(Ci){const vi=vt=>{let si=a.WritingMode.horizontal;if(u.allowVerticalPlacement&&!vt&&this.prevPlacement){const ui=this.prevPlacement.placedOrientations[Ie.crossTileID];ui&&(this.placedOrientations[Ie.crossTileID]=ui,si=ui,this.markUsedOrientation(u,si,Ie))}return si},ci=(vt,si)=>{if(u.allowVerticalPlacement&&Ie.numVerticalGlyphVertices>0&&Ye.verticalTextBox){for(const ui of u.writingModes)if(ui===a.WritingMode.vertical?(st=si(),Vt=st):st=vt(),st&&st.box&&st.box.length)break}else st=vt()};if(p.get("text-variable-anchor")){let vt=p.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[Ie.crossTileID]){const bt=this.prevPlacement.variableOffsets[Ie.crossTileID];vt.indexOf(bt.anchor)>0&&(vt=vt.filter(oi=>oi!==bt.anchor),vt.unshift(bt.anchor))}const si=(bt,oi,qi)=>{const xo=bt.x2-bt.x1,Ur=bt.y2-bt.y1,Bc=Ie.textBoxScale,Pl=ye&&le==="never"?oi:null;let zt={box:[],offscreen:!1};const Ea=H!=="never"?2*vt.length:vt.length;for(let Ss=0;Ss=vt.length?H:"never",Ie,u,qi,Pl,He);if(Vr&&(zt=Vr.placedGlyphBoxes,zt&&zt.box&&zt.box.length)){Fe=!0,yt=Vr.shift;break}}return zt};ci(()=>si(Ci,Ye.iconBox,a.WritingMode.horizontal),()=>{const bt=Ye.verticalTextBox;return u.allowVerticalPlacement&&!(st&&st.box&&st.box.length)&&Ie.numVerticalGlyphVertices>0&&bt?si(bt,Ye.verticalIconBox,a.WritingMode.vertical):{box:null,offscreen:null}}),st&&(Fe=st.box,Zt=st.offscreen);const ui=vi(st&&st.box);if(!Fe&&this.prevPlacement){const bt=this.prevPlacement.variableOffsets[Ie.crossTileID];bt&&(this.variableOffsets[Ie.crossTileID]=bt,this.markUsedJustification(u,bt.anchor,Ie,ui))}}else{const vt=(si,ui)=>{const bt=this.collisionIndex.placeCollisionBox(si,H,w,_,$.predicate,He);return bt&&bt.box&&bt.box.length&&(this.markUsedOrientation(u,ui,Ie),this.placedOrientations[Ie.crossTileID]=ui),bt};ci(()=>vt(Ci,a.WritingMode.horizontal),()=>{const si=Ye.verticalTextBox;return u.allowVerticalPlacement&&Ie.numVerticalGlyphVertices>0&&si?vt(si,a.WritingMode.vertical):{box:null,offscreen:null}}),vi(st&&st.box&&st.box.length)}}if(Ai=st,Fe=Ai&&Ai.box&&Ai.box.length>0,Zt=Ai&&Ai.offscreen,Ie.useRuntimeCollisionCircles){const vi=u.text.placedSymbolArray.get(Ie.centerJustifiedTextSymbolIndex),ci=a.evaluateSizeForFeature(u.textSizeData,L,vi),vt=p.get("text-padding");Ht=this.collisionIndex.placeCollisionCircles(H,vi,u.lineVertexArray,u.glyphOffsetArray,ci,_,x,v,o,ue,$.predicate,Ie.collisionCircleDiameter,vt,He),Ht.circles.length&&Ht.collisionDetected&&!o&&a.warnOnce("Collisions detected, but collision boxes are not shown"),Fe=ee||Ht.circles.length>0&&!Ht.collisionDetected,Zt=Zt&&Ht.offscreen}if(Ye.iconFeatureIndex&&(cr=Ye.iconFeatureIndex),Ye.iconBox){const vi=ci=>{const vt=ye&&yt?Ve(ci,yt.x,yt.y,oe,ue,this.transform.angle):ci;return this.collisionIndex.placeCollisionBox(vt,le,w,_,$.predicate,He)};Vt&&Vt.box&&Vt.box.length&&Ye.verticalIconBox?(li=vi(Ye.verticalIconBox),_t=li.box.length>0):(li=vi(Ye.iconBox),_t=li.box.length>0),Zt=Zt&&li.offscreen}const Er=U||Ie.numHorizontalGlyphVertices===0&&Ie.numVerticalGlyphVertices===0,Ts=V||Ie.numIconVertices===0;if(Er||Ts?Ts?Er||(_t=_t&&Fe):Fe=_t&&Fe:_t=Fe=_t&&Fe,Fe&&Ai&&Ai.box&&this.collisionIndex.insertCollisionBox(Ai.box,H,p.get("text-ignore-placement"),u.bucketInstanceId,Vt&&Vt.box&&lr?lr:$i,$.ID),_t&&li&&this.collisionIndex.insertCollisionBox(li.box,le,p.get("icon-ignore-placement"),u.bucketInstanceId,cr,$.ID),Ht&&(Fe&&this.collisionIndex.insertCollisionCircles(Ht.circles,H,p.get("text-ignore-placement"),u.bucketInstanceId,$i,$.ID),o)){const vi=u.bucketInstanceId;let ci=this.collisionCircleArrays[vi];ci===void 0&&(ci=this.collisionCircleArrays[vi]=new _e);for(let vt=0;vt=0;--Ye){const Fe=Ie[Ye];rt(u.symbolInstances.get(Fe),u.collisionArrays[Fe])}}else for(let Ie=t.symbolInstanceStart;Ie=0&&(t.text.placedSymbolArray.get(x).crossTileID=p>=0&&x!==p?0:o.crossTileID)}markUsedOrientation(t,n,o){const u=n===a.WritingMode.horizontal||n===a.WritingMode.horizontalOnly?n:0,p=n===a.WritingMode.vertical?n:0,_=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const x of _)t.text.placedSymbolArray.get(x).placedOrientation=u;o.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=p)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const n=this.prevPlacement;let o=!1;this.prevZoomAdjustment=n?n.zoomAdjustment(this.transform.zoom):0;const u=n?n.symbolFadeChange(t):1,p=n?n.opacities:{},_=n?n.variableOffsets:{},x=n?n.placedOrientations:{};for(const v in this.placements){const w=this.placements[v],I=p[v];I?(this.opacities[v]=new ne(I,u,w.text,w.icon),o=o||w.text!==I.text.placed||w.icon!==I.icon.placed):(this.opacities[v]=new ne(null,u,w.text,w.icon,w.skipFade),o=o||w.text||w.icon)}for(const v in p){const w=p[v];if(!this.opacities[v]){const I=new ne(w,u,!1,!1);I.isHidden()||(this.opacities[v]=I,o=o||w.text.placed||w.icon.placed)}}for(const v in _)this.variableOffsets[v]||!this.opacities[v]||this.opacities[v].isHidden()||(this.variableOffsets[v]=_[v]);for(const v in x)this.placedOrientations[v]||!this.opacities[v]||this.opacities[v].isHidden()||(this.placedOrientations[v]=x[v]);if(n&&n.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");o?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=n?n.lastPlacementChangeTime:t)}updateLayerOpacities(t,n){const o={};for(const u of n){const p=u.getBucket(t);p&&u.latestFeatureIndex&&t.id===p.layerIds[0]&&this.updateBucketOpacities(p,o,u.collisionBoxArray)}}updateBucketOpacities(t,n,o){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const u=t.layers[0].layout,p=new ne(null,0,!1,!1,!0),_=u.get("text-allow-overlap"),x=u.get("icon-allow-overlap"),v=u.get("text-variable-anchor"),w=u.get("text-rotation-alignment")==="map",I=u.get("text-pitch-alignment")==="map",S=u.get("icon-text-fit")!=="none",L=new ne(null,0,_&&(x||!t.hasIconData()||u.get("icon-optional")),x&&(_||!t.hasTextData()||u.get("text-optional")),!0);!t.collisionArrays&&o&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(o);const $=(U,V,H)=>{for(let ee=0;ee0,ue=this.placedOrientations[V.crossTileID],ye=ue===a.WritingMode.vertical,xe=ue===a.WritingMode.horizontal||ue===a.WritingMode.horizontalOnly;if(H>0||ee>0){const we=Yr(G.text);$(t.text,H,ye?mi:we),$(t.text,ee,xe?mi:we);const ve=G.text.isHidden();[V.rightJustifiedTextSymbolIndex,V.centerJustifiedTextSymbolIndex,V.leftJustifiedTextSymbolIndex].forEach(rt=>{rt>=0&&(t.text.placedSymbolArray.get(rt).hidden=ve||ye?1:0)}),V.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(V.verticalPlacedTextSymbolIndex).hidden=ve||xe?1:0);const Re=this.variableOffsets[V.crossTileID];Re&&this.markUsedJustification(t,Re.anchor,V,ue);const He=this.placedOrientations[V.crossTileID];He&&(this.markUsedJustification(t,"left",V,He),this.markUsedOrientation(t,He,V))}if(oe){const we=Yr(G.icon),ve=!(S&&V.verticalPlacedIconSymbolIndex&&ye);V.placedIconSymbolIndex>=0&&($(t.icon,V.numIconVertices,ve?we:mi),t.icon.placedSymbolArray.get(V.placedIconSymbolIndex).hidden=G.icon.isHidden()),V.verticalPlacedIconSymbolIndex>=0&&($(t.icon,V.numVerticalIconVertices,ve?mi:we),t.icon.placedSymbolArray.get(V.verticalPlacedIconSymbolIndex).hidden=G.icon.isHidden())}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const we=t.collisionArrays[U];if(we){let ve=new a.Point(0,0);if(we.textBox||we.verticalTextBox){let He=!0;if(v){const rt=this.variableOffsets[le];rt?(ve=tt(rt.anchor,rt.width,rt.height,rt.textOffset,rt.textBoxScale),w&&ve._rotate(I?this.transform.angle:-this.transform.angle)):He=!1}we.textBox&&et(t.textCollisionBox.collisionVertexArray,G.text.placed,!He||ye,ve.x,ve.y),we.verticalTextBox&&et(t.textCollisionBox.collisionVertexArray,G.text.placed,!He||xe,ve.x,ve.y)}const Re=!!(!xe&&we.verticalIconBox);we.iconBox&&et(t.iconCollisionBox.collisionVertexArray,G.icon.placed,Re,S?ve.x:0,S?ve.y:0),we.verticalIconBox&&et(t.iconCollisionBox.collisionVertexArray,G.icon.placed,!Re,S?ve.x:0,S?ve.y:0)}}}if(t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);if(t.bucketInstanceId in this.collisionCircleArrays){const U=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=U.invProjMatrix,t.placementViewportMatrix=U.viewportMatrix,t.collisionCircleArray=U.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return this.fadeDuration===0?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTimet}setStale(){this.stale=!0}}function et(l,t,n,o,u){l.emplaceBack(t?1:0,n?1:0,o||0,u||0),l.emplaceBack(t?1:0,n?1:0,o||0,u||0),l.emplaceBack(t?1:0,n?1:0,o||0,u||0),l.emplaceBack(t?1:0,n?1:0,o||0,u||0)}const dt=Math.pow(2,25),at=Math.pow(2,24),mt=Math.pow(2,17),St=Math.pow(2,16),Yt=Math.pow(2,9),Qe=Math.pow(2,8),Ot=Math.pow(2,1);function Yr(l){if(l.opacity===0&&!l.placed)return 0;if(l.opacity===1&&l.placed)return 4294967295;const t=l.placed?1:0,n=Math.floor(127*l.opacity);return n*dt+t*at+n*mt+t*St+n*Yt+t*Qe+n*Ot+t}const mi=0;class Ui{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,n,o,u,p){const _=this._bucketParts;for(;this._currentTileIndexx.sortKey-v.sortKey));this._currentPartIndex<_.length;)if(n.placeLayerBucketPart(_[this._currentPartIndex],this._seenCrossTileIDs,o),this._currentPartIndex++,p())return!0;return!1}}class Qi{constructor(t,n,o,u,p,_,x,v){this.placement=new Ze(t,n,_,x,v),this._currentPlacementIndex=o.length-1,this._forceFullPlacement=u,this._showCollisionBoxes=p,this._done=!1}isDone(){return this._done}continuePlacement(t,n,o){const u=a.exported.now(),p=()=>!this._forceFullPlacement&&a.exported.now()-u>2;for(;this._currentPlacementIndex>=0;){const _=n[t[this._currentPlacementIndex]],x=this.placement.collisionIndex.transform.zoom;if(_.type==="symbol"&&(!_.minzoom||_.minzoom<=x)&&(!_.maxzoom||_.maxzoom>x)){if(this._inProgressLayer||(this._inProgressLayer=new Ui(_)),this._inProgressLayer.continuePlacement(o[_.source],this.placement,this._showCollisionBoxes,_,p))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}const Fn=512/a.EXTENT/2;class Bs{constructor(t,n,o){this.tileID=t,this.bucketInstanceId=o,this._symbolsByKey={};const u=new Map;for(let p=0;p({x:Math.floor(v.anchorX*Fn),y:Math.floor(v.anchorY*Fn)})),crossTileIDs:_.map(v=>v.crossTileID)};if(x.positions.length>128){const v=new a.KDBush(x.positions.length,16,Uint16Array);for(const{x:w,y:I}of x.positions)v.add(w,I);v.finish(),delete x.positions,x.index=v}this._symbolsByKey[p]=x}}getScaledCoordinates(t,n){const{x:o,y:u,z:p}=this.tileID.canonical,{x:_,y:x,z:v}=n.canonical,w=Fn/Math.pow(2,v-p),I=(x*a.EXTENT+t.anchorY)*w,S=u*a.EXTENT*Fn;return{x:Math.floor((_*a.EXTENT+t.anchorX)*w-o*a.EXTENT*Fn),y:Math.floor(I-S)}}findMatches(t,n,o){const u=this.tileID.canonical.zt)}}class Jt{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class as{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){const n=Math.round((t-this.lng)/360);if(n!==0)for(const o in this.indexes){const u=this.indexes[o],p={};for(const _ in u){const x=u[_];x.tileID=x.tileID.unwrapTo(x.tileID.wrap+n),p[x.tileID.key]=x}this.indexes[o]=p}this.lng=t}addBucket(t,n,o){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===n.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let p=0;pt.overscaledZ)for(const x in _){const v=_[x];v.tileID.isChildOf(t)&&v.findMatches(n.symbolInstances,t,u)}else{const x=_[t.scaledTo(Number(p)).key];x&&x.findMatches(n.symbolInstances,t,u)}}for(let p=0;p{n[o]=!0});for(const o in this.layerIndexes)n[o]||delete this.layerIndexes[o]}}const jt=(l,t)=>a.emitValidationErrors(l,t&&t.filter(n=>n.identifier!=="source.canvas")),Rs=a.pick(a.operations,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setGlyphs","setSprite"]),ar=a.pick(a.operations,["setCenter","setZoom","setBearing","setPitch"]),Wa=a.emptyStyle();class gi extends a.Evented{constructor(t,n={}){super(),this.map=t,this.dispatcher=new Ii(Rn(),this,t._getMapId()),this.imageManager=new _i,this.imageManager.setEventedParent(this),this.glyphManager=new Mr(t._requestManager,n.localIdeographFontFamily),this.lineAtlas=new Hr(256,512),this.crossTileSymbolIndex=new Jr,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",a.getReferrer());const o=this;this._rtlTextPluginCallback=gi.registerForPluginStateChange(u=>{o.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:u.pluginStatus,pluginURL:u.pluginURL},(p,_)=>{if(a.triggerPluginCompletionEvent(p),_&&_.every(x=>x))for(const x in o.sourceCaches){const v=o.sourceCaches[x].getSource().type;v!=="vector"&&v!=="geojson"||o.sourceCaches[x].reload()}})}),this.on("data",u=>{if(u.dataType!=="source"||u.sourceDataType!=="metadata")return;const p=this.sourceCaches[u.sourceId];if(!p)return;const _=p.getSource();if(_&&_.vectorLayerIds)for(const x in this._layers){const v=this._layers[x];v.source===_.id&&this._validateLayer(v)}})}loadURL(t,n={},o){this.fire(new a.Event("dataloading",{dataType:"style"})),n.validate=typeof n.validate!="boolean"||n.validate;const u=this.map._requestManager.transformRequest(t,Ae.Style);this._request=a.getJSON(u,(p,_)=>{this._request=null,p?this.fire(new a.ErrorEvent(p)):_&&this._load(_,n,o)})}loadJSON(t,n={},o){this.fire(new a.Event("dataloading",{dataType:"style"})),this._request=a.exported.frame(()=>{this._request=null,n.validate=n.validate!==!1,this._load(t,n,o)})}loadEmpty(){this.fire(new a.Event("dataloading",{dataType:"style"})),this._load(Wa,{validate:!1})}_load(t,n,o){const u=n.transformStyle?n.transformStyle(o,t):t;if(!n.validate||!jt(this,a.validateStyle(u))){this._loaded=!0,this.stylesheet=u;for(const p in u.sources)this.addSource(p,u.sources[p],{validate:!1});u.sprite?this._loadSprite(u.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(u.glyphs),this._createLayers(),this.light=new rs(this.stylesheet.light),this.map.setTerrain(this.stylesheet.terrain),this.fire(new a.Event("data",{dataType:"style"})),this.fire(new a.Event("style.load"))}}_createLayers(){const t=a.derefLayers(this.stylesheet.layers);this.dispatcher.broadcast("setLayers",t),this._order=t.map(n=>n.id),this._layers={},this._serializedLayers=null;for(const n of t){const o=a.createStyleLayer(n);o.setEventedParent(this,{layer:{id:n.id}}),this._layers[n.id]=o}}_loadSprite(t,n=!1,o=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(u,p,_,x){const v=qt(u),w=v.length,I=_>1?"@2x":"",S={},L={},$={};for(const{id:U,url:V}of v){const H=p.transformRequest(p.normalizeSpriteURL(V,I,".json"),Ae.SpriteJSON),ee=`${U}_${H.url}`;S[ee]=a.getJSON(H,(oe,ue)=>{delete S[ee],L[U]=ue,Dt(x,L,$,oe,w)});const le=p.transformRequest(p.normalizeSpriteURL(V,I,".png"),Ae.SpriteImage),G=`${U}_${le.url}`;S[G]=Je.getImage(le,(oe,ue)=>{delete S[G],$[U]=ue,Dt(x,L,$,oe,w)})}return{cancel(){for(const U of Object.values(S))U.cancel()}}}(t,this.map._requestManager,this.map.getPixelRatio(),(u,p)=>{if(this._spriteRequest=null,u)this.fire(new a.ErrorEvent(u));else if(p)for(const _ in p){this._spritesImagesIds[_]=[];const x=this._spritesImagesIds[_]?this._spritesImagesIds[_].filter(v=>!(v in p)):[];for(const v of x)this.imageManager.removeImage(v),this._changedImages[v]=!0;for(const v in p[_]){const w=_==="default"?v:`${_}:${v}`;this._spritesImagesIds[_].push(w),w in this.imageManager.images?this.imageManager.updateImage(w,p[_][v],!1):this.imageManager.addImage(w,p[_][v]),n&&(this._changedImages[w]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),n&&(this._changed=!0),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new a.Event("data",{dataType:"style"})),o&&o(u)})}_unloadSprite(){for(const t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new a.Event("data",{dataType:"style"}))}_validateLayer(t){const n=this.sourceCaches[t.source];if(!n)return;const o=t.sourceLayer;if(!o)return;const u=n.getSource();(u.type==="geojson"||u.vectorLayerIds&&u.vectorLayerIds.indexOf(o)===-1)&&this.fire(new a.ErrorEvent(new Error(`Source layer "${o}" does not exist on source "${u.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(t){const n=this._serializedAllLayers();if(!t||t.length===0)return Object.values(n);const o=[];for(const u of t)n[u]&&o.push(n[u]);return o}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const n=Object.keys(this._layers);for(const o of n){const u=this._layers[o];u.type!=="custom"&&(t[o]=u.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(const t in this._layers)if(this._layers[t].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(t){if(!this._loaded)return;const n=this._changed;if(this._changed){const u=Object.keys(this._updatedLayers),p=Object.keys(this._removedLayers);(u.length||p.length)&&this._updateWorkerLayers(u,p);for(const _ in this._updatedSources){const x=this._updatedSources[_];if(x==="reload")this._reloadSource(_);else{if(x!=="clear")throw new Error(`Invalid action ${x}`);this._clearSource(_)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const _ in this._updatedPaintProps)this._layers[_].updateTransitions(t);this.light.updateTransitions(t),this._resetUpdates()}const o={};for(const u in this.sourceCaches){const p=this.sourceCaches[u];o[u]=p.used,p.used=!1}for(const u of this._order){const p=this._layers[u];p.recalculate(t,this._availableImages),!p.isHidden(t.zoom)&&p.source&&(this.sourceCaches[p.source].used=!0)}for(const u in o){const p=this.sourceCaches[u];o[u]!==p.used&&p.fire(new a.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:u}))}this.light.recalculate(t),this.z=t.zoom,n&&this.fire(new a.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const n in this.sourceCaches)this.sourceCaches[n].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,n){this.dispatcher.broadcast("updateLayers",{layers:this._serializeByIds(t),removedIds:n})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,n={}){this._checkLoaded();const o=this.serialize();if(t=n.transformStyle?n.transformStyle(o,t):t,jt(this,a.validateStyle(t)))return!1;(t=a.clone$1(t)).layers=a.derefLayers(t.layers);const u=a.diffStyles(o,t).filter(_=>!(_.command in ar));if(u.length===0)return!1;const p=u.filter(_=>!(_.command in Rs));if(p.length>0)throw new Error(`Unimplemented: ${p.map(_=>_.command).join(", ")}.`);for(const _ of u)_.command!=="setTransition"&&this[_.command].apply(this,_.args);return this.stylesheet=t,!0}addImage(t,n){if(this.getImage(t))return this.fire(new a.ErrorEvent(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,n),this._afterImageUpdated(t)}updateImage(t,n){this.imageManager.updateImage(t,n)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new a.ErrorEvent(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new a.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,n,o={}){if(this._checkLoaded(),this.sourceCaches[t]!==void 0)throw new Error(`Source "${t}" already exists.`);if(!n.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(n).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(n.type)>=0&&this._validate(a.validateStyle.source,`sources.${t}`,n,null,o))return;this.map&&this.map._collectResourceTiming&&(n.collectResourceTiming=!0);const u=this.sourceCaches[t]=new Kt(t,n,this.dispatcher);u.style=this,u.setEventedParent(this,()=>({isSourceLoaded:u.loaded(),source:u.serialize(),sourceId:t})),u.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error("There is no source with this ID");for(const o in this._layers)if(this._layers[o].source===t)return this.fire(new a.ErrorEvent(new Error(`Source "${t}" cannot be removed while layer "${o}" is using it.`)));const n=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],n.fire(new a.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),n.setEventedParent(null),n.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,n){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error(`There is no source with this ID=${t}`);const o=this.sourceCaches[t].getSource();if(o.type!=="geojson")throw new Error(`geojsonSource.type is ${o.type}, which is !== 'geojson`);o.setData(n),this._changed=!0}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(t,n,o={}){this._checkLoaded();const u=t.id;if(this.getLayer(u))return void this.fire(new a.ErrorEvent(new Error(`Layer "${u}" already exists on this map.`)));let p;if(t.type==="custom"){if(jt(this,a.validateCustomStyleLayer(t)))return;p=a.createStyleLayer(t)}else{if(typeof t.source=="object"&&(this.addSource(u,t.source),t=a.clone$1(t),t=a.extend(t,{source:u})),this._validate(a.validateStyle.layer,`layers.${u}`,t,{arrayIndex:-1},o))return;p=a.createStyleLayer(t),this._validateLayer(p),p.setEventedParent(this,{layer:{id:u}})}const _=n?this._order.indexOf(n):this._order.length;if(n&&_===-1)this.fire(new a.ErrorEvent(new Error(`Cannot add layer "${u}" before non-existing layer "${n}".`)));else{if(this._order.splice(_,0,u),this._layerOrderChanged=!0,this._layers[u]=p,this._removedLayers[u]&&p.source&&p.type!=="custom"){const x=this._removedLayers[u];delete this._removedLayers[u],x.type!==p.type?this._updatedSources[p.source]="clear":(this._updatedSources[p.source]="reload",this.sourceCaches[p.source].pause())}this._updateLayer(p),p.onAdd&&p.onAdd(this.map)}}moveLayer(t,n){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new a.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===n)return;const o=this._order.indexOf(t);this._order.splice(o,1);const u=n?this._order.indexOf(n):this._order.length;n&&u===-1?this.fire(new a.ErrorEvent(new Error(`Cannot move layer "${t}" before non-existing layer "${n}".`))):(this._order.splice(u,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();const n=this._layers[t];if(!n)return void this.fire(new a.ErrorEvent(new Error(`Cannot remove non-existing layer "${t}".`)));n.setEventedParent(null);const o=this._order.indexOf(t);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=n,delete this._layers[t],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],n.onRemove&&n.onRemove(this.map)}getLayer(t){return this._layers[t]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,n,o){this._checkLoaded();const u=this.getLayer(t);u?u.minzoom===n&&u.maxzoom===o||(n!=null&&(u.minzoom=n),o!=null&&(u.maxzoom=o),this._updateLayer(u)):this.fire(new a.ErrorEvent(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,n,o={}){this._checkLoaded();const u=this.getLayer(t);if(u){if(!a.deepEqual(u.filter,n))return n==null?(u.filter=void 0,void this._updateLayer(u)):void(this._validate(a.validateStyle.filter,`layers.${u.id}.filter`,n,null,o)||(u.filter=a.clone$1(n),this._updateLayer(u)))}else this.fire(new a.ErrorEvent(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return a.clone$1(this.getLayer(t).filter)}setLayoutProperty(t,n,o,u={}){this._checkLoaded();const p=this.getLayer(t);p?a.deepEqual(p.getLayoutProperty(n),o)||(p.setLayoutProperty(n,o,u),this._updateLayer(p)):this.fire(new a.ErrorEvent(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,n){const o=this.getLayer(t);if(o)return o.getLayoutProperty(n);this.fire(new a.ErrorEvent(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,n,o,u={}){this._checkLoaded();const p=this.getLayer(t);p?a.deepEqual(p.getPaintProperty(n),o)||(p.setPaintProperty(n,o,u)&&this._updateLayer(p),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new a.ErrorEvent(new Error(`Cannot style non-existing layer "${t}".`)))}getPaintProperty(t,n){return this.getLayer(t).getPaintProperty(n)}setFeatureState(t,n){this._checkLoaded();const o=t.source,u=t.sourceLayer,p=this.sourceCaches[o];if(p===void 0)return void this.fire(new a.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const _=p.getSource().type;_==="geojson"&&u?this.fire(new a.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):_!=="vector"||u?(t.id===void 0&&this.fire(new a.ErrorEvent(new Error("The feature id parameter must be provided."))),p.setFeatureState(u,t.id,n)):this.fire(new a.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,n){this._checkLoaded();const o=t.source,u=this.sourceCaches[o];if(u===void 0)return void this.fire(new a.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const p=u.getSource().type,_=p==="vector"?t.sourceLayer:void 0;p!=="vector"||_?n&&typeof t.id!="string"&&typeof t.id!="number"?this.fire(new a.ErrorEvent(new Error("A feature id is required to remove its specific state property."))):u.removeFeatureState(_,t.id,n):this.fire(new a.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();const n=t.source,o=t.sourceLayer,u=this.sourceCaches[n];if(u!==void 0)return u.getSource().type!=="vector"||o?(t.id===void 0&&this.fire(new a.ErrorEvent(new Error("The feature id parameter must be provided."))),u.getFeatureState(o,t.id)):void this.fire(new a.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.ErrorEvent(new Error(`The source '${n}' does not exist in the map's style.`)))}getTransition(){return a.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t=a.mapObject(this.sourceCaches,u=>u.serialize()),n=this._serializeByIds(this._order),o=this.stylesheet;return a.filterObject({version:o.version,name:o.name,metadata:o.metadata,light:o.light,center:o.center,zoom:o.zoom,bearing:o.bearing,pitch:o.pitch,sprite:o.sprite,glyphs:o.glyphs,transition:o.transition,sources:t,layers:n},u=>u!==void 0)}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.sourceCaches[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){const n=_=>this._layers[_].type==="fill-extrusion",o={},u=[];for(let _=this._order.length-1;_>=0;_--){const x=this._order[_];if(n(x)){o[x]=_;for(const v of t){const w=v[x];if(w)for(const I of w)u.push(I)}}}u.sort((_,x)=>x.intersectionZ-_.intersectionZ);const p=[];for(let _=this._order.length-1;_>=0;_--){const x=this._order[_];if(n(x))for(let v=u.length-1;v>=0;v--){const w=u[v].feature;if(o[w.layer.id]<_)break;p.push(w),u.pop()}else for(const v of t){const w=v[x];if(w)for(const I of w)p.push(I.feature)}}return p}queryRenderedFeatures(t,n,o){n&&n.filter&&this._validate(a.validateStyle.filter,"queryRenderedFeatures.filter",n.filter,null,n);const u={};if(n&&n.layers){if(!Array.isArray(n.layers))return this.fire(new a.ErrorEvent(new Error("parameters.layers must be an Array."))),[];for(const x of n.layers){const v=this._layers[x];if(!v)return this.fire(new a.ErrorEvent(new Error(`The layer '${x}' does not exist in the map's style and cannot be queried for features.`))),[];u[v.source]=!0}}const p=[];n.availableImages=this._availableImages;const _=this._serializedAllLayers();for(const x in this.sourceCaches)n.layers&&!u[x]||p.push(Tt(this.sourceCaches[x],this._layers,_,t,n,o));return this.placement&&p.push(function(x,v,w,I,S,L,$){const U={},V=L.queryRenderedSymbols(I),H=[];for(const ee of Object.keys(V).map(Number))H.push($[ee]);H.sort(ft);for(const ee of H){const le=ee.featureIndex.lookupSymbolFeatures(V[ee.bucketInstanceId],v,ee.bucketIndex,ee.sourceLayerIndex,S.filter,S.layers,S.availableImages,x);for(const G in le){const oe=U[G]=U[G]||[],ue=le[G];ue.sort((ye,xe)=>{const we=ee.featureSortOrder;if(we){const ve=we.indexOf(ye.featureIndex);return we.indexOf(xe.featureIndex)-ve}return xe.featureIndex-ye.featureIndex});for(const ye of ue)oe.push(ye)}}for(const ee in U)U[ee].forEach(le=>{const G=le.feature,oe=w[x[ee].source].getFeatureState(G.layer["source-layer"],G.id);G.source=G.layer.source,G.layer["source-layer"]&&(G.sourceLayer=G.layer["source-layer"]),G.state=oe});return U}(this._layers,_,this.sourceCaches,t,n,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(p)}querySourceFeatures(t,n){n&&n.filter&&this._validate(a.validateStyle.filter,"querySourceFeatures.filter",n.filter,null,n);const o=this.sourceCaches[t];return o?function(u,p){const _=u.getRenderableIds().map(w=>u.getTileByID(w)),x=[],v={};for(let w=0;w<_.length;w++){const I=_[w],S=I.tileID.canonical.key;v[S]||(v[S]=!0,I.querySourceFeatures(x,p))}return x}(o,n):[]}addSourceType(t,n,o){return gi.getSourceType(t)?o(new Error(`A source type called "${t}" already exists.`)):(gi.setSourceType(t,n),n.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:n.workerSourceURL},o):o(null,null))}getLight(){return this.light.getLight()}setLight(t,n={}){this._checkLoaded();const o=this.light.getLight();let u=!1;for(const _ in t)if(!a.deepEqual(t[_],o[_])){u=!0;break}if(!u)return;const p={now:a.exported.now(),transition:a.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,n),this.light.updateTransitions(p)}_validate(t,n,o,u,p={}){return(!p||p.validate!==!1)&&jt(this,t.call(a.validateStyle,a.extend({key:n,style:this.serialize(),value:o,styleSpec:a.v8Spec},u)))}_remove(t=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),a.evented.off("pluginStateChange",this._rtlTextPluginCallback);for(const n in this._layers)this._layers[n].setEventedParent(null);for(const n in this.sourceCaches){const o=this.sourceCaches[n];o.setEventedParent(null),o.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(t)}_clearSource(t){this.sourceCaches[t].clearTiles()}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()}_updateSources(t){for(const n in this.sourceCaches)this.sourceCaches[n].update(t,this.map.terrain)}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t)}_updatePlacement(t,n,o,u,p=!1){let _=!1,x=!1;const v={};for(const w of this._order){const I=this._layers[w];if(I.type!=="symbol")continue;if(!v[I.source]){const L=this.sourceCaches[I.source];v[I.source]=L.getRenderableIds(!0).map($=>L.getTileByID($)).sort(($,U)=>U.tileID.overscaledZ-$.tileID.overscaledZ||($.tileID.isLessThan(U.tileID)?-1:1))}const S=this.crossTileSymbolIndex.addLayer(I,v[I.source],t.center.lng);_=_||S}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((p=p||this._layerOrderChanged||o===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(a.exported.now(),t.zoom))&&(this.pauseablePlacement=new Qi(t,this.map.terrain,this._order,p,n,o,u,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,v),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(a.exported.now()),x=!0),_&&this.pauseablePlacement.placement.setStale()),x||_)for(const w of this._order){const I=this._layers[w];I.type==="symbol"&&this.placement.updateLayerOpacities(I,v[I.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(a.exported.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()}getImages(t,n,o){this.imageManager.getImages(n.icons,o),this._updateTilesForChangedImages();const u=this.sourceCaches[n.source];u&&u.setDependencies(n.tileID.key,n.type,n.icons)}getGlyphs(t,n,o){this.glyphManager.getGlyphs(n.stacks,o);const u=this.sourceCaches[n.source];u&&u.setDependencies(n.tileID.key,n.type,[""])}getResource(t,n,o){return a.makeRequest(n,o)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,n={}){this._checkLoaded(),t&&this._validate(a.validateStyle.glyphs,"glyphs",t,null,n)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}addSprite(t,n,o={},u){this._checkLoaded();const p=[{id:t,url:n}],_=[...qt(this.stylesheet.sprite),...p];this._validate(a.validateStyle.sprite,"sprite",_,null,o)||(this.stylesheet.sprite=_,this._loadSprite(p,!0,u))}removeSprite(t){this._checkLoaded();const n=qt(this.stylesheet.sprite);if(n.find(o=>o.id===t)){if(this._spritesImagesIds[t])for(const o of this._spritesImagesIds[t])this.imageManager.removeImage(o),this._changedImages[o]=!0;n.splice(n.findIndex(o=>o.id===t),1),this.stylesheet.sprite=n.length>0?n:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new a.Event("data",{dataType:"style"}))}else this.fire(new a.ErrorEvent(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return qt(this.stylesheet.sprite)}setSprite(t,n={},o){this._checkLoaded(),t&&this._validate(a.validateStyle.sprite,"sprite",t,null,n)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,o):(this._unloadSprite(),o&&o(null)))}}gi.getSourceType=function(l){return Wr[l]},gi.setSourceType=function(l,t){Wr[l]=t},gi.registerForPluginStateChange=a.registerForPluginStateChange;var No=a.createLayout([{name:"a_pos",type:"Int16",components:2}]),Fs="attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}";const Qr={prelude:xt(`#ifdef GL_ES precision mediump float; #else @@ -580,4 +580,4 @@ uniform ${I} ${S} u_${L}; `),oe=v.createShader(v.FRAGMENT_SHADER);if(v.isContextLost())return void(this.failedToCreate=!0);v.shaderSource(oe,le),v.compileShader(oe),v.attachShader(this.program,oe);const ue=v.createShader(v.VERTEX_SHADER);if(v.isContextLost())return void(this.failedToCreate=!0);v.shaderSource(ue,G),v.compileShader(ue),v.attachShader(this.program,ue),this.attributes={};const ye={};this.numAttributes=S.length;for(let xe=0;xe({u_depth:new a.Uniform1i(xe,we.u_depth),u_terrain:new a.Uniform1i(xe,we.u_terrain),u_terrain_dim:new a.Uniform1f(xe,we.u_terrain_dim),u_terrain_matrix:new a.UniformMatrix4f(xe,we.u_terrain_matrix),u_terrain_unpack:new a.Uniform4f(xe,we.u_terrain_unpack),u_terrain_exaggeration:new a.Uniform1f(xe,we.u_terrain_exaggeration)}))(t,ye),this.binderUniforms=u?u.getUniforms(t,ye):[]}draw(t,n,o,u,p,_,x,v,w,I,S,L,$,U,V,H,ee,le){const G=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(o),t.setStencilMode(u),t.setColorMode(p),t.setCullFace(_),v){t.activeTexture.set(G.TEXTURE2),G.bindTexture(G.TEXTURE_2D,v.depthTexture),t.activeTexture.set(G.TEXTURE3),G.bindTexture(G.TEXTURE_2D,v.texture);for(const ue in this.terrainUniforms)this.terrainUniforms[ue].set(v[ue])}for(const ue in this.fixedUniforms)this.fixedUniforms[ue].set(x[ue]);V&&V.setUniforms(t,this.binderUniforms,$,{zoom:U});let oe=0;switch(n){case G.LINES:oe=2;break;case G.TRIANGLES:oe=3;break;case G.LINE_STRIP:oe=1}for(const ue of L.get()){const ye=ue.vaos||(ue.vaos={});(ye[w]||(ye[w]=new en)).bind(t,this,I,V?V.getPaintVertexBuffers():[],S,ue.vertexOffset,H,ee,le),G.drawElements(n,ue.primitiveLength*oe,G.UNSIGNED_SHORT,ue.primitiveOffset*oe*2)}}}function Ka(l,t,n){const o=1/Q(n,1,t.transform.tileZoom),u=Math.pow(2,n.tileID.overscaledZ),p=n.tileSize*Math.pow(2,t.transform.tileZoom)/u,_=p*(n.tileID.canonical.x+n.tileID.wrap*u),x=p*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[o,l.fromScale,l.toScale],u_fade:l.t,u_pixel_coord_upper:[_>>16,x>>16],u_pixel_coord_lower:[65535&_,65535&x]}}const Ya=(l,t,n,o)=>{const u=t.style.light,p=u.properties.get("position"),_=[p.x,p.y,p.z],x=function(){var w=new a.ARRAY_TYPE(9);return a.ARRAY_TYPE!=Float32Array&&(w[1]=0,w[2]=0,w[3]=0,w[5]=0,w[6]=0,w[7]=0),w[0]=1,w[4]=1,w[8]=1,w}();u.properties.get("anchor")==="viewport"&&function(w,I){var S=Math.sin(I),L=Math.cos(I);w[0]=L,w[1]=S,w[2]=0,w[3]=-S,w[4]=L,w[5]=0,w[6]=0,w[7]=0,w[8]=1}(x,-t.transform.angle),function(w,I,S){var L=I[0],$=I[1],U=I[2];w[0]=L*S[0]+$*S[3]+U*S[6],w[1]=L*S[1]+$*S[4]+U*S[7],w[2]=L*S[2]+$*S[5]+U*S[8]}(_,_,x);const v=u.properties.get("color");return{u_matrix:l,u_lightpos:_,u_lightintensity:u.properties.get("intensity"),u_lightcolor:[v.r,v.g,v.b],u_vertical_gradient:+n,u_opacity:o}},$o=(l,t,n,o,u,p,_)=>a.extend(Ya(l,t,n,o),Ka(p,t,_),{u_height_factor:-Math.pow(2,u.overscaledZ)/_.tileSize/8}),Ja=l=>({u_matrix:l}),qo=(l,t,n,o)=>a.extend(Ja(l),Ka(n,t,o)),yc=(l,t)=>({u_matrix:l,u_world:t}),Qa=(l,t,n,o,u)=>a.extend(qo(l,t,n,o),{u_world:u}),vc=(l,t,n,o)=>{const u=l.transform;let p,_;if(o.paint.get("circle-pitch-alignment")==="map"){const x=Q(n,1,u.zoom);p=!0,_=[x,x]}else p=!1,_=u.pixelsToGLUnits;return{u_camera_to_center_distance:u.cameraToCenterDistance,u_scale_with_map:+(o.paint.get("circle-pitch-scale")==="map"),u_matrix:l.translatePosMatrix(t.posMatrix,n,o.paint.get("circle-translate"),o.paint.get("circle-translate-anchor")),u_pitch_with_map:+p,u_device_pixel_ratio:l.pixelRatio,u_extrude_scale:_}},jo=(l,t,n)=>{const o=Q(n,1,t.zoom),u=Math.pow(2,t.zoom-n.tileID.overscaledZ),p=n.tileID.overscaleFactor();return{u_matrix:l,u_camera_to_center_distance:t.cameraToCenterDistance,u_pixels_to_tile_units:o,u_extrude_scale:[t.pixelsToGLUnits[0]/(o*u),t.pixelsToGLUnits[1]/(o*u)],u_overscale_factor:p}},Go=(l,t,n=1)=>({u_matrix:l,u_color:t,u_overlay:0,u_overlay_scale:n}),Zo=l=>({u_matrix:l}),el=(l,t,n,o)=>({u_matrix:l,u_extrude_scale:Q(t,1,n),u_intensity:o});function tl(l,t){const n=Math.pow(2,t.canonical.z),o=t.canonical.y;return[new a.MercatorCoordinate(0,o/n).toLngLat().lat,new a.MercatorCoordinate(0,(o+1)/n).toLngLat().lat]}const Rr=(l,t,n,o)=>{const u=l.transform;return{u_matrix:On(l,t,n,o),u_ratio:1/Q(t,1,u.zoom),u_device_pixel_ratio:l.pixelRatio,u_units_to_pixels:[1/u.pixelsToGLUnits[0],1/u.pixelsToGLUnits[1]]}},Us=(l,t,n,o,u)=>a.extend(Rr(l,t,n,u),{u_image:0,u_image_height:o}),er=(l,t,n,o,u)=>{const p=l.transform,_=cs(t,p);return{u_matrix:On(l,t,n,u),u_texsize:t.imageAtlasTexture.size,u_ratio:1/Q(t,1,p.zoom),u_device_pixel_ratio:l.pixelRatio,u_image:0,u_scale:[_,o.fromScale,o.toScale],u_fade:o.t,u_units_to_pixels:[1/p.pixelsToGLUnits[0],1/p.pixelsToGLUnits[1]]}},Vs=(l,t,n,o,u,p)=>{const _=l.lineAtlas,x=cs(t,l.transform),v=n.layout.get("line-cap")==="round",w=_.getDash(o.from,v),I=_.getDash(o.to,v),S=w.width*u.fromScale,L=I.width*u.toScale;return a.extend(Rr(l,t,n,p),{u_patternscale_a:[x/S,-w.height/2],u_patternscale_b:[x/L,-I.height/2],u_sdfgamma:_.width/(256*Math.min(S,L)*l.pixelRatio)/2,u_image:0,u_tex_y_a:w.y,u_tex_y_b:I.y,u_mix:u.t})};function cs(l,t){return 1/Q(l,1,t.tileZoom)}function On(l,t,n,o){return l.translatePosMatrix(o?o.posMatrix:t.tileID.posMatrix,t,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}const Ns=(l,t,n,o,u)=>{return{u_matrix:l,u_tl_parent:t,u_scale_parent:n,u_buffer_scale:1,u_fade_t:o.mix,u_opacity:o.opacity*u.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:u.paint.get("raster-brightness-min"),u_brightness_high:u.paint.get("raster-brightness-max"),u_saturation_factor:(_=u.paint.get("raster-saturation"),_>0?1-1/(1.001-_):-_),u_contrast_factor:(p=u.paint.get("raster-contrast"),p>0?1/(1-p):1+p),u_spin_weights:$s(u.paint.get("raster-hue-rotate"))};var p,_};function $s(l){l*=Math.PI/180;const t=Math.sin(l),n=Math.cos(l);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}const Un=(l,t,n,o,u,p,_,x,v,w)=>{const I=u.transform;return{u_is_size_zoom_constant:+(l==="constant"||l==="source"),u_is_size_feature_constant:+(l==="constant"||l==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:I.cameraToCenterDistance,u_pitch:I.pitch/360*2*Math.PI,u_rotate_symbol:+n,u_aspect_ratio:I.width/I.height,u_fade_change:u.options.fadeDuration?u.symbolFadeChange:1,u_matrix:p,u_label_plane_matrix:_,u_coord_matrix:x,u_is_text:+v,u_pitch_with_map:+o,u_texsize:w,u_texture:0}},Vn=(l,t,n,o,u,p,_,x,v,w,I)=>{const S=u.transform;return a.extend(Un(l,t,n,o,u,p,_,x,v,w),{u_gamma_scale:o?Math.cos(S._pitch)*S.cameraToCenterDistance:1,u_device_pixel_ratio:u.pixelRatio,u_is_halo:+I})},qs=(l,t,n,o,u,p,_,x,v,w)=>a.extend(Vn(l,t,n,o,u,p,_,x,!0,v,!0),{u_texsize_icon:w,u_texture_icon:1}),Vi=(l,t,n)=>({u_matrix:l,u_opacity:t,u_color:n}),Ni=(l,t,n,o,u,p)=>a.extend(function(_,x,v,w){const I=v.imageManager.getPattern(_.from.toString()),S=v.imageManager.getPattern(_.to.toString()),{width:L,height:$}=v.imageManager.getPixelSize(),U=Math.pow(2,w.tileID.overscaledZ),V=w.tileSize*Math.pow(2,v.transform.tileZoom)/U,H=V*(w.tileID.canonical.x+w.tileID.wrap*U),ee=V*w.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:I.tl,u_pattern_br_a:I.br,u_pattern_tl_b:S.tl,u_pattern_br_b:S.br,u_texsize:[L,$],u_mix:x.t,u_pattern_size_a:I.displaySize,u_pattern_size_b:S.displaySize,u_scale_a:x.fromScale,u_scale_b:x.toScale,u_tile_units_to_pixels:1/Q(w,1,v.transform.tileZoom),u_pixel_coord_upper:[H>>16,ee>>16],u_pixel_coord_lower:[65535&H,65535&ee]}}(o,p,n,u),{u_matrix:l,u_opacity:t}),Ho={fillExtrusion:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_lightpos:new a.Uniform3f(l,t.u_lightpos),u_lightintensity:new a.Uniform1f(l,t.u_lightintensity),u_lightcolor:new a.Uniform3f(l,t.u_lightcolor),u_vertical_gradient:new a.Uniform1f(l,t.u_vertical_gradient),u_opacity:new a.Uniform1f(l,t.u_opacity)}),fillExtrusionPattern:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_lightpos:new a.Uniform3f(l,t.u_lightpos),u_lightintensity:new a.Uniform1f(l,t.u_lightintensity),u_lightcolor:new a.Uniform3f(l,t.u_lightcolor),u_vertical_gradient:new a.Uniform1f(l,t.u_vertical_gradient),u_height_factor:new a.Uniform1f(l,t.u_height_factor),u_image:new a.Uniform1i(l,t.u_image),u_texsize:new a.Uniform2f(l,t.u_texsize),u_pixel_coord_upper:new a.Uniform2f(l,t.u_pixel_coord_upper),u_pixel_coord_lower:new a.Uniform2f(l,t.u_pixel_coord_lower),u_scale:new a.Uniform3f(l,t.u_scale),u_fade:new a.Uniform1f(l,t.u_fade),u_opacity:new a.Uniform1f(l,t.u_opacity)}),fill:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix)}),fillPattern:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_image:new a.Uniform1i(l,t.u_image),u_texsize:new a.Uniform2f(l,t.u_texsize),u_pixel_coord_upper:new a.Uniform2f(l,t.u_pixel_coord_upper),u_pixel_coord_lower:new a.Uniform2f(l,t.u_pixel_coord_lower),u_scale:new a.Uniform3f(l,t.u_scale),u_fade:new a.Uniform1f(l,t.u_fade)}),fillOutline:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_world:new a.Uniform2f(l,t.u_world)}),fillOutlinePattern:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_world:new a.Uniform2f(l,t.u_world),u_image:new a.Uniform1i(l,t.u_image),u_texsize:new a.Uniform2f(l,t.u_texsize),u_pixel_coord_upper:new a.Uniform2f(l,t.u_pixel_coord_upper),u_pixel_coord_lower:new a.Uniform2f(l,t.u_pixel_coord_lower),u_scale:new a.Uniform3f(l,t.u_scale),u_fade:new a.Uniform1f(l,t.u_fade)}),circle:(l,t)=>({u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_scale_with_map:new a.Uniform1i(l,t.u_scale_with_map),u_pitch_with_map:new a.Uniform1i(l,t.u_pitch_with_map),u_extrude_scale:new a.Uniform2f(l,t.u_extrude_scale),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_matrix:new a.UniformMatrix4f(l,t.u_matrix)}),collisionBox:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_pixels_to_tile_units:new a.Uniform1f(l,t.u_pixels_to_tile_units),u_extrude_scale:new a.Uniform2f(l,t.u_extrude_scale),u_overscale_factor:new a.Uniform1f(l,t.u_overscale_factor)}),collisionCircle:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_inv_matrix:new a.UniformMatrix4f(l,t.u_inv_matrix),u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_viewport_size:new a.Uniform2f(l,t.u_viewport_size)}),debug:(l,t)=>({u_color:new a.UniformColor(l,t.u_color),u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_overlay:new a.Uniform1i(l,t.u_overlay),u_overlay_scale:new a.Uniform1f(l,t.u_overlay_scale)}),clippingMask:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix)}),heatmap:(l,t)=>({u_extrude_scale:new a.Uniform1f(l,t.u_extrude_scale),u_intensity:new a.Uniform1f(l,t.u_intensity),u_matrix:new a.UniformMatrix4f(l,t.u_matrix)}),heatmapTexture:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_world:new a.Uniform2f(l,t.u_world),u_image:new a.Uniform1i(l,t.u_image),u_color_ramp:new a.Uniform1i(l,t.u_color_ramp),u_opacity:new a.Uniform1f(l,t.u_opacity)}),hillshade:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_image:new a.Uniform1i(l,t.u_image),u_latrange:new a.Uniform2f(l,t.u_latrange),u_light:new a.Uniform2f(l,t.u_light),u_shadow:new a.UniformColor(l,t.u_shadow),u_highlight:new a.UniformColor(l,t.u_highlight),u_accent:new a.UniformColor(l,t.u_accent)}),hillshadePrepare:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_image:new a.Uniform1i(l,t.u_image),u_dimension:new a.Uniform2f(l,t.u_dimension),u_zoom:new a.Uniform1f(l,t.u_zoom),u_unpack:new a.Uniform4f(l,t.u_unpack)}),line:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_ratio:new a.Uniform1f(l,t.u_ratio),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_units_to_pixels:new a.Uniform2f(l,t.u_units_to_pixels)}),lineGradient:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_ratio:new a.Uniform1f(l,t.u_ratio),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_units_to_pixels:new a.Uniform2f(l,t.u_units_to_pixels),u_image:new a.Uniform1i(l,t.u_image),u_image_height:new a.Uniform1f(l,t.u_image_height)}),linePattern:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_texsize:new a.Uniform2f(l,t.u_texsize),u_ratio:new a.Uniform1f(l,t.u_ratio),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_image:new a.Uniform1i(l,t.u_image),u_units_to_pixels:new a.Uniform2f(l,t.u_units_to_pixels),u_scale:new a.Uniform3f(l,t.u_scale),u_fade:new a.Uniform1f(l,t.u_fade)}),lineSDF:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_ratio:new a.Uniform1f(l,t.u_ratio),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_units_to_pixels:new a.Uniform2f(l,t.u_units_to_pixels),u_patternscale_a:new a.Uniform2f(l,t.u_patternscale_a),u_patternscale_b:new a.Uniform2f(l,t.u_patternscale_b),u_sdfgamma:new a.Uniform1f(l,t.u_sdfgamma),u_image:new a.Uniform1i(l,t.u_image),u_tex_y_a:new a.Uniform1f(l,t.u_tex_y_a),u_tex_y_b:new a.Uniform1f(l,t.u_tex_y_b),u_mix:new a.Uniform1f(l,t.u_mix)}),raster:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_tl_parent:new a.Uniform2f(l,t.u_tl_parent),u_scale_parent:new a.Uniform1f(l,t.u_scale_parent),u_buffer_scale:new a.Uniform1f(l,t.u_buffer_scale),u_fade_t:new a.Uniform1f(l,t.u_fade_t),u_opacity:new a.Uniform1f(l,t.u_opacity),u_image0:new a.Uniform1i(l,t.u_image0),u_image1:new a.Uniform1i(l,t.u_image1),u_brightness_low:new a.Uniform1f(l,t.u_brightness_low),u_brightness_high:new a.Uniform1f(l,t.u_brightness_high),u_saturation_factor:new a.Uniform1f(l,t.u_saturation_factor),u_contrast_factor:new a.Uniform1f(l,t.u_contrast_factor),u_spin_weights:new a.Uniform3f(l,t.u_spin_weights)}),symbolIcon:(l,t)=>({u_is_size_zoom_constant:new a.Uniform1i(l,t.u_is_size_zoom_constant),u_is_size_feature_constant:new a.Uniform1i(l,t.u_is_size_feature_constant),u_size_t:new a.Uniform1f(l,t.u_size_t),u_size:new a.Uniform1f(l,t.u_size),u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_pitch:new a.Uniform1f(l,t.u_pitch),u_rotate_symbol:new a.Uniform1i(l,t.u_rotate_symbol),u_aspect_ratio:new a.Uniform1f(l,t.u_aspect_ratio),u_fade_change:new a.Uniform1f(l,t.u_fade_change),u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_label_plane_matrix:new a.UniformMatrix4f(l,t.u_label_plane_matrix),u_coord_matrix:new a.UniformMatrix4f(l,t.u_coord_matrix),u_is_text:new a.Uniform1i(l,t.u_is_text),u_pitch_with_map:new a.Uniform1i(l,t.u_pitch_with_map),u_texsize:new a.Uniform2f(l,t.u_texsize),u_texture:new a.Uniform1i(l,t.u_texture)}),symbolSDF:(l,t)=>({u_is_size_zoom_constant:new a.Uniform1i(l,t.u_is_size_zoom_constant),u_is_size_feature_constant:new a.Uniform1i(l,t.u_is_size_feature_constant),u_size_t:new a.Uniform1f(l,t.u_size_t),u_size:new a.Uniform1f(l,t.u_size),u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_pitch:new a.Uniform1f(l,t.u_pitch),u_rotate_symbol:new a.Uniform1i(l,t.u_rotate_symbol),u_aspect_ratio:new a.Uniform1f(l,t.u_aspect_ratio),u_fade_change:new a.Uniform1f(l,t.u_fade_change),u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_label_plane_matrix:new a.UniformMatrix4f(l,t.u_label_plane_matrix),u_coord_matrix:new a.UniformMatrix4f(l,t.u_coord_matrix),u_is_text:new a.Uniform1i(l,t.u_is_text),u_pitch_with_map:new a.Uniform1i(l,t.u_pitch_with_map),u_texsize:new a.Uniform2f(l,t.u_texsize),u_texture:new a.Uniform1i(l,t.u_texture),u_gamma_scale:new a.Uniform1f(l,t.u_gamma_scale),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_is_halo:new a.Uniform1i(l,t.u_is_halo)}),symbolTextAndIcon:(l,t)=>({u_is_size_zoom_constant:new a.Uniform1i(l,t.u_is_size_zoom_constant),u_is_size_feature_constant:new a.Uniform1i(l,t.u_is_size_feature_constant),u_size_t:new a.Uniform1f(l,t.u_size_t),u_size:new a.Uniform1f(l,t.u_size),u_camera_to_center_distance:new a.Uniform1f(l,t.u_camera_to_center_distance),u_pitch:new a.Uniform1f(l,t.u_pitch),u_rotate_symbol:new a.Uniform1i(l,t.u_rotate_symbol),u_aspect_ratio:new a.Uniform1f(l,t.u_aspect_ratio),u_fade_change:new a.Uniform1f(l,t.u_fade_change),u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_label_plane_matrix:new a.UniformMatrix4f(l,t.u_label_plane_matrix),u_coord_matrix:new a.UniformMatrix4f(l,t.u_coord_matrix),u_is_text:new a.Uniform1i(l,t.u_is_text),u_pitch_with_map:new a.Uniform1i(l,t.u_pitch_with_map),u_texsize:new a.Uniform2f(l,t.u_texsize),u_texsize_icon:new a.Uniform2f(l,t.u_texsize_icon),u_texture:new a.Uniform1i(l,t.u_texture),u_texture_icon:new a.Uniform1i(l,t.u_texture_icon),u_gamma_scale:new a.Uniform1f(l,t.u_gamma_scale),u_device_pixel_ratio:new a.Uniform1f(l,t.u_device_pixel_ratio),u_is_halo:new a.Uniform1i(l,t.u_is_halo)}),background:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_opacity:new a.Uniform1f(l,t.u_opacity),u_color:new a.UniformColor(l,t.u_color)}),backgroundPattern:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_opacity:new a.Uniform1f(l,t.u_opacity),u_image:new a.Uniform1i(l,t.u_image),u_pattern_tl_a:new a.Uniform2f(l,t.u_pattern_tl_a),u_pattern_br_a:new a.Uniform2f(l,t.u_pattern_br_a),u_pattern_tl_b:new a.Uniform2f(l,t.u_pattern_tl_b),u_pattern_br_b:new a.Uniform2f(l,t.u_pattern_br_b),u_texsize:new a.Uniform2f(l,t.u_texsize),u_mix:new a.Uniform1f(l,t.u_mix),u_pattern_size_a:new a.Uniform2f(l,t.u_pattern_size_a),u_pattern_size_b:new a.Uniform2f(l,t.u_pattern_size_b),u_scale_a:new a.Uniform1f(l,t.u_scale_a),u_scale_b:new a.Uniform1f(l,t.u_scale_b),u_pixel_coord_upper:new a.Uniform2f(l,t.u_pixel_coord_upper),u_pixel_coord_lower:new a.Uniform2f(l,t.u_pixel_coord_lower),u_tile_units_to_pixels:new a.Uniform1f(l,t.u_tile_units_to_pixels)}),terrain:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_texture:new a.Uniform1i(l,t.u_texture),u_ele_delta:new a.Uniform1f(l,t.u_ele_delta)}),terrainDepth:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_ele_delta:new a.Uniform1f(l,t.u_ele_delta)}),terrainCoords:(l,t)=>({u_matrix:new a.UniformMatrix4f(l,t.u_matrix),u_texture:new a.Uniform1i(l,t.u_texture),u_terrain_coords_id:new a.Uniform1f(l,t.u_terrain_coords_id),u_ele_delta:new a.Uniform1f(l,t.u_ele_delta)})};class js{constructor(t,n,o){this.context=t;const u=t.gl;this.buffer=u.createBuffer(),this.dynamicDraw=!!o,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),u.bufferData(u.ELEMENT_ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?u.DYNAMIC_DRAW:u.STATIC_DRAW),this.dynamicDraw||delete n.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){const n=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),n.bufferSubData(n.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const Gs={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Xo{constructor(t,n,o,u){this.length=n.length,this.attributes=o,this.itemSize=n.bytesPerElement,this.dynamicDraw=u,this.context=t;const p=t.gl;this.buffer=p.createBuffer(),t.bindVertexBuffer.set(this.buffer),p.bufferData(p.ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?p.DYNAMIC_DRAW:p.STATIC_DRAW),this.dynamicDraw||delete n.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);const n=this.context.gl;this.bind(),n.bufferSubData(n.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,n){for(let o=0;o0){const Re=a.create(),He=xe;a.mul(Re,ye.placementInvProjMatrix,l.transform.glCoordMatrix),a.mul(Re,Re,ye.placementViewportMatrix),I.push({circleArray:ve,circleOffset:L,transform:He,invTransform:Re,coord:oe}),S+=ve.length/4,L=S}we&&w.draw(x,v.LINES,ut.disabled,Mt.disabled,l.colorModeForRenderPass(),It.disabled,jo(xe,l.transform,ue),l.style.map.terrain&&l.style.map.terrain.getTerrainData(oe),n.id,we.layoutVertexBuffer,we.indexBuffer,we.segments,null,l.transform.zoom,null,null,we.collisionVertexBuffer)}if(!_||!I.length)return;const $=l.useProgram("collisionCircle"),U=new a.CollisionCircleLayoutArray;U.resize(4*S),U._trim();let V=0;for(const G of I)for(let oe=0;oe=0&&(U[H.associatedIconIndex]={shiftedAnchor:rt,angle:Ie})}else O(H.numGlyphs,L)}if(w){$.clear();const V=l.icon.placedSymbolArray;for(let H=0;Hl.style.map.terrain.getElevation(we,xo,Ur):null,qi=n.layout.get("text-rotation-alignment")==="map";Dr(Re,we.posMatrix,l,u,cr,Ci,H,w,qi,oi)}const vi=l.translatePosMatrix(we.posMatrix,ve,p,_),ci=ee||u&&ye||Ts?na:cr,vt=l.translatePosMatrix(Ci,ve,p,_,!0),si=Ie&&n.paint.get(u?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let ui;ui=Ie?Re.iconsInText?qs(Ye.kind,Zt,le,H,l,vi,ci,vt,st,li):Vn(Ye.kind,Zt,le,H,l,vi,ci,vt,u,st,!0):Un(Ye.kind,Zt,le,H,l,vi,ci,vt,u,st);const bt={program:_t,buffers:He,uniformValues:ui,atlasTexture:Vt,atlasTextureIcon:$i,atlasInterpolation:Ai,atlasInterpolationIcon:Ht,isSDF:Ie,hasHalo:si};if(G&&Re.canOverlap){oe=!0;const oi=He.segments.get();for(const qi of oi)xe.push({segments:new a.SegmentVector([qi]),sortKey:qi.sortKey,state:bt,terrainData:yt})}else xe.push({segments:He.segments,sortKey:0,state:bt,terrainData:yt})}oe&&xe.sort((we,ve)=>we.sortKey-ve.sortKey);for(const we of xe){const ve=we.state;if(L.activeTexture.set($.TEXTURE0),ve.atlasTexture.bind(ve.atlasInterpolation,$.CLAMP_TO_EDGE),ve.atlasTextureIcon&&(L.activeTexture.set($.TEXTURE1),ve.atlasTextureIcon&&ve.atlasTextureIcon.bind(ve.atlasInterpolationIcon,$.CLAMP_TO_EDGE)),ve.isSDF){const Re=ve.uniformValues;ve.hasHalo&&(Re.u_is_halo=1,sa(ve.buffers,we.segments,n,l,ve.program,ue,I,S,Re,we.terrainData)),Re.u_is_halo=0}sa(ve.buffers,we.segments,n,l,ve.program,ue,I,S,ve.uniformValues,we.terrainData)}}function sa(l,t,n,o,u,p,_,x,v,w){const I=o.context;u.draw(I,I.gl.TRIANGLES,p,_,x,It.disabled,v,w,n.id,l.layoutVertexBuffer,l.indexBuffer,t,n.paint,o.transform.zoom,l.programConfigurations.get(n.id),l.dynamicLayoutVertexBuffer,l.opacityVertexBuffer)}function oa(l,t,n,o,u){if(!n||!o||!o.imageAtlas)return;const p=o.imageAtlas.patternPositions;let _=p[n.to.toString()],x=p[n.from.toString()];if(!_||!x){const v=u.getPaintProperty(t);_=p[v],x=p[v]}_&&x&&l.setConstantPatternPositions(_,x)}function ds(l,t,n,o,u,p,_){const x=l.context.gl,v="fill-pattern",w=n.paint.get(v),I=w&&w.constantOr(1),S=n.getCrossfadeParameters();let L,$,U,V,H;_?($=I&&!n.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",L=x.LINES):($=I?"fillPattern":"fill",L=x.TRIANGLES);const ee=w.constantOr(null);for(const le of o){const G=t.getTile(le);if(I&&!G.patternsLoaded())continue;const oe=G.getBucket(n);if(!oe)continue;const ue=oe.programConfigurations.get(n.id),ye=l.useProgram($,ue),xe=l.style.map.terrain&&l.style.map.terrain.getTerrainData(le);I&&(l.context.activeTexture.set(x.TEXTURE0),G.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),ue.updatePaintBuffers(S)),oa(ue,v,ee,G,n);const we=xe?le:null,ve=l.translatePosMatrix(we?we.posMatrix:le.posMatrix,G,n.paint.get("fill-translate"),n.paint.get("fill-translate-anchor"));if(_){V=oe.indexBuffer2,H=oe.segments2;const Re=[x.drawingBufferWidth,x.drawingBufferHeight];U=$==="fillOutlinePattern"&&I?Qa(ve,l,S,G,Re):yc(ve,Re)}else V=oe.indexBuffer,H=oe.segments,U=I?qo(ve,l,S,G):Ja(ve);ye.draw(l.context,L,u,l.stencilModeForClipping(le),p,It.disabled,U,xe,n.id,oe.layoutVertexBuffer,V,H,n.paint,l.transform.zoom,ue)}}function ps(l,t,n,o,u,p,_){const x=l.context,v=x.gl,w="fill-extrusion-pattern",I=n.paint.get(w),S=I.constantOr(1),L=n.getCrossfadeParameters(),$=n.paint.get("fill-extrusion-opacity"),U=I.constantOr(null);for(const V of o){const H=t.getTile(V),ee=H.getBucket(n);if(!ee)continue;const le=l.style.map.terrain&&l.style.map.terrain.getTerrainData(V),G=ee.programConfigurations.get(n.id),oe=l.useProgram(S?"fillExtrusionPattern":"fillExtrusion",G);S&&(l.context.activeTexture.set(v.TEXTURE0),H.imageAtlasTexture.bind(v.LINEAR,v.CLAMP_TO_EDGE),G.updatePaintBuffers(L)),oa(G,w,U,H,n);const ue=l.translatePosMatrix(V.posMatrix,H,n.paint.get("fill-extrusion-translate"),n.paint.get("fill-extrusion-translate-anchor")),ye=n.paint.get("fill-extrusion-vertical-gradient"),xe=S?$o(ue,l,ye,$,V,L,H):Ya(ue,l,ye,$);oe.draw(x,x.gl.TRIANGLES,u,p,_,It.backCCW,xe,le,n.id,ee.layoutVertexBuffer,ee.indexBuffer,ee.segments,n.paint,l.transform.zoom,G,l.style.map.terrain&&ee.centroidVertexBuffer)}}function Mc(l,t,n,o,u,p,_){const x=l.context,v=x.gl,w=n.fbo;if(!w)return;const I=l.useProgram("hillshade"),S=l.style.map.terrain&&l.style.map.terrain.getTerrainData(t);x.activeTexture.set(v.TEXTURE0),v.bindTexture(v.TEXTURE_2D,w.colorAttachment.get()),I.draw(x,v.TRIANGLES,u,p,_,It.disabled,((L,$,U,V)=>{const H=U.paint.get("hillshade-shadow-color"),ee=U.paint.get("hillshade-highlight-color"),le=U.paint.get("hillshade-accent-color");let G=U.paint.get("hillshade-illumination-direction")*(Math.PI/180);U.paint.get("hillshade-illumination-anchor")==="viewport"&&(G-=L.transform.angle);const oe=!L.options.moving;return{u_matrix:V?V.posMatrix:L.transform.calculatePosMatrix($.tileID.toUnwrapped(),oe),u_image:0,u_latrange:tl(0,$.tileID),u_light:[U.paint.get("hillshade-exaggeration"),G],u_shadow:H,u_highlight:ee,u_accent:le}})(l,n,o,S?t:null),S,o.id,l.rasterBoundsBuffer,l.quadTriangleIndexBuffer,l.rasterBoundsSegments)}function dl(l,t,n,o,u,p){const _=l.context,x=_.gl,v=t.dem;if(v&&v.data){const w=v.dim,I=v.stride,S=v.getPixels();if(_.activeTexture.set(x.TEXTURE1),_.pixelStoreUnpackPremultiplyAlpha.set(!1),t.demTexture=t.demTexture||l.getTileTexture(I),t.demTexture){const $=t.demTexture;$.update(S,{premultiply:!1}),$.bind(x.NEAREST,x.CLAMP_TO_EDGE)}else t.demTexture=new ht(_,S,x.RGBA,{premultiply:!1}),t.demTexture.bind(x.NEAREST,x.CLAMP_TO_EDGE);_.activeTexture.set(x.TEXTURE0);let L=t.fbo;if(!L){const $=new ht(_,{width:w,height:w,data:null},x.RGBA);$.bind(x.LINEAR,x.CLAMP_TO_EDGE),L=t.fbo=_.createFramebuffer(w,w,!0,!1),L.colorAttachment.set($.texture)}_.bindFramebuffer.set(L.framebuffer),_.viewport.set([0,0,w,w]),l.useProgram("hillshadePrepare").draw(_,x.TRIANGLES,o,u,p,It.disabled,(($,U)=>{const V=U.stride,H=a.create();return a.ortho(H,0,a.EXTENT,-a.EXTENT,0,0,1),a.translate(H,H,[0,-a.EXTENT,0]),{u_matrix:H,u_image:1,u_dimension:[V,V],u_zoom:$.overscaledZ,u_unpack:U.getUnpackVector()}})(t.tileID,v),null,n.id,l.rasterBoundsBuffer,l.quadTriangleIndexBuffer,l.rasterBoundsSegments),t.needsHillshadePrepare=!1}}function Gt(l,t,n,o,u,p){const _=o.paint.get("raster-fade-duration");if(!p&&_>0){const x=a.exported.now(),v=(x-l.timeAdded)/_,w=t?(x-t.timeAdded)/_:-1,I=n.getSource(),S=u.coveringZoomLevel({tileSize:I.tileSize,roundZoom:I.roundZoom}),L=!t||Math.abs(t.tileID.overscaledZ-S)>Math.abs(l.tileID.overscaledZ-S),$=L&&l.refreshedUponExpiration?1:a.clamp(L?v:1-w,0,1);return l.refreshedUponExpiration&&v>=1&&(l.refreshedUponExpiration=!1),t?{opacity:1,mix:1-$}:{opacity:$,mix:0}}return{opacity:1,mix:0}}const gn=new a.Color(1,0,0,1),tr=new a.Color(0,1,0,1),pl=new a.Color(0,0,1,1),aa=new a.Color(1,0,1,1),fl=new a.Color(0,1,1,1);function _n(l,t,n,o){Zn(l,0,t+n/2,l.transform.width,n,o)}function fs(l,t,n,o){Zn(l,t-n/2,0,n,l.transform.height,o)}function Zn(l,t,n,o,u,p){const _=l.context,x=_.gl;x.enable(x.SCISSOR_TEST),x.scissor(t*l.pixelRatio,n*l.pixelRatio,o*l.pixelRatio,u*l.pixelRatio),_.clear({color:p}),x.disable(x.SCISSOR_TEST)}function ml(l,t,n){const o=l.context,u=o.gl,p=n.posMatrix,_=l.useProgram("debug"),x=ut.disabled,v=Mt.disabled,w=l.colorModeForRenderPass(),I="$debug",S=l.style.map.terrain&&l.style.map.terrain.getTerrainData(n);o.activeTexture.set(u.TEXTURE0);const L=t.getTileByID(n.key).latestRawTileData,$=Math.floor((L&&L.byteLength||0)/1024),U=t.getTile(n).tileSize,V=512/Math.min(U,512)*(n.overscaledZ/l.transform.zoom)*.5;let H=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(H+=` => ${n.overscaledZ}`),function(ee,le){ee.initDebugOverlayCanvas();const G=ee.debugOverlayCanvas,oe=ee.context.gl,ue=ee.debugOverlayCanvas.getContext("2d");ue.clearRect(0,0,G.width,G.height),ue.shadowColor="white",ue.shadowBlur=2,ue.lineWidth=1.5,ue.strokeStyle="white",ue.textBaseline="top",ue.font="bold 36px Open Sans, sans-serif",ue.fillText(le,5,5),ue.strokeText(le,5,5),ee.debugOverlayTexture.update(G),ee.debugOverlayTexture.bind(oe.LINEAR,oe.CLAMP_TO_EDGE)}(l,`${H} ${$}kB`),_.draw(o,u.TRIANGLES,x,v,Ft.alphaBlended,It.disabled,Go(p,a.Color.transparent,V),null,I,l.debugBuffer,l.quadTriangleIndexBuffer,l.debugSegments),_.draw(o,u.LINE_STRIP,x,v,w,It.disabled,Go(p,a.Color.red),S,I,l.debugBuffer,l.tileBorderIndexBuffer,l.debugSegments)}function la(l,t,n){const o=l.context,u=o.gl,p=l.colorModeForRenderPass(),_=new ut(u.LEQUAL,ut.ReadWrite,l.depthRangeFor3D),x=l.useProgram("terrain"),v=t.getTerrainMesh();o.bindFramebuffer.set(null),o.viewport.set([0,0,l.width,l.height]);for(const w of n){const I=l.renderToTexture.getTexture(w),S=t.getTerrainData(w.tileID);o.activeTexture.set(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,I.texture);const L={u_matrix:l.transform.calculatePosMatrix(w.tileID.toUnwrapped()),u_texture:0,u_ele_delta:t.getMeshFrameDelta(l.transform.zoom)};x.draw(o,u.TRIANGLES,_,Mt.disabled,p,It.backCCW,L,S,"terrain",v.vertexBuffer,v.indexBuffer,v.segments)}}const ca={symbol:function(l,t,n,o,u){if(l.renderPass!=="translucent")return;const p=Mt.disabled,_=l.colorModeForRenderPass();n.layout.get("text-variable-anchor")&&function(x,v,w,I,S,L,$){const U=v.transform,V=S==="map",H=L==="map";for(const ee of x){const le=I.getTile(ee),G=le.getBucket(w);if(!G||!G.text||!G.text.segments.get().length)continue;const oe=a.evaluateSizeForZoom(G.textSizeData,U.zoom),ue=Q(le,1,v.transform.zoom),ye=nt(ee.posMatrix,H,V,v.transform,ue),xe=w.layout.get("icon-text-fit")!=="none"&&G.hasIconData();if(oe){const we=Math.pow(2,U.zoom-le.tileID.overscaledZ);hl(G,V,H,$,U,ye,ee.posMatrix,we,oe,xe,v.style.map.terrain?(ve,Re)=>v.style.map.terrain.getElevation(ee,ve,Re):null)}}}(o,l,n,t,n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),u),n.paint.get("icon-opacity").constantOr(1)!==0&&Js(l,t,n,o,!1,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),n.layout.get("icon-rotation-alignment"),n.layout.get("icon-pitch-alignment"),n.layout.get("icon-keep-upright"),p,_),n.paint.get("text-opacity").constantOr(1)!==0&&Js(l,t,n,o,!0,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.layout.get("text-keep-upright"),p,_),t.map.showCollisionBoxes&&(ul(l,t,n,o,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),!0),ul(l,t,n,o,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),!1))},circle:function(l,t,n,o){if(l.renderPass!=="translucent")return;const u=n.paint.get("circle-opacity"),p=n.paint.get("circle-stroke-width"),_=n.paint.get("circle-stroke-opacity"),x=!n.layout.get("circle-sort-key").isConstant();if(u.constantOr(1)===0&&(p.constantOr(1)===0||_.constantOr(1)===0))return;const v=l.context,w=v.gl,I=l.depthModeForSublayer(0,ut.ReadOnly),S=Mt.disabled,L=l.colorModeForRenderPass(),$=[];for(let U=0;UU.sortKey-V.sortKey);for(const U of $){const{programConfiguration:V,program:H,layoutVertexBuffer:ee,indexBuffer:le,uniformValues:G,terrainData:oe}=U.state;H.draw(v,w.TRIANGLES,I,S,L,It.disabled,G,oe,n.id,ee,le,U.segments,n.paint,l.transform.zoom,V)}},heatmap:function(l,t,n,o){if(n.paint.get("heatmap-opacity")!==0)if(l.renderPass==="offscreen"){const u=l.context,p=u.gl,_=Mt.disabled,x=new Ft([p.ONE,p.ONE],a.Color.transparent,[!0,!0,!0,!0]);(function(v,w,I){const S=v.gl;v.activeTexture.set(S.TEXTURE1),v.viewport.set([0,0,w.width/4,w.height/4]);let L=I.heatmapFbo;if(L)S.bindTexture(S.TEXTURE_2D,L.colorAttachment.get()),v.bindFramebuffer.set(L.framebuffer);else{const $=S.createTexture();S.bindTexture(S.TEXTURE_2D,$),S.texParameteri(S.TEXTURE_2D,S.TEXTURE_WRAP_S,S.CLAMP_TO_EDGE),S.texParameteri(S.TEXTURE_2D,S.TEXTURE_WRAP_T,S.CLAMP_TO_EDGE),S.texParameteri(S.TEXTURE_2D,S.TEXTURE_MIN_FILTER,S.LINEAR),S.texParameteri(S.TEXTURE_2D,S.TEXTURE_MAG_FILTER,S.LINEAR),L=I.heatmapFbo=v.createFramebuffer(w.width/4,w.height/4,!1,!1),function(U,V,H,ee){var le,G;const oe=U.gl,ue=(le=U.HALF_FLOAT)!==null&&le!==void 0?le:oe.UNSIGNED_BYTE,ye=(G=U.RGBA16F)!==null&&G!==void 0?G:oe.RGBA;oe.texImage2D(oe.TEXTURE_2D,0,ye,V.width/4,V.height/4,0,oe.RGBA,ue,null),ee.colorAttachment.set(H)}(v,w,$,L)}})(u,l,n),u.clear({color:a.Color.transparent});for(let v=0;v{const U=a.create();a.ortho(U,0,I.width,I.height,0,0,1);const V=I.context.gl;return{u_matrix:U,u_world:[V.drawingBufferWidth,V.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:S.paint.get("heatmap-opacity")}})(u,p),null,p.id,u.viewportBuffer,u.quadTriangleIndexBuffer,u.viewportSegments,p.paint,u.transform.zoom)}(l,n))},line:function(l,t,n,o){if(l.renderPass!=="translucent")return;const u=n.paint.get("line-opacity"),p=n.paint.get("line-width");if(u.constantOr(1)===0||p.constantOr(1)===0)return;const _=l.depthModeForSublayer(0,ut.ReadOnly),x=l.colorModeForRenderPass(),v=n.paint.get("line-dasharray"),w=n.paint.get("line-pattern"),I=w.constantOr(1),S=n.paint.get("line-gradient"),L=n.getCrossfadeParameters(),$=I?"linePattern":v?"lineSDF":S?"lineGradient":"line",U=l.context,V=U.gl;let H=!0;for(const ee of o){const le=t.getTile(ee);if(I&&!le.patternsLoaded())continue;const G=le.getBucket(n);if(!G)continue;const oe=G.programConfigurations.get(n.id),ue=l.context.program.get(),ye=l.useProgram($,oe),xe=H||ye.program!==ue,we=l.style.map.terrain&&l.style.map.terrain.getTerrainData(ee),ve=w.constantOr(null);if(ve&&le.imageAtlas){const rt=le.imageAtlas,Ie=rt.patternPositions[ve.to.toString()],Ye=rt.patternPositions[ve.from.toString()];Ie&&Ye&&oe.setConstantPatternPositions(Ie,Ye)}const Re=we?ee:null,He=I?er(l,le,n,L,Re):v?Vs(l,le,n,v,L,Re):S?Us(l,le,n,G.lineClipsArray.length,Re):Rr(l,le,n,Re);if(I)U.activeTexture.set(V.TEXTURE0),le.imageAtlasTexture.bind(V.LINEAR,V.CLAMP_TO_EDGE),oe.updatePaintBuffers(L);else if(v&&(xe||l.lineAtlas.dirty))U.activeTexture.set(V.TEXTURE0),l.lineAtlas.bind(U);else if(S){const rt=G.gradients[n.id];let Ie=rt.texture;if(n.gradientVersion!==rt.version){let Ye=256;if(n.stepInterpolant){const Fe=t.getSource().maxzoom,_t=ee.canonical.z===Fe?Math.ceil(1<256&&this.clearStencil(),o.setColorMode(Ft.disabled),o.setDepthMode(ut.disabled);const p=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const _ of n){const x=this._tileClippingMaskIDs[_.key]=this.nextStencilID++,v=this.style.map.terrain&&this.style.map.terrain.getTerrainData(_);p.draw(o,u.TRIANGLES,ut.disabled,new Mt({func:u.ALWAYS,mask:0},x,255,u.KEEP,u.KEEP,u.REPLACE),Ft.disabled,It.disabled,Zo(_.posMatrix),v,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,n=this.context.gl;return new Mt({func:n.NOTEQUAL,mask:255},t,255,n.KEEP,n.KEEP,n.REPLACE)}stencilModeForClipping(t){const n=this.context.gl;return new Mt({func:n.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,n.KEEP,n.KEEP,n.REPLACE)}stencilConfigForOverlap(t){const n=this.context.gl,o=t.sort((_,x)=>x.overscaledZ-_.overscaledZ),u=o[o.length-1].overscaledZ,p=o[0].overscaledZ-u+1;if(p>1){this.currentStencilSource=void 0,this.nextStencilID+p>256&&this.clearStencil();const _={};for(let x=0;x=0;this.currentLayer--){const v=this.style._layers[o[this.currentLayer]],w=u[v.source],I=p[v.source];this._renderTileClippingMasks(v,I),this.renderLayer(this,w,v,I)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerH.source&&!H.isHidden(I)?[w.sourceCaches[H.source]]:[]),$=L.filter(H=>H.getSource().type==="vector"),U=L.filter(H=>H.getSource().type!=="vector"),V=H=>{(!S||S.getSource().maxzoomV(H)),S||U.forEach(H=>V(H)),S}(this.style,this.transform.zoom);v&&ca.debug(this,v,v.getVisibleCoordinates())}this.options.showPadding&&function(v){const w=v.transform.padding;_n(v,v.transform.height-(w.top||0),3,gn),_n(v,w.bottom||0,3,tr),fs(v,w.left||0,3,pl),fs(v,v.transform.width-(w.right||0),3,aa);const I=v.transform.centerPoint;(function(S,L,$,U){Zn(S,L-1,$-10,2,20,U),Zn(S,L-10,$-1,20,2,U)})(v,I.x,v.transform.height-I.y,fl)}(this),this.context.setDefault()}renderLayer(t,n,o,u){o.isHidden(this.transform.zoom)||(o.type==="background"||o.type==="custom"||(u||[]).length)&&(this.id=o.id,ca[o.type](t,n,o,u,this.style.placement.variableOffsets))}translatePosMatrix(t,n,o,u,p){if(!o[0]&&!o[1])return t;const _=p?u==="map"?this.transform.angle:0:u==="viewport"?-this.transform.angle:0;if(_){const w=Math.sin(_),I=Math.cos(_);o=[o[0]*I-o[1]*w,o[0]*w+o[1]*I]}const x=[p?o[0]:Q(n,o[0],this.transform.zoom),p?o[1]:Q(n,o[1],this.transform.zoom),0],v=new Float32Array(16);return a.translate(v,t,x),v}saveTileTexture(t){const n=this._tileTextures[t.size[0]];n?n.push(t):this._tileTextures[t.size[0]]=[t]}getTileTexture(t){const n=this._tileTextures[t];return n&&n.length>0?n.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;const n=this.imageManager.getPattern(t.from.toString()),o=this.imageManager.getPattern(t.to.toString());return!n||!o}useProgram(t,n){this.cache=this.cache||{};const o=t+(n?n.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[o]||(this.cache[o]=new Os(this.context,t,Qr[t],n,Ho[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[o]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new ht(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}}class Qs{constructor(t,n){this.points=t,this.planes=n}static fromInvProjectionMatrix(t,n,o){const u=Math.pow(2,o),p=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(x=>{const v=1/(x=a.transformMat4([],x,t))[3]/n*u;return a.mul$1(x,x,[v,v,1/x[3],v])}),_=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(x=>{const v=function(L,$){var U=$[0],V=$[1],H=$[2],ee=U*U+V*V+H*H;return ee>0&&(ee=1/Math.sqrt(ee)),L[0]=$[0]*ee,L[1]=$[1]*ee,L[2]=$[2]*ee,L}([],function(L,$,U){var V=$[0],H=$[1],ee=$[2],le=U[0],G=U[1],oe=U[2];return L[0]=H*oe-ee*G,L[1]=ee*le-V*oe,L[2]=V*G-H*le,L}([],At([],p[x[0]],p[x[1]]),At([],p[x[2]],p[x[1]]))),w=-((I=v)[0]*(S=p[x[1]])[0]+I[1]*S[1]+I[2]*S[2]);var I,S;return v.concat(w)});return new Qs(p,_)}}class _r{constructor(t,n){this.min=t,this.max=n,this.center=function(o,u,p){return o[0]=.5*u[0],o[1]=.5*u[1],o[2]=.5*u[2],o}([],function(o,u,p){return o[0]=u[0]+p[0],o[1]=u[1]+p[1],o[2]=u[2]+p[2],o}([],this.min,this.max))}quadrant(t){const n=[t%2==0,t<2],o=Pt(this.min),u=Pt(this.max);for(let p=0;p=0&&_++;if(_===0)return 0;_!==n.length&&(o=!1)}if(o)return 2;for(let u=0;u<3;u++){let p=Number.MAX_VALUE,_=-Number.MAX_VALUE;for(let x=0;xthis.max[u]-this.min[u])return 0}return 1}}class eo{constructor(t=0,n=0,o=0,u=0){if(isNaN(t)||t<0||isNaN(n)||n<0||isNaN(o)||o<0||isNaN(u)||u<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=n,this.left=o,this.right=u}interpolate(t,n,o){return n.top!=null&&t.top!=null&&(this.top=a.interpolate.number(t.top,n.top,o)),n.bottom!=null&&t.bottom!=null&&(this.bottom=a.interpolate.number(t.bottom,n.bottom,o)),n.left!=null&&t.left!=null&&(this.left=a.interpolate.number(t.left,n.left,o)),n.right!=null&&t.right!=null&&(this.right=a.interpolate.number(t.right,n.right,o)),this}getCenter(t,n){const o=a.clamp((this.left+t-this.right)/2,0,t),u=a.clamp((this.top+n-this.bottom)/2,0,n);return new a.Point(o,u)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new eo(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class to{constructor(t,n,o,u,p){this.tileSize=512,this.maxValidLatitude=85.051129,this.freezeElevation=!1,this._renderWorldCopies=p===void 0||!!p,this._minZoom=t||0,this._maxZoom=n||22,this._minPitch=o??0,this._maxPitch=u??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.LngLat(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new eo,this._posMatrixCache={},this._alignedPosMatrixCache={}}clone(){const t=new to(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.Point(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(t){const n=-a.wrap(t,-180,180)*Math.PI/180;this.angle!==n&&(this._unmodified=!1,this.angle=n,this._calcMatrices(),this.rotationMatrix=function(){var o=new a.ARRAY_TYPE(4);return a.ARRAY_TYPE!=Float32Array&&(o[1]=0,o[2]=0),o[0]=1,o[3]=1,o}(),function(o,u,p){var _=u[0],x=u[1],v=u[2],w=u[3],I=Math.sin(p),S=Math.cos(p);o[0]=_*S+v*I,o[1]=x*S+w*I,o[2]=_*-I+v*S,o[3]=x*-I+w*S}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const n=a.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==n&&(this._unmodified=!1,this._pitch=n,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(t){const n=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==n&&(this._unmodified=!1,this._zoom=n,this.tileZoom=Math.max(0,Math.floor(n)),this.scale=this.zoomScale(n),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,n,o){this._unmodified=!1,this._edgeInsets.interpolate(t,n,o),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){const n=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,n)}getVisibleUnwrappedCoordinates(t){const n=[new a.UnwrappedTileID(0,t)];if(this._renderWorldCopies){const o=this.pointCoordinate(new a.Point(0,0)),u=this.pointCoordinate(new a.Point(this.width,0)),p=this.pointCoordinate(new a.Point(this.width,this.height)),_=this.pointCoordinate(new a.Point(0,this.height)),x=Math.floor(Math.min(o.x,u.x,p.x,_.x)),v=Math.floor(Math.max(o.x,u.x,p.x,_.x)),w=1;for(let I=x-w;I<=v+w;I++)I!==0&&n.push(new a.UnwrappedTileID(I,t))}return n}coveringTiles(t){var n,o;let u=this.coveringZoomLevel(t);const p=u;if(t.minzoom!==void 0&&ut.maxzoom&&(u=t.maxzoom);const _=this.pointCoordinate(this.getCameraPoint()),x=a.MercatorCoordinate.fromLngLat(this.center),v=Math.pow(2,u),w=[v*_.x,v*_.y,0],I=[v*x.x,v*x.y,0],S=Qs.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,u);let L=t.minzoom||0;!t.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(L=u);const $=t.terrain?2/Math.min(this.tileSize,t.tileSize)*this.tileSize:3,U=G=>({aabb:new _r([G*v,0,0],[(G+1)*v,v,0]),zoom:0,x:0,y:0,wrap:G,fullyVisible:!1}),V=[],H=[],ee=u,le=t.reparseOverscaled?p:u;if(this._renderWorldCopies)for(let G=1;G<=3;G++)V.push(U(-G)),V.push(U(G));for(V.push(U(0));V.length>0;){const G=V.pop(),oe=G.x,ue=G.y;let ye=G.fullyVisible;if(!ye){const He=G.aabb.intersects(S);if(He===0)continue;ye=He===2}const xe=t.terrain?w:I,we=G.aabb.distanceX(xe),ve=G.aabb.distanceY(xe),Re=Math.max(Math.abs(we),Math.abs(ve));if(G.zoom===ee||Re>$+(1<=L){const He=ee-G.zoom,rt=w[0]-.5-(oe<>1),Ye=G.zoom+1;let Fe=G.aabb.quadrant(He);if(t.terrain){const _t=new a.OverscaledTileID(Ye,G.wrap,Ye,rt,Ie),Zt=t.terrain.getMinMaxElevation(_t),yt=(n=Zt.minElevation)!==null&&n!==void 0?n:this.elevation,st=(o=Zt.maxElevation)!==null&&o!==void 0?o:this.elevation;Fe=new _r([Fe.min[0],Fe.min[1],yt],[Fe.max[0],Fe.max[1],st])}V.push({aabb:Fe,zoom:Ye,x:rt,y:Ie,wrap:G.wrap,fullyVisible:ye})}}return H.sort((G,oe)=>G.distanceSq-oe.distanceSq).map(G=>G.tileID)}resize(t,n){this.width=t,this.height=n,this.pixelsToGLUnits=[2/t,-2/n],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(t){const n=a.clamp(t.lat,-this.maxValidLatitude,this.maxValidLatitude);return new a.Point(a.mercatorXfromLng(t.lng)*this.worldSize,a.mercatorYfromLat(n)*this.worldSize)}unproject(t){return new a.MercatorCoordinate(t.x/this.worldSize,t.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}updateElevation(t){this.freezeElevation||(this.elevation=t?this.getElevation(this._center,t):0)}getElevation(t,n){const o=a.MercatorCoordinate.fromLngLat(t.wrap()),u=(1<_&&(u=_-U)}if(this.lngRange){const $=(x+v)/2,U=a.wrap(S.x,$-this.worldSize/2,$+this.worldSize/2),V=w.x/2;U-Vv&&(o=v-V)}o===void 0&&u===void 0||(this.center=this.unproject(new a.Point(o!==void 0?o:S.x,u!==void 0?u:S.y)).wrap()),this._unmodified=I,this._constraining=!1}_calcMatrices(){if(!this.height)return;const t=this.centerOffset,n=this.point.x,o=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.mercatorZfromAltitude(1,this.center.lat)*this.worldSize;let u=a.identity(new Float64Array(16));a.scale(u,u,[this.width/2,-this.height/2,1]),a.translate(u,u,[1,-1,0]),this.labelPlaneMatrix=u,u=a.identity(new Float64Array(16)),a.scale(u,u,[1,-1,1]),a.translate(u,u,[-1,-1,0]),a.scale(u,u,[2/this.width,2/this.height,1]),this.glCoordMatrix=u,this.cameraToSeaLevelDistance=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch);const p=this._elevation<0?this.cameraToCenterDistance:this.cameraToSeaLevelDistance,_=Math.PI/2+this._pitch,x=this._fov*(.5+t.y/this.height),v=Math.sin(x)*p/Math.sin(a.clamp(Math.PI-_-x,.01,Math.PI-.01)),w=this.getHorizon(),I=2*Math.atan(w/this.cameraToCenterDistance)*(.5+t.y/(2*w)),S=Math.sin(I)*p/Math.sin(a.clamp(Math.PI-_-I,.01,Math.PI-.01)),L=Math.min(v,S),$=1.01*(Math.cos(Math.PI/2-this._pitch)*L+p),U=this.height/50;u=new Float64Array(16),a.perspective(u,this._fov,this.width/this.height,U,$),u[8]=2*-t.x/this.width,u[9]=2*t.y/this.height,a.scale(u,u,[1,-1,1]),a.translate(u,u,[0,0,-this.cameraToCenterDistance]),a.rotateX(u,u,this._pitch),a.rotateZ(u,u,this.angle),a.translate(u,u,[-n,-o,0]),this.mercatorMatrix=a.scale([],u,[this.worldSize,this.worldSize,this.worldSize]),a.scale(u,u,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.multiply(new Float64Array(16),this.labelPlaneMatrix,u),a.translate(u,u,[0,0,-this.elevation]),this.projMatrix=u,this.invProjMatrix=a.invert([],u),this.pixelMatrix3D=a.multiply(new Float64Array(16),this.labelPlaneMatrix,u);const V=this.width%2/2,H=this.height%2/2,ee=Math.cos(this.angle),le=Math.sin(this.angle),G=n-Math.round(n)+ee*V+le*H,oe=o-Math.round(o)+ee*H+le*V,ue=new Float64Array(u);if(a.translate(ue,ue,[G>.5?G-1:G,oe>.5?oe-1:oe,0]),this.alignedProjMatrix=ue,u=a.invert(new Float64Array(16),this.pixelMatrix),!u)throw new Error("failed to invert matrix");this.pixelMatrixInverse=u,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const t=this.pointCoordinate(new a.Point(0,0)),n=[t.x*this.worldSize,t.y*this.worldSize,0,1];return a.transformMat4(n,n,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.Point(0,t))}getCameraQueryGeometry(t){const n=this.getCameraPoint();if(t.length===1)return[t[0],n];{let o=n.x,u=n.y,p=n.x,_=n.y;for(const x of t)o=Math.min(o,x.x),u=Math.min(u,x.y),p=Math.max(p,x.x),_=Math.max(_,x.y);return[new a.Point(o,u),new a.Point(p,u),new a.Point(p,_),new a.Point(o,_),new a.Point(o,u)]}}}class _l{constructor(t){this._hashName=t&&encodeURIComponent(t),a.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=function(n,o){let u=!1,p=null;const _=()=>{p=null,u&&(n(),p=setTimeout(_,300),u=!1)};return()=>(u=!0,p||_(),p)}(this._updateHashUnthrottled.bind(this))}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const n=this._map.getCenter(),o=Math.round(100*this._map.getZoom())/100,u=Math.ceil((o*Math.LN2+Math.log(512/360/.5))/Math.LN10),p=Math.pow(10,u),_=Math.round(n.lng*p)/p,x=Math.round(n.lat*p)/p,v=this._map.getBearing(),w=this._map.getPitch();let I="";if(I+=t?`/${_}/${x}/${o}`:`${o}/${x}/${_}`,(v||w)&&(I+="/"+Math.round(10*v)/10),w&&(I+=`/${Math.round(w)}`),this._hashName){const S=this._hashName;let L=!1;const $=window.location.hash.slice(1).split("&").map(U=>{const V=U.split("=")[0];return V===S?(L=!0,`${V}=${I}`):U}).filter(U=>U);return L||$.push(`${S}=${I}`),`#${$.join("&")}`}return`#${I}`}_getCurrentHash(){const t=window.location.hash.replace("#","");if(this._hashName){let n;return t.split("&").map(o=>o.split("=")).forEach(o=>{o[0]===this._hashName&&(n=o)}),(n&&n[1]||"").split("/")}return t.split("/")}_onHashChange(){const t=this._getCurrentHash();if(t.length>=3&&!t.some(n=>isNaN(n))){const n=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:n,pitch:+(t[4]||0)}),!0}return!1}_updateHashUnthrottled(){const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t)}catch{}}}const ms={linearity:.3,easing:a.bezier(0,0,.3,1)},yl=a.extend({deceleration:2500,maxSpeed:1400},ms),vl=a.extend({deceleration:20,maxSpeed:1400},ms),gs=a.extend({deceleration:1e3,maxSpeed:360},ms),xl=a.extend({deceleration:1e3,maxSpeed:90},ms);class yr{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:a.exported.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,n=a.exported.now();for(;t.length>0&&n-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const n={zoom:0,bearing:0,pitch:0,pan:new a.Point(0,0),pinchAround:void 0,around:void 0};for(const{settings:p}of this._inertiaBuffer)n.zoom+=p.zoomDelta||0,n.bearing+=p.bearingDelta||0,n.pitch+=p.pitchDelta||0,p.panDelta&&n.pan._add(p.panDelta),p.around&&(n.around=p.around),p.pinchAround&&(n.pinchAround=p.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,u={};if(n.pan.mag()){const p=_s(n.pan.mag(),o,a.extend({},yl,t||{}));u.offset=n.pan.mult(p.amount/n.pan.mag()),u.center=this._map.transform.center,ir(u,p)}if(n.zoom){const p=_s(n.zoom,o,vl);u.zoom=this._map.transform.zoom+p.amount,ir(u,p)}if(n.bearing){const p=_s(n.bearing,o,gs);u.bearing=this._map.transform.bearing+a.clamp(p.amount,-179,179),ir(u,p)}if(n.pitch){const p=_s(n.pitch,o,xl);u.pitch=this._map.transform.pitch+p.amount,ir(u,p)}if(u.zoom||u.bearing){const p=n.pinchAround===void 0?n.around:n.pinchAround;u.around=p?this._map.unproject(p):this._map.getCenter()}return this.clear(),a.extend(u,{noMoveStart:!0})}}function ir(l,t){(!l.duration||l.durationn.unproject(v)),x=p.reduce((v,w,I,S)=>v.add(w.div(S.length)),new a.Point(0,0));super(t,{points:p,point:x,lngLats:_,lngLat:n.unproject(x),originalEvent:o}),this._defaultPrevented=!1}}class Pc extends a.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,o){super(t,{originalEvent:o}),this._defaultPrevented=!1}}class zc{constructor(t,n){this._map=t,this._clickTolerance=n.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new Pc(t.type,this._map,t))}mousedown(t,n){return this._mousedownPos=n,this._firePreventable(new Qt(t.type,this._map,t))}mouseup(t){this._map.fire(new Qt(t.type,this._map,t))}click(t,n){this._mousedownPos&&this._mousedownPos.dist(n)>=this._clickTolerance||this._map.fire(new Qt(t.type,this._map,t))}dblclick(t){return this._firePreventable(new Qt(t.type,this._map,t))}mouseover(t){this._map.fire(new Qt(t.type,this._map,t))}mouseout(t){this._map.fire(new Qt(t.type,this._map,t))}touchstart(t){return this._firePreventable(new tn(t.type,this._map,t))}touchmove(t){this._map.fire(new tn(t.type,this._map,t))}touchend(t){this._map.fire(new tn(t.type,this._map,t))}touchcancel(t){this._map.fire(new tn(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Lc{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new Qt(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Qt("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new Qt(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Hn{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(t){return this.transform.pointLocation(a.Point.convert(t),this._map.terrain)}}class ys{constructor(t,n){this._map=t,this._tr=new Hn(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=n.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,n){this.isEnabled()&&t.shiftKey&&t.button===0&&(B.disableDrag(),this._startPos=this._lastPos=n,this._active=!0)}mousemoveWindow(t,n){if(!this._active)return;const o=n;if(this._lastPos.equals(o)||!this._box&&o.dist(this._startPos)p.fitScreenCoordinates(o,u,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(B.remove(this._box),this._box=null),B.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,n){return this._map.fire(new a.Event(t,{originalEvent:n}))}}function vr(l,t){if(l.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${l.length}, points ${t.length}`);const n={};for(let o=0;othis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=t.timeStamp),o.length===this.numTouches&&(this.centroid=function(u){const p=new a.Point(0,0);for(const _ of u)p._add(_);return p.div(u.length)}(n),this.touches=vr(o,n)))}touchmove(t,n,o){if(this.aborted||!this.centroid)return;const u=vr(o,n);for(const p in this.touches){const _=u[p];(!_||_.dist(this.touches[p])>30)&&(this.aborted=!0)}}touchend(t,n,o){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),o.length===0){const u=!this.aborted&&this.centroid;if(this.reset(),u)return u}}}class io{constructor(t){this.singleTap=new Ue(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,n,o){this.singleTap.touchstart(t,n,o)}touchmove(t,n,o){this.singleTap.touchmove(t,n,o)}touchend(t,n,o){const u=this.singleTap.touchend(t,n,o);if(u){const p=t.timeStamp-this.lastTime<500,_=!this.lastTap||this.lastTap.dist(u)<30;if(p&&_||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=u,this.count===this.numTaps)return this.reset(),u}}}class vs{constructor(t){this._tr=new Hn(t),this._zoomIn=new io({numTouches:1,numTaps:2}),this._zoomOut=new io({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,n,o){this._zoomIn.touchstart(t,n,o),this._zoomOut.touchstart(t,n,o)}touchmove(t,n,o){this._zoomIn.touchmove(t,n,o),this._zoomOut.touchmove(t,n,o)}touchend(t,n,o){const u=this._zoomIn.touchend(t,n,o),p=this._zoomOut.touchend(t,n,o),_=this._tr;return u?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:x=>x.easeTo({duration:300,zoom:_.zoom+1,around:_.unproject(u)},{originalEvent:t})}):p?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:x=>x.easeTo({duration:300,zoom:_.zoom-1,around:_.unproject(p)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fr{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset()}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t)}_move(...t){const n=this._moveFunction(...t);if(n.bearingDelta||n.pitchDelta||n.around||n.panDelta)return this._active=!0,n}dragStart(t,n){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=n.length?n[0]:n,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,n){if(!this.isEnabled())return;const o=this._lastPoint;if(!o)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const u=n.length?n[0]:n;return!this._moved&&u.dist(o){l.mousedown=l.dragStart,l.mousemoveWindow=l.dragMove,l.mouseup=l.dragEnd,l.contextmenu=function(t){t.preventDefault()}},wl=({enable:l,clickTolerance:t,bearingDegreesPerPixelMoved:n=.8})=>{const o=new ze({checkCorrectEvent:u=>B.mouseButton(u)===0&&u.ctrlKey||B.mouseButton(u)===2});return new Fr({clickTolerance:t,move:(u,p)=>({bearingDelta:(p.x-u.x)*n}),moveStateManager:o,enable:l,assignEvents:ua})},no=({enable:l,clickTolerance:t,pitchDegreesPerPixelMoved:n=-.5})=>{const o=new ze({checkCorrectEvent:u=>B.mouseButton(u)===0&&u.ctrlKey||B.mouseButton(u)===2});return new Fr({clickTolerance:t,move:(u,p)=>({pitchDelta:(p.y-u.y)*n}),moveStateManager:o,enable:l,assignEvents:ua})};class El{constructor(t,n){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=n,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.Point(0,0),setTimeout(()=>{this._cancelCooperativeMessage=!1},200)}touchstart(t,n,o){return this._calculateTransform(t,n,o)}touchmove(t,n,o){if(this._map._cooperativeGestures&&(this._minTouches===2&&o.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,o.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(o.length0&&(this._active=!0);const u=vr(o,n),p=new a.Point(0,0),_=new a.Point(0,0);let x=0;for(const w in u){const I=u[w],S=this._touches[w];S&&(p._add(I),_._add(I.sub(S)),x++,u[w]=I)}if(this._touches=u,xMath.abs(l.x)}class Li extends so{constructor(t){super(),this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,n,o){super.touchstart(t,n,o),this._currentTouchCount=o.length}_start(t){this._lastPoints=t,xs(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,n,o){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const u=t[0].sub(this._lastPoints[0]),p=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(u,p,o.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(u.y+p.y)/2*-.5}):void 0}gestureBeginsVertically(t,n,o){if(this._valid!==void 0)return this._valid;const u=t.mag()>=2,p=n.mag()>=2;if(!u&&!p)return;if(!u||!p)return this._firstMove===void 0&&(this._firstMove=o),o-this._firstMove<100&&void 0;const _=t.y>0==n.y>0;return xs(t)&&xs(n)&&_}}const rn={panStep:100,bearingStep:15,pitchStep:10};class Sl{constructor(t){this._tr=new Hn(t);const n=rn;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let n=0,o=0,u=0,p=0,_=0;switch(t.keyCode){case 61:case 107:case 171:case 187:n=1;break;case 189:case 109:case 173:n=-1;break;case 37:t.shiftKey?o=-1:(t.preventDefault(),p=-1);break;case 39:t.shiftKey?o=1:(t.preventDefault(),p=1);break;case 38:t.shiftKey?u=1:(t.preventDefault(),_=-1);break;case 40:t.shiftKey?u=-1:(t.preventDefault(),_=1);break;default:return}return this._rotationDisabled&&(o=0,u=0),{cameraAnimation:x=>{const v=this._tr;x.easeTo({duration:300,easeId:"keyboardHandler",easing:pa,zoom:n?Math.round(v.zoom)+n*(t.shiftKey?2:1):v.zoom,bearing:v.bearing+o*this._bearingStep,pitch:v.pitch+u*this._pitchStep,offset:[-p*this._panStep,-_*this._panStep],center:v.center},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function pa(l){return l*(2-l)}const lo=4.000244140625;class fa{constructor(t,n){this._map=t,this._tr=new Hn(t),this._el=t.getCanvasContainer(),this._handler=n,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,a.bindAll(["_onTimeout"],this)}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&t.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!t[this._map._metaKey])return;t.preventDefault()}let n=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const o=a.exported.now(),u=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,n!==0&&n%lo==0?this._type="wheel":n!==0&&Math.abs(n)<4?this._type="trackpad":u>400?(this._type=null,this._lastValue=n,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(u*n)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,n+=this._lastValue)),t.shiftKey&&n&&(n/=4),this._type&&(this._lastWheelEvent=t,this._delta-=n,this._active||this._start(t)),t.preventDefault()}_onTimeout(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)}_start(t){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const n=B.mousePos(this._el,t),o=this._tr;this._around=a.LngLat.convert(this._aroundCenter?o.center:o.unproject(n)),this._aroundPoint=o.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const t=this._tr.transform;if(this._delta!==0){const x=this._type==="wheel"&&Math.abs(this._delta)>lo?this._wheelZoomRate:this._defaultZoomRate;let v=2/(1+Math.exp(-Math.abs(this._delta*x)));this._delta<0&&v!==0&&(v=1/v);const w=typeof this._targetZoom=="number"?t.zoomScale(this._targetZoom):t.scale;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(w*v))),this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const n=typeof this._targetZoom=="number"?this._targetZoom:t.zoom,o=this._startZoom,u=this._easing;let p,_=!1;if(this._type==="wheel"&&o&&u){const x=Math.min((a.exported.now()-this._lastWheelEventTime)/200,1),v=u(x);p=a.interpolate.number(o,n,v),x<1?this._frameId||(this._frameId=!0):_=!0}else p=n,_=!0;return this._active=!0,_&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!_,zoomDelta:p-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let n=a.ease;if(this._prevEase){const o=this._prevEase,u=(a.exported.now()-o.start)/o.duration,p=o.easing(u+.01)-o.easing(u),_=.27/Math.sqrt(p*p+1e-4)*.01,x=Math.sqrt(.0729-_*_);n=a.bezier(_,x,.25,1)}return this._prevEase={start:a.exported.now(),duration:t,easing:n},n}reset(){this._active=!1}}class Il{constructor(t,n){this._clickZoom=t,this._tapZoom=n}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class rr{constructor(t){this._tr=new Hn(t),this.reset()}reset(){this._active=!1}dblclick(t,n){return t.preventDefault(),{cameraAnimation:o=>{o.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(n)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Bt{constructor(){this._tap=new io({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()}touchstart(t,n,o){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?o.length>0&&(this._swipePoint=n[0],this._swipeTouch=o[0].identifier):this._tap.touchstart(t,n,o))}touchmove(t,n,o){if(this._tapTime){if(this._swipePoint){if(o[0].identifier!==this._swipeTouch)return;const u=n[0],p=u.y-this._swipePoint.y;return this._swipePoint=u,t.preventDefault(),this._active=!0,{zoomDelta:p/128}}}else this._tap.touchmove(t,n,o)}touchend(t,n,o){this._tapTime?this._swipePoint&&o.length===0&&this.reset():this._tap.touchend(t,n,o)&&(this._tapTime=t.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class co{constructor(t,n,o){this._el=t,this._mousePan=n,this._touchPan=o}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class ma{constructor(t,n,o){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=n,this._mousePitch=o}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Al{constructor(t,n,o,u){this._el=t,this._touchZoom=n,this._touchRotate=o,this._tapDragZoom=u,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const bs=l=>l.zoom||l.drag||l.pitch||l.rotate;class Cl extends a.Event{}function ga(l){return l.panDelta&&l.panDelta.mag()||l.zoomDelta||l.bearingDelta||l.pitchDelta}class xr{constructor(t,n){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new yr(t),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),a.bindAll(["handleEvent","handleWindowEvent"],this);const o=this._el;this._listeners=[[o,"touchstart",{passive:!0}],[o,"touchmove",{passive:!1}],[o,"touchend",void 0],[o,"touchcancel",void 0],[o,"mousedown",void 0],[o,"mousemove",void 0],[o,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[o,"mouseover",void 0],[o,"mouseout",void 0],[o,"dblclick",void 0],[o,"click",void 0],[o,"keydown",{capture:!1}],[o,"keyup",void 0],[o,"wheel",{passive:!1}],[o,"contextmenu",void 0],[window,"blur",void 0]];for(const[u,p,_]of this._listeners)B.addEventListener(u,p,u===document?this.handleWindowEvent:this.handleEvent,_)}destroy(){for(const[t,n,o]of this._listeners)B.removeEventListener(t,n,t===document?this.handleWindowEvent:this.handleEvent,o)}_addDefaultHandlers(t){const n=this._map,o=n.getCanvasContainer();this._add("mapEvent",new zc(n,t));const u=n.boxZoom=new ys(n,t);this._add("boxZoom",u);const p=new vs(n),_=new rr(n);n.doubleClickZoom=new Il(_,p),this._add("tapZoom",p),this._add("clickZoom",_);const x=new Bt;this._add("tapDragZoom",x);const v=n.touchPitch=new Li(n);this._add("touchPitch",v);const w=wl(t),I=no(t);n.dragRotate=new ma(t,w,I),this._add("mouseRotate",w,["mousePitch"]),this._add("mousePitch",I,["mouseRotate"]);const S=(({enable:ee,clickTolerance:le})=>{const G=new ze({checkCorrectEvent:oe=>B.mouseButton(oe)===0&&!oe.ctrlKey});return new Fr({clickTolerance:le,move:(oe,ue)=>({around:ue,panDelta:ue.sub(oe)}),activateOnStart:!0,moveStateManager:G,enable:ee,assignEvents:ua})})(t),L=new El(t,n);n.dragPan=new co(o,S,L),this._add("mousePan",S),this._add("touchPan",L,["touchZoom","touchRotate"]);const $=new da,U=new ha;n.touchZoomRotate=new Al(o,U,$,x),this._add("touchRotate",$,["touchPan","touchZoom"]),this._add("touchZoom",U,["touchPan","touchRotate"]);const V=n.scrollZoom=new fa(n,this);this._add("scrollZoom",V,["mousePan"]);const H=n.keyboard=new Sl(n);this._add("keyboard",H),this._add("blockableMapEvent",new Lc(n));for(const ee of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])t.interactive&&t[ee]&&n[ee].enable(t[ee])}_add(t,n,o){this._handlers.push({handlerName:t,handler:n,allowed:o}),this._handlersById[t]=n}stop(t){if(!this._updatingCamera){for(const{handler:n}of this._handlers)n.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[]}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!bs(this._eventsInProgress)||this.isZooming()}_blockedByActive(t,n,o){for(const u in t)if(u!==o&&(!n||n.indexOf(u)<0))return!0;return!1}handleWindowEvent(t){this.handleEvent(t,`${t.type}Window`)}_getMapTouches(t){const n=[];for(const o of t)this._el.contains(o.target)&&n.push(o);return n}handleEvent(t,n){if(t.type==="blur")return void this.stop(!0);this._updatingCamera=!0;const o=t.type==="renderFrame"?void 0:t,u={needsRenderFrame:!1},p={},_={},x=t.touches,v=x?this._getMapTouches(x):void 0,w=v?B.touchPos(this._el,v):B.mousePos(this._el,t);for(const{handlerName:L,handler:$,allowed:U}of this._handlers){if(!$.isEnabled())continue;let V;this._blockedByActive(_,U,L)?$.reset():$[n||t.type]&&(V=$[n||t.type](t,w,v),this.mergeHandlerResult(u,p,V,L,o),V&&V.needsRenderFrame&&this._triggerRenderFrame()),(V||$.isActive())&&(_[L]=$)}const I={};for(const L in this._previousActiveHandlers)_[L]||(I[L]=o);this._previousActiveHandlers=_,(Object.keys(I).length||ga(u))&&(this._changes.push([u,p,I]),this._triggerRenderFrame()),(Object.keys(_).length||ga(u))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:S}=u;S&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],S(this._map))}mergeHandlerResult(t,n,o,u,p){if(!o)return;a.extend(t,o);const _={handlerName:u,originalEvent:o.originalEvent||p};o.zoomDelta!==void 0&&(n.zoom=_),o.panDelta!==void 0&&(n.drag=_),o.pitchDelta!==void 0&&(n.pitch=_),o.bearingDelta!==void 0&&(n.rotate=_)}_applyChanges(){const t={},n={},o={};for(const[u,p,_]of this._changes)u.panDelta&&(t.panDelta=(t.panDelta||new a.Point(0,0))._add(u.panDelta)),u.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+u.zoomDelta),u.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+u.bearingDelta),u.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+u.pitchDelta),u.around!==void 0&&(t.around=u.around),u.pinchAround!==void 0&&(t.pinchAround=u.pinchAround),u.noInertia&&(t.noInertia=u.noInertia),a.extend(n,p),a.extend(o,_);this._updateMapTransform(t,n,o),this._changes=[]}_updateMapTransform(t,n,o){const u=this._map,p=u._getTransformForUpdate(),_=u.terrain;if(!(ga(t)||_&&this._terrainMovement))return this._fireEvents(n,o,!0);let{panDelta:x,zoomDelta:v,bearingDelta:w,pitchDelta:I,around:S,pinchAround:L}=t;L!==void 0&&(S=L),u._stop(!0),S=S||u.transform.centerPoint;const $=p.pointLocation(x?S.sub(x):S);w&&(p.bearing+=w),I&&(p.pitch+=I),v&&(p.zoom+=v),_?this._terrainMovement||!n.drag&&!n.zoom?n.drag&&this._terrainMovement?p.center=p.pointLocation(p.centerPoint.sub(x)):p.setLocationAtPoint($,S):(this._terrainMovement=!0,p.freezeElevation=!0,p.setLocationAtPoint($,S),this._map.once("moveend",()=>{p.freezeElevation=!1,this._terrainMovement=!1,p.recalculateZoom(u.terrain)})):p.setLocationAtPoint($,S),u._applyUpdatedTransform(p),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,o,!0)}_fireEvents(t,n,o){const u=bs(this._eventsInProgress),p=bs(t),_={};for(const I in t){const{originalEvent:S}=t[I];this._eventsInProgress[I]||(_[`${I}start`]=S),this._eventsInProgress[I]=t[I]}!u&&p&&this._fireEvent("movestart",p.originalEvent);for(const I in _)this._fireEvent(I,_[I]);p&&this._fireEvent("move",p.originalEvent);for(const I in t){const{originalEvent:S}=t[I];this._fireEvent(I,S)}const x={};let v;for(const I in this._eventsInProgress){const{handlerName:S,originalEvent:L}=this._eventsInProgress[I];this._handlersById[S].isActive()||(delete this._eventsInProgress[I],v=n[S]||L,x[`${I}end`]=v)}for(const I in x)this._fireEvent(I,x[I]);const w=bs(this._eventsInProgress);if(o&&(u||p)&&!w){this._updatingCamera=!0;const I=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),S=L=>L!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Cl("renderFrame",{timeStamp:t})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}const uo={extend:(l,...t)=>a.extend(l,...t),run(l){l()},logToElement(l,t=!1,n="log"){const o=window.document.getElementById(n);o&&(t&&(o.innerHTML=""),o.innerHTML+=`
${l}`)}};class je extends a.Evented{constructor(t,n){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=n.bearingSnap,a.bindAll(["_renderFrameCallback"],this),this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(t,n){return this.jumpTo({center:t},n)}panBy(t,n,o){return t=a.Point.convert(t).mult(-1),this.panTo(this.transform.center,a.extend({offset:t},n),o)}panTo(t,n,o){return this.easeTo(a.extend({center:t},n),o)}getZoom(){return this.transform.zoom}setZoom(t,n){return this.jumpTo({zoom:t},n),this}zoomTo(t,n,o){return this.easeTo(a.extend({zoom:t},n),o)}zoomIn(t,n){return this.zoomTo(this.getZoom()+1,t,n),this}zoomOut(t,n){return this.zoomTo(this.getZoom()-1,t,n),this}getBearing(){return this.transform.bearing}setBearing(t,n){return this.jumpTo({bearing:t},n),this}getPadding(){return this.transform.padding}setPadding(t,n){return this.jumpTo({padding:t},n),this}rotateTo(t,n,o){return this.easeTo(a.extend({bearing:t},n),o)}resetNorth(t,n){return this.rotateTo(0,a.extend({duration:1e3},t),n),this}resetNorthPitch(t,n){return this.easeTo(a.extend({bearing:0,pitch:0,duration:1e3},t),n),this}snapToNorth(t,n){return Math.abs(this.getBearing()){if(this._zooming&&(o.zoom=a.interpolate.number(u,v,ye)),this._rotating&&(o.bearing=a.interpolate.number(p,w,ye)),this._pitching&&(o.pitch=a.interpolate.number(_,I,ye)),this._padding&&(o.interpolatePadding(x,S,ye),$=o.centerPoint.add(L)),this.terrain&&!t.freezeElevation&&this._updateElevation(ye),G)o.setLocationAtPoint(G,oe);else{const xe=o.zoomScale(o.zoom-u),we=v>u?Math.min(2,le):Math.max(.5,le),ve=Math.pow(we,1-ye),Re=o.unproject(H.add(ee.mult(ye*ve)).mult(xe));o.setLocationAtPoint(o.renderWorldCopies?Re.wrap():Re,$)}this._applyUpdatedTransform(o),this._fireMoveEvents(n)},ye=>{this.terrain&&this._finalizeElevation(),this._afterEase(n,ye)},t),this}_prepareEase(t,n,o={}){this._moving=!0,n||o.moving||this.fire(new a.Event("movestart",t)),this._zooming&&!o.zooming&&this.fire(new a.Event("zoomstart",t)),this._rotating&&!o.rotating&&this.fire(new a.Event("rotatestart",t)),this._pitching&&!o.pitching&&this.fire(new a.Event("pitchstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.transform.getElevation(t,this.terrain),this.transform.freezeElevation=!0}_updateElevation(t){const n=this.transform.getElevation(this._elevationCenter,this.terrain);if(t<1&&n!==this._elevationTarget){const o=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(o-(n-(o*t+this._elevationStart))/(1-t)),this._elevationTarget=n}this.transform.elevation=a.interpolate.number(this._elevationStart,this._elevationTarget,t)}_finalizeElevation(){this.transform.freezeElevation=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(t){if(!this.transformCameraUpdate)return;const n=t.clone(),{center:o,zoom:u,pitch:p,bearing:_,elevation:x}=this.transformCameraUpdate(n);o&&(n.center=o),u!==void 0&&(n.zoom=u),p!==void 0&&(n.pitch=p),_!==void 0&&(n.bearing=_),x!==void 0&&(n.elevation=x),this.transform.apply(n)}_fireMoveEvents(t){this.fire(new a.Event("move",t)),this._zooming&&this.fire(new a.Event("zoom",t)),this._rotating&&this.fire(new a.Event("rotate",t)),this._pitching&&this.fire(new a.Event("pitch",t))}_afterEase(t,n){if(this._easeId&&n&&this._easeId===n)return;delete this._easeId;const o=this._zooming,u=this._rotating,p=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new a.Event("zoomend",t)),u&&this.fire(new a.Event("rotateend",t)),p&&this.fire(new a.Event("pitchend",t)),this.fire(new a.Event("moveend",t))}flyTo(t,n){if(!t.essential&&a.exported.prefersReducedMotion){const Fe=a.pick(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Fe,n)}this.stop(),t=a.extend({offset:[0,0],speed:1.2,curve:1.42,easing:a.ease},t);const o=this._getTransformForUpdate(),u=this.getZoom(),p=this.getBearing(),_=this.getPitch(),x=this.getPadding(),v="zoom"in t?a.clamp(+t.zoom,o.minZoom,o.maxZoom):u,w="bearing"in t?this._normalizeBearing(t.bearing,p):p,I="pitch"in t?+t.pitch:_,S="padding"in t?t.padding:o.padding,L=o.zoomScale(v-u),$=a.Point.convert(t.offset);let U=o.centerPoint.add($);const V=o.pointLocation(U),H=a.LngLat.convert(t.center||V);this._normalizeCenter(H);const ee=o.project(V),le=o.project(H).sub(ee);let G=t.curve;const oe=Math.max(o.width,o.height),ue=oe/L,ye=le.mag();if("minZoom"in t){const Fe=a.clamp(Math.min(t.minZoom,u,v),o.minZoom,o.maxZoom),_t=oe/o.zoomScale(Fe-u);G=Math.sqrt(_t/ye*2)}const xe=G*G;function we(Fe){const _t=(ue*ue-oe*oe+(Fe?-1:1)*xe*xe*ye*ye)/(2*(Fe?ue:oe)*xe*ye);return Math.log(Math.sqrt(_t*_t+1)-_t)}function ve(Fe){return(Math.exp(Fe)-Math.exp(-Fe))/2}function Re(Fe){return(Math.exp(Fe)+Math.exp(-Fe))/2}const He=we(0);let rt=function(Fe){return Re(He)/Re(He+G*Fe)},Ie=function(Fe){return oe*((Re(He)*(ve(_t=He+G*Fe)/Re(_t))-ve(He))/xe)/ye;var _t},Ye=(we(1)-He)/G;if(Math.abs(ye)<1e-6||!isFinite(Ye)){if(Math.abs(oe-ue)<1e-6)return this.easeTo(t,n);const Fe=uet.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=p!==w,this._pitching=I!==_,this._padding=!o.isPaddingEqual(S),this._prepareEase(n,!1),this.terrain&&this._prepareElevation(H),this._ease(Fe=>{const _t=Fe*Ye,Zt=1/rt(_t);o.zoom=Fe===1?v:u+o.scaleZoom(Zt),this._rotating&&(o.bearing=a.interpolate.number(p,w,Fe)),this._pitching&&(o.pitch=a.interpolate.number(_,I,Fe)),this._padding&&(o.interpolatePadding(x,S,Fe),U=o.centerPoint.add($)),this.terrain&&!t.freezeElevation&&this._updateElevation(Fe);const yt=Fe===1?H:o.unproject(ee.add(le.mult(Ie(_t))).mult(Zt));o.setLocationAtPoint(o.renderWorldCopies?yt.wrap():yt,U),this._applyUpdatedTransform(o),this._fireMoveEvents(n)},()=>{this.terrain&&this._finalizeElevation(),this._afterEase(n)},t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,n){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const o=this._onEaseEnd;delete this._onEaseEnd,o.call(this,n)}if(!t){const o=this.handlers;o&&o.stop(!1)}return this}_ease(t,n,o){o.animate===!1||o.duration===0?(t(1),n()):(this._easeStart=a.exported.now(),this._easeOptions=o,this._onEaseFrame=t,this._onEaseEnd=n,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const t=Math.min((a.exported.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(t,n){t=a.wrap(t,-180,180);const o=Math.abs(t-n);return Math.abs(t-360-n)180?-360:o<-180?360:0}queryTerrainElevation(t){return this.terrain?this.transform.getElevation(a.LngLat.convert(t),this.terrain)-this.transform.elevation:null}}class Ke{constructor(t={}){this.options=t,a.bindAll(["_toggleAttribution","_updateData","_updateCompact","_updateCompactMinimize"],this)}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=B.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=B.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=B.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){B.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(t,n){const o=this._map._getUIString(`AttributionControl.${n}`);t.title=o,t.setAttribute("aria-label",o)}_toggleAttribution(){this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))}_updateData(t){!t||t.sourceDataType!=="metadata"&&t.sourceDataType!=="visibility"&&t.dataType!=="style"&&t.type!=="terrain"||this._updateAttributions()}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map(u=>typeof u!="string"?"":u)):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const u=this._map.style.stylesheet;this.styleOwner=u.owner,this.styleId=u.id}const n=this._map.style.sourceCaches;for(const u in n){const p=n[u];if(p.used||p.usedForTerrain){const _=p.getSource();_.attribution&&t.indexOf(_.attribution)<0&&t.push(_.attribution)}}t=t.filter(u=>String(u).trim()),t.sort((u,p)=>u.length-p.length),t=t.filter((u,p)=>{for(let _=p+1;_=0)return!1;return!0});const o=t.join(" | ");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))}_updateCompactMinimize(){this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")}}class ws{constructor(t={}){this.options=t,a.bindAll(["_updateCompact"],this)}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=B.create("div","maplibregl-ctrl");const n=B.create("a","maplibregl-ctrl-logo");return n.target="_blank",n.rel="noopener nofollow",n.href="https://maplibre.org/",n.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),n.setAttribute("rel","noopener nofollow"),this._container.appendChild(n),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){B.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}_updateCompact(){const t=this._container.children;if(t.length){const n=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&n.classList.add("maplibregl-compact"):n.classList.remove("maplibregl-compact")}}}class _a{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){const n=++this._id;return this._queue.push({callback:t,id:n,cancelled:!1}),n}remove(t){const n=this._currentlyRunning,o=n?this._queue.concat(n):this._queue;for(const u of o)if(u.id===t)return void(u.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const n=this._currentlyRunning=this._queue;this._queue=[];for(const o of n)if(!o.cancelled&&(o.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}const ya={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","TerrainControl.enableTerrain":"Enable terrain","TerrainControl.disableTerrain":"Disable terrain"};var Di=a.createLayout([{name:"a_pos3d",type:"Int16",components:3}]);class kl extends a.Evented{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(t,n){this.sourceCache.update(t,n),this._renderableTilesKeys=[];const o={};for(const u of t.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:n}))o[u.key]=!0,this._renderableTilesKeys.push(u.key),this._tiles[u.key]||(u.posMatrix=new Float64Array(16),a.ortho(u.posMatrix,0,a.EXTENT,0,a.EXTENT,0,1),this._tiles[u.key]=new hn(u,this.tileSize));for(const u in this._tiles)o[u]||delete this._tiles[u]}freeRtt(t){for(const n in this._tiles){const o=this._tiles[n];(!t||o.tileID.equals(t)||o.tileID.isChildOf(t)||t.isChildOf(o.tileID))&&(o.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(t=>this.getTileByID(t))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t){const n={};for(const o of this._renderableTilesKeys){const u=this._tiles[o].tileID;if(u.canonical.equals(t.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16),a.ortho(p.posMatrix,0,a.EXTENT,0,a.EXTENT,0,1),n[o]=p}else if(u.canonical.isChildOf(t.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16);const _=u.canonical.z-t.canonical.z,x=u.canonical.x-(u.canonical.x>>_<<_),v=u.canonical.y-(u.canonical.y>>_<<_),w=a.EXTENT>>_;a.ortho(p.posMatrix,0,w,0,w,0,1),a.translate(p.posMatrix,p.posMatrix,[-x*w,-v*w,0]),n[o]=p}else if(t.canonical.isChildOf(u.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16);const _=t.canonical.z-u.canonical.z,x=t.canonical.x-(t.canonical.x>>_<<_),v=t.canonical.y-(t.canonical.y>>_<<_),w=a.EXTENT>>_;a.ortho(p.posMatrix,0,a.EXTENT,0,a.EXTENT,0,1),a.translate(p.posMatrix,p.posMatrix,[x*w,v*w,0]),a.scale(p.posMatrix,p.posMatrix,[1/2**_,1/2**_,0]),n[o]=p}}return n}getSourceTile(t,n){const o=this.sourceCache._source;let u=t.overscaledZ-this.deltaZoom;if(u>o.maxzoom&&(u=o.maxzoom),u=o.minzoom&&(!p||!p.dem);)p=this.sourceCache.getTileByID(t.scaledTo(u--).key);return p}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter(n=>n.timeAdded>=t)}}class br{constructor(t,n,o){this.painter=t,this.sourceCache=new kl(n),this.options=o,this.exaggeration=typeof o.exaggeration=="number"?o.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(t,n,o,u=a.EXTENT){if(!(n>=0&&n=0&&ot.canonical.z&&(t.canonical.z>=u?p=t.canonical.z-u:a.warnOnce("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const _=t.canonical.x-(t.canonical.x>>p<>p<>8<<4|p>>8,n[_+3]=0;const o=new a.RGBAImage({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(n.buffer)),u=new ht(t,o,t.gl.RGBA,{premultiply:!1});return u.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=u,u}pointCoordinate(t){const n=new Uint8Array(4),o=this.painter.context,u=o.gl;o.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),u.readPixels(t.x,this.painter.height/devicePixelRatio-t.y-1,1,1,u.RGBA,u.UNSIGNED_BYTE,n),o.bindFramebuffer.set(null);const p=n[0]+(n[2]>>4<<8),_=n[1]+((15&n[2])<<8),x=this.coordsIndex[255-n[3]],v=x&&this.sourceCache.getTileByID(x);if(!v)return null;const w=this._coordsTextureSize,I=(1<t.id!==n),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(const n of this._recentlyUsed)if(!this._objects[n].inUse)return this._objects[n];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1}freeAllObjects(){for(const t of this._objects)this.freeObject(t)}isFull(){return!(this._objects.length!t.inUse)===!1}}const Or={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Ut{constructor(t,n){this.painter=t,this.terrain=n,this.pool=new Dc(t.context,30,n.sourceCache.tileSize*n.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,n){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter(o=>!t._layers[o].isHidden(n)),this._coordsDescendingInv={};for(const o in t.sourceCaches){this._coordsDescendingInv[o]={};const u=t.sourceCaches[o].getVisibleCoordinates();for(const p of u){const _=this.terrain.sourceCache.getTerrainCoords(p);for(const x in _)this._coordsDescendingInv[o][x]||(this._coordsDescendingInv[o][x]=[]),this._coordsDescendingInv[o][x].push(_[x])}}this._coordsDescendingInvStr={};for(const o of t._order){const u=t._layers[o],p=u.source;if(Or[u.type]&&!this._coordsDescendingInvStr[p]){this._coordsDescendingInvStr[p]={};for(const _ in this._coordsDescendingInv[p])this._coordsDescendingInvStr[p][_]=this._coordsDescendingInv[p][_].map(x=>x.key).sort().join()}}for(const o of this._renderableTiles)for(const u in this._coordsDescendingInvStr){const p=this._coordsDescendingInvStr[u][o.tileID.key];p&&p!==o.rttCoords[u]&&(o.rtt=[])}}renderLayer(t){if(t.isHidden(this.painter.transform.zoom))return!1;const n=t.type,o=this.painter,u=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(Or[n]&&(this._prevType&&Or[this._prevType]||this._stacks.push([]),this._prevType=n,this._stacks[this._stacks.length-1].push(t.id),!u))return!0;if(Or[this._prevType]||Or[n]&&u){this._prevType=n;const p=this._stacks.length-1,_=this._stacks[p]||[];for(const x of this._renderableTiles){if(this.pool.isFull()&&(la(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(x),x.rtt[p]){const w=this.pool.getObjectForId(x.rtt[p].id);if(w.stamp===x.rtt[p].stamp){this.pool.useObject(w);continue}}const v=this.pool.getOrCreateFreeObject();this.pool.useObject(v),this.pool.stampObject(v),x.rtt[p]={id:v.id,stamp:v.stamp},o.context.bindFramebuffer.set(v.fbo.framebuffer),o.context.clear({color:a.Color.transparent,stencil:0}),o.currentStencilSource=void 0;for(let w=0;w<_.length;w++){const I=o.style._layers[_[w]],S=I.source?this._coordsDescendingInv[I.source][x.tileID.key]:[x.tileID];o.context.viewport.set([0,0,v.fbo.width,v.fbo.height]),o._renderTileClippingMasks(I,S),o.renderLayer(o,o.style.sourceCaches[I.source],I,S),I.source&&(x.rttCoords[I.source]=this._coordsDescendingInvStr[I.source][x.tileID.key])}}return la(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),Or[n]}return!1}}const ei=W,Ml={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:void 0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:a.config.MAX_TILE_CACHE_ZOOM_LEVELS,localIdeographFontFamily:"sans-serif",transformRequest:null,transformCameraUpdate:null,fadeDuration:300,crossSourceCollisions:!0,validateStyle:!0},Xn=l=>{l.touchstart=l.dragStart,l.touchmoveWindow=l.dragMove,l.touchend=l.dragEnd},ho={showCompass:!0,showZoom:!0,visualizePitch:!1};class va{constructor(t,n,o=!1){this._clickTolerance=10;const u=t.dragRotate._mouseRotate.getClickTolerance(),p=t.dragRotate._mousePitch.getClickTolerance();this.element=n,this.mouseRotate=wl({clickTolerance:u,enable:!0}),this.touchRotate=(({enable:_,clickTolerance:x,bearingDegreesPerPixelMoved:v=.8})=>{const w=new ro;return new Fr({clickTolerance:x,move:(I,S)=>({bearingDelta:(S.x-I.x)*v}),moveStateManager:w,enable:_,assignEvents:Xn})})({clickTolerance:u,enable:!0}),this.map=t,o&&(this.mousePitch=no({clickTolerance:p,enable:!0}),this.touchPitch=(({enable:_,clickTolerance:x,pitchDegreesPerPixelMoved:v=-.5})=>{const w=new ro;return new Fr({clickTolerance:x,move:(I,S)=>({pitchDelta:(S.y-I.y)*v}),moveStateManager:w,enable:_,assignEvents:Xn})})({clickTolerance:p,enable:!0})),a.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),B.addEventListener(n,"mousedown",this.mousedown),B.addEventListener(n,"touchstart",this.touchstart,{passive:!1}),B.addEventListener(n,"touchcancel",this.reset)}startMouse(t,n){this.mouseRotate.dragStart(t,n),this.mousePitch&&this.mousePitch.dragStart(t,n),B.disableDrag()}startTouch(t,n){this.touchRotate.dragStart(t,n),this.touchPitch&&this.touchPitch.dragStart(t,n),B.disableDrag()}moveMouse(t,n){const o=this.map,{bearingDelta:u}=this.mouseRotate.dragMove(t,n)||{};if(u&&o.setBearing(o.getBearing()+u),this.mousePitch){const{pitchDelta:p}=this.mousePitch.dragMove(t,n)||{};p&&o.setPitch(o.getPitch()+p)}}moveTouch(t,n){const o=this.map,{bearingDelta:u}=this.touchRotate.dragMove(t,n)||{};if(u&&o.setBearing(o.getBearing()+u),this.touchPitch){const{pitchDelta:p}=this.touchPitch.dragMove(t,n)||{};p&&o.setPitch(o.getPitch()+p)}}off(){const t=this.element;B.removeEventListener(t,"mousedown",this.mousedown),B.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),B.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),B.removeEventListener(window,"touchend",this.touchend),B.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){B.enableDrag(),B.removeEventListener(window,"mousemove",this.mousemove),B.removeEventListener(window,"mouseup",this.mouseup),B.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),B.removeEventListener(window,"touchend",this.touchend)}mousedown(t){this.startMouse(a.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),B.mousePos(this.element,t)),B.addEventListener(window,"mousemove",this.mousemove),B.addEventListener(window,"mouseup",this.mouseup)}mousemove(t){this.moveMouse(t,B.mousePos(this.element,t))}mouseup(t){this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp()}touchstart(t){t.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=B.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),B.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),B.addEventListener(window,"touchend",this.touchend))}touchmove(t){t.targetTouches.length!==1?this.reset():(this._lastPos=B.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos))}touchend(t){t.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)180;){const o=n.locationPoint(l);if(o.x>=0&&o.y>=0&&o.x<=n.width&&o.y<=n.height)break;l.lng>n.center.lng?l.lng-=360:l.lng+=360}return l}const yn={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function fo(l,t,n){const o=l.classList;for(const u in yn)o.remove(`maplibregl-${n}-anchor-${u}`);o.add(`maplibregl-${n}-anchor-${t}`)}class Es extends a.Evented{constructor(t,n){if(super(),(t instanceof HTMLElement||n)&&(t=a.extend({element:t},n)),a.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment!=="auto"?t.pitchAlignment:this._rotationAlignment,t&&t.element)this._element=t.element,this._offset=a.Point.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=B.create("div"),this._element.setAttribute("aria-label","Map marker");const o=B.createNS("http://www.w3.org/2000/svg","svg"),u=41,p=27;o.setAttributeNS(null,"display","block"),o.setAttributeNS(null,"height",`${u}px`),o.setAttributeNS(null,"width",`${p}px`),o.setAttributeNS(null,"viewBox",`0 0 ${p} ${u}`);const _=B.createNS("http://www.w3.org/2000/svg","g");_.setAttributeNS(null,"stroke","none"),_.setAttributeNS(null,"stroke-width","1"),_.setAttributeNS(null,"fill","none"),_.setAttributeNS(null,"fill-rule","evenodd");const x=B.createNS("http://www.w3.org/2000/svg","g");x.setAttributeNS(null,"fill-rule","nonzero");const v=B.createNS("http://www.w3.org/2000/svg","g");v.setAttributeNS(null,"transform","translate(3.0, 29.0)"),v.setAttributeNS(null,"fill","#000000");const w=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(const le of w){const G=B.createNS("http://www.w3.org/2000/svg","ellipse");G.setAttributeNS(null,"opacity","0.04"),G.setAttributeNS(null,"cx","10.5"),G.setAttributeNS(null,"cy","5.80029008"),G.setAttributeNS(null,"rx",le.rx),G.setAttributeNS(null,"ry",le.ry),v.appendChild(G)}const I=B.createNS("http://www.w3.org/2000/svg","g");I.setAttributeNS(null,"fill",this._color);const S=B.createNS("http://www.w3.org/2000/svg","path");S.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),I.appendChild(S);const L=B.createNS("http://www.w3.org/2000/svg","g");L.setAttributeNS(null,"opacity","0.25"),L.setAttributeNS(null,"fill","#000000");const $=B.createNS("http://www.w3.org/2000/svg","path");$.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),L.appendChild($);const U=B.createNS("http://www.w3.org/2000/svg","g");U.setAttributeNS(null,"transform","translate(6.0, 7.0)"),U.setAttributeNS(null,"fill","#FFFFFF");const V=B.createNS("http://www.w3.org/2000/svg","g");V.setAttributeNS(null,"transform","translate(8.0, 8.0)");const H=B.createNS("http://www.w3.org/2000/svg","circle");H.setAttributeNS(null,"fill","#000000"),H.setAttributeNS(null,"opacity","0.25"),H.setAttributeNS(null,"cx","5.5"),H.setAttributeNS(null,"cy","5.5"),H.setAttributeNS(null,"r","5.4999962");const ee=B.createNS("http://www.w3.org/2000/svg","circle");ee.setAttributeNS(null,"fill","#FFFFFF"),ee.setAttributeNS(null,"cx","5.5"),ee.setAttributeNS(null,"cy","5.5"),ee.setAttributeNS(null,"r","5.4999962"),V.appendChild(H),V.appendChild(ee),x.appendChild(v),x.appendChild(I),x.appendChild(L),x.appendChild(U),x.appendChild(V),o.appendChild(x),o.setAttributeNS(null,"height",u*this._scale+"px"),o.setAttributeNS(null,"width",p*this._scale+"px"),this._element.appendChild(o),this._offset=a.Point.convert(t&&t.offset||[0,-14])}this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",o=>{o.preventDefault()}),this._element.addEventListener("mousedown",o=>{o.preventDefault()}),fo(this._element,this._anchor,"marker"),this._popup=null}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),B.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=a.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){const u=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[u,-1*(38.1-13.5+u)],"bottom-right":[-u,-1*(38.1-13.5+u)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}_onKeyPress(t){const n=t.code,o=t.charCode||t.keyCode;n!=="Space"&&n!=="Enter"&&o!==32&&o!==13||this.togglePopup()}_onMapClick(t){const n=t.originalEvent.target,o=this._element;this._popup&&(n===o||o.contains(n))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}_update(t){if(!this._map)return;this._map.transform.renderWorldCopies&&(this._lngLat=po(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let n="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?n=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(n=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let o="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?o="rotateX(0deg)":this._pitchAlignment==="map"&&(o=`rotateX(${this._map.getPitch()}deg)`),t&&t.type!=="moveend"||(this._pos=this._pos.round()),B.setTransform(this._element,`${yn[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${o} ${n}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{const u=this._map.unproject(this._pos),p=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=u.distanceTo(this._lngLat)>20*p?"0.2":"1.0",this._opacityTimeout=null},100))}getOffset(){return this._offset}setOffset(t){return this._offset=a.Point.convert(t),this._update(),this}_onMove(t){if(!this._isDragging){const n=this._clickTolerance||this._map._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=n}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.Event("dragstart"))),this.fire(new a.Event("drag")))}_onUp(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.Event("dragend")),this._state="inactive"}_addDragHandler(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const xa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let Wn=0,vn=!1;const ba={maxWidth:100,unit:"metric"};function mo(l,t,n){const o=n&&n.maxWidth||100,u=l._container.clientHeight/2,p=l.unproject([0,u]),_=l.unproject([o,u]),x=p.distanceTo(_);if(n&&n.unit==="imperial"){const v=3.2808*x;v>5280?xn(t,o,v/5280,l._getUIString("ScaleControl.Miles")):xn(t,o,v,l._getUIString("ScaleControl.Feet"))}else n&&n.unit==="nautical"?xn(t,o,x/1852,l._getUIString("ScaleControl.NauticalMiles")):x>=1e3?xn(t,o,x/1e3,l._getUIString("ScaleControl.Kilometers")):xn(t,o,x,l._getUIString("ScaleControl.Meters"))}function xn(l,t,n,o){const u=function(p){const _=Math.pow(10,`${Math.floor(p)}`.length-1);let x=p/_;return x=x>=10?10:x>=5?5:x>=3?3:x>=2?2:x>=1?1:function(v){const w=Math.pow(10,Math.ceil(-Math.log(v)/Math.LN10));return Math.round(v*w)/w}(x),_*x}(n);l.style.width=t*(u/n)+"px",l.innerHTML=`${u} ${o}`}const go={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},wa=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function _o(l){if(l){if(typeof l=="number"){const t=Math.round(Math.sqrt(.5*Math.pow(l,2)));return{center:new a.Point(0,0),top:new a.Point(0,l),"top-left":new a.Point(t,t),"top-right":new a.Point(-t,t),bottom:new a.Point(0,-l),"bottom-left":new a.Point(t,-t),"bottom-right":new a.Point(-t,-t),left:new a.Point(l,0),right:new a.Point(-l,0)}}if(l instanceof a.Point||Array.isArray(l)){const t=a.Point.convert(l);return{center:t,top:t,"top-left":t,"top-right":t,bottom:t,"bottom-left":t,"bottom-right":t,left:t,right:t}}return{center:a.Point.convert(l.center||[0,0]),top:a.Point.convert(l.top||[0,0]),"top-left":a.Point.convert(l["top-left"]||[0,0]),"top-right":a.Point.convert(l["top-right"]||[0,0]),bottom:a.Point.convert(l.bottom||[0,0]),"bottom-left":a.Point.convert(l["bottom-left"]||[0,0]),"bottom-right":a.Point.convert(l["bottom-right"]||[0,0]),left:a.Point.convert(l.left||[0,0]),right:a.Point.convert(l.right||[0,0])}}return _o(new a.Point(0,0))}const yo=W,vo={setRTLTextPlugin:a.setRTLTextPlugin,getRTLTextPluginStatus:a.getRTLTextPluginStatus,Map:class extends je{constructor(l){var t;if(a.PerformanceUtils.mark(a.PerformanceMarkers.create),(l=a.extend({},Ml,l)).minZoom!=null&&l.maxZoom!=null&&l.minZoom>l.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(l.minPitch!=null&&l.maxPitch!=null&&l.minPitch>l.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(l.minPitch!=null&&l.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(l.maxPitch!=null&&l.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new to(l.minZoom,l.maxZoom,l.minPitch,l.maxPitch,l.renderWorldCopies),{bearingSnap:l.bearingSnap}),this._interactive=l.interactive,this._cooperativeGestures=l.cooperativeGestures,this._metaKey=navigator.platform.indexOf("Mac")===0?"metaKey":"ctrlKey",this._maxTileCacheSize=l.maxTileCacheSize,this._maxTileCacheZoomLevels=l.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=l.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=l.preserveDrawingBuffer,this._antialias=l.antialias,this._trackResize=l.trackResize,this._bearingSnap=l.bearingSnap,this._refreshExpiredTiles=l.refreshExpiredTiles,this._fadeDuration=l.fadeDuration,this._crossSourceCollisions=l.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=l.collectResourceTiming,this._renderTaskQueue=new _a,this._controls=[],this._mapId=a.uniqueId(),this._locale=a.extend({},ya,l.locale),this._clickTolerance=l.clickTolerance,this._pixelRatio=(t=l.pixelRatio)!==null&&t!==void 0?t:devicePixelRatio,this.transformCameraUpdate=l.transformCameraUpdate,this._imageQueueHandle=Je.addThrottleControl(()=>this.isMoving()),this._requestManager=new Ge(l.transformRequest),typeof l.container=="string"){if(this._container=document.getElementById(l.container),!this._container)throw new Error(`Container '${l.container}' not found.`)}else{if(!(l.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=l.container}if(l.maxBounds&&this.setMaxBounds(l.maxBounds),a.bindAll(["_onWindowOnline","_onMapScroll","_cooperativeGesturesOnWheel","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),this.on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once("idle",()=>{this._idleTriggered=!0}),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let n=!1;this._resizeObserver=new ResizeObserver(o=>{n?this._trackResize&&this.resize(o)._update():n=!0}),this._resizeObserver.observe(this._container)}this.handlers=new xr(this,l),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=l.hash&&new _l(typeof l.hash=="string"&&l.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:l.center,zoom:l.zoom,bearing:l.bearing,pitch:l.pitch}),l.bounds&&(this.resize(),this.fitBounds(l.bounds,a.extend({},l.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=l.localIdeographFontFamily,this._validateStyle=l.validateStyle,l.style&&this.setStyle(l.style,{localIdeographFontFamily:l.localIdeographFontFamily}),l.attributionControl&&this.addControl(new Ke({customAttribution:l.customAttribution})),l.maplibreLogo&&this.addControl(new ws,l.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",n=>{this._update(n.dataType==="style"),this.fire(new a.Event(`${n.dataType}data`,n))}),this.on("dataloading",n=>{this.fire(new a.Event(`${n.dataType}dataloading`,n))}),this.on("dataabort",n=>{this.fire(new a.Event("sourcedataabort",n))})}_getMapId(){return this._mapId}addControl(l,t){if(t===void 0&&(t=l.getDefaultPosition?l.getDefaultPosition():"top-right"),!l||!l.onAdd)return this.fire(new a.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const n=l.onAdd(this);this._controls.push(l);const o=this._controlPositions[t];return t.indexOf("bottom")!==-1?o.insertBefore(n,o.firstChild):o.appendChild(n),this}removeControl(l){if(!l||!l.onRemove)return this.fire(new a.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const t=this._controls.indexOf(l);return t>-1&&this._controls.splice(t,1),l.onRemove(this),this}hasControl(l){return this._controls.indexOf(l)>-1}calculateCameraOptionsFromTo(l,t,n,o){return o==null&&this.terrain&&(o=this.transform.getElevation(n,this.terrain)),super.calculateCameraOptionsFromTo(l,t,n,o)}resize(l){var t;const n=this._containerDimensions(),o=n[0],u=n[1];this._resizeCanvas(o,u,this.getPixelRatio()),this.transform.resize(o,u),(t=this._requestedCameraState)===null||t===void 0||t.resize(o,u),this.painter.resize(o,u,this.getPixelRatio());const p=!this._moving;return p&&(this.stop(),this.fire(new a.Event("movestart",l)).fire(new a.Event("move",l))),this.fire(new a.Event("resize",l)),p&&this.fire(new a.Event("moveend",l)),this}getPixelRatio(){return this._pixelRatio}setPixelRatio(l){const[t,n]=this._containerDimensions();this._pixelRatio=l,this._resizeCanvas(t,n,l),this.painter.resize(t,n,l)}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(l){return this.transform.setMaxBounds(pi.convert(l)),this._update()}setMinZoom(l){if((l=l??-2)>=-2&&l<=this.transform.maxZoom)return this.transform.minZoom=l,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=l,this._update(),this.getZoom()>l&&this.setZoom(l),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(l){if((l=l??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(l>=0&&l<=this.transform.maxPitch)return this.transform.minPitch=l,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(l>=this.transform.minPitch)return this.transform.maxPitch=l,this._update(),this.getPitch()>l&&this.setPitch(l),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(l){return this.transform.renderWorldCopies=l,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(l){return this._cooperativeGestures=l,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(l){return this.transform.locationPoint(a.LngLat.convert(l),this.style&&this.terrain)}unproject(l){return this.transform.pointLocation(a.Point.convert(l),this.terrain)}isMoving(){var l;return this._moving||((l=this.handlers)===null||l===void 0?void 0:l.isMoving())}isZooming(){var l;return this._zooming||((l=this.handlers)===null||l===void 0?void 0:l.isZooming())}isRotating(){var l;return this._rotating||((l=this.handlers)===null||l===void 0?void 0:l.isRotating())}_createDelegatedListener(l,t,n){if(l==="mouseenter"||l==="mouseover"){let o=!1;return{layer:t,listener:n,delegates:{mousemove:p=>{const _=this.getLayer(t)?this.queryRenderedFeatures(p.point,{layers:[t]}):[];_.length?o||(o=!0,n.call(this,new Qt(l,this,p.originalEvent,{features:_}))):o=!1},mouseout:()=>{o=!1}}}}if(l==="mouseleave"||l==="mouseout"){let o=!1;return{layer:t,listener:n,delegates:{mousemove:_=>{(this.getLayer(t)?this.queryRenderedFeatures(_.point,{layers:[t]}):[]).length?o=!0:o&&(o=!1,n.call(this,new Qt(l,this,_.originalEvent)))},mouseout:_=>{o&&(o=!1,n.call(this,new Qt(l,this,_.originalEvent)))}}}}{const o=u=>{const p=this.getLayer(t)?this.queryRenderedFeatures(u.point,{layers:[t]}):[];p.length&&(u.features=p,n.call(this,u),delete u.features)};return{layer:t,listener:n,delegates:{[l]:o}}}}on(l,t,n){if(n===void 0)return super.on(l,t);const o=this._createDelegatedListener(l,t,n);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[l]=this._delegatedListeners[l]||[],this._delegatedListeners[l].push(o);for(const u in o.delegates)this.on(u,o.delegates[u]);return this}once(l,t,n){if(n===void 0)return super.once(l,t);const o=this._createDelegatedListener(l,t,n);for(const u in o.delegates)this.once(u,o.delegates[u]);return this}off(l,t,n){return n===void 0?super.off(l,t):(this._delegatedListeners&&this._delegatedListeners[l]&&(o=>{const u=this._delegatedListeners[l];for(let p=0;pthis._updateStyle(l,t));const n=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!l)),l?(this.style=new gi(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof l=="string"?this.style.loadURL(l,t,n):this.style.loadJSON(l,t,n),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new gi(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(l,t){if(typeof l=="string"){const n=this._requestManager.transformRequest(l,Ae.Style);a.getJSON(n,(o,u)=>{o?this.fire(new a.ErrorEvent(o)):u&&this._updateDiff(u,t)})}else typeof l=="object"&&this._updateDiff(l,t)}_updateDiff(l,t){try{this.style.setState(l,t)&&this._update(!0)}catch(n){a.warnOnce(`Unable to perform style diff: ${n.message||n.error||n}. Rebuilding the style from scratch.`),this._updateStyle(l,t)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.warnOnce("There is no style added to the map.")}addSource(l,t){return this._lazyInitEmptyStyle(),this.style.addSource(l,t),this._update(!0)}isSourceLoaded(l){const t=this.style&&this.style.sourceCaches[l];if(t!==void 0)return t.loaded();this.fire(new a.ErrorEvent(new Error(`There is no source with ID '${l}'`)))}setTerrain(l){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),l){const t=this.style.sourceCaches[l.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${l.source}`);for(const n in this.style._layers){const o=this.style._layers[n];o.type==="hillshade"&&o.source===l.source&&a.warnOnce("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new br(this.painter,t,l),this.painter.renderToTexture=new Ut(this.painter,this.terrain),this.transform.updateElevation(this.terrain),this._terrainDataCallback=n=>{n.dataType==="style"?this.terrain.sourceCache.freeRtt():n.dataType==="source"&&n.tile&&(n.sourceId===l.source&&this.transform.updateElevation(this.terrain),this.terrain.sourceCache.freeRtt(n.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.updateElevation(this.terrain);return this.fire(new a.Event("terrain",{terrain:l})),this}getTerrain(){return this.terrain&&this.terrain.options}areTilesLoaded(){const l=this.style&&this.style.sourceCaches;for(const t in l){const n=l[t]._tiles;for(const o in n){const u=n[o];if(u.state!=="loaded"&&u.state!=="errored")return!1}}return!0}addSourceType(l,t,n){return this._lazyInitEmptyStyle(),this.style.addSourceType(l,t,n)}removeSource(l){return this.style.removeSource(l),this._update(!0)}getSource(l){return this.style.getSource(l)}addImage(l,t,{pixelRatio:n=1,sdf:o=!1,stretchX:u,stretchY:p,content:_}={}){if(this._lazyInitEmptyStyle(),t instanceof HTMLImageElement||a.isImageBitmap(t)){const{width:x,height:v,data:w}=a.exported.getImageData(t);this.style.addImage(l,{data:new a.RGBAImage({width:x,height:v},w),pixelRatio:n,stretchX:u,stretchY:p,content:_,sdf:o,version:0})}else{if(t.width===void 0||t.height===void 0)return this.fire(new a.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{const{width:x,height:v,data:w}=t,I=t;this.style.addImage(l,{data:new a.RGBAImage({width:x,height:v},new Uint8Array(w)),pixelRatio:n,stretchX:u,stretchY:p,content:_,sdf:o,version:0,userImage:I}),I.onAdd&&I.onAdd(this,l)}}}updateImage(l,t){const n=this.style.getImage(l);if(!n)return this.fire(new a.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const o=t instanceof HTMLImageElement||a.isImageBitmap(t)?a.exported.getImageData(t):t,{width:u,height:p,data:_}=o;if(u===void 0||p===void 0)return this.fire(new a.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(u!==n.data.width||p!==n.data.height)return this.fire(new a.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image")));const x=!(t instanceof HTMLImageElement||a.isImageBitmap(t));n.data.replace(_,x),this.style.updateImage(l,n)}getImage(l){return this.style.getImage(l)}hasImage(l){return l?!!this.style.getImage(l):(this.fire(new a.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(l){this.style.removeImage(l)}loadImage(l,t){Je.getImage(this._requestManager.transformRequest(l,Ae.Image),t)}listImages(){return this.style.listImages()}addLayer(l,t){return this._lazyInitEmptyStyle(),this.style.addLayer(l,t),this._update(!0)}moveLayer(l,t){return this.style.moveLayer(l,t),this._update(!0)}removeLayer(l){return this.style.removeLayer(l),this._update(!0)}getLayer(l){return this.style.getLayer(l)}setLayerZoomRange(l,t,n){return this.style.setLayerZoomRange(l,t,n),this._update(!0)}setFilter(l,t,n={}){return this.style.setFilter(l,t,n),this._update(!0)}getFilter(l){return this.style.getFilter(l)}setPaintProperty(l,t,n,o={}){return this.style.setPaintProperty(l,t,n,o),this._update(!0)}getPaintProperty(l,t){return this.style.getPaintProperty(l,t)}setLayoutProperty(l,t,n,o={}){return this.style.setLayoutProperty(l,t,n,o),this._update(!0)}getLayoutProperty(l,t){return this.style.getLayoutProperty(l,t)}setGlyphs(l,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(l,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(l,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(l,t,n,o=>{o||this._update(!0)}),this}removeSprite(l){return this._lazyInitEmptyStyle(),this.style.removeSprite(l),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(l,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(l,t,n=>{n||this._update(!0)}),this}setLight(l,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(l,t),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(l,t){return this.style.setFeatureState(l,t),this._update()}removeFeatureState(l,t){return this.style.removeFeatureState(l,t),this._update()}getFeatureState(l){return this.style.getFeatureState(l)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let l=0,t=0;return this._container&&(l=this._container.clientWidth||400,t=this._container.clientHeight||300),[l,t]}_setupContainer(){const l=this._container;l.classList.add("maplibregl-map");const t=this._canvasContainer=B.create("div","maplibregl-canvas-container",l);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=B.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map"),this._canvas.setAttribute("role","region");const n=this._containerDimensions();this._resizeCanvas(n[0],n[1],this.getPixelRatio());const o=this._controlContainer=B.create("div","maplibregl-control-container",l),u=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(p=>{u[p]=B.create("div",`maplibregl-ctrl-${p} `,o)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_cooperativeGesturesOnWheel(l){this._onCooperativeGesture(l,l[this._metaKey],1)}_setupCooperativeGestures(){this._cooperativeGesturesScreen=B.create("div","maplibregl-cooperative-gesture-screen",this._container);let l=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";navigator.platform.indexOf("Mac")===0&&(l=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use ⌘ + scroll to zoom the map"),this._cooperativeGesturesScreen.innerHTML=`
${l}
${typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}
- `,this._canvasContainer.addEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add("maplibregl-cooperative-gestures")}_destroyCooperativeGestures(){B.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove("maplibregl-cooperative-gestures")}_resizeCanvas(l,t,n){this._canvas.width=n*l,this._canvas.height=n*t,this._canvas.style.width=`${l}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const l={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let t=null;this._canvas.addEventListener("webglcontextcreationerror",o=>{t={requestedAttributes:l},o&&(t.statusMessage=o.statusMessage,t.type=o.type)},{once:!0});const n=this._canvas.getContext("webgl2",l)||this._canvas.getContext("webgl",l);if(!n){const o="Failed to initialize WebGL";throw t?(t.message=o,new Error(JSON.stringify(t))):new Error(o)}this.painter=new gl(n,this.transform),he.testSupport(n)}_contextLost(l){l.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new a.Event("webglcontextlost",{originalEvent:l}))}_contextRestored(l){this._setupPainter(),this.resize(),this._update(),this.fire(new a.Event("webglcontextrestored",{originalEvent:l}))}_onMapScroll(l){if(l.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}_onCooperativeGesture(l,t,n){return!t&&n<2&&(this._cooperativeGesturesScreen.classList.add("maplibregl-show"),setTimeout(()=>{this._cooperativeGesturesScreen.classList.remove("maplibregl-show")},100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(l){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||l,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(l){return this._update(),this._renderTaskQueue.add(l)}_cancelRenderFrame(l){this._renderTaskQueue.remove(l)}_render(l){const t=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(l),this._removed)return;let n=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const u=this.transform.zoom,p=a.exported.now();this.style.zoomHistory.update(u,p);const _=new a.EvaluationParameters(u,{now:p,fadeDuration:t,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),x=_.crossFadingFactor();x===1&&x===this._crossFadingFactor||(n=!0,this._crossFadingFactor=x),this.style.update(_)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain&&this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.updateElevation(this.terrain),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,t,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:t,showPadding:this.showPadding}),this.fire(new a.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.PerformanceUtils.mark(a.PerformanceMarkers.load),this.fire(new a.Event("load"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const o=this._sourcesDirty||this._styleDirty||this._placementDirty;return o||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.Event("idle")),!this._loaded||this._fullyLoaded||o||(this._fullyLoaded=!0,a.PerformanceUtils.mark(a.PerformanceMarkers.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var l;this._hash&&this._hash.remove();for(const n of this._controls)n.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),Je.removeThrottleControl(this._imageQueueHandle),(l=this._resizeObserver)===null||l===void 0||l.disconnect();const t=this.painter.context.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),B.remove(this._canvasContainer),B.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove("maplibregl-map"),a.PerformanceUtils.clearMetrics(),this._removed=!0,this.fire(new a.Event("remove"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=a.exported.frame(l=>{a.PerformanceUtils.frame(l),this._frame=null,this._render(l)}))}_onWindowOnline(){this._update()}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(l){this._showTileBoundaries!==l&&(this._showTileBoundaries=l,this._update())}get showPadding(){return!!this._showPadding}set showPadding(l){this._showPadding!==l&&(this._showPadding=l,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(l){this._showCollisionBoxes!==l&&(this._showCollisionBoxes=l,l?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(l){this._showOverdrawInspector!==l&&(this._showOverdrawInspector=l,this._update())}get repaint(){return!!this._repaint}set repaint(l){this._repaint!==l&&(this._repaint=l,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(l){this._vertices=l,this._update()}get version(){return ei}getCameraTargetElevation(){return this.transform.elevation}},NavigationControl:class{constructor(l){this.options=a.extend({},ho,l),this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(a.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",t=>this._map.zoomIn({},{originalEvent:t})),B.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",t=>this._map.zoomOut({},{originalEvent:t})),B.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(a.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("maplibregl-ctrl-compass",t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})}),this._compassIcon=B.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const l=this._map.getZoom(),t=l===this._map.getMaxZoom(),n=l===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=n,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",n.toString())}_rotateCompassArrow(){const l=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=l}onAdd(l){return this._map=l,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new va(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){B.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(l,t){const n=B.create("button",l,this._container);return n.type="button",n.addEventListener("click",t),n}_setButtonTitle(l,t){const n=this._map._getUIString(`NavigationControl.${t}`);l.title=n,l.setAttribute("aria-label",n)}},GeolocateControl:class extends a.Evented{constructor(l){super(),this.options=a.extend({},xa,l),a.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),function(t,n=!1){wr===void 0||n?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:"geolocation"}).then(o=>{wr=o.state!=="denied",t(wr)}).catch(()=>{wr=!!window.navigator.geolocation,t(wr)}):(wr=!!window.navigator.geolocation,t(wr)):t(wr)}(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),B.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Wn=0,vn=!1}_isOutOfMapMaxBounds(l){const t=this._map.getMaxBounds(),n=l.coords;return t&&(n.longitudet.getEast()||n.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_onSuccess(l){if(this._map){if(this._isOutOfMapMaxBounds(l))return this._setErrorState(),this.fire(new a.Event("outofmaxbounds",l)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=l,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(l),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(l),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.Event("geolocate",l)),this._finish()}}_updateCamera(l){const t=new a.LngLat(l.coords.longitude,l.coords.latitude),n=l.coords.accuracy,o=this._map.getBearing(),u=a.extend({bearing:o},this.options.fitBoundsOptions),p=pi.fromLngLat(t,n);this._map.fitBounds(p,u,{geolocateSource:!0})}_updateMarker(l){if(l){const t=new a.LngLat(l.coords.longitude,l.coords.latitude);this._accuracyCircleMarker.setLngLat(t).addTo(this._map),this._userLocationDotMarker.setLngLat(t).addTo(this._map),this._accuracy=l.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const l=this._map.getBounds(),t=l.getSouthEast(),n=l.getNorthEast(),o=t.distanceTo(n),u=Math.ceil(this._accuracy/(o/this._map._container.clientHeight)*2);this._circleElement.style.width=`${u}px`,this._circleElement.style.height=`${u}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_onError(l){if(this._map){if(this.options.trackUserLocation)if(l.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(l.code===3&&vn)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.Event("error",l)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(l){if(this._map){if(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=B.create("button","maplibregl-ctrl-geolocate",this._container),B.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",l===!1){a.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}else{const t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=B.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Es(this._dotElement),this._circleElement=B.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Es({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",t=>{t.geolocateSource||this._watchState!=="ACTIVE_LOCK"||t.originalEvent&&t.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.Event("trackuserlocationend")))})}}trigger(){if(!this._setup)return a.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Wn--,vn=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.Event("trackuserlocationstart"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let l;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Wn++,Wn>1?(l={maximumAge:6e5,timeout:0},vn=!0):(l=this.options.positionOptions,vn=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,l)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:Ke,LogoControl:ws,ScaleControl:class{constructor(l){this.options=a.extend({},ba,l),a.bindAll(["_onMove","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_onMove(){mo(this._map,this._container,this.options)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-scale",l.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){B.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}setUnit(l){this.options.unit=l,mo(this._map,this._container,this.options)}},FullscreenControl:class extends a.Evented{constructor(l={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,l&&l.container&&(l.container instanceof HTMLElement?this._container=l.container:a.warnOnce("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(l){return this._map=l,this._container||(this._container=this._map.getContainer()),this._controlContainer=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){B.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const l=this._fullscreenButton=B.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);B.create("span","maplibregl-ctrl-icon",l).setAttribute("aria-hidden","true"),l.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const l=this._getTitle();this._fullscreenButton.setAttribute("aria-label",l),this._fullscreenButton.title=l}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.Event("fullscreenstart")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new a.Event("fullscreenend")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},TerrainControl:class{constructor(l){this.options=l,a.bindAll(["_toggleTerrain","_updateTerrainIcon"],this)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=B.create("button","maplibregl-ctrl-terrain",this._container),B.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){B.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}_toggleTerrain(){this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()}_updateTerrainIcon(){this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"))}},Popup:class extends a.Evented{constructor(l){super(),this.options=a.extend(Object.create(go),l),a.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}addTo(l){return this._map&&this.remove(),this._map=l,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.Event("open")),this}isOpen(){return!!this._map}remove(){return this._content&&B.remove(this._content),this._container&&(B.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new a.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(l){return this._lngLat=a.LngLat.convert(l),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(l){return this.setDOMContent(document.createTextNode(l))}setHTML(l){const t=document.createDocumentFragment(),n=document.createElement("body");let o;for(n.innerHTML=l;o=n.firstChild,o;)t.appendChild(o);return this.setDOMContent(t)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(l){return this.options.maxWidth=l,this._update(),this}setDOMContent(l){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=B.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(l),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(l){this._container&&this._container.classList.add(l)}removeClassName(l){this._container&&this._container.classList.remove(l)}setOffset(l){return this.options.offset=l,this._update(),this}toggleClassName(l){if(this._container)return this._container.classList.toggle(l)}_createCloseButton(){this.options.closeButton&&(this._closeButton=B.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_onMouseUp(l){this._update(l.point)}_onMouseMove(l){this._update(l.point)}_onDrag(l){this._update(l.point)}_update(l){if(!this._map||!this._lngLat&&!this._trackPointer||!this._content||(this._container||(this._container=B.create("div","maplibregl-popup",this._map.getContainer()),this._tip=B.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(p=>this._container.classList.add(p)),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=po(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!l))return;const t=this._pos=this._trackPointer&&l?l:this._map.project(this._lngLat);let n=this.options.anchor;const o=_o(this.options.offset);if(!n){const p=this._container.offsetWidth,_=this._container.offsetHeight;let x;x=t.y+o.bottom.y<_?["top"]:t.y>this._map.transform.height-_?["bottom"]:[],t.x

this._map.transform.width-p/2&&x.push("right"),n=x.length===0?"bottom":x.join("-")}const u=t.add(o[n]).round();B.setTransform(this._container,`${yn[n]} translate(${u.x}px,${u.y}px)`),fo(this._container,n,"popup")}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const l=this._container.querySelector(wa);l&&l.focus()}_onClose(){this.remove()}},Marker:Es,Style:gi,LngLat:a.LngLat,LngLatBounds:pi,Point:a.Point,MercatorCoordinate:a.MercatorCoordinate,Evented:a.Evented,AJAXError:a.AJAXError,config:a.config,CanvasSource:de,GeoJSONSource:Pr,ImageSource:Ji,RasterDEMTileSource:Xr,RasterTileSource:un,VectorTileSource:Ln,VideoSource:Dn,prewarm:function(){Rn().acquire(pn)},clearPrewarmedResources:function(){const l=yi;l&&(l.isPreloaded()&&l.numActive()===1?(l.release(pn),yi=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get version(){return yo},get workerCount(){return Te.workerCount},set workerCount(l){Te.workerCount=l},get maxParallelImageRequests(){return a.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(l){a.config.MAX_PARALLEL_IMAGE_REQUESTS=l},get workerUrl(){return a.config.WORKER_URL},set workerUrl(l){a.config.WORKER_URL=l},addProtocol(l,t){a.config.REGISTERED_PROTOCOLS[l]=t},removeProtocol(l){delete a.config.REGISTERED_PROTOCOLS[l]}};return uo.extend(vo,{isSafari:a.isSafari,getPerformanceMetrics:a.PerformanceUtils.getPerformanceMetrics}),vo});var Z=R;return Z})})(qd);var Gd=qd.exports;const Qg=Cm(Gd);function km(f){let g,b,C,R;return{c(){g=Ir("p"),b=Ir("span"),b.textContent="Error:",C=rc(),R=Ro(f[0]),Si(b,"class","govuk-visually-hidden"),Si(g,"class","govuk-error-message")},m(F,Z){ks(F,g,Z),fr(g,b),fr(g,C),fr(g,R)},p(F,[Z]){Z&1&&Bu(R,F[0])},i:Gr,o:Gr,d(F){F&&kn(g)}}}function Mm(f,g,b){let{errorMessage:C}=g;return f.$$set=R=>{"errorMessage"in R&&b(0,C=R.errorMessage)},[C]}class e_ extends Ps{constructor(g){super(),Ms(this,g,Mm,km,is,{errorMessage:0})}}function Pm(f){let g,b,C,R,F;const Z=f[3].default,a=uc(Z,f,f[2],null);return{c(){g=Ir("div"),b=Ir("label"),C=Ro(f[0]),R=rc(),a&&a.c(),Si(b,"class","govuk-label"),Si(b,"for",f[1]),Si(g,"class","govuk-form-group")},m(W,B){ks(W,g,B),fr(g,b),fr(b,C),fr(g,R),a&&a.m(g,null),F=!0},p(W,[B]){(!F||B&1)&&Bu(C,W[0]),(!F||B&2)&&Si(b,"for",W[1]),a&&a.p&&(!F||B&4)&&dc(a,Z,W,W[2],F?hc(Z,W[2],B,null):pc(W[2]),null)},i(W){F||(jr(a,W),F=!0)},o(W){Cn(a,W),F=!1},d(W){W&&kn(g),a&&a.d(W)}}}function zm(f,g,b){let{$$slots:C={},$$scope:R}=g,{label:F}=g,{id:Z}=g;return f.$$set=a=>{"label"in a&&b(0,F=a.label),"id"in a&&b(1,Z=a.id),"$$scope"in a&&b(2,R=a.$$scope)},[F,Z,R,C]}class Lm extends Ps{constructor(g){super(),Ms(this,g,zm,Pm,is,{label:0,id:1})}}function Dm(f){let g,b,C,R;const F=f[2].default,Z=uc(F,f,f[1],null);let a=[{type:"button"},{class:"govuk-button govuk-button--secondary"},{"data-module":"govuk-button"},f[0]],W={};for(let B=0;B{b(0,g=ic(ic({},g),Id(Z))),"$$scope"in Z&&b(1,R=Z.$$scope)},g=Id(g),[g,R,C,F]}class Rm extends Ps{constructor(g){super(),Ms(this,g,Bm,Dm,is,{})}}function Pd(f){let g,b;return g=new Rm({props:{$$slots:{default:[Fm]},$$scope:{ctx:f}}}),g.$on("click",f[5]),{c(){$d(g.$$.fragment)},m(C,R){Ru(g,C,R),b=!0},p(C,R){const F={};R&128&&(F.$$scope={dirty:R,ctx:C}),g.$set(F)},i(C){b||(jr(g.$$.fragment,C),b=!0)},o(C){Cn(g.$$.fragment,C),b=!1},d(C){Fu(g,C)}}}function Fm(f){let g;return{c(){g=Ro("X")},m(b,C){ks(b,g,C)},d(b){b&&kn(g)}}}function Om(f){let g,b,C,R,F,Z,a,W,B,he,se=f[2]&&Pd(f);const ke=f[4].default,Pe=uc(ke,f,f[7],null);return{c(){g=Ir("div"),b=Ir("div"),C=Ir("div"),R=Ir("h1"),F=Ro(f[1]),Z=rc(),se&&se.c(),a=rc(),Pe&&Pe.c(),Si(R,"class","govuk-heading-l"),Cd(C,"display","flex"),Cd(C,"justify-content","space-between"),Si(b,"class","content centered-fullscreen svelte-stcgp5"),Si(g,"class","background svelte-stcgp5"),ec(g,"open",f[0]),ec(g,"closed",!f[0])},m(fe,Le){ks(fe,g,Le),fr(g,b),fr(b,C),fr(C,R),fr(R,F),fr(C,Z),se&&se.m(C,null),fr(b,a),Pe&&Pe.m(b,null),W=!0,B||(he=[nc(b,"click",Wf(Um)),nc(g,"click",f[6])],B=!0)},p(fe,[Le]){(!W||Le&2)&&Bu(F,fe[1]),fe[2]?se?(se.p(fe,Le),Le&4&&jr(se,1)):(se=Pd(fe),se.c(),jr(se,1),se.m(C,null)):se&&(hm(),Cn(se,1,1,()=>{se=null}),dm()),Pe&&Pe.p&&(!W||Le&128)&&dc(Pe,ke,fe,fe[7],W?hc(ke,fe[7],Le,null):pc(fe[7]),null),(!W||Le&1)&&ec(g,"open",fe[0]),(!W||Le&1)&&ec(g,"closed",!fe[0])},i(fe){W||(jr(se),jr(Pe,fe),W=!0)},o(fe){Cn(se),Cn(Pe,fe),W=!1},d(fe){fe&&kn(g),se&&se.d(),Pe&&Pe.d(fe),B=!1,ts(he)}}}const Um=()=>null;function Vm(f,g,b){let{$$slots:C={},$$scope:R}=g,{title:F}=g,{open:Z=!1}=g,{displayEscapeButton:a=!0}=g,{canCloseByClickingBackground:W=!0}=g;const B=()=>b(0,Z=!1),he=()=>{W&&b(0,Z=!1)};return f.$$set=se=>{"title"in se&&b(1,F=se.title),"open"in se&&b(0,Z=se.open),"displayEscapeButton"in se&&b(2,a=se.displayEscapeButton),"canCloseByClickingBackground"in se&&b(3,W=se.canCloseByClickingBackground),"$$scope"in se&&b(7,R=se.$$scope)},[Z,F,a,W,C,B,he,R]}class t_ extends Ps{constructor(g){super(),Ms(this,g,Vm,Om,is,{title:1,open:0,displayEscapeButton:2,canCloseByClickingBackground:3})}}function Nm(f){let g,b;const C=f[2].default,R=uc(C,f,f[1],null);return{c(){g=Ir("a"),R&&R.c(),Si(g,"href",f[0]),Si(g,"target","_blank"),Si(g,"rel","noreferrer")},m(F,Z){ks(F,g,Z),R&&R.m(g,null),b=!0},p(F,[Z]){R&&R.p&&(!b||Z&2)&&dc(R,C,F,F[1],b?hc(C,F[1],Z,null):pc(F[1]),null),(!b||Z&1)&&Si(g,"href",F[0])},i(F){b||(jr(R,F),b=!0)},o(F){Cn(R,F),b=!1},d(F){F&&kn(g),R&&R.d(F)}}}function $m(f,g,b){let{$$slots:C={},$$scope:R}=g,{href:F}=g;return f.$$set=Z=>{"href"in Z&&b(0,F=Z.href),"$$scope"in Z&&b(1,R=Z.$$scope)},[F,R,C]}class i_ extends Ps{constructor(g){super(),Ms(this,g,$m,Nm,is,{href:0})}}function qm(f){let g,b,C;return{c(){g=Ir("input"),g.disabled=f[2],Si(g,"class","govuk-file-upload"),Si(g,"id",f[1]),Si(g,"type","file")},m(R,F){ks(R,g,F),f[6](g),b||(C=nc(g,"change",f[4]),b=!0)},p(R,F){F&4&&(g.disabled=R[2]),F&2&&Si(g,"id",R[1])},d(R){R&&kn(g),f[6](null),b=!1,C()}}}function jm(f){let g,b;return g=new Lm({props:{label:f[0],id:f[1],$$slots:{default:[qm]},$$scope:{ctx:f}}}),{c(){$d(g.$$.fragment)},m(C,R){Ru(g,C,R),b=!0},p(C,[R]){const F={};R&1&&(F.label=C[0]),R&2&&(F.id=C[1]),R&142&&(F.$$scope={dirty:R,ctx:C}),g.$set(F)},i(C){b||(jr(g.$$.fragment,C),b=!0)},o(C){Cn(g.$$.fragment,C),b=!1},d(C){Fu(g,C)}}}function Gm(f,g,b){let{label:C}=g,{id:R}=g,{loadFile:F}=g,{disabled:Z=!1}=g,a;function W(he){let se=new FileReader;se.onload=Pe=>{F(Pe.target.result)};let ke=a.files;se.readAsText(ke[0])}function B(he){ku[he?"unshift":"push"](()=>{a=he,b(3,a)})}return f.$$set=he=>{"label"in he&&b(0,C=he.label),"id"in he&&b(1,R=he.id),"loadFile"in he&&b(5,F=he.loadFile),"disabled"in he&&b(2,Z=he.disabled)},[C,R,Z,a,W,F,B]}class r_ extends Ps{constructor(g){super(),Ms(this,g,Gm,jm,is,{label:0,id:1,loadFile:5,disabled:2})}}const zo=[];function an(f,g=Gr){let b;const C=new Set;function R(a){if(is(f,a)&&(f=a,b)){const W=!zo.length;for(const B of C)B[1](),zo.push(B,f);if(W){for(let B=0;B{C.delete(B),C.size===0&&b&&(b(),b=null)}}return{set:R,update:F,subscribe:Z}}var Fi=63710088e-1,Vu={centimeters:Fi*100,centimetres:Fi*100,degrees:Fi/111325,feet:Fi*3.28084,inches:Fi*39.37,kilometers:Fi/1e3,kilometres:Fi/1e3,meters:Fi,metres:Fi,miles:Fi/1609.344,millimeters:Fi*1e3,millimetres:Fi*1e3,nauticalmiles:Fi/1852,radians:1,yards:Fi*1.0936},Zm={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/Fi,yards:1.0936133},zu={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046};function on(f,g,b){b===void 0&&(b={});var C={type:"Feature"};return(b.id===0||b.id)&&(C.id=b.id),b.bbox&&(C.bbox=b.bbox),C.properties=g||{},C.geometry=f,C}function Hm(f,g,b){switch(f){case"Point":return Sn(g).geometry;case"LineString":return An(g).geometry;case"Polygon":return Nu(g).geometry;case"MultiPoint":return Hd(g).geometry;case"MultiLineString":return Zd(g).geometry;case"MultiPolygon":return Xd(g).geometry;default:throw new Error(f+" is invalid")}}function Sn(f,g,b){if(b===void 0&&(b={}),!f)throw new Error("coordinates is required");if(!Array.isArray(f))throw new Error("coordinates must be an Array");if(f.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!lc(f[0])||!lc(f[1]))throw new Error("coordinates must contain numbers");var C={type:"Point",coordinates:f};return on(C,g,b)}function Xm(f,g,b){return b===void 0&&(b={}),gc(f.map(function(C){return Sn(C,g)}),b)}function Nu(f,g,b){b===void 0&&(b={});for(var C=0,R=f;C=0))throw new Error("precision must be a positive number");var b=Math.pow(10,g||0);return Math.round(f*b)/b}function Wd(f,g){g===void 0&&(g="kilometers");var b=Vu[g];if(!b)throw new Error(g+" units is invalid");return f*b}function $u(f,g){g===void 0&&(g="kilometers");var b=Vu[g];if(!b)throw new Error(g+" units is invalid");return f/b}function Qm(f,g){return Kd($u(f,g))}function eg(f){var g=f%360;return g<0&&(g+=360),g}function Kd(f){var g=f%(2*Math.PI);return g*180/Math.PI}function tg(f){var g=f%360;return g*Math.PI/180}function ig(f,g,b){if(g===void 0&&(g="kilometers"),b===void 0&&(b="kilometers"),!(f>=0))throw new Error("length must be a positive number");return Wd($u(f,g),b)}function rg(f,g,b){if(g===void 0&&(g="meters"),b===void 0&&(b="kilometers"),!(f>=0))throw new Error("area must be a positive number");var C=zu[g];if(!C)throw new Error("invalid original units");var R=zu[b];if(!R)throw new Error("invalid final units");return f/C*R}function lc(f){return!isNaN(f)&&f!==null&&!Array.isArray(f)}function qu(f){return!!f&&f.constructor===Object}function ng(f){if(!f)throw new Error("bbox is required");if(!Array.isArray(f))throw new Error("bbox must be an Array");if(f.length!==4&&f.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");f.forEach(function(g){if(!lc(g))throw new Error("bbox must only contain numbers")})}function sg(f){if(!f)throw new Error("id is required");if(["string","number"].indexOf(typeof f)===-1)throw new Error("id must be a number or a string")}const n_=Object.freeze(Object.defineProperty({__proto__:null,areaFactors:zu,bearingToAzimuth:eg,convertArea:rg,convertLength:ig,degreesToRadians:tg,earthRadius:Fi,factors:Vu,feature:on,featureCollection:gc,geometry:Hm,geometryCollection:Ym,isNumber:lc,isObject:qu,lengthToDegrees:Qm,lengthToRadians:$u,lineString:An,lineStrings:Km,multiLineString:Zd,multiPoint:Hd,multiPolygon:Xd,point:Sn,points:Xm,polygon:Nu,polygons:Wm,radiansToDegrees:Kd,radiansToLength:Wd,round:Jm,unitsFactors:Zm,validateBBox:ng,validateId:sg},Symbol.toStringTag,{value:"Module"}));function Vo(f,g,b){if(f!==null)for(var C,R,F,Z,a,W,B,he=0,se=0,ke,Pe=f.type,fe=Pe==="FeatureCollection",Le=Pe==="Feature",qe=fe?f.features.length:1,Ae=0;AeW||fe>B||Le>he){a=se,W=C,B=fe,he=Le,F=0;return}var qe=An([a,se],b.properties);if(g(qe,C,R,Le,F)===!1)return!1;F++,a=se})===!1)return!1}}})}function dg(f,g,b){var C=b,R=!1;return Qd(f,function(F,Z,a,W,B){R===!1&&b===void 0?C=F:C=g(C,F,Z,a,W,B),R=!0}),C}function ep(f,g){if(!f)throw new Error("geojson is required");_c(f,function(b,C,R){if(b.geometry!==null){var F=b.geometry.type,Z=b.geometry.coordinates;switch(F){case"LineString":if(g(b,C,R,0,0)===!1)return!1;break;case"Polygon":for(var a=0;ab[0]&&(g[0]=b[0]),g[1]>b[1]&&(g[1]=b[1]),g[2]{}){const F=C?gg:b;Zu(f,g),fetch(F).then(Z=>{Z.json().then(a=>{f.addSource(g,{type:"geojson",data:a}),R()})})}function Zu(f,g){if(f.getSource(g)){let b=[];for(let C of f.getStyle().layers)"source"in C&&C.source==g&&b.push(C.id);for(let C of b)f.removeLayer(C);f.removeSource(g)}}function Hu(f,g){f.getLayer(g.id)&&f.removeLayer(g.id);let b,C=!1;for(let R=Ld.length-1;R>=0;R--){let F=Ld[R];if(F==g.id){C=!0;break}f.getLayer(F)&&(b=F)}if(!C)throw new Error(`Layer ID ${g.id} not defined in layerZorder`);f.addLayer(g,b)}function p_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"fill",paint:{"fill-color":g.color,"fill-opacity":g.opacity}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function f_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"circle",paint:{"circle-radius":g.radius,"circle-color":g.color??zd,"circle-opacity":g.opacity??tp,"circle-stroke-color":g.strokeColor??zd,"circle-stroke-width":g.strokeWidth??0}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function m_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"line",layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":g.color,"line-width":g.width,"line-opacity":g.opacity??tp}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function _g(){return{type:"FeatureCollection",features:[]}}function g_(f){return{type:"Feature",properties:{},geometry:{type:"Point",coordinates:yg(f)}}}function yg(f){return[Math.round(f[0]*1e7)/1e7,Math.round(f[1]*1e7)/1e7]}function __(f,g,b){let C=["match",f];for(let[R,F]of Object.entries(g))C.push(R),C.push(F);return C.push(b),C}function y_(f,g){return["case",["boolean",["feature-state","hover"],!1],f,g]}function v_(f){return cc(f)}function x_(f){return f<1e3?Math.round(f)+" m":(f/1e3).toFixed(1)+"km"}const Ld=["parliamentary_constituencies","parliamentary_constituencies-outline","wards","wards-outline","combined_authorities","combined_authorities-outline","local_authority_districts","local_authority_districts-outline","census_output_areas","census_output_areas-outline","schools","hospitals","green_spaces","sports_spaces","mrn","railway_stations","interventions-polygons","interventions-polygon-outlines","hover-polygons","hover-lines","interventions-lines","interventions-lines-endpoints","hover-points","interventions-points","edit-polygon-fill","edit-polygon-lines","edit-polygon-vertices","draw-split-route","draw-street-view","speed-limits","lane-polygons-layer","intersection-polygons-layer","lane-markings-layer","intersection-markings-layer","route-points","route-lines","route-polygons","road_label","boundary"];function vg(f){return f=="google"||f=="bing"}const xg=an(null),b_=an(null),bg=an(_g()),wg=an(null),Eg=an(null),Tg=an(null),Sg=an(null),Ig=an(Ag());Ig.subscribe(f=>window.localStorage.setItem("userSettings",JSON.stringify(f)));const w_=an("edit-attribute"),E_=an(!1);function T_(f){let g=new Set;for(let C of f.features)g.add(C.id);let b=g.size+1;for(;g.has(b);)b++;return b}function S_(f){console.log(`Deleting intervention ${f}`),bg.update(g=>(g.features=g.features.filter(b=>b.id!=f),g)),wg.set(null),Eg.set(null),Tg.set(null),Sg.set(null)}function Ag(){let f={streetViewImagery:"google",avoidDoublingBack:!1};try{let g=JSON.parse(window.localStorage.getItem("userSettings")||"{}");vg(g.streetViewImagery)&&(f.streetViewImagery=g.streetViewImagery),typeof g.avoidDoublingBack=="boolean"&&(f.avoidDoublingBack=g.avoidDoublingBack)}catch(g){console.log(`Couldn't parse userSettings from local storage: ${g}`)}return f}function Cg(f,g,b){let C;jf(f,xg,Le=>b(5,C=Le));const R=nm();let{layer:F}=g,{clickable:Z}=g,{tooltip:a=null}=g,{show:W=!0}=g,{hoveredFeature:B=null}=g,he=new Gd.Popup({closeButton:!1,closeOnClick:!1,maxWidth:"none"});im(()=>{C.on("mousemove",F,se),C.on("mouseleave",F,ke),Z&&C.on("click",F,fe)}),rm(()=>{C.off("mousemove",F,se),C.off("mouseleave",F,ke),Z&&C.off("click",F,fe),Pe(),he.remove()});function se(Le){let qe=Le.features??[];if(qe.length==0)return;qe[0].id||console.log(`Features in the ${F} layer don't have IDs; InteractiveLayer won't work`);let Ae=C.queryRenderedFeatures(Le.point);if(Ae.length>0&&Ae[0].layer.id!=F){ke();return}if((B==null?void 0:B.id)!=qe[0].id){if(Pe(),b(0,B=qe[0]),C.setFeatureState(B,{hover:!0}),a){let Je=`

${a(B)}
`;he.setLngLat(Le.lngLat).setHTML(Je).addTo(C)}Z&&(C.getCanvas().style.cursor="pointer")}else a&&he.setLngLat(Le.lngLat)}function ke(){Pe(),b(0,B=null),he.remove(),Z&&(C.getCanvas().style.cursor="inherit")}function Pe(){B&&C.setFeatureState(B,{hover:!1})}function fe(Le){let qe=Le.features??[];if(qe.length>0){let Ae=C.queryRenderedFeatures(Le.point);if(Ae.length>0&&Ae[0].layer.id!=F)return;R("click",qe[0])}}return f.$$set=Le=>{"layer"in Le&&b(1,F=Le.layer),"clickable"in Le&&b(2,Z=Le.clickable),"tooltip"in Le&&b(3,a=Le.tooltip),"show"in Le&&b(4,W=Le.show),"hoveredFeature"in Le&&b(0,B=Le.hoveredFeature)},f.$$.update=()=>{f.$$.dirty&50&&C.getLayer(F)&&C.setLayoutProperty(F,"visibility",W?"visible":"none")},[B,F,Z,a,W,C]}class I_ extends Ps{constructor(g){super(),Ms(this,g,Cg,null,is,{layer:1,clickable:2,tooltip:3,show:4,hoveredFeature:0})}}const kg="/atip/more-trip-generators/assets/authorities-80e824dc.geojson";async function A_(){return await(await fetch(kg)).json()}export{jg as $,A_ as A,Gd as B,xg as C,v_ as D,e_ as E,Lm as F,y_ as G,uc as H,I_ as I,ic as J,Ad as K,dc as L,pc as M,hc as N,fm as O,Id as P,sm as Q,t_ as R,Ps as S,nm as T,Bu as U,Hg as V,Bg as W,Cd as X,Xd as Y,Nu as Z,jf as _,Rm as a,$g as a$,u_ as a0,p_ as a1,bg as a2,Tg as a3,Eg as a4,wg as a5,E_ as a6,m_ as a7,f_ as a8,_g as a9,Ig as aA,T_ as aB,zg as aC,dg as aD,Vo as aE,cc as aF,lg as aG,Pg as aH,b_ as aI,Ug as aJ,Og as aK,ts as aL,ac as aM,Zg as aN,Hu as aO,x_ as aP,Rg as aQ,ec as aR,Wg as aS,Xg as aT,S_ as aU,i_ as aV,h_ as aW,d_ as aX,Qg as aY,Lg as aZ,Ng as a_,a_ as aa,l_ as ab,c_ as ac,Fg as ad,w_ as ae,Sg as af,rm as ag,g_ as ah,tg as ai,Kd as aj,Wd as ak,$u as al,Sn as am,_c as an,gc as ao,An as ap,Am as aq,Jg as ar,n_ as as,s_ as at,o_ as au,Cm as av,on as aw,Jd as ax,yg as ay,__ as az,ku as b,Dg as b0,qg as b1,Kg as c,r_ as d,Ir as e,rc as f,$d as g,Si as h,Ms as i,ks as j,fr as k,Cn as l,Ru as m,dm as n,Gg as o,kn as p,Fu as q,im as r,is as s,jr as t,Ro as u,Vg as v,nc as w,Gr as x,hm as y,Yg as z}; + `,this._canvasContainer.addEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add("maplibregl-cooperative-gestures")}_destroyCooperativeGestures(){B.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove("maplibregl-cooperative-gestures")}_resizeCanvas(l,t,n){this._canvas.width=n*l,this._canvas.height=n*t,this._canvas.style.width=`${l}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const l={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let t=null;this._canvas.addEventListener("webglcontextcreationerror",o=>{t={requestedAttributes:l},o&&(t.statusMessage=o.statusMessage,t.type=o.type)},{once:!0});const n=this._canvas.getContext("webgl2",l)||this._canvas.getContext("webgl",l);if(!n){const o="Failed to initialize WebGL";throw t?(t.message=o,new Error(JSON.stringify(t))):new Error(o)}this.painter=new gl(n,this.transform),he.testSupport(n)}_contextLost(l){l.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new a.Event("webglcontextlost",{originalEvent:l}))}_contextRestored(l){this._setupPainter(),this.resize(),this._update(),this.fire(new a.Event("webglcontextrestored",{originalEvent:l}))}_onMapScroll(l){if(l.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}_onCooperativeGesture(l,t,n){return!t&&n<2&&(this._cooperativeGesturesScreen.classList.add("maplibregl-show"),setTimeout(()=>{this._cooperativeGesturesScreen.classList.remove("maplibregl-show")},100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(l){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||l,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(l){return this._update(),this._renderTaskQueue.add(l)}_cancelRenderFrame(l){this._renderTaskQueue.remove(l)}_render(l){const t=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(l),this._removed)return;let n=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const u=this.transform.zoom,p=a.exported.now();this.style.zoomHistory.update(u,p);const _=new a.EvaluationParameters(u,{now:p,fadeDuration:t,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),x=_.crossFadingFactor();x===1&&x===this._crossFadingFactor||(n=!0,this._crossFadingFactor=x),this.style.update(_)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain&&this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.updateElevation(this.terrain),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,t,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:t,showPadding:this.showPadding}),this.fire(new a.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.PerformanceUtils.mark(a.PerformanceMarkers.load),this.fire(new a.Event("load"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const o=this._sourcesDirty||this._styleDirty||this._placementDirty;return o||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.Event("idle")),!this._loaded||this._fullyLoaded||o||(this._fullyLoaded=!0,a.PerformanceUtils.mark(a.PerformanceMarkers.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var l;this._hash&&this._hash.remove();for(const n of this._controls)n.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),Je.removeThrottleControl(this._imageQueueHandle),(l=this._resizeObserver)===null||l===void 0||l.disconnect();const t=this.painter.context.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),B.remove(this._canvasContainer),B.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove("maplibregl-map"),a.PerformanceUtils.clearMetrics(),this._removed=!0,this.fire(new a.Event("remove"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=a.exported.frame(l=>{a.PerformanceUtils.frame(l),this._frame=null,this._render(l)}))}_onWindowOnline(){this._update()}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(l){this._showTileBoundaries!==l&&(this._showTileBoundaries=l,this._update())}get showPadding(){return!!this._showPadding}set showPadding(l){this._showPadding!==l&&(this._showPadding=l,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(l){this._showCollisionBoxes!==l&&(this._showCollisionBoxes=l,l?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(l){this._showOverdrawInspector!==l&&(this._showOverdrawInspector=l,this._update())}get repaint(){return!!this._repaint}set repaint(l){this._repaint!==l&&(this._repaint=l,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(l){this._vertices=l,this._update()}get version(){return ei}getCameraTargetElevation(){return this.transform.elevation}},NavigationControl:class{constructor(l){this.options=a.extend({},ho,l),this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(a.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",t=>this._map.zoomIn({},{originalEvent:t})),B.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",t=>this._map.zoomOut({},{originalEvent:t})),B.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(a.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("maplibregl-ctrl-compass",t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})}),this._compassIcon=B.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const l=this._map.getZoom(),t=l===this._map.getMaxZoom(),n=l===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=n,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",n.toString())}_rotateCompassArrow(){const l=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=l}onAdd(l){return this._map=l,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new va(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){B.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(l,t){const n=B.create("button",l,this._container);return n.type="button",n.addEventListener("click",t),n}_setButtonTitle(l,t){const n=this._map._getUIString(`NavigationControl.${t}`);l.title=n,l.setAttribute("aria-label",n)}},GeolocateControl:class extends a.Evented{constructor(l){super(),this.options=a.extend({},xa,l),a.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),function(t,n=!1){wr===void 0||n?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:"geolocation"}).then(o=>{wr=o.state!=="denied",t(wr)}).catch(()=>{wr=!!window.navigator.geolocation,t(wr)}):(wr=!!window.navigator.geolocation,t(wr)):t(wr)}(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),B.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Wn=0,vn=!1}_isOutOfMapMaxBounds(l){const t=this._map.getMaxBounds(),n=l.coords;return t&&(n.longitudet.getEast()||n.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_onSuccess(l){if(this._map){if(this._isOutOfMapMaxBounds(l))return this._setErrorState(),this.fire(new a.Event("outofmaxbounds",l)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=l,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(l),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(l),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.Event("geolocate",l)),this._finish()}}_updateCamera(l){const t=new a.LngLat(l.coords.longitude,l.coords.latitude),n=l.coords.accuracy,o=this._map.getBearing(),u=a.extend({bearing:o},this.options.fitBoundsOptions),p=pi.fromLngLat(t,n);this._map.fitBounds(p,u,{geolocateSource:!0})}_updateMarker(l){if(l){const t=new a.LngLat(l.coords.longitude,l.coords.latitude);this._accuracyCircleMarker.setLngLat(t).addTo(this._map),this._userLocationDotMarker.setLngLat(t).addTo(this._map),this._accuracy=l.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const l=this._map.getBounds(),t=l.getSouthEast(),n=l.getNorthEast(),o=t.distanceTo(n),u=Math.ceil(this._accuracy/(o/this._map._container.clientHeight)*2);this._circleElement.style.width=`${u}px`,this._circleElement.style.height=`${u}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_onError(l){if(this._map){if(this.options.trackUserLocation)if(l.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(l.code===3&&vn)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.Event("error",l)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(l){if(this._map){if(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=B.create("button","maplibregl-ctrl-geolocate",this._container),B.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",l===!1){a.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}else{const t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=B.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Es(this._dotElement),this._circleElement=B.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Es({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",t=>{t.geolocateSource||this._watchState!=="ACTIVE_LOCK"||t.originalEvent&&t.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.Event("trackuserlocationend")))})}}trigger(){if(!this._setup)return a.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Wn--,vn=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.Event("trackuserlocationstart"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let l;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Wn++,Wn>1?(l={maximumAge:6e5,timeout:0},vn=!0):(l=this.options.positionOptions,vn=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,l)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:Ke,LogoControl:ws,ScaleControl:class{constructor(l){this.options=a.extend({},ba,l),a.bindAll(["_onMove","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_onMove(){mo(this._map,this._container,this.options)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-scale",l.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){B.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}setUnit(l){this.options.unit=l,mo(this._map,this._container,this.options)}},FullscreenControl:class extends a.Evented{constructor(l={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,l&&l.container&&(l.container instanceof HTMLElement?this._container=l.container:a.warnOnce("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(l){return this._map=l,this._container||(this._container=this._map.getContainer()),this._controlContainer=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){B.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const l=this._fullscreenButton=B.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);B.create("span","maplibregl-ctrl-icon",l).setAttribute("aria-hidden","true"),l.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const l=this._getTitle();this._fullscreenButton.setAttribute("aria-label",l),this._fullscreenButton.title=l}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.Event("fullscreenstart")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new a.Event("fullscreenend")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},TerrainControl:class{constructor(l){this.options=l,a.bindAll(["_toggleTerrain","_updateTerrainIcon"],this)}onAdd(l){return this._map=l,this._container=B.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=B.create("button","maplibregl-ctrl-terrain",this._container),B.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){B.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}_toggleTerrain(){this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()}_updateTerrainIcon(){this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"))}},Popup:class extends a.Evented{constructor(l){super(),this.options=a.extend(Object.create(go),l),a.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}addTo(l){return this._map&&this.remove(),this._map=l,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.Event("open")),this}isOpen(){return!!this._map}remove(){return this._content&&B.remove(this._content),this._container&&(B.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new a.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(l){return this._lngLat=a.LngLat.convert(l),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(l){return this.setDOMContent(document.createTextNode(l))}setHTML(l){const t=document.createDocumentFragment(),n=document.createElement("body");let o;for(n.innerHTML=l;o=n.firstChild,o;)t.appendChild(o);return this.setDOMContent(t)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(l){return this.options.maxWidth=l,this._update(),this}setDOMContent(l){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=B.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(l),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(l){this._container&&this._container.classList.add(l)}removeClassName(l){this._container&&this._container.classList.remove(l)}setOffset(l){return this.options.offset=l,this._update(),this}toggleClassName(l){if(this._container)return this._container.classList.toggle(l)}_createCloseButton(){this.options.closeButton&&(this._closeButton=B.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_onMouseUp(l){this._update(l.point)}_onMouseMove(l){this._update(l.point)}_onDrag(l){this._update(l.point)}_update(l){if(!this._map||!this._lngLat&&!this._trackPointer||!this._content||(this._container||(this._container=B.create("div","maplibregl-popup",this._map.getContainer()),this._tip=B.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(p=>this._container.classList.add(p)),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=po(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!l))return;const t=this._pos=this._trackPointer&&l?l:this._map.project(this._lngLat);let n=this.options.anchor;const o=_o(this.options.offset);if(!n){const p=this._container.offsetWidth,_=this._container.offsetHeight;let x;x=t.y+o.bottom.y<_?["top"]:t.y>this._map.transform.height-_?["bottom"]:[],t.x

this._map.transform.width-p/2&&x.push("right"),n=x.length===0?"bottom":x.join("-")}const u=t.add(o[n]).round();B.setTransform(this._container,`${yn[n]} translate(${u.x}px,${u.y}px)`),fo(this._container,n,"popup")}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const l=this._container.querySelector(wa);l&&l.focus()}_onClose(){this.remove()}},Marker:Es,Style:gi,LngLat:a.LngLat,LngLatBounds:pi,Point:a.Point,MercatorCoordinate:a.MercatorCoordinate,Evented:a.Evented,AJAXError:a.AJAXError,config:a.config,CanvasSource:de,GeoJSONSource:Pr,ImageSource:Ji,RasterDEMTileSource:Xr,RasterTileSource:un,VectorTileSource:Ln,VideoSource:Dn,prewarm:function(){Rn().acquire(pn)},clearPrewarmedResources:function(){const l=yi;l&&(l.isPreloaded()&&l.numActive()===1?(l.release(pn),yi=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get version(){return yo},get workerCount(){return Te.workerCount},set workerCount(l){Te.workerCount=l},get maxParallelImageRequests(){return a.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(l){a.config.MAX_PARALLEL_IMAGE_REQUESTS=l},get workerUrl(){return a.config.WORKER_URL},set workerUrl(l){a.config.WORKER_URL=l},addProtocol(l,t){a.config.REGISTERED_PROTOCOLS[l]=t},removeProtocol(l){delete a.config.REGISTERED_PROTOCOLS[l]}};return uo.extend(vo,{isSafari:a.isSafari,getPerformanceMetrics:a.PerformanceUtils.getPerformanceMetrics}),vo});var Z=R;return Z})})(qd);var Gd=qd.exports;const Jg=Cm(Gd);function km(f){let g,b,C,R;return{c(){g=Ir("p"),b=Ir("span"),b.textContent="Error:",C=rc(),R=Ro(f[0]),Si(b,"class","govuk-visually-hidden"),Si(g,"class","govuk-error-message")},m(F,Z){ks(F,g,Z),fr(g,b),fr(g,C),fr(g,R)},p(F,[Z]){Z&1&&Bu(R,F[0])},i:Gr,o:Gr,d(F){F&&kn(g)}}}function Mm(f,g,b){let{errorMessage:C}=g;return f.$$set=R=>{"errorMessage"in R&&b(0,C=R.errorMessage)},[C]}class Qg extends Ps{constructor(g){super(),Ms(this,g,Mm,km,is,{errorMessage:0})}}function Pm(f){let g,b,C,R,F;const Z=f[3].default,a=uc(Z,f,f[2],null);return{c(){g=Ir("div"),b=Ir("label"),C=Ro(f[0]),R=rc(),a&&a.c(),Si(b,"class","govuk-label"),Si(b,"for",f[1]),Si(g,"class","govuk-form-group")},m(W,B){ks(W,g,B),fr(g,b),fr(b,C),fr(g,R),a&&a.m(g,null),F=!0},p(W,[B]){(!F||B&1)&&Bu(C,W[0]),(!F||B&2)&&Si(b,"for",W[1]),a&&a.p&&(!F||B&4)&&dc(a,Z,W,W[2],F?hc(Z,W[2],B,null):pc(W[2]),null)},i(W){F||(jr(a,W),F=!0)},o(W){Cn(a,W),F=!1},d(W){W&&kn(g),a&&a.d(W)}}}function zm(f,g,b){let{$$slots:C={},$$scope:R}=g,{label:F}=g,{id:Z}=g;return f.$$set=a=>{"label"in a&&b(0,F=a.label),"id"in a&&b(1,Z=a.id),"$$scope"in a&&b(2,R=a.$$scope)},[F,Z,R,C]}class Lm extends Ps{constructor(g){super(),Ms(this,g,zm,Pm,is,{label:0,id:1})}}function Dm(f){let g,b,C,R;const F=f[2].default,Z=uc(F,f,f[1],null);let a=[{type:"button"},{class:"govuk-button govuk-button--secondary"},{"data-module":"govuk-button"},f[0]],W={};for(let B=0;B{b(0,g=ic(ic({},g),Id(Z))),"$$scope"in Z&&b(1,R=Z.$$scope)},g=Id(g),[g,R,C,F]}class Rm extends Ps{constructor(g){super(),Ms(this,g,Bm,Dm,is,{})}}function Pd(f){let g,b;return g=new Rm({props:{$$slots:{default:[Fm]},$$scope:{ctx:f}}}),g.$on("click",f[5]),{c(){$d(g.$$.fragment)},m(C,R){Ru(g,C,R),b=!0},p(C,R){const F={};R&128&&(F.$$scope={dirty:R,ctx:C}),g.$set(F)},i(C){b||(jr(g.$$.fragment,C),b=!0)},o(C){Cn(g.$$.fragment,C),b=!1},d(C){Fu(g,C)}}}function Fm(f){let g;return{c(){g=Ro("X")},m(b,C){ks(b,g,C)},d(b){b&&kn(g)}}}function Om(f){let g,b,C,R,F,Z,a,W,B,he,se=f[2]&&Pd(f);const ke=f[4].default,Pe=uc(ke,f,f[7],null);return{c(){g=Ir("div"),b=Ir("div"),C=Ir("div"),R=Ir("h1"),F=Ro(f[1]),Z=rc(),se&&se.c(),a=rc(),Pe&&Pe.c(),Si(R,"class","govuk-heading-l"),Cd(C,"display","flex"),Cd(C,"justify-content","space-between"),Si(b,"class","content centered-fullscreen svelte-stcgp5"),Si(g,"class","background svelte-stcgp5"),ec(g,"open",f[0]),ec(g,"closed",!f[0])},m(fe,Le){ks(fe,g,Le),fr(g,b),fr(b,C),fr(C,R),fr(R,F),fr(C,Z),se&&se.m(C,null),fr(b,a),Pe&&Pe.m(b,null),W=!0,B||(he=[nc(b,"click",Wf(Um)),nc(g,"click",f[6])],B=!0)},p(fe,[Le]){(!W||Le&2)&&Bu(F,fe[1]),fe[2]?se?(se.p(fe,Le),Le&4&&jr(se,1)):(se=Pd(fe),se.c(),jr(se,1),se.m(C,null)):se&&(hm(),Cn(se,1,1,()=>{se=null}),dm()),Pe&&Pe.p&&(!W||Le&128)&&dc(Pe,ke,fe,fe[7],W?hc(ke,fe[7],Le,null):pc(fe[7]),null),(!W||Le&1)&&ec(g,"open",fe[0]),(!W||Le&1)&&ec(g,"closed",!fe[0])},i(fe){W||(jr(se),jr(Pe,fe),W=!0)},o(fe){Cn(se),Cn(Pe,fe),W=!1},d(fe){fe&&kn(g),se&&se.d(),Pe&&Pe.d(fe),B=!1,ts(he)}}}const Um=()=>null;function Vm(f,g,b){let{$$slots:C={},$$scope:R}=g,{title:F}=g,{open:Z=!1}=g,{displayEscapeButton:a=!0}=g,{canCloseByClickingBackground:W=!0}=g;const B=()=>b(0,Z=!1),he=()=>{W&&b(0,Z=!1)};return f.$$set=se=>{"title"in se&&b(1,F=se.title),"open"in se&&b(0,Z=se.open),"displayEscapeButton"in se&&b(2,a=se.displayEscapeButton),"canCloseByClickingBackground"in se&&b(3,W=se.canCloseByClickingBackground),"$$scope"in se&&b(7,R=se.$$scope)},[Z,F,a,W,C,B,he,R]}class e_ extends Ps{constructor(g){super(),Ms(this,g,Vm,Om,is,{title:1,open:0,displayEscapeButton:2,canCloseByClickingBackground:3})}}function Nm(f){let g,b;const C=f[2].default,R=uc(C,f,f[1],null);return{c(){g=Ir("a"),R&&R.c(),Si(g,"href",f[0]),Si(g,"target","_blank"),Si(g,"rel","noreferrer")},m(F,Z){ks(F,g,Z),R&&R.m(g,null),b=!0},p(F,[Z]){R&&R.p&&(!b||Z&2)&&dc(R,C,F,F[1],b?hc(C,F[1],Z,null):pc(F[1]),null),(!b||Z&1)&&Si(g,"href",F[0])},i(F){b||(jr(R,F),b=!0)},o(F){Cn(R,F),b=!1},d(F){F&&kn(g),R&&R.d(F)}}}function $m(f,g,b){let{$$slots:C={},$$scope:R}=g,{href:F}=g;return f.$$set=Z=>{"href"in Z&&b(0,F=Z.href),"$$scope"in Z&&b(1,R=Z.$$scope)},[F,R,C]}class t_ extends Ps{constructor(g){super(),Ms(this,g,$m,Nm,is,{href:0})}}function qm(f){let g,b,C;return{c(){g=Ir("input"),g.disabled=f[2],Si(g,"class","govuk-file-upload"),Si(g,"id",f[1]),Si(g,"type","file")},m(R,F){ks(R,g,F),f[6](g),b||(C=nc(g,"change",f[4]),b=!0)},p(R,F){F&4&&(g.disabled=R[2]),F&2&&Si(g,"id",R[1])},d(R){R&&kn(g),f[6](null),b=!1,C()}}}function jm(f){let g,b;return g=new Lm({props:{label:f[0],id:f[1],$$slots:{default:[qm]},$$scope:{ctx:f}}}),{c(){$d(g.$$.fragment)},m(C,R){Ru(g,C,R),b=!0},p(C,[R]){const F={};R&1&&(F.label=C[0]),R&2&&(F.id=C[1]),R&142&&(F.$$scope={dirty:R,ctx:C}),g.$set(F)},i(C){b||(jr(g.$$.fragment,C),b=!0)},o(C){Cn(g.$$.fragment,C),b=!1},d(C){Fu(g,C)}}}function Gm(f,g,b){let{label:C}=g,{id:R}=g,{loadFile:F}=g,{disabled:Z=!1}=g,a;function W(he){let se=new FileReader;se.onload=Pe=>{F(Pe.target.result)};let ke=a.files;se.readAsText(ke[0])}function B(he){ku[he?"unshift":"push"](()=>{a=he,b(3,a)})}return f.$$set=he=>{"label"in he&&b(0,C=he.label),"id"in he&&b(1,R=he.id),"loadFile"in he&&b(5,F=he.loadFile),"disabled"in he&&b(2,Z=he.disabled)},[C,R,Z,a,W,F,B]}class i_ extends Ps{constructor(g){super(),Ms(this,g,Gm,jm,is,{label:0,id:1,loadFile:5,disabled:2})}}const zo=[];function an(f,g=Gr){let b;const C=new Set;function R(a){if(is(f,a)&&(f=a,b)){const W=!zo.length;for(const B of C)B[1](),zo.push(B,f);if(W){for(let B=0;B{C.delete(B),C.size===0&&b&&(b(),b=null)}}return{set:R,update:F,subscribe:Z}}var Fi=63710088e-1,Vu={centimeters:Fi*100,centimetres:Fi*100,degrees:Fi/111325,feet:Fi*3.28084,inches:Fi*39.37,kilometers:Fi/1e3,kilometres:Fi/1e3,meters:Fi,metres:Fi,miles:Fi/1609.344,millimeters:Fi*1e3,millimetres:Fi*1e3,nauticalmiles:Fi/1852,radians:1,yards:Fi*1.0936},Zm={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/Fi,yards:1.0936133},zu={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046};function on(f,g,b){b===void 0&&(b={});var C={type:"Feature"};return(b.id===0||b.id)&&(C.id=b.id),b.bbox&&(C.bbox=b.bbox),C.properties=g||{},C.geometry=f,C}function Hm(f,g,b){switch(f){case"Point":return Sn(g).geometry;case"LineString":return An(g).geometry;case"Polygon":return Nu(g).geometry;case"MultiPoint":return Hd(g).geometry;case"MultiLineString":return Zd(g).geometry;case"MultiPolygon":return Xd(g).geometry;default:throw new Error(f+" is invalid")}}function Sn(f,g,b){if(b===void 0&&(b={}),!f)throw new Error("coordinates is required");if(!Array.isArray(f))throw new Error("coordinates must be an Array");if(f.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!lc(f[0])||!lc(f[1]))throw new Error("coordinates must contain numbers");var C={type:"Point",coordinates:f};return on(C,g,b)}function Xm(f,g,b){return b===void 0&&(b={}),gc(f.map(function(C){return Sn(C,g)}),b)}function Nu(f,g,b){b===void 0&&(b={});for(var C=0,R=f;C=0))throw new Error("precision must be a positive number");var b=Math.pow(10,g||0);return Math.round(f*b)/b}function Wd(f,g){g===void 0&&(g="kilometers");var b=Vu[g];if(!b)throw new Error(g+" units is invalid");return f*b}function $u(f,g){g===void 0&&(g="kilometers");var b=Vu[g];if(!b)throw new Error(g+" units is invalid");return f/b}function Qm(f,g){return Kd($u(f,g))}function eg(f){var g=f%360;return g<0&&(g+=360),g}function Kd(f){var g=f%(2*Math.PI);return g*180/Math.PI}function tg(f){var g=f%360;return g*Math.PI/180}function ig(f,g,b){if(g===void 0&&(g="kilometers"),b===void 0&&(b="kilometers"),!(f>=0))throw new Error("length must be a positive number");return Wd($u(f,g),b)}function rg(f,g,b){if(g===void 0&&(g="meters"),b===void 0&&(b="kilometers"),!(f>=0))throw new Error("area must be a positive number");var C=zu[g];if(!C)throw new Error("invalid original units");var R=zu[b];if(!R)throw new Error("invalid final units");return f/C*R}function lc(f){return!isNaN(f)&&f!==null&&!Array.isArray(f)}function qu(f){return!!f&&f.constructor===Object}function ng(f){if(!f)throw new Error("bbox is required");if(!Array.isArray(f))throw new Error("bbox must be an Array");if(f.length!==4&&f.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");f.forEach(function(g){if(!lc(g))throw new Error("bbox must only contain numbers")})}function sg(f){if(!f)throw new Error("id is required");if(["string","number"].indexOf(typeof f)===-1)throw new Error("id must be a number or a string")}const r_=Object.freeze(Object.defineProperty({__proto__:null,areaFactors:zu,bearingToAzimuth:eg,convertArea:rg,convertLength:ig,degreesToRadians:tg,earthRadius:Fi,factors:Vu,feature:on,featureCollection:gc,geometry:Hm,geometryCollection:Ym,isNumber:lc,isObject:qu,lengthToDegrees:Qm,lengthToRadians:$u,lineString:An,lineStrings:Km,multiLineString:Zd,multiPoint:Hd,multiPolygon:Xd,point:Sn,points:Xm,polygon:Nu,polygons:Wm,radiansToDegrees:Kd,radiansToLength:Wd,round:Jm,unitsFactors:Zm,validateBBox:ng,validateId:sg},Symbol.toStringTag,{value:"Module"}));function Vo(f,g,b){if(f!==null)for(var C,R,F,Z,a,W,B,he=0,se=0,ke,Pe=f.type,fe=Pe==="FeatureCollection",Le=Pe==="Feature",qe=fe?f.features.length:1,Ae=0;AeW||fe>B||Le>he){a=se,W=C,B=fe,he=Le,F=0;return}var qe=An([a,se],b.properties);if(g(qe,C,R,Le,F)===!1)return!1;F++,a=se})===!1)return!1}}})}function dg(f,g,b){var C=b,R=!1;return Qd(f,function(F,Z,a,W,B){R===!1&&b===void 0?C=F:C=g(C,F,Z,a,W,B),R=!0}),C}function ep(f,g){if(!f)throw new Error("geojson is required");_c(f,function(b,C,R){if(b.geometry!==null){var F=b.geometry.type,Z=b.geometry.coordinates;switch(F){case"LineString":if(g(b,C,R,0,0)===!1)return!1;break;case"Polygon":for(var a=0;ab[0]&&(g[0]=b[0]),g[1]>b[1]&&(g[1]=b[1]),g[2]{}){Zu(f,g),fetch(b).then(R=>{R.json().then(F=>{f.addSource(g,{type:"geojson",data:F}),C()})})}function Zu(f,g){if(f.getSource(g)){let b=[];for(let C of f.getStyle().layers)"source"in C&&C.source==g&&b.push(C.id);for(let C of b)f.removeLayer(C);f.removeSource(g)}}function Hu(f,g){f.getLayer(g.id)&&f.removeLayer(g.id);let b,C=!1;for(let R=Ld.length-1;R>=0;R--){let F=Ld[R];if(F==g.id){C=!0;break}f.getLayer(F)&&(b=F)}if(!C)throw new Error(`Layer ID ${g.id} not defined in layerZorder`);f.addLayer(g,b)}function d_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"fill",paint:{"fill-color":g.color,"fill-opacity":g.opacity}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function p_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"circle",paint:{"circle-radius":g.radius,"circle-color":g.color??zd,"circle-opacity":g.opacity??tp,"circle-stroke-color":g.strokeColor??zd,"circle-stroke-width":g.strokeWidth??0}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function f_(f,g){let b={id:g.id,source:g.source,filter:g.filter??Gu,type:"line",layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":g.color,"line-width":g.width,"line-opacity":g.opacity??tp}};g.sourceLayer&&(b["source-layer"]=g.sourceLayer),Hu(f,b)}function gg(){return{type:"FeatureCollection",features:[]}}function m_(f){return{type:"Feature",properties:{},geometry:{type:"Point",coordinates:_g(f)}}}function _g(f){return[Math.round(f[0]*1e7)/1e7,Math.round(f[1]*1e7)/1e7]}function g_(f,g,b){let C=["match",f];for(let[R,F]of Object.entries(g))C.push(R),C.push(F);return C.push(b),C}function __(f,g){return["case",["boolean",["feature-state","hover"],!1],f,g]}function y_(f){return cc(f)}function v_(f){return f<1e3?Math.round(f)+" m":(f/1e3).toFixed(1)+"km"}const Ld=["parliamentary_constituencies","parliamentary_constituencies-outline","wards","wards-outline","combined_authorities","combined_authorities-outline","local_authority_districts","local_authority_districts-outline","census_output_areas","census_output_areas-outline","schools","hospitals","green_spaces","sports_spaces","mrn","railway_stations","interventions-polygons","interventions-polygon-outlines","hover-polygons","hover-lines","interventions-lines","interventions-lines-endpoints","hover-points","interventions-points","edit-polygon-fill","edit-polygon-lines","edit-polygon-vertices","draw-split-route","draw-street-view","speed-limits","lane-polygons-layer","intersection-polygons-layer","lane-markings-layer","intersection-markings-layer","route-points","route-lines","route-polygons","road_label","boundary"];function yg(f){return f=="google"||f=="bing"}const vg=an(null),x_=an(null),xg=an(gg()),bg=an(null),wg=an(null),Eg=an(null),Tg=an(null),Sg=an(Ig());Sg.subscribe(f=>window.localStorage.setItem("userSettings",JSON.stringify(f)));const b_=an("edit-attribute"),w_=an(!1);function E_(f){let g=new Set;for(let C of f.features)g.add(C.id);let b=g.size+1;for(;g.has(b);)b++;return b}function T_(f){console.log(`Deleting intervention ${f}`),xg.update(g=>(g.features=g.features.filter(b=>b.id!=f),g)),bg.set(null),wg.set(null),Eg.set(null),Tg.set(null)}function Ig(){let f={streetViewImagery:"google",avoidDoublingBack:!1};try{let g=JSON.parse(window.localStorage.getItem("userSettings")||"{}");yg(g.streetViewImagery)&&(f.streetViewImagery=g.streetViewImagery),typeof g.avoidDoublingBack=="boolean"&&(f.avoidDoublingBack=g.avoidDoublingBack)}catch(g){console.log(`Couldn't parse userSettings from local storage: ${g}`)}return f}function Ag(f,g,b){let C;jf(f,vg,Le=>b(5,C=Le));const R=nm();let{layer:F}=g,{clickable:Z}=g,{tooltip:a=null}=g,{show:W=!0}=g,{hoveredFeature:B=null}=g,he=new Gd.Popup({closeButton:!1,closeOnClick:!1,maxWidth:"none"});im(()=>{C.on("mousemove",F,se),C.on("mouseleave",F,ke),Z&&C.on("click",F,fe)}),rm(()=>{C.off("mousemove",F,se),C.off("mouseleave",F,ke),Z&&C.off("click",F,fe),Pe(),he.remove()});function se(Le){let qe=Le.features??[];if(qe.length==0)return;qe[0].id||console.log(`Features in the ${F} layer don't have IDs; InteractiveLayer won't work`);let Ae=C.queryRenderedFeatures(Le.point);if(Ae.length>0&&Ae[0].layer.id!=F){ke();return}if((B==null?void 0:B.id)!=qe[0].id){if(Pe(),b(0,B=qe[0]),C.setFeatureState(B,{hover:!0}),a){let Je=`

${a(B)}
`;he.setLngLat(Le.lngLat).setHTML(Je).addTo(C)}Z&&(C.getCanvas().style.cursor="pointer")}else a&&he.setLngLat(Le.lngLat)}function ke(){Pe(),b(0,B=null),he.remove(),Z&&(C.getCanvas().style.cursor="inherit")}function Pe(){B&&C.setFeatureState(B,{hover:!1})}function fe(Le){let qe=Le.features??[];if(qe.length>0){let Ae=C.queryRenderedFeatures(Le.point);if(Ae.length>0&&Ae[0].layer.id!=F)return;R("click",qe[0])}}return f.$$set=Le=>{"layer"in Le&&b(1,F=Le.layer),"clickable"in Le&&b(2,Z=Le.clickable),"tooltip"in Le&&b(3,a=Le.tooltip),"show"in Le&&b(4,W=Le.show),"hoveredFeature"in Le&&b(0,B=Le.hoveredFeature)},f.$$.update=()=>{f.$$.dirty&50&&C.getLayer(F)&&C.setLayoutProperty(F,"visibility",W?"visible":"none")},[B,F,Z,a,W,C]}class S_ extends Ps{constructor(g){super(),Ms(this,g,Ag,null,is,{layer:1,clickable:2,tooltip:3,show:4,hoveredFeature:0})}}const Cg="/atip/more-trip-generators/assets/authorities-80e824dc.geojson";async function I_(){return await(await fetch(Cg)).json()}export{qg as $,I_ as A,Gd as B,vg as C,y_ as D,Qg as E,Lm as F,__ as G,uc as H,S_ as I,ic as J,Ad as K,dc as L,pc as M,hc as N,fm as O,Id as P,sm as Q,e_ as R,Ps as S,nm as T,Bu as U,Zg as V,Dg as W,Cd as X,Xd as Y,Nu as Z,jf as _,Rm as a,Ng as a$,c_ as a0,d_ as a1,xg as a2,Eg as a3,wg as a4,bg as a5,w_ as a6,f_ as a7,p_ as a8,gg as a9,Sg as aA,E_ as aB,Pg as aC,dg as aD,Vo as aE,cc as aF,lg as aG,Mg as aH,x_ as aI,Og as aJ,Fg as aK,ts as aL,ac as aM,Gg as aN,Hu as aO,v_ as aP,Bg as aQ,ec as aR,Xg as aS,Hg as aT,T_ as aU,t_ as aV,u_ as aW,h_ as aX,Jg as aY,zg as aZ,Vg as a_,o_ as aa,a_ as ab,l_ as ac,Rg as ad,b_ as ae,Tg as af,rm as ag,m_ as ah,tg as ai,Kd as aj,Wd as ak,$u as al,Sn as am,_c as an,gc as ao,An as ap,Am as aq,Yg as ar,r_ as as,n_ as at,s_ as au,Cm as av,on as aw,Jd as ax,_g as ay,g_ as az,ku as b,Lg as b0,$g as b1,Wg as c,i_ as d,Ir as e,rc as f,$d as g,Si as h,Ms as i,ks as j,fr as k,Cn as l,Ru as m,dm as n,jg as o,kn as p,Fu as q,im as r,is as s,jr as t,Ro as u,Ug as v,nc as w,Gr as x,hm as y,Kg as z}; diff --git a/more-trip-generators/assets/main-12a986b0.js b/more-trip-generators/assets/main-c3880008.js similarity index 97% rename from more-trip-generators/assets/main-12a986b0.js rename to more-trip-generators/assets/main-c3880008.js index 2b5d86ed3..e18d60aca 100644 --- a/more-trip-generators/assets/main-12a986b0.js +++ b/more-trip-generators/assets/main-c3880008.js @@ -1 +1 @@ -import{S as fe,i as pe,s as ce,a as de,F as me,b as U,c as x,d as he,e as E,f as $,g as T,h as k,j as C,k as p,m as I,t as h,l as _,n as ee,o as te,p as L,q as B,r as ge,u as le,E as $e,v as ne,w as _e,I as be,x as ve,y as ae,z as we,A as ye,B as ke,C as Ae,D as Se,G as Ee}from"./data_getter-0c8a0d3b.js";import{D as Te,R as Ie,A as Be}from"./About-f593afe9.js";function Ce(n){let t;return{c(){t=le("About")},m(e,o){C(e,t,o)},d(e){e&&L(t)}}}function oe(n){let t,e;return t=new $e({props:{errorMessage:n[2]}}),{c(){T(t.$$.fragment)},m(o,r){I(t,o,r),e=!0},p(o,r){const c={};r&4&&(c.errorMessage=o[2]),t.$set(c)},i(o){e||(h(t.$$.fragment,o),e=!0)},o(o){_(t.$$.fragment,o),e=!1},d(o){B(t,o)}}}function Le(n){let t,e,o,r,c;return{c(){t=E("input"),e=$(),o=E("datalist"),k(t,"class","govuk-input govuk-input--width-20"),k(t,"id","inputValue"),k(t,"data-testid","transport-authority"),k(t,"list","authorities-list"),k(o,"id","authorities-list")},m(g,d){C(g,t,d),ne(t,n[0]),C(g,e,d),C(g,o,d),n[12](o),r||(c=_e(t,"input",n[11]),r=!0)},p(g,d){d&1&&t.value!==g[0]&&ne(t,g[0])},d(g){g&&(L(t),L(e),L(o)),n[12](null),r=!1,c()}}}function Me(n){let t;return{c(){t=le("Start")},m(e,o){C(e,t,o)},d(e){e&&L(t)}}}function se(n){let t,e;return t=new be({props:{layer:W,clickable:!0,tooltip:Je}}),t.$on("click",Ne),{c(){T(t.$$.fragment)},m(o,r){I(t,o,r),e=!0},p:ve,i(o){e||(h(t.$$.fragment,o),e=!0)},o(o){_(t.$$.fragment,o),e=!1},d(o){B(t,o)}}}function je(n){let t,e,o,r,c,g,d,b,M,m,A,D,F,v,j,N,J,O,G,s,l,w,y,R,S,q,P;c=new de({props:{$$slots:{default:[Ce]},$$scope:{ctx:n}}}),c.$on("click",n[10]);let i=n[2]&&oe(n);b=new me({props:{label:"Select Transport Authority or Local Authority District",id:"inputValue",$$slots:{default:[Le]},$$scope:{ctx:n}}}),m=new Te({props:{disabled:!n[6],$$slots:{default:[Me]},$$scope:{ctx:n}}}),m.$on("click",n[9]);function ie(a){n[13](a)}let z={legend:"Or pick from the map",id:"showBoundaries",choices:[["TA","Transport Authorities"],["LAD","Local Authority Districts"]],inlineSmall:!0};n[5]!==void 0&&(z.value=n[5]),v=new Ie({props:z}),U.push(()=>x(v,"value",ie)),v.$on("change",n[7]);let H=De;s=new he({props:{label:"Or upload an ATIP GeoJSON file",loadFile:n[8],id:"load-geojson"}});let u=n[4]&&se();function ue(a){n[14](a)}let Z={};return n[1]!==void 0&&(Z.open=n[1]),S=new Be({props:Z}),U.push(()=>x(S,"open",ue)),{c(){t=E("div"),e=E("div"),o=E("h1"),o.textContent="Welcome to ATIP v2",r=$(),T(c.$$.fragment),g=$(),i&&i.c(),d=$(),T(b.$$.fragment),M=$(),T(m.$$.fragment),A=$(),D=E("hr"),F=$(),T(v.$$.fragment),N=$(),J=E("hr"),O=$(),G=$(),T(s.$$.fragment),l=$(),w=E("div"),w.innerHTML='
',y=$(),u&&u.c(),R=$(),T(S.$$.fragment),k(o,"class","govuk-heading-l"),k(e,"class","govuk-grid-column-one-half left svelte-lyn11h"),k(w,"class","govuk-grid-column-one-half"),k(t,"class","govuk-grid-row")},m(a,f){C(a,t,f),p(t,e),p(e,o),p(e,r),I(c,e,null),p(e,g),i&&i.m(e,null),p(e,d),I(b,e,null),p(e,M),I(m,e,null),p(e,A),p(e,D),p(e,F),I(v,e,null),p(e,N),p(e,J),p(e,O),p(e,G),I(s,e,null),p(t,l),p(t,w),p(t,y),u&&u.m(t,null),C(a,R,f),I(S,a,f),P=!0},p(a,[f]){const K={};f&131072&&(K.$$scope={dirty:f,ctx:a}),c.$set(K),a[2]?i?(i.p(a,f),f&4&&h(i,1)):(i=oe(a),i.c(),h(i,1),i.m(e,d)):i&&(ae(),_(i,1,1,()=>{i=null}),ee());const Q={};f&131081&&(Q.$$scope={dirty:f,ctx:a}),b.$set(Q);const V={};f&64&&(V.disabled=!a[6]),f&131072&&(V.$$scope={dirty:f,ctx:a}),m.$set(V);const X={};!j&&f&32&&(j=!0,X.value=a[5],te(()=>j=!1)),v.$set(X),a[4]?u?(u.p(a,f),f&16&&h(u,1)):(u=se(),u.c(),h(u,1),u.m(t,null)):u&&(ae(),_(u,1,1,()=>{u=null}),ee());const Y={};!q&&f&2&&(q=!0,Y.open=a[1],te(()=>q=!1)),S.$set(Y)},i(a){P||(h(c.$$.fragment,a),h(i),h(b.$$.fragment,a),h(m.$$.fragment,a),h(v.$$.fragment,a),h(H),h(s.$$.fragment,a),h(u),h(S.$$.fragment,a),P=!0)},o(a){_(c.$$.fragment,a),_(i),_(b.$$.fragment,a),_(m.$$.fragment,a),_(v.$$.fragment,a),_(H),_(s.$$.fragment,a),_(u),_(S.$$.fragment,a),P=!1},d(a){a&&(L(t),L(R)),B(c),i&&i.d(),B(b),B(m),B(v),B(s),u&&u.d(),B(S,a)}}}let De="",re="boundary",W="boundary-layer";function Fe(n){if(n.features.length>0){let t=n.features[0].properties;for(let e of["planning","v2","criticals"])if(t&&e in t)return e}return"v1"}function Ne(n){window.location.href=`scheme.html?authority=${n.detail.properties.name}`}function Je(n){return`

${n.properties.name}

`}function Oe(n,t,e){let o,r=!1,g=new URLSearchParams(window.location.search).get("error")||"",d,b,M=new Set,m=null,A="TA";function D(){m==null||m.setFilter(W,["==",["get","level"],A])}ge(async()=>{we();const s=await ye();for(let w of s.features){let y=document.createElement("option");y.value=w.properties.name,b.appendChild(y),M.add(w.properties.name)}let l=new ke.Map({container:"map",style:"https://api.maptiler.com/maps/streets/style.json?key=MZEJTanw3WpxRvt7qDfo"});e(4,m=l),Ae.set(m),l.on("load",function(){l.fitBounds(Se(s),{padding:20,animate:!1}),l.addSource(re,{type:"geojson",data:s,generateId:!0}),l.addLayer({id:W,source:re,filter:["==",["get","level"],A],type:"fill",paint:{"fill-color":"rgb(200, 100, 240)","fill-outline-color":"rgb(200, 100, 240)","fill-opacity":Ee(.8,.4)}})})});function F(s){try{let l=JSON.parse(s);if(!l.authority)throw new Error("File doesn't have an authority set; is it an ATIP file?");if(!M.has(l.authority))throw new Error(`Unknown authority ${l.authority}`);let w=l.authority,y=Fe(l);y!="v1"&&(w+=`_${y}`),window.localStorage.setItem(w,JSON.stringify(l)),window.location.href=`scheme.html?authority=${l.authority}&schema=${y}`}catch(l){e(2,g=`Couldn't load scheme from a file: ${l}`)}}function v(){window.location.href=`scheme.html?authority=${d}`}const j=()=>e(1,r=!r);function N(){d=this.value,e(0,d)}function J(s){U[s?"unshift":"push"](()=>{b=s,e(3,b)})}function O(s){A=s,e(5,A)}function G(s){r=s,e(1,r)}return n.$$.update=()=>{n.$$.dirty&1&&e(6,o=M.has(d))},[d,r,g,b,m,A,o,D,F,v,j,N,J,O,G]}class Ge extends fe{constructor(t){super(),pe(this,t,Oe,je,ce,{})}}document.body.className=document.body.className?document.body.className+" js-enabled":"js-enabled";new Ge({target:document.getElementById("app")}); +import{S as fe,i as pe,s as ce,a as de,F as me,b as U,c as x,d as he,e as E,f as $,g as T,h as k,j as C,k as p,m as I,t as h,l as _,n as ee,o as te,p as L,q as B,r as ge,u as le,E as $e,v as ne,w as _e,I as be,x as ve,y as ae,z as we,A as ye,B as ke,C as Ae,D as Se,G as Ee}from"./data_getter-7f8b97a7.js";import{D as Te,R as Ie,A as Be}from"./About-9a75fa51.js";function Ce(n){let t;return{c(){t=le("About")},m(e,o){C(e,t,o)},d(e){e&&L(t)}}}function oe(n){let t,e;return t=new $e({props:{errorMessage:n[2]}}),{c(){T(t.$$.fragment)},m(o,r){I(t,o,r),e=!0},p(o,r){const c={};r&4&&(c.errorMessage=o[2]),t.$set(c)},i(o){e||(h(t.$$.fragment,o),e=!0)},o(o){_(t.$$.fragment,o),e=!1},d(o){B(t,o)}}}function Le(n){let t,e,o,r,c;return{c(){t=E("input"),e=$(),o=E("datalist"),k(t,"class","govuk-input govuk-input--width-20"),k(t,"id","inputValue"),k(t,"data-testid","transport-authority"),k(t,"list","authorities-list"),k(o,"id","authorities-list")},m(g,d){C(g,t,d),ne(t,n[0]),C(g,e,d),C(g,o,d),n[12](o),r||(c=_e(t,"input",n[11]),r=!0)},p(g,d){d&1&&t.value!==g[0]&&ne(t,g[0])},d(g){g&&(L(t),L(e),L(o)),n[12](null),r=!1,c()}}}function Me(n){let t;return{c(){t=le("Start")},m(e,o){C(e,t,o)},d(e){e&&L(t)}}}function se(n){let t,e;return t=new be({props:{layer:W,clickable:!0,tooltip:Je}}),t.$on("click",Ne),{c(){T(t.$$.fragment)},m(o,r){I(t,o,r),e=!0},p:ve,i(o){e||(h(t.$$.fragment,o),e=!0)},o(o){_(t.$$.fragment,o),e=!1},d(o){B(t,o)}}}function je(n){let t,e,o,r,c,g,d,b,M,m,A,D,F,v,j,N,J,O,G,s,l,w,y,R,S,q,P;c=new de({props:{$$slots:{default:[Ce]},$$scope:{ctx:n}}}),c.$on("click",n[10]);let i=n[2]&&oe(n);b=new me({props:{label:"Select Transport Authority or Local Authority District",id:"inputValue",$$slots:{default:[Le]},$$scope:{ctx:n}}}),m=new Te({props:{disabled:!n[6],$$slots:{default:[Me]},$$scope:{ctx:n}}}),m.$on("click",n[9]);function ie(a){n[13](a)}let z={legend:"Or pick from the map",id:"showBoundaries",choices:[["TA","Transport Authorities"],["LAD","Local Authority Districts"]],inlineSmall:!0};n[5]!==void 0&&(z.value=n[5]),v=new Ie({props:z}),U.push(()=>x(v,"value",ie)),v.$on("change",n[7]);let H=De;s=new he({props:{label:"Or upload an ATIP GeoJSON file",loadFile:n[8],id:"load-geojson"}});let u=n[4]&&se();function ue(a){n[14](a)}let Z={};return n[1]!==void 0&&(Z.open=n[1]),S=new Be({props:Z}),U.push(()=>x(S,"open",ue)),{c(){t=E("div"),e=E("div"),o=E("h1"),o.textContent="Welcome to ATIP v2",r=$(),T(c.$$.fragment),g=$(),i&&i.c(),d=$(),T(b.$$.fragment),M=$(),T(m.$$.fragment),A=$(),D=E("hr"),F=$(),T(v.$$.fragment),N=$(),J=E("hr"),O=$(),G=$(),T(s.$$.fragment),l=$(),w=E("div"),w.innerHTML='
',y=$(),u&&u.c(),R=$(),T(S.$$.fragment),k(o,"class","govuk-heading-l"),k(e,"class","govuk-grid-column-one-half left svelte-lyn11h"),k(w,"class","govuk-grid-column-one-half"),k(t,"class","govuk-grid-row")},m(a,f){C(a,t,f),p(t,e),p(e,o),p(e,r),I(c,e,null),p(e,g),i&&i.m(e,null),p(e,d),I(b,e,null),p(e,M),I(m,e,null),p(e,A),p(e,D),p(e,F),I(v,e,null),p(e,N),p(e,J),p(e,O),p(e,G),I(s,e,null),p(t,l),p(t,w),p(t,y),u&&u.m(t,null),C(a,R,f),I(S,a,f),P=!0},p(a,[f]){const K={};f&131072&&(K.$$scope={dirty:f,ctx:a}),c.$set(K),a[2]?i?(i.p(a,f),f&4&&h(i,1)):(i=oe(a),i.c(),h(i,1),i.m(e,d)):i&&(ae(),_(i,1,1,()=>{i=null}),ee());const Q={};f&131081&&(Q.$$scope={dirty:f,ctx:a}),b.$set(Q);const V={};f&64&&(V.disabled=!a[6]),f&131072&&(V.$$scope={dirty:f,ctx:a}),m.$set(V);const X={};!j&&f&32&&(j=!0,X.value=a[5],te(()=>j=!1)),v.$set(X),a[4]?u?(u.p(a,f),f&16&&h(u,1)):(u=se(),u.c(),h(u,1),u.m(t,null)):u&&(ae(),_(u,1,1,()=>{u=null}),ee());const Y={};!q&&f&2&&(q=!0,Y.open=a[1],te(()=>q=!1)),S.$set(Y)},i(a){P||(h(c.$$.fragment,a),h(i),h(b.$$.fragment,a),h(m.$$.fragment,a),h(v.$$.fragment,a),h(H),h(s.$$.fragment,a),h(u),h(S.$$.fragment,a),P=!0)},o(a){_(c.$$.fragment,a),_(i),_(b.$$.fragment,a),_(m.$$.fragment,a),_(v.$$.fragment,a),_(H),_(s.$$.fragment,a),_(u),_(S.$$.fragment,a),P=!1},d(a){a&&(L(t),L(R)),B(c),i&&i.d(),B(b),B(m),B(v),B(s),u&&u.d(),B(S,a)}}}let De="",re="boundary",W="boundary-layer";function Fe(n){if(n.features.length>0){let t=n.features[0].properties;for(let e of["planning","v2","criticals"])if(t&&e in t)return e}return"v1"}function Ne(n){window.location.href=`scheme.html?authority=${n.detail.properties.name}`}function Je(n){return`

${n.properties.name}

`}function Oe(n,t,e){let o,r=!1,g=new URLSearchParams(window.location.search).get("error")||"",d,b,M=new Set,m=null,A="TA";function D(){m==null||m.setFilter(W,["==",["get","level"],A])}ge(async()=>{we();const s=await ye();for(let w of s.features){let y=document.createElement("option");y.value=w.properties.name,b.appendChild(y),M.add(w.properties.name)}let l=new ke.Map({container:"map",style:"https://api.maptiler.com/maps/streets/style.json?key=MZEJTanw3WpxRvt7qDfo"});e(4,m=l),Ae.set(m),l.on("load",function(){l.fitBounds(Se(s),{padding:20,animate:!1}),l.addSource(re,{type:"geojson",data:s,generateId:!0}),l.addLayer({id:W,source:re,filter:["==",["get","level"],A],type:"fill",paint:{"fill-color":"rgb(200, 100, 240)","fill-outline-color":"rgb(200, 100, 240)","fill-opacity":Ee(.8,.4)}})})});function F(s){try{let l=JSON.parse(s);if(!l.authority)throw new Error("File doesn't have an authority set; is it an ATIP file?");if(!M.has(l.authority))throw new Error(`Unknown authority ${l.authority}`);let w=l.authority,y=Fe(l);y!="v1"&&(w+=`_${y}`),window.localStorage.setItem(w,JSON.stringify(l)),window.location.href=`scheme.html?authority=${l.authority}&schema=${y}`}catch(l){e(2,g=`Couldn't load scheme from a file: ${l}`)}}function v(){window.location.href=`scheme.html?authority=${d}`}const j=()=>e(1,r=!r);function N(){d=this.value,e(0,d)}function J(s){U[s?"unshift":"push"](()=>{b=s,e(3,b)})}function O(s){A=s,e(5,A)}function G(s){r=s,e(1,r)}return n.$$.update=()=>{n.$$.dirty&1&&e(6,o=M.has(d))},[d,r,g,b,m,A,o,D,F,v,j,N,J,O,G]}class Ge extends fe{constructor(t){super(),pe(this,t,Oe,je,ce,{})}}document.body.className=document.body.className?document.body.className+" js-enabled":"js-enabled";new Ge({target:document.getElementById("app")}); diff --git a/more-trip-generators/assets/nested-49b7b9dd.js b/more-trip-generators/assets/nested-ffd118b6.js similarity index 99% rename from more-trip-generators/assets/nested-49b7b9dd.js rename to more-trip-generators/assets/nested-ffd118b6.js index 8181d13ab..5adaa1514 100644 --- a/more-trip-generators/assets/nested-49b7b9dd.js +++ b/more-trip-generators/assets/nested-ffd118b6.js @@ -1,4 +1,4 @@ -var Ei=Object.defineProperty;var Mi=(r,e,t)=>e in r?Ei(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Y=(r,e,t)=>(Mi(r,typeof e!="symbol"?e+"":e,t),t);import{S as W,i as V,s as K,F as Xn,g as L,m as A,t as y,l as $,q as T,e as N,h as D,j as k,v as ve,w as ce,p as S,H as $o,J as Cn,K as pr,L as ko,M as So,N as Eo,O as Ci,P as dr,Q as Li,R as Mo,b as Q,c as ne,o as re,T as Ai,a as Ie,u as j,f as I,k as C,U as we,V as xe,x as G,W as Zt,X as pe,Y as Ti,Z as Ri,_ as z,C as De,$ as Oi,D as Co,a0 as it,a1 as Wn,a2 as se,a3 as Qt,a4 as Ue,a5 as Ae,a6 as Pt,a7 as It,a8 as dn,a9 as Qe,aa as Vn,ab as Kn,ac as Zn,ad as ae,ae as ye,af as en,ag as gn,ah as Ht,ai as Re,aj as Ln,ak as Ii,al as Fi,am as dt,an as Qn,ao as Ke,ap as gt,aq as Ni,ar as er,as as Pi,at as xi,au as Bi,av as Di,aw as gr,ax as tn,ay as jt,az as ht,aA as nn,y as oe,n as ie,aB as hn,aC as nt,r as xt,aD as Hi,aE as ji,aF as Ui,aG as qi,aH as hr,I as Gi,aI as _t,d as Yi,E as Ji,aJ as Lo,aK as tr,aL as mn,aM as Ao,aN as rn,aO as zi,aP as mr,aQ as _r,aR as br,aS as Xi,aT as Wi,aU as yr,z as Vi,A as Ki}from"./data_getter-0c8a0d3b.js";import{c as Ut,l as An,a as To,s as mt,C as st,b as Zi,d as vr,H as Ro,S as Oo,e as Tn,L as Qi,Z as es,f as ts,M as ns,I as rs,g as os,h as is,i as ss,B as ls}from"./schemas-7562f92e.js";import{D as nr,R as Io,A as as}from"./About-f593afe9.js";function us(r){let e,t,n;return{c(){e=N("textarea"),D(e,"class","govuk-textarea"),D(e,"id",r[1]),D(e,"rows",r[2])},m(o,i){k(o,e,i),ve(e,r[0]),t||(n=ce(e,"input",r[3]),t=!0)},p(o,i){i&2&&D(e,"id",o[1]),i&4&&D(e,"rows",o[2]),i&1&&ve(e,o[0])},d(o){o&&S(e),t=!1,n()}}}function fs(r){let e,t;return e=new Xn({props:{label:r[1],id:r[1],$$slots:{default:[us]},$$scope:{ctx:r}}}),{c(){L(e.$$.fragment)},m(n,o){A(e,n,o),t=!0},p(n,[o]){const i={};o&2&&(i.label=n[1]),o&2&&(i.id=n[1]),o&23&&(i.$$scope={dirty:o,ctx:n}),e.$set(i)},i(n){t||(y(e.$$.fragment,n),t=!0)},o(n){$(e.$$.fragment,n),t=!1},d(n){T(e,n)}}}function cs(r,e,t){let{label:n}=e,{value:o}=e,{rows:i=5}=e;function s(){o=this.value,t(0,o)}return r.$$set=a=>{"label"in a&&t(1,n=a.label),"value"in a&&t(0,o=a.value),"rows"in a&&t(2,i=a.rows)},[o,n,i,s]}class ps extends W{constructor(e){super(),V(this,e,cs,fs,K,{label:1,value:0,rows:2})}}function ds(r){let e,t,n;return{c(){e=N("input"),D(e,"type","text"),D(e,"class","govuk-input"),D(e,"id",r[1])},m(o,i){k(o,e,i),ve(e,r[0]),t||(n=ce(e,"input",r[2]),t=!0)},p(o,i){i&2&&D(e,"id",o[1]),i&1&&e.value!==o[0]&&ve(e,o[0])},d(o){o&&S(e),t=!1,n()}}}function gs(r){let e,t;return e=new Xn({props:{label:r[1],id:r[1],$$slots:{default:[ds]},$$scope:{ctx:r}}}),{c(){L(e.$$.fragment)},m(n,o){A(e,n,o),t=!0},p(n,[o]){const i={};o&2&&(i.label=n[1]),o&2&&(i.id=n[1]),o&11&&(i.$$scope={dirty:o,ctx:n}),e.$set(i)},i(n){t||(y(e.$$.fragment,n),t=!0)},o(n){$(e.$$.fragment,n),t=!1},d(n){T(e,n)}}}function hs(r,e,t){let{label:n}=e,{value:o}=e;function i(){o=this.value,t(0,o)}return r.$$set=s=>{"label"in s&&t(1,n=s.label),"value"in s&&t(0,o=s.value)},[o,n,i]}class ms extends W{constructor(e){super(),V(this,e,hs,gs,K,{label:1,value:0})}}function _s(r){let e,t,n,o;const i=r[2].default,s=$o(i,r,r[1],null);let a=[{type:"button"},{class:"govuk-button govuk-button--warning"},{"data-module":"govuk-button"},r[0]],l={};for(let u=0;u{t(0,e=Cn(Cn({},e),dr(s))),"$$scope"in s&&t(1,o=s.$$scope)},e=dr(e),[e,o,n,i]}class rr extends W{constructor(e){super(),V(this,e,bs,_s,K,{})}}function ys(r){let e;return{c(){e=j(r[5])},m(t,n){k(t,e,n)},p(t,n){n&32&&we(e,t[5])},d(t){t&&S(e)}}}function vs(r){let e;return{c(){e=j(r[6])},m(t,n){k(t,e,n)},p(t,n){n&64&&we(e,t[6])},d(t){t&&S(e)}}}function ws(r){let e,t,n,o,i,s,a,l;return i=new rr({props:{$$slots:{default:[ys]},$$scope:{ctx:r}}}),i.$on("click",r[7]),a=new Ie({props:{$$slots:{default:[vs]},$$scope:{ctx:r}}}),a.$on("click",r[8]),{c(){e=N("p"),t=j(r[4]),n=I(),o=N("div"),L(i.$$.fragment),s=I(),L(a.$$.fragment),D(o,"class","govuk-button-group")},m(u,f){k(u,e,f),C(e,t),k(u,n,f),k(u,o,f),A(i,o,null),C(o,s),A(a,o,null),l=!0},p(u,f){(!l||f&16)&&we(t,u[4]);const c={};f&16416&&(c.$$scope={dirty:f,ctx:u}),i.$set(c);const d={};f&16448&&(d.$$scope={dirty:f,ctx:u}),a.$set(d)},i(u){l||(y(i.$$.fragment,u),y(a.$$.fragment,u),l=!0)},o(u){$(i.$$.fragment,u),$(a.$$.fragment,u),l=!1},d(u){u&&(S(e),S(n),S(o)),T(i),T(a)}}}function $s(r){let e,t,n,o,i,s;function a(d){r[9](d)}function l(d){r[10](d)}function u(d){r[11](d)}function f(d){r[12](d)}let c={$$slots:{default:[ws]},$$scope:{ctx:r}};return r[3]!==void 0&&(c.title=r[3]),r[0]!==void 0&&(c.open=r[0]),r[1]!==void 0&&(c.displayEscapeButton=r[1]),r[2]!==void 0&&(c.canCloseByClickingBackground=r[2]),e=new Mo({props:c}),Q.push(()=>ne(e,"title",a)),Q.push(()=>ne(e,"open",l)),Q.push(()=>ne(e,"displayEscapeButton",u)),Q.push(()=>ne(e,"canCloseByClickingBackground",f)),{c(){L(e.$$.fragment)},m(d,m){A(e,d,m),s=!0},p(d,[m]){const w={};m&16496&&(w.$$scope={dirty:m,ctx:d}),!t&&m&8&&(t=!0,w.title=d[3],re(()=>t=!1)),!n&&m&1&&(n=!0,w.open=d[0],re(()=>n=!1)),!o&&m&2&&(o=!0,w.displayEscapeButton=d[1],re(()=>o=!1)),!i&&m&4&&(i=!0,w.canCloseByClickingBackground=d[2],re(()=>i=!1)),e.$set(w)},i(d){s||(y(e.$$.fragment,d),s=!0)},o(d){$(e.$$.fragment,d),s=!1},d(d){T(e,d)}}}function ks(r,e,t){const n=Ai();let{open:o=!1}=e,{displayEscapeButton:i=!1}=e,{canCloseByClickingBackground:s=!1}=e,{title:a}=e,{message:l}=e,{confirmButtonText:u="Confirm"}=e,{cancelButtonText:f="Cancel"}=e;function c(){n("confirmAction")}function d(){n("cancelAction")}function m(h){a=h,t(3,a)}function w(h){o=h,t(0,o)}function _(h){i=h,t(1,i)}function g(h){s=h,t(2,s)}return r.$$set=h=>{"open"in h&&t(0,o=h.open),"displayEscapeButton"in h&&t(1,i=h.displayEscapeButton),"canCloseByClickingBackground"in h&&t(2,s=h.canCloseByClickingBackground),"title"in h&&t(3,a=h.title),"message"in h&&t(4,l=h.message),"confirmButtonText"in h&&t(5,u=h.confirmButtonText),"cancelButtonText"in h&&t(6,f=h.cancelButtonText)},[o,i,s,a,l,u,f,c,d,m,w,_,g]}class Ss extends W{constructor(e){super(),V(this,e,ks,$s,K,{open:0,displayEscapeButton:1,canCloseByClickingBackground:2,title:3,message:4,confirmButtonText:5,cancelButtonText:6})}}function wr(r,e,t){const n=r.slice();return n[3]=e[t],n}function $r(r,e,t){const n=r.slice();return n[6]=e[t],n}function kr(r){let e;return{c(){e=N("td"),D(e,"class","svelte-11t6rxo"),pe(e,"background-color",r[6])},m(t,n){k(t,e,n)},p(t,n){n&1&&pe(e,"background-color",t[6])},d(t){t&&S(e)}}}function Sr(r){let e,t=r[3]+"",n;return{c(){e=N("td"),n=j(t),D(e,"class","svelte-11t6rxo"),pe(e,"width",r[2])},m(o,i){k(o,e,i),C(e,n)},p(o,i){i&2&&t!==(t=o[3]+"")&&we(n,t)},d(o){o&&S(e)}}}function Es(r){let e,t,n,o,i=xe(r[0]),s=[];for(let u=0;u{"colors"in s&&t(0,n=s.colors),"labels"in s&&t(1,o=s.labels)},[n,o,i]}class Cs extends W{constructor(e){super(),V(this,e,Ms,Es,K,{colors:0,labels:1})}}/** +var Ei=Object.defineProperty;var Mi=(r,e,t)=>e in r?Ei(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Y=(r,e,t)=>(Mi(r,typeof e!="symbol"?e+"":e,t),t);import{S as W,i as V,s as K,F as Xn,g as L,m as A,t as y,l as $,q as T,e as N,h as D,j as k,v as ve,w as ce,p as S,H as $o,J as Cn,K as pr,L as ko,M as So,N as Eo,O as Ci,P as dr,Q as Li,R as Mo,b as Q,c as ne,o as re,T as Ai,a as Ie,u as j,f as I,k as C,U as we,V as xe,x as G,W as Zt,X as pe,Y as Ti,Z as Ri,_ as z,C as De,$ as Oi,D as Co,a0 as it,a1 as Wn,a2 as se,a3 as Qt,a4 as Ue,a5 as Ae,a6 as Pt,a7 as It,a8 as dn,a9 as Qe,aa as Vn,ab as Kn,ac as Zn,ad as ae,ae as ye,af as en,ag as gn,ah as Ht,ai as Re,aj as Ln,ak as Ii,al as Fi,am as dt,an as Qn,ao as Ke,ap as gt,aq as Ni,ar as er,as as Pi,at as xi,au as Bi,av as Di,aw as gr,ax as tn,ay as jt,az as ht,aA as nn,y as oe,n as ie,aB as hn,aC as nt,r as xt,aD as Hi,aE as ji,aF as Ui,aG as qi,aH as hr,I as Gi,aI as _t,d as Yi,E as Ji,aJ as Lo,aK as tr,aL as mn,aM as Ao,aN as rn,aO as zi,aP as mr,aQ as _r,aR as br,aS as Xi,aT as Wi,aU as yr,z as Vi,A as Ki}from"./data_getter-7f8b97a7.js";import{c as Ut,l as An,a as To,s as mt,C as st,b as Zi,d as vr,H as Ro,S as Oo,e as Tn,L as Qi,Z as es,f as ts,M as ns,I as rs,g as os,h as is,i as ss,B as ls}from"./schemas-d03b3d63.js";import{D as nr,R as Io,A as as}from"./About-9a75fa51.js";function us(r){let e,t,n;return{c(){e=N("textarea"),D(e,"class","govuk-textarea"),D(e,"id",r[1]),D(e,"rows",r[2])},m(o,i){k(o,e,i),ve(e,r[0]),t||(n=ce(e,"input",r[3]),t=!0)},p(o,i){i&2&&D(e,"id",o[1]),i&4&&D(e,"rows",o[2]),i&1&&ve(e,o[0])},d(o){o&&S(e),t=!1,n()}}}function fs(r){let e,t;return e=new Xn({props:{label:r[1],id:r[1],$$slots:{default:[us]},$$scope:{ctx:r}}}),{c(){L(e.$$.fragment)},m(n,o){A(e,n,o),t=!0},p(n,[o]){const i={};o&2&&(i.label=n[1]),o&2&&(i.id=n[1]),o&23&&(i.$$scope={dirty:o,ctx:n}),e.$set(i)},i(n){t||(y(e.$$.fragment,n),t=!0)},o(n){$(e.$$.fragment,n),t=!1},d(n){T(e,n)}}}function cs(r,e,t){let{label:n}=e,{value:o}=e,{rows:i=5}=e;function s(){o=this.value,t(0,o)}return r.$$set=a=>{"label"in a&&t(1,n=a.label),"value"in a&&t(0,o=a.value),"rows"in a&&t(2,i=a.rows)},[o,n,i,s]}class ps extends W{constructor(e){super(),V(this,e,cs,fs,K,{label:1,value:0,rows:2})}}function ds(r){let e,t,n;return{c(){e=N("input"),D(e,"type","text"),D(e,"class","govuk-input"),D(e,"id",r[1])},m(o,i){k(o,e,i),ve(e,r[0]),t||(n=ce(e,"input",r[2]),t=!0)},p(o,i){i&2&&D(e,"id",o[1]),i&1&&e.value!==o[0]&&ve(e,o[0])},d(o){o&&S(e),t=!1,n()}}}function gs(r){let e,t;return e=new Xn({props:{label:r[1],id:r[1],$$slots:{default:[ds]},$$scope:{ctx:r}}}),{c(){L(e.$$.fragment)},m(n,o){A(e,n,o),t=!0},p(n,[o]){const i={};o&2&&(i.label=n[1]),o&2&&(i.id=n[1]),o&11&&(i.$$scope={dirty:o,ctx:n}),e.$set(i)},i(n){t||(y(e.$$.fragment,n),t=!0)},o(n){$(e.$$.fragment,n),t=!1},d(n){T(e,n)}}}function hs(r,e,t){let{label:n}=e,{value:o}=e;function i(){o=this.value,t(0,o)}return r.$$set=s=>{"label"in s&&t(1,n=s.label),"value"in s&&t(0,o=s.value)},[o,n,i]}class ms extends W{constructor(e){super(),V(this,e,hs,gs,K,{label:1,value:0})}}function _s(r){let e,t,n,o;const i=r[2].default,s=$o(i,r,r[1],null);let a=[{type:"button"},{class:"govuk-button govuk-button--warning"},{"data-module":"govuk-button"},r[0]],l={};for(let u=0;u{t(0,e=Cn(Cn({},e),dr(s))),"$$scope"in s&&t(1,o=s.$$scope)},e=dr(e),[e,o,n,i]}class rr extends W{constructor(e){super(),V(this,e,bs,_s,K,{})}}function ys(r){let e;return{c(){e=j(r[5])},m(t,n){k(t,e,n)},p(t,n){n&32&&we(e,t[5])},d(t){t&&S(e)}}}function vs(r){let e;return{c(){e=j(r[6])},m(t,n){k(t,e,n)},p(t,n){n&64&&we(e,t[6])},d(t){t&&S(e)}}}function ws(r){let e,t,n,o,i,s,a,l;return i=new rr({props:{$$slots:{default:[ys]},$$scope:{ctx:r}}}),i.$on("click",r[7]),a=new Ie({props:{$$slots:{default:[vs]},$$scope:{ctx:r}}}),a.$on("click",r[8]),{c(){e=N("p"),t=j(r[4]),n=I(),o=N("div"),L(i.$$.fragment),s=I(),L(a.$$.fragment),D(o,"class","govuk-button-group")},m(u,f){k(u,e,f),C(e,t),k(u,n,f),k(u,o,f),A(i,o,null),C(o,s),A(a,o,null),l=!0},p(u,f){(!l||f&16)&&we(t,u[4]);const c={};f&16416&&(c.$$scope={dirty:f,ctx:u}),i.$set(c);const d={};f&16448&&(d.$$scope={dirty:f,ctx:u}),a.$set(d)},i(u){l||(y(i.$$.fragment,u),y(a.$$.fragment,u),l=!0)},o(u){$(i.$$.fragment,u),$(a.$$.fragment,u),l=!1},d(u){u&&(S(e),S(n),S(o)),T(i),T(a)}}}function $s(r){let e,t,n,o,i,s;function a(d){r[9](d)}function l(d){r[10](d)}function u(d){r[11](d)}function f(d){r[12](d)}let c={$$slots:{default:[ws]},$$scope:{ctx:r}};return r[3]!==void 0&&(c.title=r[3]),r[0]!==void 0&&(c.open=r[0]),r[1]!==void 0&&(c.displayEscapeButton=r[1]),r[2]!==void 0&&(c.canCloseByClickingBackground=r[2]),e=new Mo({props:c}),Q.push(()=>ne(e,"title",a)),Q.push(()=>ne(e,"open",l)),Q.push(()=>ne(e,"displayEscapeButton",u)),Q.push(()=>ne(e,"canCloseByClickingBackground",f)),{c(){L(e.$$.fragment)},m(d,m){A(e,d,m),s=!0},p(d,[m]){const w={};m&16496&&(w.$$scope={dirty:m,ctx:d}),!t&&m&8&&(t=!0,w.title=d[3],re(()=>t=!1)),!n&&m&1&&(n=!0,w.open=d[0],re(()=>n=!1)),!o&&m&2&&(o=!0,w.displayEscapeButton=d[1],re(()=>o=!1)),!i&&m&4&&(i=!0,w.canCloseByClickingBackground=d[2],re(()=>i=!1)),e.$set(w)},i(d){s||(y(e.$$.fragment,d),s=!0)},o(d){$(e.$$.fragment,d),s=!1},d(d){T(e,d)}}}function ks(r,e,t){const n=Ai();let{open:o=!1}=e,{displayEscapeButton:i=!1}=e,{canCloseByClickingBackground:s=!1}=e,{title:a}=e,{message:l}=e,{confirmButtonText:u="Confirm"}=e,{cancelButtonText:f="Cancel"}=e;function c(){n("confirmAction")}function d(){n("cancelAction")}function m(h){a=h,t(3,a)}function w(h){o=h,t(0,o)}function _(h){i=h,t(1,i)}function g(h){s=h,t(2,s)}return r.$$set=h=>{"open"in h&&t(0,o=h.open),"displayEscapeButton"in h&&t(1,i=h.displayEscapeButton),"canCloseByClickingBackground"in h&&t(2,s=h.canCloseByClickingBackground),"title"in h&&t(3,a=h.title),"message"in h&&t(4,l=h.message),"confirmButtonText"in h&&t(5,u=h.confirmButtonText),"cancelButtonText"in h&&t(6,f=h.cancelButtonText)},[o,i,s,a,l,u,f,c,d,m,w,_,g]}class Ss extends W{constructor(e){super(),V(this,e,ks,$s,K,{open:0,displayEscapeButton:1,canCloseByClickingBackground:2,title:3,message:4,confirmButtonText:5,cancelButtonText:6})}}function wr(r,e,t){const n=r.slice();return n[3]=e[t],n}function $r(r,e,t){const n=r.slice();return n[6]=e[t],n}function kr(r){let e;return{c(){e=N("td"),D(e,"class","svelte-11t6rxo"),pe(e,"background-color",r[6])},m(t,n){k(t,e,n)},p(t,n){n&1&&pe(e,"background-color",t[6])},d(t){t&&S(e)}}}function Sr(r){let e,t=r[3]+"",n;return{c(){e=N("td"),n=j(t),D(e,"class","svelte-11t6rxo"),pe(e,"width",r[2])},m(o,i){k(o,e,i),C(e,n)},p(o,i){i&2&&t!==(t=o[3]+"")&&we(n,t)},d(o){o&&S(e)}}}function Es(r){let e,t,n,o,i=xe(r[0]),s=[];for(let u=0;u{"colors"in s&&t(0,n=s.colors),"labels"in s&&t(1,o=s.labels)},[n,o,i]}class Cs extends W{constructor(e){super(),V(this,e,Ms,Es,K,{colors:0,labels:1})}}/** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: Apache-2.0 diff --git a/more-trip-generators/assets/nested2-fe929b82.js b/more-trip-generators/assets/nested2-50f4dd6f.js similarity index 89% rename from more-trip-generators/assets/nested2-fe929b82.js rename to more-trip-generators/assets/nested2-50f4dd6f.js index 703f63020..baac807e4 100644 --- a/more-trip-generators/assets/nested2-fe929b82.js +++ b/more-trip-generators/assets/nested2-50f4dd6f.js @@ -1,5 +1,5 @@ -import{S as F,i as j,s as R,V as Le,e as A,f as M,X as ue,j as m,x as ae,p as g,W as Ke,u as b,k as S,U as te,b as V,c as Z,I as ne,g as w,m as v,o as q,t as h,y as me,l as _,n as ge,q as k,_ as W,C as re,aW as Pe,a1 as De,G as de,a7 as Oe,h as G,aV as z,a0 as Dt,az as Yt,a2 as Te,r as Ye,F as Qt,a as Ie,v as ft,w as en,H as Ot,L as Mt,M as Nt,N as Ut,aX as tn,a8 as nn,ac as rn,D as At,aY as ct,ag as Bt,d as sn,z as on,A as ln,a9 as an,aP as fn,E as cn,ad as un}from"./data_getter-0c8a0d3b.js";import{d as ie,H as fe,j as we,S as We,h as $n,i as ut,g as Pt,C as _e,a as pn,L as mn,Z as gn,M as hn,I as _n,B as dn,b as Qe}from"./schemas-7562f92e.js";const K={schools:"#007DBB",hospitals:"#B73D25",mrn:"#006478",green_spaces:"green",sports_spaces:"#013220",railway_stations:"#7BD352",parliamentary_constituencies:"#006E59",wards:"purple",combined_authorities:"cyan",local_authority_districts:"orange",sequential_low_to_high:["#CDE594","#80C6A3","#1F9EB7","#186290","#080C54"],atf2:"#00AFFF",atf3:"#FF62DC",atf4:"#FFD833"};function $t(s,e,n){const t=s.slice();return t[2]=e[n],t}function pt(s,e,n){const t=s.slice();return t[5]=e[n],t}function mt(s){let e,n;return{c(){e=A("span"),n=b(`  - `),ue(e,"background",s[5]),ue(e,"width","100%"),ue(e,"border","1px solid black")},m(t,r){m(t,e,r),S(e,n)},p(t,r){r&1&&ue(e,"background",t[5])},d(t){t&&g(e)}}}function gt(s){let e,n=s[2].toLocaleString()+"",t;return{c(){e=A("span"),t=b(n)},m(r,o){m(r,e,o),S(e,t)},p(r,o){o&2&&n!==(n=r[2].toLocaleString()+"")&&te(t,n)},d(r){r&&g(e)}}}function wn(s){let e,n,t,r=Le(s[0]),o=[];for(let l=0;l{"colorScale"in o&&n(0,t=o.colorScale),"limits"in o&&n(1,r=o.limits)},[t,r]}class et extends F{constructor(e){super(),j(this,e,vn,wn,R,{colorScale:0,limits:1})}}function kn(s){let e;return{c(){e=b("Percent of households with a car")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function bn(s){let e;return{c(){e=b(`NOMIS TS045 +import{S as j,i as F,s as R,V as Le,e as A,f as M,X as ue,j as m,x as ae,p as g,W as Ke,u as b,k as S,U as te,b as V,c as Z,I as ne,g as w,m as v,o as q,t as h,y as me,l as _,n as ge,q as k,_ as W,C as re,aW as Pe,a1 as De,G as de,a7 as Oe,h as G,aV as z,a0 as Dt,az as Yt,a2 as Te,r as Ye,F as Qt,a as Ie,v as ft,w as en,H as Ot,L as Mt,M as Nt,N as Ut,aX as tn,a8 as nn,ac as rn,D as At,aY as ct,ag as Bt,d as sn,z as on,A as ln,a9 as an,aP as fn,E as cn,ad as un}from"./data_getter-7f8b97a7.js";import{d as ie,H as fe,j as we,S as We,h as $n,i as ut,g as Pt,C as _e,a as pn,L as mn,Z as gn,M as hn,I as _n,B as dn,b as Qe}from"./schemas-d03b3d63.js";const K={schools:"#007DBB",hospitals:"#B73D25",mrn:"#006478",green_spaces:"green",sports_spaces:"#013220",railway_stations:"#7BD352",parliamentary_constituencies:"#006E59",wards:"purple",combined_authorities:"cyan",local_authority_districts:"orange",sequential_low_to_high:["#CDE594","#80C6A3","#1F9EB7","#186290","#080C54"],atf2:"#00AFFF",atf3:"#FF62DC",atf4:"#FFD833"};function $t(s,e,n){const t=s.slice();return t[2]=e[n],t}function pt(s,e,n){const t=s.slice();return t[5]=e[n],t}function mt(s){let e,n;return{c(){e=A("span"),n=b(`  + `),ue(e,"background",s[5]),ue(e,"width","100%"),ue(e,"border","1px solid black")},m(t,r){m(t,e,r),S(e,n)},p(t,r){r&1&&ue(e,"background",t[5])},d(t){t&&g(e)}}}function gt(s){let e,n=s[2].toLocaleString()+"",t;return{c(){e=A("span"),t=b(n)},m(r,o){m(r,e,o),S(e,t)},p(r,o){o&2&&n!==(n=r[2].toLocaleString()+"")&&te(t,n)},d(r){r&&g(e)}}}function wn(s){let e,n,t,r=Le(s[0]),o=[];for(let l=0;l{"colorScale"in o&&n(0,t=o.colorScale),"limits"in o&&n(1,r=o.limits)},[t,r]}class et extends j{constructor(e){super(),F(this,e,vn,wn,R,{colorScale:0,limits:1})}}function kn(s){let e;return{c(){e=b("Percent of households with a car")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function bn(s){let e;return{c(){e=b(`NOMIS TS045 `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function yn(s){let e;return{c(){e=b(`ONS Geography `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Ln(s){let e;return{c(){e=b(`Open Government License `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Cn(s){let e,n,t,r,o,i,u,l,c,a,f,$;return t=new z({props:{href:"https://www.nomisweb.co.uk/sources/census_2021_bulk",$$slots:{default:[bn]},$$scope:{ctx:s}}}),o=new z({props:{href:"https://geoportal.statistics.gov.uk/datasets/ons::output-areas-2021-boundaries-ew-bgc/explore",$$slots:{default:[yn]},$$scope:{ctx:s}}}),a=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Ln]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Car/van availability data is from the 2021 census, via "),w(t.$$.fragment),r=b(". Output area boundaries from "),w(o.$$.fragment),i=b("."),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment),f=b(`. Contains OS data © Crown copyright and database @@ -12,27 +12,27 @@ import{S as F,i as j,s as R,V as Le,e as A,f as M,X as ue,j as m,x as ae,p as g, `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Pn(s){let e;return{c(){e=b(`ONS Geography `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function En(s){let e;return{c(){e=b(`Open Government License `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function xn(s){let e,n,t,r,o,i,u,l,c,a,f,$;return t=new z({props:{href:"https://www.nomisweb.co.uk/sources/census_2021_bulk",$$slots:{default:[Bn]},$$scope:{ctx:s}}}),o=new z({props:{href:"https://geoportal.statistics.gov.uk/datasets/ons::output-areas-2021-boundaries-ew-bgc/explore",$$slots:{default:[Pn]},$$scope:{ctx:s}}}),a=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[En]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Population density data is from the 2021 census, via "),w(t.$$.fragment),r=b(". Output area boundaries from "),w(o.$$.fragment),i=b("."),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment),f=b(`. Contains OS data © Crown copyright and database - right 2023.`)},m(p,y){m(p,e,y),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m(p,u,y),m(p,l,y),S(l,c),v(a,l,null),S(l,f),$=!0},p(p,y){const d={};y&131072&&(d.$$scope={dirty:y,ctx:p}),t.$set(d);const C={};y&131072&&(C.$$scope={dirty:y,ctx:p}),o.$set(C);const L={};y&131072&&(L.$$scope={dirty:y,ctx:p}),a.$set(L)},i(p){$||(h(t.$$.fragment,p),h(o.$$.fragment,p),h(a.$$.fragment,p),$=!0)},o(p){_(t.$$.fragment,p),_(o.$$.fragment,p),_(a.$$.fragment,p),$=!1},d(p){p&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function zn(s){let e,n,t;return n=new fe({props:{$$slots:{default:[xn]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&131072&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function dt(s){let e,n,t,r;return t=new et({props:{colorScale:s[4],limits:s[7]()}}),{c(){e=A("p"),e.textContent="(people per square kilometres)",n=M(),w(t.$$.fragment)},m(o,i){m(o,e,i),m(o,n,i),v(t,o,i),r=!0},p:ae,i(o){r||(h(t.$$.fragment,o),r=!0)},o(o){_(t.$$.fragment,o),r=!1},d(o){o&&(g(e),g(n)),k(t,o)}}}function In(s){let e,n,t,r,o,i,u,l,c,a,f,$,p,y;function d(T){s[9](T)}let C={id:"percent_households_with_car",$$slots:{right:[Sn],default:[kn]},$$scope:{ctx:s}};s[0]!==void 0&&(C.checked=s[0]),e=new ie({props:C}),V.push(()=>Z(e,"checked",d)),e.$on("change",s[10]);let L=s[3]=="percent_households_with_car"&&ht(s);function D(T){s[11](T)}let U={id:"average_cars_per_household",$$slots:{right:[Un],default:[Tn]},$$scope:{ctx:s}};s[1]!==void 0&&(U.checked=s[1]),o=new ie({props:U}),V.push(()=>Z(o,"checked",D)),o.$on("change",s[12]);let O=s[3]=="average_cars_per_household"&&_t(s);function N(T){s[13](T)}let B={id:"population_density",$$slots:{right:[zn],default:[An]},$$scope:{ctx:s}};s[2]!==void 0&&(B.checked=s[2]),c=new ie({props:B}),V.push(()=>Z(c,"checked",N)),c.$on("change",s[14]);let P=s[3]=="population_density"&&dt(s);return p=new ne({props:{layer:se,tooltip:s[5],show:s[3]!="",clickable:!0}}),p.$on("click",s[6]),{c(){w(e.$$.fragment),t=M(),L&&L.c(),r=M(),w(o.$$.fragment),u=M(),O&&O.c(),l=M(),w(c.$$.fragment),f=M(),P&&P.c(),$=M(),w(p.$$.fragment)},m(T,E){v(e,T,E),m(T,t,E),L&&L.m(T,E),m(T,r,E),v(o,T,E),m(T,u,E),O&&O.m(T,E),m(T,l,E),v(c,T,E),m(T,f,E),P&&P.m(T,E),m(T,$,E),v(p,T,E),y=!0},p(T,[E]){const I={};E&131072&&(I.$$scope={dirty:E,ctx:T}),!n&&E&1&&(n=!0,I.checked=T[0],q(()=>n=!1)),e.$set(I),T[3]=="percent_households_with_car"?L?(L.p(T,E),E&8&&h(L,1)):(L=ht(T),L.c(),h(L,1),L.m(r.parentNode,r)):L&&(me(),_(L,1,1,()=>{L=null}),ge());const ve={};E&131072&&(ve.$$scope={dirty:E,ctx:T}),!i&&E&2&&(i=!0,ve.checked=T[1],q(()=>i=!1)),o.$set(ve),T[3]=="average_cars_per_household"?O?(O.p(T,E),E&8&&h(O,1)):(O=_t(T),O.c(),h(O,1),O.m(l.parentNode,l)):O&&(me(),_(O,1,1,()=>{O=null}),ge());const Me={};E&131072&&(Me.$$scope={dirty:E,ctx:T}),!a&&E&4&&(a=!0,Me.checked=T[2],q(()=>a=!1)),c.$set(Me),T[3]=="population_density"?P?(P.p(T,E),E&8&&h(P,1)):(P=dt(T),P.c(),h(P,1),P.m($.parentNode,$)):P&&(me(),_(P,1,1,()=>{P=null}),ge());const xe={};E&8&&(xe.show=T[3]!=""),p.$set(xe)},i(T){y||(h(e.$$.fragment,T),h(L),h(o.$$.fragment,T),h(O),h(c.$$.fragment,T),h(P),h(p.$$.fragment,T),y=!0)},o(T){_(e.$$.fragment,T),_(L),_(o.$$.fragment,T),_(O),_(c.$$.fragment,T),_(P),_(p.$$.fragment,T),y=!1},d(T){T&&(g(t),g(r),g(u),g(l),g(f),g($)),k(e,T),L&&L.d(T),k(o,T),O&&O.d(T),k(c,T),P&&P.d(T),k(p,T)}}}let se="census_output_areas";function Fn(s,e,n){let t;W(s,re,O=>n(8,t=O));let r=`${se}-outline`,o=K.sequential_low_to_high,i=!1,u=!1,l=!1,c="";Pe(t,se,`https://atip.uk/layers/v1/${se}.pmtiles`),De(t,{id:se,source:se,sourceLayer:se,color:"black",opacity:de(.5,.7)}),Oe(t,{id:r,source:se,sourceLayer:se,color:"black",width:.5});function a(O){let N=O.properties.OA21CD,B=O.properties[c];return c=="percent_households_with_car"?`

${B}% of households in ${N} have 1 or more cars

`:c=="average_cars_per_household"?`

Households in ${N} have an average of ${B} cars

`:`

There are ${B.toLocaleString()} people per square kilometre in ${N}

`}function f(O){let N=O.detail.properties.OA21CD;c=="percent_households_with_car"||c=="average_cars_per_household"?window.open(`https://www.ons.gov.uk/census/maps/choropleth/housing/number-of-cars-or-vans/number-of-cars-5a/no-cars-or-vans-in-household?oa=${N}`,"_blank"):window.open(`https://www.ons.gov.uk/census/maps/choropleth/population/population-density/population-density/persons-per-square-kilometre?oa=${N}`,"_blank")}function $(){return c=="percent_households_with_car"?[0,20,40,60,80,100]:c=="average_cars_per_household"?[0,.5,1,1.5,2,2.5]:[0,4700,13e3,33e3,94e3,198e4]}function p(){let O=$(),N=["step",["get",c]];for(let B=1;B{n(1,u=!1),n(2,l=!1)};function C(O){u=O,n(1,u)}const L=()=>{n(0,i=!1),n(2,l=!1)};function D(O){l=O,n(2,l)}const U=()=>{n(0,i=!1),n(1,u=!1)};return s.$$.update=()=>{s.$$.dirty&271&&(i?n(3,c="percent_households_with_car"):u?n(3,c="average_cars_per_household"):l?n(3,c="population_density"):n(3,c=""),c?(t.setPaintProperty(se,"fill-color",p()),t.setLayoutProperty(r,"visibility","visible")):t.setLayoutProperty(r,"visibility","none"))},[i,u,l,c,o,a,f,$,t,y,d,C,L,D,U]}class jn extends F{constructor(e){super(),j(this,e,Fn,In,R,{})}}function Rn(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` + right 2023.`)},m(p,y){m(p,e,y),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m(p,u,y),m(p,l,y),S(l,c),v(a,l,null),S(l,f),$=!0},p(p,y){const d={};y&131072&&(d.$$scope={dirty:y,ctx:p}),t.$set(d);const C={};y&131072&&(C.$$scope={dirty:y,ctx:p}),o.$set(C);const L={};y&131072&&(L.$$scope={dirty:y,ctx:p}),a.$set(L)},i(p){$||(h(t.$$.fragment,p),h(o.$$.fragment,p),h(a.$$.fragment,p),$=!0)},o(p){_(t.$$.fragment,p),_(o.$$.fragment,p),_(a.$$.fragment,p),$=!1},d(p){p&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function zn(s){let e,n,t;return n=new fe({props:{$$slots:{default:[xn]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&131072&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function dt(s){let e,n,t,r;return t=new et({props:{colorScale:s[4],limits:s[7]()}}),{c(){e=A("p"),e.textContent="(people per square kilometres)",n=M(),w(t.$$.fragment)},m(o,i){m(o,e,i),m(o,n,i),v(t,o,i),r=!0},p:ae,i(o){r||(h(t.$$.fragment,o),r=!0)},o(o){_(t.$$.fragment,o),r=!1},d(o){o&&(g(e),g(n)),k(t,o)}}}function In(s){let e,n,t,r,o,i,u,l,c,a,f,$,p,y;function d(T){s[9](T)}let C={id:"percent_households_with_car",$$slots:{right:[Sn],default:[kn]},$$scope:{ctx:s}};s[0]!==void 0&&(C.checked=s[0]),e=new ie({props:C}),V.push(()=>Z(e,"checked",d)),e.$on("change",s[10]);let L=s[3]=="percent_households_with_car"&&ht(s);function D(T){s[11](T)}let U={id:"average_cars_per_household",$$slots:{right:[Un],default:[Tn]},$$scope:{ctx:s}};s[1]!==void 0&&(U.checked=s[1]),o=new ie({props:U}),V.push(()=>Z(o,"checked",D)),o.$on("change",s[12]);let O=s[3]=="average_cars_per_household"&&_t(s);function N(T){s[13](T)}let B={id:"population_density",$$slots:{right:[zn],default:[An]},$$scope:{ctx:s}};s[2]!==void 0&&(B.checked=s[2]),c=new ie({props:B}),V.push(()=>Z(c,"checked",N)),c.$on("change",s[14]);let P=s[3]=="population_density"&&dt(s);return p=new ne({props:{layer:se,tooltip:s[5],show:s[3]!="",clickable:!0}}),p.$on("click",s[6]),{c(){w(e.$$.fragment),t=M(),L&&L.c(),r=M(),w(o.$$.fragment),u=M(),O&&O.c(),l=M(),w(c.$$.fragment),f=M(),P&&P.c(),$=M(),w(p.$$.fragment)},m(T,E){v(e,T,E),m(T,t,E),L&&L.m(T,E),m(T,r,E),v(o,T,E),m(T,u,E),O&&O.m(T,E),m(T,l,E),v(c,T,E),m(T,f,E),P&&P.m(T,E),m(T,$,E),v(p,T,E),y=!0},p(T,[E]){const I={};E&131072&&(I.$$scope={dirty:E,ctx:T}),!n&&E&1&&(n=!0,I.checked=T[0],q(()=>n=!1)),e.$set(I),T[3]=="percent_households_with_car"?L?(L.p(T,E),E&8&&h(L,1)):(L=ht(T),L.c(),h(L,1),L.m(r.parentNode,r)):L&&(me(),_(L,1,1,()=>{L=null}),ge());const ve={};E&131072&&(ve.$$scope={dirty:E,ctx:T}),!i&&E&2&&(i=!0,ve.checked=T[1],q(()=>i=!1)),o.$set(ve),T[3]=="average_cars_per_household"?O?(O.p(T,E),E&8&&h(O,1)):(O=_t(T),O.c(),h(O,1),O.m(l.parentNode,l)):O&&(me(),_(O,1,1,()=>{O=null}),ge());const Me={};E&131072&&(Me.$$scope={dirty:E,ctx:T}),!a&&E&4&&(a=!0,Me.checked=T[2],q(()=>a=!1)),c.$set(Me),T[3]=="population_density"?P?(P.p(T,E),E&8&&h(P,1)):(P=dt(T),P.c(),h(P,1),P.m($.parentNode,$)):P&&(me(),_(P,1,1,()=>{P=null}),ge());const xe={};E&8&&(xe.show=T[3]!=""),p.$set(xe)},i(T){y||(h(e.$$.fragment,T),h(L),h(o.$$.fragment,T),h(O),h(c.$$.fragment,T),h(P),h(p.$$.fragment,T),y=!0)},o(T){_(e.$$.fragment,T),_(L),_(o.$$.fragment,T),_(O),_(c.$$.fragment,T),_(P),_(p.$$.fragment,T),y=!1},d(T){T&&(g(t),g(r),g(u),g(l),g(f),g($)),k(e,T),L&&L.d(T),k(o,T),O&&O.d(T),k(c,T),P&&P.d(T),k(p,T)}}}let se="census_output_areas";function jn(s,e,n){let t;W(s,re,O=>n(8,t=O));let r=`${se}-outline`,o=K.sequential_low_to_high,i=!1,u=!1,l=!1,c="";Pe(t,se,`https://atip.uk/layers/v1/${se}.pmtiles`),De(t,{id:se,source:se,sourceLayer:se,color:"black",opacity:de(.5,.7)}),Oe(t,{id:r,source:se,sourceLayer:se,color:"black",width:.5});function a(O){let N=O.properties.OA21CD,B=O.properties[c];return c=="percent_households_with_car"?`

${B}% of households in ${N} have 1 or more cars

`:c=="average_cars_per_household"?`

Households in ${N} have an average of ${B} cars

`:`

There are ${B.toLocaleString()} people per square kilometre in ${N}

`}function f(O){let N=O.detail.properties.OA21CD;c=="percent_households_with_car"||c=="average_cars_per_household"?window.open(`https://www.ons.gov.uk/census/maps/choropleth/housing/number-of-cars-or-vans/number-of-cars-5a/no-cars-or-vans-in-household?oa=${N}`,"_blank"):window.open(`https://www.ons.gov.uk/census/maps/choropleth/population/population-density/population-density/persons-per-square-kilometre?oa=${N}`,"_blank")}function $(){return c=="percent_households_with_car"?[0,20,40,60,80,100]:c=="average_cars_per_household"?[0,.5,1,1.5,2,2.5]:[0,4700,13e3,33e3,94e3,198e4]}function p(){let O=$(),N=["step",["get",c]];for(let B=1;B{n(1,u=!1),n(2,l=!1)};function C(O){u=O,n(1,u)}const L=()=>{n(0,i=!1),n(2,l=!1)};function D(O){l=O,n(2,l)}const U=()=>{n(0,i=!1),n(1,u=!1)};return s.$$.update=()=>{s.$$.dirty&271&&(i?n(3,c="percent_households_with_car"):u?n(3,c="average_cars_per_household"):l?n(3,c="population_density"):n(3,c=""),c?(t.setPaintProperty(se,"fill-color",p()),t.setLayoutProperty(r,"visibility","visible")):t.setLayoutProperty(r,"visibility","none"))},[i,u,l,c,o,a,f,$,t,y,d,C,L,D,U]}class Fn extends j{constructor(e){super(),F(this,e,jn,In,R,{})}}function Rn(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` Combined authorities`)},m(r,o){v(e,r,o),m(r,n,o),t=!0},p:ae,i(r){t||(h(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){r&&g(n),k(e,r)}}}function Gn(s){let e;return{c(){e=b(`ONS Geography `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Hn(s){let e;return{c(){e=b(`Open Government License `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Vn(s){let e,n,t,r,o,i,u,l,c,a;return t=new z({props:{href:"https://geoportal.statistics.gov.uk/datasets/ons::combined-authorities-december-2022-boundaries-en-buc/explore",$$slots:{default:[Gn]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Hn]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from "),w(t.$$.fragment),r=b(", as of December 2022."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment),c=b(`. Contains OS data © Crown copyright and database - right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Zn(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Vn]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function qn(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:$e,$$slots:{right:[Zn],default:[Rn]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:$e,tooltip:Kn,show:s[0],clickable:!0}}),r.$on("click",Wn),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let $e="combined_authorities";function Kn(s){return`

${s.properties.name}

`}function Wn(s){window.open(`https://www.ons.gov.uk/visualisations/areas/${s.detail.properties.CAUTH22CD}`,"_blank")}function Jn(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.combined_authorities,o=`${$e}-outline`;Dt(t,$e,`https://atip.uk/layers/v1/${$e}.geojson`),De(t,{id:$e,source:$e,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:$e,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Xn extends F{constructor(e){super(),j(this,e,Jn,qn,R,{})}}function Yn(s){let e=new Map;for(let[t,r]of Object.entries(s.schemes))e.set(t,{scheme_reference:t,num_features:0,authority_or_region:r.authority_or_region,capital_scheme_id:r.capital_scheme_id,funding_programme:r.funding_programme});let n=1;for(let t of s.features){let r=e.get(t.properties.scheme_reference);r.num_features++,t.properties.funding_programme=r.funding_programme,t.id=n++}return e}function Qn(s){let e,n,t,r,o;function i(l){s[3](l)}let u={label:"Color interventions",id:"colorInterventions",choices:[["interventionType","By intervention type"],["fundingProgramme","By funding programme"]]};return s[0]!==void 0&&(u.value=s[0]),e=new We({props:u}),V.push(()=>Z(e,"value",i)),e.$on("change",s[2]),r=new $n({props:{rows:s[1]}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};!n&&c&1&&(n=!0,a.value=l[0],q(()=>n=!1)),e.$set(a);const f={};c&2&&(f.rows=l[1]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function er(s,e,n){let t;W(s,re,l=>n(4,t=l));let r="interventionType",o=ut("v1");function i(){let l;r=="interventionType"?(l=Pt("v1"),n(1,o=ut("v1"))):(l=Yt(["get","funding_programme"],{ATF2:K.atf2,ATF3:K.atf3,ATF4:K.atf4},"grey"),n(1,o=[["ATF2",K.atf2],["ATF3",K.atf3],["ATF4",K.atf4]])),t.setPaintProperty("interventions-points","circle-color",l),t.setPaintProperty("interventions-lines","line-color",l),t.setPaintProperty("interventions-polygons","fill-color",l),t.setPaintProperty("interventions-polygon-outlines","line-color",l)}function u(l){r=l,n(0,r)}return[r,o,i,u]}class tr extends F{constructor(e){super(),j(this,e,er,Qn,R,{})}}function nr(s){let e;return{c(){e=b("Clear")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function rr(s){let e,n,t,r,o,i;return t=new Ie({props:{$$slots:{default:[nr]},$$scope:{ctx:s}}}),t.$on("click",s[11]),{c(){e=A("input"),n=M(),w(t.$$.fragment),G(e,"type","text"),G(e,"class","govuk-input govuk-input--width-10"),G(e,"id","filterText")},m(u,l){m(u,e,l),ft(e,s[0]),m(u,n,l),v(t,u,l),r=!0,o||(i=en(e,"input",s[10]),o=!0)},p(u,l){l&1&&e.value!==u[0]&&ft(e,u[0]);const c={};l&16384&&(c.$$scope={dirty:l,ctx:u}),t.$set(c)},i(u){r||(h(t.$$.fragment,u),r=!0)},o(u){_(t.$$.fragment,u),r=!1},d(u){u&&(g(e),g(n)),k(t,u),o=!1,i()}}}function sr(s){let e,n,t,r,o,i,u,l,c,a;function f(d){s[8](d)}let $={label:"Authority or region",id:"filterAuthority",choices:s[4],emptyOption:!0};s[2]!==void 0&&($.value=s[2]),e=new We({props:$}),V.push(()=>Z(e,"value",f));function p(d){s[9](d)}let y={label:"Funding programme",id:"filterFundingProgramme",choices:s[5],emptyOption:!0};return s[3]!==void 0&&(y.value=s[3]),r=new We({props:y}),V.push(()=>Z(r,"value",p)),u=new Qt({props:{label:"Intervention name or description",id:"filterText",$$slots:{default:[rr]},$$scope:{ctx:s}}}),c=new tr({}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(d,C){v(e,d,C),m(d,t,C),v(r,d,C),m(d,i,C),v(u,d,C),m(d,l,C),v(c,d,C),a=!0},p(d,C){const L={};C&16&&(L.choices=d[4]),!n&&C&4&&(n=!0,L.value=d[2],q(()=>n=!1)),e.$set(L);const D={};C&32&&(D.choices=d[5]),!o&&C&8&&(o=!0,D.value=d[3],q(()=>o=!1)),r.$set(D);const U={};C&16385&&(U.$$scope={dirty:C,ctx:d}),u.$set(U)},i(d){a||(h(e.$$.fragment,d),h(r.$$.fragment,d),h(u.$$.fragment,d),h(c.$$.fragment,d),a=!0)},o(d){_(e.$$.fragment,d),_(r.$$.fragment,d),_(u.$$.fragment,d),_(c.$$.fragment,d),a=!1},d(d){d&&(g(t),g(i),g(l)),k(e,d),k(r,d),k(u,d),k(c,d)}}}function or(s){let e,n,t,r,o=s[1].size+"",i,u,l=s[6].route+"",c,a,f=s[6].area+"",$,p,y=s[6].crossing+"",d,C,L=s[6].other+"",D,U,O;return e=new _e({props:{label:"Filters",$$slots:{default:[sr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment),n=M(),t=A("p"),r=b("Showing "),i=b(o),u=b(" schemes ("),c=b(l),a=b(" routes, "),$=b(f),p=b(` areas, - `),d=b(y),C=b(" crossings, "),D=b(L),U=b(" other)")},m(N,B){v(e,N,B),m(N,n,B),m(N,t,B),S(t,r),S(t,i),S(t,u),S(t,c),S(t,a),S(t,$),S(t,p),S(t,d),S(t,C),S(t,D),S(t,U),O=!0},p(N,[B]){const P={};B&16445&&(P.$$scope={dirty:B,ctx:N}),e.$set(P),(!O||B&2)&&o!==(o=N[1].size+"")&&te(i,o),(!O||B&64)&&l!==(l=N[6].route+"")&&te(c,l),(!O||B&64)&&f!==(f=N[6].area+"")&&te($,f),(!O||B&64)&&y!==(y=N[6].crossing+"")&&te(d,y),(!O||B&64)&&L!==(L=N[6].other+"")&&te(D,L)},i(N){O||(h(e.$$.fragment,N),O=!0)},o(N){_(e.$$.fragment,N),O=!1},d(N){N&&(g(n),g(t)),k(e,N)}}}function lr(s,e,n){let t;W(s,Te,L=>n(12,t=L));let{schemes:r}=e,{schemesToBeShown:o=new Set}=e,{filterText:i=""}=e,u=[],l="",c=[],a="",f={area:0,route:0,crossing:0,other:0};Ye(()=>{let L=new Set,D=new Set;for(let U of r.values())U.authority_or_region&&L.add(U.authority_or_region),U.funding_programme&&D.add(U.funding_programme);n(4,u=Array.from(L.entries())),u.sort(),n(5,c=Array.from(D.entries())),c.sort()});function $(L,D,U){let O=L.toLowerCase(),N=P=>{var T,E;if(O&&!((T=P.properties.name)!=null&&T.toLowerCase().includes(O))&&!((E=P.properties.description)!=null&&E.toLowerCase().includes(O)))return!1;if(D||U){let I=r.get(P.properties.scheme_reference);if(D&&I.authority_or_region!=D||U&&I.funding_programme!=U)return!1}return!0};n(1,o=new Set(t.features.filter(N).map(P=>P.properties.scheme_reference))),n(6,f={area:0,route:0,crossing:0,other:0});let B=P=>{var T,E;return!(!o.has(P.properties.scheme_reference)||O&&!((T=P.properties.name)!=null&&T.toLowerCase().includes(O))&&!((E=P.properties.description)!=null&&E.toLowerCase().includes(O)))};Te.update(P=>{for(let T of P.features)B(T)?(delete T.properties.hide_while_editing,n(6,f[T.properties.intervention_type]++,f)):T.properties.hide_while_editing=!0;return P}),n(6,f)}function p(L){l=L,n(2,l)}function y(L){a=L,n(3,a)}function d(){i=this.value,n(0,i)}const C=()=>n(0,i="");return s.$$set=L=>{"schemes"in L&&n(7,r=L.schemes),"schemesToBeShown"in L&&n(1,o=L.schemesToBeShown),"filterText"in L&&n(0,i=L.filterText)},s.$$.update=()=>{s.$$.dirty&13&&$(i,l,a)},[i,o,l,a,u,c,f,r,p,y,d,C]}class ir extends F{constructor(e){super(),j(this,e,lr,or,R,{schemes:7,schemesToBeShown:1,filterText:0})}}function ar(s){let e,n,t,r;return e=new we({props:{color:s[3]}}),{c(){w(e.$$.fragment),n=M(),t=b(s[1])},m(o,i){v(e,o,i),m(o,n,i),m(o,t,i),r=!0},p(o,i){(!r||i&2)&&te(t,o[1])},i(o){r||(h(e.$$.fragment,o),r=!0)},o(o){_(e.$$.fragment,o),r=!1},d(o){o&&(g(n),g(t)),k(e,o)}}}function fr(s){let e;const n=s[6].default,t=Ot(n,s,s[8],null);return{c(){t&&t.c()},m(r,o){t&&t.m(r,o),e=!0},p(r,o){t&&t.p&&(!e||o&256)&&Mt(t,n,r,r[8],e?Ut(n,r[8],o,null):Nt(r[8]),null)},i(r){e||(h(t,r),e=!0)},o(r){_(t,r),e=!1},d(r){t&&t.d(r)}}}function cr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[fr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&256&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function ur(s){let e,n,t,r,o;function i(l){s[7](l)}let u={id:s[0],$$slots:{right:[cr],default:[ar]},$$scope:{ctx:s}};return s[2]!==void 0&&(u.checked=s[2]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:s[0],tooltip:s[4],show:s[2],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&1&&(a.id=l[0]),c&258&&(a.$$scope={dirty:c,ctx:l}),!n&&c&4&&(n=!0,a.checked=l[2],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.layer=l[0]),c&4&&(f.show=l[2]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function $r(s,e,n){let t;W(s,re,p=>n(9,t=p));let{$$slots:r={},$$scope:o}=e,{name:i}=e,{singularNoun:u}=e,{pluralNoun:l}=e,c=K[i];Pe(t,i,`https://atip.uk/layers/v1/${i}.pmtiles`),De(t,{id:i,source:i,sourceLayer:i,color:c,opacity:de(1,.7)});let a=!1;function f(p){return`

${p.properties.name??`Unnamed ${u}`}

`}function $(p){a=p,n(2,a)}return s.$$set=p=>{"name"in p&&n(0,i=p.name),"singularNoun"in p&&n(5,u=p.singularNoun),"pluralNoun"in p&&n(1,l=p.pluralNoun),"$$scope"in p&&n(8,o=p.$$scope)},[i,l,a,c,f,u,r,$,o]}class je extends F{constructor(e){super(),j(this,e,$r,ur,R,{name:0,singularNoun:5,pluralNoun:1})}}function pr(s){let e;return{c(){e=b(`park + right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Zn(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Vn]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function qn(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:$e,$$slots:{right:[Zn],default:[Rn]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:$e,tooltip:Kn,show:s[0],clickable:!0}}),r.$on("click",Wn),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let $e="combined_authorities";function Kn(s){return`

${s.properties.name}

`}function Wn(s){window.open(`https://www.ons.gov.uk/visualisations/areas/${s.detail.properties.CAUTH22CD}`,"_blank")}function Jn(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.combined_authorities,o=`${$e}-outline`;Dt(t,$e,`https://atip.uk/layers/v1/${$e}.geojson`),De(t,{id:$e,source:$e,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:$e,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Xn extends j{constructor(e){super(),F(this,e,Jn,qn,R,{})}}function Yn(s){let e=new Map;for(let[t,r]of Object.entries(s.schemes))e.set(t,{scheme_reference:t,num_features:0,authority_or_region:r.authority_or_region,capital_scheme_id:r.capital_scheme_id,funding_programme:r.funding_programme});let n=1;for(let t of s.features){let r=e.get(t.properties.scheme_reference);r.num_features++,t.properties.funding_programme=r.funding_programme,t.id=n++}return e}function Qn(s){let e,n,t,r,o;function i(l){s[3](l)}let u={label:"Color interventions",id:"colorInterventions",choices:[["interventionType","By intervention type"],["fundingProgramme","By funding programme"]]};return s[0]!==void 0&&(u.value=s[0]),e=new We({props:u}),V.push(()=>Z(e,"value",i)),e.$on("change",s[2]),r=new $n({props:{rows:s[1]}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};!n&&c&1&&(n=!0,a.value=l[0],q(()=>n=!1)),e.$set(a);const f={};c&2&&(f.rows=l[1]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function er(s,e,n){let t;W(s,re,l=>n(4,t=l));let r="interventionType",o=ut("v1");function i(){let l;r=="interventionType"?(l=Pt("v1"),n(1,o=ut("v1"))):(l=Yt(["get","funding_programme"],{ATF2:K.atf2,ATF3:K.atf3,ATF4:K.atf4},"grey"),n(1,o=[["ATF2",K.atf2],["ATF3",K.atf3],["ATF4",K.atf4]])),t.setPaintProperty("interventions-points","circle-color",l),t.setPaintProperty("interventions-lines","line-color",l),t.setPaintProperty("interventions-polygons","fill-color",l),t.setPaintProperty("interventions-polygon-outlines","line-color",l)}function u(l){r=l,n(0,r)}return[r,o,i,u]}class tr extends j{constructor(e){super(),F(this,e,er,Qn,R,{})}}function nr(s){let e;return{c(){e=b("Clear")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function rr(s){let e,n,t,r,o,i;return t=new Ie({props:{$$slots:{default:[nr]},$$scope:{ctx:s}}}),t.$on("click",s[11]),{c(){e=A("input"),n=M(),w(t.$$.fragment),G(e,"type","text"),G(e,"class","govuk-input govuk-input--width-10"),G(e,"id","filterText")},m(u,l){m(u,e,l),ft(e,s[0]),m(u,n,l),v(t,u,l),r=!0,o||(i=en(e,"input",s[10]),o=!0)},p(u,l){l&1&&e.value!==u[0]&&ft(e,u[0]);const c={};l&16384&&(c.$$scope={dirty:l,ctx:u}),t.$set(c)},i(u){r||(h(t.$$.fragment,u),r=!0)},o(u){_(t.$$.fragment,u),r=!1},d(u){u&&(g(e),g(n)),k(t,u),o=!1,i()}}}function sr(s){let e,n,t,r,o,i,u,l,c,a;function f(d){s[8](d)}let $={label:"Authority or region",id:"filterAuthority",choices:s[4],emptyOption:!0};s[2]!==void 0&&($.value=s[2]),e=new We({props:$}),V.push(()=>Z(e,"value",f));function p(d){s[9](d)}let y={label:"Funding programme",id:"filterFundingProgramme",choices:s[5],emptyOption:!0};return s[3]!==void 0&&(y.value=s[3]),r=new We({props:y}),V.push(()=>Z(r,"value",p)),u=new Qt({props:{label:"Intervention name or description",id:"filterText",$$slots:{default:[rr]},$$scope:{ctx:s}}}),c=new tr({}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(d,C){v(e,d,C),m(d,t,C),v(r,d,C),m(d,i,C),v(u,d,C),m(d,l,C),v(c,d,C),a=!0},p(d,C){const L={};C&16&&(L.choices=d[4]),!n&&C&4&&(n=!0,L.value=d[2],q(()=>n=!1)),e.$set(L);const D={};C&32&&(D.choices=d[5]),!o&&C&8&&(o=!0,D.value=d[3],q(()=>o=!1)),r.$set(D);const U={};C&16385&&(U.$$scope={dirty:C,ctx:d}),u.$set(U)},i(d){a||(h(e.$$.fragment,d),h(r.$$.fragment,d),h(u.$$.fragment,d),h(c.$$.fragment,d),a=!0)},o(d){_(e.$$.fragment,d),_(r.$$.fragment,d),_(u.$$.fragment,d),_(c.$$.fragment,d),a=!1},d(d){d&&(g(t),g(i),g(l)),k(e,d),k(r,d),k(u,d),k(c,d)}}}function or(s){let e,n,t,r,o=s[1].size+"",i,u,l=s[6].route+"",c,a,f=s[6].area+"",$,p,y=s[6].crossing+"",d,C,L=s[6].other+"",D,U,O;return e=new _e({props:{label:"Filters",$$slots:{default:[sr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment),n=M(),t=A("p"),r=b("Showing "),i=b(o),u=b(" schemes ("),c=b(l),a=b(" routes, "),$=b(f),p=b(` areas, + `),d=b(y),C=b(" crossings, "),D=b(L),U=b(" other)")},m(N,B){v(e,N,B),m(N,n,B),m(N,t,B),S(t,r),S(t,i),S(t,u),S(t,c),S(t,a),S(t,$),S(t,p),S(t,d),S(t,C),S(t,D),S(t,U),O=!0},p(N,[B]){const P={};B&16445&&(P.$$scope={dirty:B,ctx:N}),e.$set(P),(!O||B&2)&&o!==(o=N[1].size+"")&&te(i,o),(!O||B&64)&&l!==(l=N[6].route+"")&&te(c,l),(!O||B&64)&&f!==(f=N[6].area+"")&&te($,f),(!O||B&64)&&y!==(y=N[6].crossing+"")&&te(d,y),(!O||B&64)&&L!==(L=N[6].other+"")&&te(D,L)},i(N){O||(h(e.$$.fragment,N),O=!0)},o(N){_(e.$$.fragment,N),O=!1},d(N){N&&(g(n),g(t)),k(e,N)}}}function lr(s,e,n){let t;W(s,Te,L=>n(12,t=L));let{schemes:r}=e,{schemesToBeShown:o=new Set}=e,{filterText:i=""}=e,u=[],l="",c=[],a="",f={area:0,route:0,crossing:0,other:0};Ye(()=>{let L=new Set,D=new Set;for(let U of r.values())U.authority_or_region&&L.add(U.authority_or_region),U.funding_programme&&D.add(U.funding_programme);n(4,u=Array.from(L.entries())),u.sort(),n(5,c=Array.from(D.entries())),c.sort()});function $(L,D,U){let O=L.toLowerCase(),N=P=>{var T,E;if(O&&!((T=P.properties.name)!=null&&T.toLowerCase().includes(O))&&!((E=P.properties.description)!=null&&E.toLowerCase().includes(O)))return!1;if(D||U){let I=r.get(P.properties.scheme_reference);if(D&&I.authority_or_region!=D||U&&I.funding_programme!=U)return!1}return!0};n(1,o=new Set(t.features.filter(N).map(P=>P.properties.scheme_reference))),n(6,f={area:0,route:0,crossing:0,other:0});let B=P=>{var T,E;return!(!o.has(P.properties.scheme_reference)||O&&!((T=P.properties.name)!=null&&T.toLowerCase().includes(O))&&!((E=P.properties.description)!=null&&E.toLowerCase().includes(O)))};Te.update(P=>{for(let T of P.features)B(T)?(delete T.properties.hide_while_editing,n(6,f[T.properties.intervention_type]++,f)):T.properties.hide_while_editing=!0;return P}),n(6,f)}function p(L){l=L,n(2,l)}function y(L){a=L,n(3,a)}function d(){i=this.value,n(0,i)}const C=()=>n(0,i="");return s.$$set=L=>{"schemes"in L&&n(7,r=L.schemes),"schemesToBeShown"in L&&n(1,o=L.schemesToBeShown),"filterText"in L&&n(0,i=L.filterText)},s.$$.update=()=>{s.$$.dirty&13&&$(i,l,a)},[i,o,l,a,u,c,f,r,p,y,d,C]}class ir extends j{constructor(e){super(),F(this,e,lr,or,R,{schemes:7,schemesToBeShown:1,filterText:0})}}function ar(s){let e,n,t,r;return e=new we({props:{color:s[3]}}),{c(){w(e.$$.fragment),n=M(),t=b(s[1])},m(o,i){v(e,o,i),m(o,n,i),m(o,t,i),r=!0},p(o,i){(!r||i&2)&&te(t,o[1])},i(o){r||(h(e.$$.fragment,o),r=!0)},o(o){_(e.$$.fragment,o),r=!1},d(o){o&&(g(n),g(t)),k(e,o)}}}function fr(s){let e;const n=s[6].default,t=Ot(n,s,s[8],null);return{c(){t&&t.c()},m(r,o){t&&t.m(r,o),e=!0},p(r,o){t&&t.p&&(!e||o&256)&&Mt(t,n,r,r[8],e?Ut(n,r[8],o,null):Nt(r[8]),null)},i(r){e||(h(t,r),e=!0)},o(r){_(t,r),e=!1},d(r){t&&t.d(r)}}}function cr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[fr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&256&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function ur(s){let e,n,t,r,o;function i(l){s[7](l)}let u={id:s[0],$$slots:{right:[cr],default:[ar]},$$scope:{ctx:s}};return s[2]!==void 0&&(u.checked=s[2]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:s[0],tooltip:s[4],show:s[2],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&1&&(a.id=l[0]),c&258&&(a.$$scope={dirty:c,ctx:l}),!n&&c&4&&(n=!0,a.checked=l[2],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.layer=l[0]),c&4&&(f.show=l[2]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function $r(s,e,n){let t;W(s,re,p=>n(9,t=p));let{$$slots:r={},$$scope:o}=e,{name:i}=e,{singularNoun:u}=e,{pluralNoun:l}=e,c=K[i];Pe(t,i,`https://atip.uk/layers/v1/${i}.pmtiles`),De(t,{id:i,source:i,sourceLayer:i,color:c,opacity:de(1,.7)});let a=!1;function f(p){return`

${p.properties.name??`Unnamed ${u}`}

`}function $(p){a=p,n(2,a)}return s.$$set=p=>{"name"in p&&n(0,i=p.name),"singularNoun"in p&&n(5,u=p.singularNoun),"pluralNoun"in p&&n(1,l=p.pluralNoun),"$$scope"in p&&n(8,o=p.$$scope)},[i,l,a,c,f,u,r,$,o]}class Fe extends j{constructor(e){super(),F(this,e,$r,ur,R,{name:0,singularNoun:5,pluralNoun:1})}}function pr(s){let e;return{c(){e=b(`park `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function mr(s){let e;return{c(){e=b(`nature reserve `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function gr(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function hr(s){let e,n,t,r,o,i,u,l,c,a,f;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dhospitalhttps://wiki.openstreetmap.org/wiki/Tag:leisure%3Dpark",$$slots:{default:[pr]},$$scope:{ctx:s}}}),o=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve",$$slots:{default:[mr]},$$scope:{ctx:s}}}),a=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[gr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(", "),w(o.$$.fragment),i=b(`, national park, and areas of outstandaing natural beauty - data from OpenStreetMap.`),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment)},m($,p){m($,e,p),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m($,u,p),m($,l,p),S(l,c),v(a,l,null),f=!0},p($,p){const y={};p&1&&(y.$$scope={dirty:p,ctx:$}),t.$set(y);const d={};p&1&&(d.$$scope={dirty:p,ctx:$}),o.$set(d);const C={};p&1&&(C.$$scope={dirty:p,ctx:$}),a.$set(C)},i($){f||(h(t.$$.fragment,$),h(o.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(t.$$.fragment,$),_(o.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function _r(s){let e,n;return e=new je({props:{name:"green_spaces",singularNoun:"green space",pluralNoun:"Green spaces",$$slots:{default:[hr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class dr extends F{constructor(e){super(),j(this,e,null,_r,R,{})}}function wr(s){let e;return{c(){e=b("hospital")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function vr(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function kr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dhospital",$$slots:{default:[wr]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[vr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(` data from OpenStreetMap. It doesn't include outpatient clinics - or individual doctor's offices.`),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function br(s){let e,n;return e=new je({props:{name:"hospitals",singularNoun:"hospital",pluralNoun:"Hospitals",$$slots:{default:[kr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class yr extends F{constructor(e){super(),j(this,e,null,br,R,{})}}function Lr(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` + data from OpenStreetMap.`),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment)},m($,p){m($,e,p),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m($,u,p),m($,l,p),S(l,c),v(a,l,null),f=!0},p($,p){const y={};p&1&&(y.$$scope={dirty:p,ctx:$}),t.$set(y);const d={};p&1&&(d.$$scope={dirty:p,ctx:$}),o.$set(d);const C={};p&1&&(C.$$scope={dirty:p,ctx:$}),a.$set(C)},i($){f||(h(t.$$.fragment,$),h(o.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(t.$$.fragment,$),_(o.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function _r(s){let e,n;return e=new Fe({props:{name:"green_spaces",singularNoun:"green space",pluralNoun:"Green spaces",$$slots:{default:[hr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class dr extends j{constructor(e){super(),F(this,e,null,_r,R,{})}}function wr(s){let e;return{c(){e=b("hospital")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function vr(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function kr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dhospital",$$slots:{default:[wr]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[vr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(` data from OpenStreetMap. It doesn't include outpatient clinics + or individual doctor's offices.`),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function br(s){let e,n;return e=new Fe({props:{name:"hospitals",singularNoun:"hospital",pluralNoun:"Hospitals",$$slots:{default:[kr]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class yr extends j{constructor(e){super(),F(this,e,null,br,R,{})}}function Lr(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` Local Authority Districts`)},m(r,o){v(e,r,o),m(r,n,o),t=!0},p:ae,i(r){t||(h(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){r&&g(n),k(e,r)}}}function Cr(s){let e;return{c(){e=b(`ONS Geography `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Sr(s){let e;return{c(){e=b(`Open Government License `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Tr(s){let e,n,t,r,o,i,u,l,c,a;return t=new z({props:{href:"https://geoportal.statistics.gov.uk/datasets/ons::local-authority-districts-may-2023-boundaries-uk-buc/explore",$$slots:{default:[Cr]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Sr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from "),w(t.$$.fragment),r=b(", as of May 2023."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment),c=b(`. Contains OS data © Crown copyright and database - right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Dr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Tr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Or(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:pe,$$slots:{right:[Dr],default:[Lr]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:pe,tooltip:Mr,show:s[0],clickable:!0}}),r.$on("click",Nr),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let pe="local_authority_districts";function Mr(s){return`

${s.properties.name}

`}function Nr(s){window.open(`https://www.ons.gov.uk/visualisations/areas/${s.detail.properties.LAD23CD}`,"_blank")}function Ur(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.local_authority_districts,o=`${pe}-outline`;Dt(t,pe,`https://atip.uk/layers/v1/${pe}.geojson`),De(t,{id:pe,source:pe,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:pe,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Ar extends F{constructor(e){super(),j(this,e,Ur,Or,R,{})}}function Br(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` + right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Dr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Tr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Or(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:pe,$$slots:{right:[Dr],default:[Lr]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:pe,tooltip:Mr,show:s[0],clickable:!0}}),r.$on("click",Nr),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let pe="local_authority_districts";function Mr(s){return`

${s.properties.name}

`}function Nr(s){window.open(`https://www.ons.gov.uk/visualisations/areas/${s.detail.properties.LAD23CD}`,"_blank")}function Ur(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.local_authority_districts,o=`${pe}-outline`;Dt(t,pe,`https://atip.uk/layers/v1/${pe}.geojson`),De(t,{id:pe,source:pe,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:pe,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Ar extends j{constructor(e){super(),F(this,e,Ur,Or,R,{})}}function Br(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` Major Road Network`)},m(r,o){v(e,r,o),m(r,n,o),t=!0},p:ae,i(r){t||(h(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){r&&g(n),k(e,r)}}}function Pr(s){let e;return{c(){e=b(`Major Road Network - `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Er(s){let e;return{c(){e=b("Open Government License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function xr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://maps.dft.gov.uk/major-road-network/index.html",$$slots:{default:[Pr]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Er]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from the "),w(t.$$.fragment),r=b("."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&16&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&16&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function zr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[xr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&16&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Ir(s){let e,n,t,r,o;function i(l){s[2](l)}let u={id:he,$$slots:{right:[zr],default:[Br]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:he,tooltip:Fr,show:s[0],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&16&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let he="mrn";function Fr(s){return`

${s.properties.name??"Unknown MRN road"}

`}function jr(s,e,n){let t;W(s,re,u=>n(3,t=u));let r=K.mrn;Pe(t,he,`https://atip.uk/layers/v1/${he}.pmtiles`),Oe(t,{id:he,source:he,sourceLayer:he,color:r,width:7,opacity:de(.5,1)});let o=!1;function i(u){o=u,n(0,o)}return[o,r,i]}class Rr extends F{constructor(e){super(),j(this,e,jr,Ir,R,{})}}function Gr(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` + `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Er(s){let e;return{c(){e=b("Open Government License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function xr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://maps.dft.gov.uk/major-road-network/index.html",$$slots:{default:[Pr]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Er]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from the "),w(t.$$.fragment),r=b("."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&16&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&16&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function zr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[xr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&16&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Ir(s){let e,n,t,r,o;function i(l){s[2](l)}let u={id:he,$$slots:{right:[zr],default:[Br]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:he,tooltip:jr,show:s[0],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&16&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let he="mrn";function jr(s){return`

${s.properties.name??"Unknown MRN road"}

`}function Fr(s,e,n){let t;W(s,re,u=>n(3,t=u));let r=K.mrn;Pe(t,he,`https://atip.uk/layers/v1/${he}.pmtiles`),Oe(t,{id:he,source:he,sourceLayer:he,color:r,width:7,opacity:de(.5,1)});let o=!1;function i(u){o=u,n(0,o)}return[o,r,i]}class Rr extends j{constructor(e){super(),F(this,e,Fr,Ir,R,{})}}function Gr(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` Parliamentary constituencies`)},m(r,o){v(e,r,o),m(r,n,o),t=!0},p:ae,i(r){t||(h(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){r&&g(n),k(e,r)}}}function Hr(s){let e;return{c(){e=b(`Ordnance Survey Boundary-Line - `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Vr(s){let e;return{c(){e=b("Open Government License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Zr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://www.ordnancesurvey.co.uk/products/boundary-line",$$slots:{default:[Hr]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Vr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from "),w(t.$$.fragment),r=b("."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&32&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&32&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function qr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Zr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Kr(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:oe,$$slots:{right:[qr],default:[Gr]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:oe,tooltip:Wr,show:s[0],clickable:!0}}),r.$on("click",Jr),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let oe="parliamentary_constituencies";function Wr(s){return`

${s.properties.Name}

`}function Jr(s){let e=s.detail.properties.Name;e=e.replace(/ Boro Const$/,""),e=e.replace(/ Co Const$/,""),e=encodeURIComponent(e),window.open(`https://members.parliament.uk/members/Commons?SearchText=${e}`,"_blank")}function Xr(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.parliamentary_constituencies,o=`${oe}-outline`;Pe(t,oe,`https://atip.uk/layers/v1/${oe}.pmtiles`),De(t,{id:oe,source:oe,sourceLayer:oe,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:oe,sourceLayer:oe,color:r,width:5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Yr extends F{constructor(e){super(),j(this,e,Xr,Kr,R,{})}}function Qr(s){let e,n,t,r;return e=new we({props:{color:s[3]}}),{c(){w(e.$$.fragment),n=M(),t=b(s[1])},m(o,i){v(e,o,i),m(o,n,i),m(o,t,i),r=!0},p(o,i){(!r||i&2)&&te(t,o[1])},i(o){r||(h(e.$$.fragment,o),r=!0)},o(o){_(e.$$.fragment,o),r=!1},d(o){o&&(g(n),g(t)),k(e,o)}}}function es(s){let e;const n=s[7].default,t=Ot(n,s,s[9],null);return{c(){t&&t.c()},m(r,o){t&&t.m(r,o),e=!0},p(r,o){t&&t.p&&(!e||o&512)&&Mt(t,n,r,r[9],e?Ut(n,r[9],o,null):Nt(r[9]),null)},i(r){e||(h(t,r),e=!0)},o(r){_(t,r),e=!1},d(r){t&&t.d(r)}}}function ts(s){let e,n,t;return n=new fe({props:{$$slots:{default:[es]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&512&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function ns(s){let e,n,t,r,o;function i(l){s[8](l)}let u={id:s[0],$$slots:{right:[ts],default:[Qr]},$$scope:{ctx:s}};return s[2]!==void 0&&(u.checked=s[2]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:s[0],tooltip:s[4],show:s[2],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&1&&(a.id=l[0]),c&514&&(a.$$scope={dirty:c,ctx:l}),!n&&c&4&&(n=!0,a.checked=l[2],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.layer=l[0]),c&4&&(f.show=l[2]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function rs(s,e,n){let t;W(s,re,d=>n(10,t=d));let{$$slots:r={},$$scope:o}=e,{name:i}=e,{singularNoun:u}=e,{pluralNoun:l}=e,{circleRadius:c}=e,a=K[i];tn(t,i,"",!0,()=>{nn(t,{id:i,source:i,filter:["all",rn],color:a,radius:c/2}),n(2,$=!1)});let $=!0;function p(d){return`

${d.properties.name??`Unnamed ${u}`}

`}function y(d){$=d,n(2,$)}return s.$$set=d=>{"name"in d&&n(0,i=d.name),"singularNoun"in d&&n(5,u=d.singularNoun),"pluralNoun"in d&&n(1,l=d.pluralNoun),"circleRadius"in d&&n(6,c=d.circleRadius),"$$scope"in d&&n(9,o=d.$$scope)},[i,l,$,a,p,u,c,r,y,o]}class ss extends F{constructor(e){super(),j(this,e,rs,ns,R,{name:0,singularNoun:5,pluralNoun:1,circleRadius:6})}}function os(s){let e;return{c(){e=b("railway station")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ls(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function is(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:railway%3Dstation",$$slots:{default:[os]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[ls]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(" data from OpenStreetMap."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function as(s){let e,n;return e=new ss({props:{name:fs,singularNoun:"railway station",pluralNoun:"Railway stations",circleRadius:pn,$$slots:{default:[is]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}const fs="railway_stations";class cs extends F{constructor(e){super(),j(this,e,null,as,R,{})}}function us(s){let e;return{c(){e=b("Show on map")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function $s(s){let e;return{c(){e=b("Edit scheme locally")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ps(s){let e,n,t=s[0].authority_or_region+"",r,o,i,u,l=s[0].capital_scheme_id+"",c,a,f,$,p=s[0].funding_programme+"",y,d,C,L,D,U,O;return L=new Ie({props:{$$slots:{default:[us]},$$scope:{ctx:s}}}),L.$on("click",s[3]),U=new Ie({props:{disabled:s[1],title:s[2],$$slots:{default:[$s]},$$scope:{ctx:s}}}),U.$on("click",s[4]),{c(){e=A("p"),n=b("Authority or region: "),r=b(t),o=M(),i=A("p"),u=b("Capital scheme ID: "),c=b(l),a=M(),f=A("p"),$=b("Funding programme: "),y=b(p),d=M(),C=A("div"),w(L.$$.fragment),D=M(),w(U.$$.fragment),G(C,"class","govuk-button-group")},m(N,B){m(N,e,B),S(e,n),S(e,r),m(N,o,B),m(N,i,B),S(i,u),S(i,c),m(N,a,B),m(N,f,B),S(f,$),S(f,y),m(N,d,B),m(N,C,B),v(L,C,null),S(C,D),v(U,C,null),O=!0},p(N,B){(!O||B&1)&&t!==(t=N[0].authority_or_region+"")&&te(r,t),(!O||B&1)&&l!==(l=N[0].capital_scheme_id+"")&&te(c,l),(!O||B&1)&&p!==(p=N[0].funding_programme+"")&&te(y,p);const P={};B&256&&(P.$$scope={dirty:B,ctx:N}),L.$set(P);const T={};B&256&&(T.$$scope={dirty:B,ctx:N}),U.$set(T)},i(N){O||(h(L.$$.fragment,N),h(U.$$.fragment,N),O=!0)},o(N){_(L.$$.fragment,N),_(U.$$.fragment,N),O=!1},d(N){N&&(g(e),g(o),g(i),g(a),g(f),g(d),g(C)),k(L),k(U)}}}function ms(s){let e,n;return e=new _e({props:{label:`${s[0].scheme_reference}: ${s[0].num_features} features`,$$slots:{default:[ps]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.label=`${t[0].scheme_reference}: ${t[0].num_features} features`),r&257&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function gs(s,e,n){let t,r;W(s,Te,f=>n(6,t=f)),W(s,re,f=>n(7,r=f));let{scheme:o}=e,{authorityNames:i}=e,u=!i.has(o.authority_or_region),l=u?"This scheme doesn't have an authority specified correctly, so you can't edit this scheme. We're working to fix this problem.":void 0;function c(){let f={type:"FeatureCollection",features:t.features.filter($=>$.properties.scheme_reference==o.scheme_reference)};r==null||r.fitBounds(At(f),{padding:20,animate:!1})}function a(){let f={type:"FeatureCollection",features:t.features.filter(p=>p.properties.scheme_reference==o.scheme_reference)},$=o.authority_or_region;window.localStorage.setItem($,JSON.stringify(f)),window.open(`scheme.html?authority=${o.authority_or_region}`,"_blank")}return s.$$set=f=>{"scheme"in f&&n(0,o=f.scheme),"authorityNames"in f&&n(5,i=f.authorityNames)},[o,u,l,c,a,i]}class hs extends F{constructor(e){super(),j(this,e,gs,ms,R,{scheme:0,authorityNames:5})}}function _s(s){let e;return{c(){e=b("primary and secondary schools")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ds(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ws(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dschool",$$slots:{default:[_s]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[ds]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(` from OpenStreetMap. It doesn't include kindergartens, colleges, - universities, or other training schools.`),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function vs(s){let e,n;return e=new je({props:{name:"schools",singularNoun:"school",pluralNoun:"Schools",$$slots:{default:[ws]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class ks extends F{constructor(e){super(),j(this,e,null,vs,R,{})}}function bs(s){let e;return{c(){e=b(`sports pitches - `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ys(s){let e;return{c(){e=b("sports centres")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Ls(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Cs(s){let e,n,t,r,o,i,u,l,c,a,f;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dpitch",$$slots:{default:[bs]},$$scope:{ctx:s}}}),o=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dsports_centre",$$slots:{default:[ys]},$$scope:{ctx:s}}}),a=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[Ls]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(", and "),w(o.$$.fragment),i=b(" data from OpenStreetMap."),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment)},m($,p){m($,e,p),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m($,u,p),m($,l,p),S(l,c),v(a,l,null),f=!0},p($,p){const y={};p&1&&(y.$$scope={dirty:p,ctx:$}),t.$set(y);const d={};p&1&&(d.$$scope={dirty:p,ctx:$}),o.$set(d);const C={};p&1&&(C.$$scope={dirty:p,ctx:$}),a.$set(C)},i($){f||(h(t.$$.fragment,$),h(o.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(t.$$.fragment,$),_(o.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function Ss(s){let e,n;return e=new je({props:{name:"sports_spaces",singularNoun:"sports space",pluralNoun:"Sports spaces",$$slots:{default:[Cs]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class Ts extends F{constructor(e){super(),j(this,e,null,Ss,R,{})}}function Ds(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` + `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Vr(s){let e;return{c(){e=b("Open Government License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Zr(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://www.ordnancesurvey.co.uk/products/boundary-line",$$slots:{default:[Hr]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Vr]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from "),w(t.$$.fragment),r=b("."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&32&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&32&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function qr(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Zr]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function Kr(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:oe,$$slots:{right:[qr],default:[Gr]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:oe,tooltip:Wr,show:s[0],clickable:!0}}),r.$on("click",Jr),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let oe="parliamentary_constituencies";function Wr(s){return`

${s.properties.Name}

`}function Jr(s){let e=s.detail.properties.Name;e=e.replace(/ Boro Const$/,""),e=e.replace(/ Co Const$/,""),e=encodeURIComponent(e),window.open(`https://members.parliament.uk/members/Commons?SearchText=${e}`,"_blank")}function Xr(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.parliamentary_constituencies,o=`${oe}-outline`;Pe(t,oe,`https://atip.uk/layers/v1/${oe}.pmtiles`),De(t,{id:oe,source:oe,sourceLayer:oe,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:oe,sourceLayer:oe,color:r,width:5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class Yr extends j{constructor(e){super(),F(this,e,Xr,Kr,R,{})}}function Qr(s){let e,n,t,r;return e=new we({props:{color:s[3]}}),{c(){w(e.$$.fragment),n=M(),t=b(s[1])},m(o,i){v(e,o,i),m(o,n,i),m(o,t,i),r=!0},p(o,i){(!r||i&2)&&te(t,o[1])},i(o){r||(h(e.$$.fragment,o),r=!0)},o(o){_(e.$$.fragment,o),r=!1},d(o){o&&(g(n),g(t)),k(e,o)}}}function es(s){let e;const n=s[7].default,t=Ot(n,s,s[9],null);return{c(){t&&t.c()},m(r,o){t&&t.m(r,o),e=!0},p(r,o){t&&t.p&&(!e||o&512)&&Mt(t,n,r,r[9],e?Ut(n,r[9],o,null):Nt(r[9]),null)},i(r){e||(h(t,r),e=!0)},o(r){_(t,r),e=!1},d(r){t&&t.d(r)}}}function ts(s){let e,n,t;return n=new fe({props:{$$slots:{default:[es]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&512&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function ns(s){let e,n,t,r,o;function i(l){s[8](l)}let u={id:s[0],$$slots:{right:[ts],default:[Qr]},$$scope:{ctx:s}};return s[2]!==void 0&&(u.checked=s[2]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:s[0],tooltip:s[4],show:s[2],clickable:!1}}),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&1&&(a.id=l[0]),c&514&&(a.$$scope={dirty:c,ctx:l}),!n&&c&4&&(n=!0,a.checked=l[2],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.layer=l[0]),c&4&&(f.show=l[2]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}function rs(s,e,n){let t;W(s,re,d=>n(10,t=d));let{$$slots:r={},$$scope:o}=e,{name:i}=e,{singularNoun:u}=e,{pluralNoun:l}=e,{circleRadius:c}=e,a=K[i];const f=()=>{nn(t,{id:i,source:i,filter:["all",rn],color:a,radius:c/2}),n(2,$=!1)};tn(t,i,`https://atip.uk/layers/v1/${i}.geojson`,f);let $=!0;function p(d){return`

${d.properties.name??`Unnamed ${u}`}

`}function y(d){$=d,n(2,$)}return s.$$set=d=>{"name"in d&&n(0,i=d.name),"singularNoun"in d&&n(5,u=d.singularNoun),"pluralNoun"in d&&n(1,l=d.pluralNoun),"circleRadius"in d&&n(6,c=d.circleRadius),"$$scope"in d&&n(9,o=d.$$scope)},[i,l,$,a,p,u,c,r,y,o]}class ss extends j{constructor(e){super(),F(this,e,rs,ns,R,{name:0,singularNoun:5,pluralNoun:1,circleRadius:6})}}function os(s){let e;return{c(){e=b("railway station")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ls(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function is(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:railway%3Dstation",$$slots:{default:[os]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[ls]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(" data from OpenStreetMap."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function as(s){let e,n;return e=new ss({props:{name:fs,singularNoun:"railway station",pluralNoun:"Railway stations",circleRadius:pn,$$slots:{default:[is]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}const fs="railway_stations";class cs extends j{constructor(e){super(),F(this,e,null,as,R,{})}}function us(s){let e;return{c(){e=b("Show on map")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function $s(s){let e;return{c(){e=b("Edit scheme locally")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ps(s){let e,n,t=s[0].authority_or_region+"",r,o,i,u,l=s[0].capital_scheme_id+"",c,a,f,$,p=s[0].funding_programme+"",y,d,C,L,D,U,O;return L=new Ie({props:{$$slots:{default:[us]},$$scope:{ctx:s}}}),L.$on("click",s[3]),U=new Ie({props:{disabled:s[1],title:s[2],$$slots:{default:[$s]},$$scope:{ctx:s}}}),U.$on("click",s[4]),{c(){e=A("p"),n=b("Authority or region: "),r=b(t),o=M(),i=A("p"),u=b("Capital scheme ID: "),c=b(l),a=M(),f=A("p"),$=b("Funding programme: "),y=b(p),d=M(),C=A("div"),w(L.$$.fragment),D=M(),w(U.$$.fragment),G(C,"class","govuk-button-group")},m(N,B){m(N,e,B),S(e,n),S(e,r),m(N,o,B),m(N,i,B),S(i,u),S(i,c),m(N,a,B),m(N,f,B),S(f,$),S(f,y),m(N,d,B),m(N,C,B),v(L,C,null),S(C,D),v(U,C,null),O=!0},p(N,B){(!O||B&1)&&t!==(t=N[0].authority_or_region+"")&&te(r,t),(!O||B&1)&&l!==(l=N[0].capital_scheme_id+"")&&te(c,l),(!O||B&1)&&p!==(p=N[0].funding_programme+"")&&te(y,p);const P={};B&256&&(P.$$scope={dirty:B,ctx:N}),L.$set(P);const T={};B&256&&(T.$$scope={dirty:B,ctx:N}),U.$set(T)},i(N){O||(h(L.$$.fragment,N),h(U.$$.fragment,N),O=!0)},o(N){_(L.$$.fragment,N),_(U.$$.fragment,N),O=!1},d(N){N&&(g(e),g(o),g(i),g(a),g(f),g(d),g(C)),k(L),k(U)}}}function ms(s){let e,n;return e=new _e({props:{label:`${s[0].scheme_reference}: ${s[0].num_features} features`,$$slots:{default:[ps]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.label=`${t[0].scheme_reference}: ${t[0].num_features} features`),r&257&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function gs(s,e,n){let t,r;W(s,Te,f=>n(6,t=f)),W(s,re,f=>n(7,r=f));let{scheme:o}=e,{authorityNames:i}=e,u=!i.has(o.authority_or_region),l=u?"This scheme doesn't have an authority specified correctly, so you can't edit this scheme. We're working to fix this problem.":void 0;function c(){let f={type:"FeatureCollection",features:t.features.filter($=>$.properties.scheme_reference==o.scheme_reference)};r==null||r.fitBounds(At(f),{padding:20,animate:!1})}function a(){let f={type:"FeatureCollection",features:t.features.filter(p=>p.properties.scheme_reference==o.scheme_reference)},$=o.authority_or_region;window.localStorage.setItem($,JSON.stringify(f)),window.open(`scheme.html?authority=${o.authority_or_region}`,"_blank")}return s.$$set=f=>{"scheme"in f&&n(0,o=f.scheme),"authorityNames"in f&&n(5,i=f.authorityNames)},[o,u,l,c,a,i]}class hs extends j{constructor(e){super(),F(this,e,gs,ms,R,{scheme:0,authorityNames:5})}}function _s(s){let e;return{c(){e=b("primary and secondary schools")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ds(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ws(s){let e,n,t,r,o,i,u,l,c;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dschool",$$slots:{default:[_s]},$$scope:{ctx:s}}}),l=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[ds]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(` from OpenStreetMap. It doesn't include kindergartens, colleges, + universities, or other training schools.`),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment)},m(a,f){m(a,e,f),S(e,n),v(t,e,null),S(e,r),m(a,o,f),m(a,i,f),S(i,u),v(l,i,null),c=!0},p(a,f){const $={};f&1&&($.$$scope={dirty:f,ctx:a}),t.$set($);const p={};f&1&&(p.$$scope={dirty:f,ctx:a}),l.$set(p)},i(a){c||(h(t.$$.fragment,a),h(l.$$.fragment,a),c=!0)},o(a){_(t.$$.fragment,a),_(l.$$.fragment,a),c=!1},d(a){a&&(g(e),g(o),g(i)),k(t),k(l)}}}function vs(s){let e,n;return e=new Fe({props:{name:"schools",singularNoun:"school",pluralNoun:"Schools",$$slots:{default:[ws]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class ks extends j{constructor(e){super(),F(this,e,null,vs,R,{})}}function bs(s){let e;return{c(){e=b(`sports pitches + `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function ys(s){let e;return{c(){e=b("sports centres")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Ls(s){let e;return{c(){e=b("Open Data Commons Open Database License")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Cs(s){let e,n,t,r,o,i,u,l,c,a,f;return t=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dpitch",$$slots:{default:[bs]},$$scope:{ctx:s}}}),o=new z({props:{href:"https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dsports_centre",$$slots:{default:[ys]},$$scope:{ctx:s}}}),a=new z({props:{href:"https://www.openstreetmap.org/copyright",$$slots:{default:[Ls]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("This shows "),w(t.$$.fragment),r=b(", and "),w(o.$$.fragment),i=b(" data from OpenStreetMap."),u=M(),l=A("p"),c=b("License: "),w(a.$$.fragment)},m($,p){m($,e,p),S(e,n),v(t,e,null),S(e,r),v(o,e,null),S(e,i),m($,u,p),m($,l,p),S(l,c),v(a,l,null),f=!0},p($,p){const y={};p&1&&(y.$$scope={dirty:p,ctx:$}),t.$set(y);const d={};p&1&&(d.$$scope={dirty:p,ctx:$}),o.$set(d);const C={};p&1&&(C.$$scope={dirty:p,ctx:$}),a.$set(C)},i($){f||(h(t.$$.fragment,$),h(o.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(t.$$.fragment,$),_(o.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(e),g(u),g(l)),k(t),k(o),k(a)}}}function Ss(s){let e,n;return e=new Fe({props:{name:"sports_spaces",singularNoun:"sports space",pluralNoun:"Sports spaces",$$slots:{default:[Cs]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&1&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}class Ts extends j{constructor(e){super(),F(this,e,null,Ss,R,{})}}function Ds(s){let e,n,t;return e=new we({props:{color:s[1]}}),{c(){w(e.$$.fragment),n=b(` Wards`)},m(r,o){v(e,r,o),m(r,n,o),t=!0},p:ae,i(r){t||(h(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){r&&g(n),k(e,r)}}}function Os(s){let e;return{c(){e=b(`ONS Geography `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Ms(s){let e;return{c(){e=b(`Open Government License `)},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function Ns(s){let e,n,t,r,o,i,u,l,c,a;return t=new z({props:{href:"https://geoportal.statistics.gov.uk/datasets/ons::wards-may-2023-boundaries-uk-bgc/explore",$$slots:{default:[Os]},$$scope:{ctx:s}}}),l=new z({props:{href:"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",$$slots:{default:[Ms]},$$scope:{ctx:s}}}),{c(){e=A("p"),n=b("Data from "),w(t.$$.fragment),r=b(", as of May 2023."),o=M(),i=A("p"),u=b("License: "),w(l.$$.fragment),c=b(`. Contains OS data © Crown copyright and database - right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Us(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Ns]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function As(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:le,$$slots:{right:[Us],default:[Ds]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:le,tooltip:Bs,show:s[0],clickable:!0}}),r.$on("click",Ps),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let le="wards";function Bs(s){return`

${s.properties.name}

`}function Ps(s){let e=encodeURIComponent(s.detail.properties.name);window.open(`https://www.google.com/search?q=${e}+councillor`,"_blank")}function Es(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.wards,o=`${le}-outline`;Pe(t,le,`https://atip.uk/layers/v1/${le}.pmtiles`),De(t,{id:le,source:le,sourceLayer:le,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:le,sourceLayer:le,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class xs extends F{constructor(e){super(),j(this,e,Es,As,R,{})}}var H=(s,e,n)=>new Promise((t,r)=>{var o=l=>{try{u(n.next(l))}catch(c){r(c)}},i=l=>{try{u(n.throw(l))}catch(c){r(c)}},u=l=>l.done?t(l.value):Promise.resolve(l.value).then(o,i);u((n=n.apply(s,e)).next())}),X=Uint8Array,Ce=Uint16Array,zs=Int32Array,Et=new X([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),xt=new X([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Is=new X([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),zt=function(s,e){for(var n=new Ce(31),t=0;t<31;++t)n[t]=e+=1<>1|(x&21845)<<1,ce=(ce&52428)>>2|(ce&13107)<<2,ce=(ce&61680)>>4|(ce&3855)<<4,Je[x]=((ce&65280)>>8|(ce&255)<<8)>>1;var ce,x,Be=function(s,e,n){for(var t=s.length,r=0,o=new Ce(e);r>l]=c}else for(u=new Ce(t),r=0;r>15-s[r]);return u},Ee=new X(288);for(x=0;x<144;++x)Ee[x]=8;var x;for(x=144;x<256;++x)Ee[x]=9;var x;for(x=256;x<280;++x)Ee[x]=7;var x;for(x=280;x<288;++x)Ee[x]=8;var x,jt=new X(32);for(x=0;x<32;++x)jt[x]=5;var x,Gs=Be(Ee,9,1),Hs=Be(jt,5,1),Ze=function(s){for(var e=s[0],n=1;ne&&(e=s[n]);return e},Q=function(s,e,n){var t=e/8|0;return(s[t]|s[t+1]<<8)>>(e&7)&n},qe=function(s,e){var n=e/8|0;return(s[n]|s[n+1]<<8|s[n+2]<<16)>>(e&7)},Vs=function(s){return(s+7)/8|0},Zs=function(s,e,n){(e==null||e<0)&&(e=0),(n==null||n>s.length)&&(n=s.length);var t=new X(n-e);return t.set(s.subarray(e,n)),t},qs=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],J=function(s,e,n){var t=new Error(e||qs[s]);if(t.code=s,Error.captureStackTrace&&Error.captureStackTrace(t,J),!n)throw t;return t},tt=function(s,e,n,t){var r=s.length,o=t?t.length:0;if(!r||e.f&&!e.l)return n||new X(0);var i=!n||e.i!=2,u=e.i;n||(n=new X(r*3));var l=function(lt){var it=n.length;if(lt>it){var at=new X(Math.max(it*2,lt));at.set(n),n=at}},c=e.f||0,a=e.p||0,f=e.b||0,$=e.l,p=e.d,y=e.m,d=e.n,C=r*8;do{if(!$){c=Q(s,a,1);var L=Q(s,a+1,3);if(a+=3,L)if(L==1)$=Gs,p=Hs,y=9,d=5;else if(L==2){var N=Q(s,a,31)+257,B=Q(s,a+10,15)+4,P=N+Q(s,a+5,31)+1;a+=14;for(var T=new X(P),E=new X(19),I=0;I>4;if(D<16)T[I++]=D;else{var ke=0,ze=0;for(D==16?(ze=3+Q(s,a,3),a+=2,ke=T[I-1]):D==17?(ze=3+Q(s,a,7),a+=3):D==18&&(ze=11+Q(s,a,127),a+=7);ze--;)T[I++]=ke}}var rt=T.subarray(0,N),Y=T.subarray(N);y=Ze(rt),d=Ze(Y),$=Be(rt,y,1),p=Be(Y,d,1)}else J(1);else{var D=Vs(a)+4,U=s[D-4]|s[D-3]<<8,O=D+U;if(O>r){u&&J(0);break}i&&l(f+U),n.set(s.subarray(D,O),f),e.b=f+=U,e.p=a=O*8,e.f=c;continue}if(a>C){u&&J(0);break}}i&&l(f+131072);for(var Wt=(1<>4;if(a+=ke&15,a>C){u&&J(0);break}if(ke||J(2),be<256)n[f++]=be;else if(be==256){Re=a,$=null;break}else{var st=be-254;if(be>264){var I=be-257,Ne=Et[I];st=Q(s,a,(1<>4;Ge||J(3),a+=Ge&15;var Y=Rs[He];if(He>3){var Ne=xt[He];Y+=qe(s,a)&(1<C){u&&J(0);break}i&&l(f+131072);var Ve=f+st;if(f>3&1)+(e>>4&1);t>0;t-=!s[n++]);return n+(e&2)},Js=function(s){var e=s.length;return(s[e-4]|s[e-3]<<8|s[e-2]<<16|s[e-1]<<24)>>>0},Xs=function(s,e){return((s[0]&15)!=8||s[0]>>4>7||(s[0]<<8|s[1])%31)&&J(6,"invalid zlib data"),(s[1]>>5&1)==+!e&&J(6,"invalid zlib data: "+(s[1]&32?"need":"unexpected")+" dictionary"),(s[1]>>3&4)+2};function Ys(s,e){return tt(s,{i:2},e&&e.out,e&&e.dictionary)}function Qs(s,e){var n=Ws(s);return n+8>s.length&&J(6,"invalid gzip data"),tt(s.subarray(n,-8),{i:2},e&&e.out||new X(Js(s)),e&&e.dictionary)}function eo(s,e){return tt(s.subarray(Xs(s,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}function Xe(s,e){return s[0]==31&&s[1]==139&&s[2]==8?Qs(s,e):(s[0]&15)!=8||s[0]>>4>7||(s[0]<<8|s[1])%31?Ys(s,e):eo(s,e)}var to=typeof TextDecoder<"u"&&new TextDecoder,no=0;try{to.decode(Ks,{stream:!0}),no=1}catch{}var Rt=(s,e)=>s*Math.pow(2,e),Ue=(s,e)=>Math.floor(s/Math.pow(2,e)),Fe=(s,e)=>Rt(s.getUint16(e+1,!0),8)+s.getUint8(e),Gt=(s,e)=>Rt(s.getUint32(e+2,!0),16)+s.getUint16(e,!0),ro=(s,e,n,t,r)=>{if(s!=t.getUint8(r))return s-t.getUint8(r);const o=Fe(t,r+1);if(e!=o)return e-o;const i=Fe(t,r+4);return n!=i?n-i:0},so=(s,e,n,t)=>{const r=Ht(s,e|128,n,t);return r?{z:e,x:n,y:t,offset:r[0],length:r[1],is_dir:!0}:null},wt=(s,e,n,t)=>{const r=Ht(s,e,n,t);return r?{z:e,x:n,y:t,offset:r[0],length:r[1],is_dir:!1}:null},Ht=(s,e,n,t)=>{let r=0,o=s.byteLength/17-1;for(;r<=o;){const i=o+r>>1,u=ro(e,n,t,s,i*17);if(u>0)r=i+1;else if(u<0)o=i-1;else return[Gt(s,i*17+7),s.getUint32(i*17+13,!0)]}return null},oo=(s,e)=>s.is_dir&&!e.is_dir?1:!s.is_dir&&e.is_dir?-1:s.z!==e.z?s.z-e.z:s.x!==e.x?s.x-e.x:s.y-e.y,Vt=(s,e)=>{const n=s.getUint8(e*17);return{z:n&127,x:Fe(s,e*17+1),y:Fe(s,e*17+4),offset:Gt(s,e*17+7),length:s.getUint32(e*17+13,!0),is_dir:n>>7===1}},vt=s=>{const e=[],n=new DataView(s);for(let t=0;t{s.sort(oo);const e=new ArrayBuffer(17*s.length),n=new Uint8Array(e);for(let t=0;t>8&255,n[t*17+3]=r.x>>16&255,n[t*17+4]=r.y&255,n[t*17+5]=r.y>>8&255,n[t*17+6]=r.y>>16&255,n[t*17+7]=r.offset&255,n[t*17+8]=Ue(r.offset,8)&255,n[t*17+9]=Ue(r.offset,16)&255,n[t*17+10]=Ue(r.offset,24)&255,n[t*17+11]=Ue(r.offset,32)&255,n[t*17+12]=Ue(r.offset,48)&255,n[t*17+13]=r.length&255,n[t*17+14]=r.length>>8&255,n[t*17+15]=r.length>>16&255,n[t*17+16]=r.length>>24&255}return e},io=(s,e)=>{if(s.byteLength<17)return null;const n=s.byteLength/17,t=Vt(s,n-1);if(t.is_dir){const r=t.z,o=e.z-r,i=Math.trunc(e.x/(1<{if(s.type=="json"){const n=s.url.substr(10);let t=this.tiles.get(n);return t||(t=new kt(n),this.tiles.set(n,t)),t.getHeader().then(r=>{const o={tiles:[s.url+"/{z}/{x}/{y}"],minzoom:r.minZoom,maxzoom:r.maxZoom,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat]};e(null,o,null,null)}).catch(r=>{e(r,null,null,null)}),{cancel:()=>{}}}else{const n=new RegExp(/pmtiles:\/\/(.+)\/(\d+)\/(\d+)\/(\d+)/),t=s.url.match(n);if(!t)throw new Error("Invalid PMTiles protocol URL");const r=t[1];let o=this.tiles.get(r);o||(o=new kt(r),this.tiles.set(r,o));const i=t[2],u=t[3],l=t[4],c=new AbortController,a=c.signal;let f=()=>{c.abort()};return o.getHeader().then($=>{o.getZxy(+i,+u,+l,a).then(p=>{p?e(null,new Uint8Array(p.data),p.cacheControl,p.expires):$.tileType==1?e(null,new Uint8Array,null,null):e(null,null,null,null)}).catch(p=>{p.name!=="AbortError"&&e(p,null,null,null)})}),{cancel:f}}},this.tiles=new Map}add(s){this.tiles.set(s.source.getKey(),s)}get(s){return this.tiles.get(s)}};function ye(s,e){return(e>>>0)*4294967296+(s>>>0)}function uo(s,e){const n=e.buf;let t,r;if(r=n[e.pos++],t=(r&112)>>4,r<128||(r=n[e.pos++],t|=(r&127)<<3,r<128)||(r=n[e.pos++],t|=(r&127)<<10,r<128)||(r=n[e.pos++],t|=(r&127)<<17,r<128)||(r=n[e.pos++],t|=(r&127)<<24,r<128)||(r=n[e.pos++],t|=(r&1)<<31,r<128))return ye(s,t);throw new Error("Expected varint not more than 10 bytes")}function Ae(s){const e=s.buf;let n,t;return t=e[s.pos++],n=t&127,t<128||(t=e[s.pos++],n|=(t&127)<<7,t<128)||(t=e[s.pos++],n|=(t&127)<<14,t<128)||(t=e[s.pos++],n|=(t&127)<<21,t<128)?n:(t=e[s.pos],n|=(t&15)<<28,uo(n,s))}function $o(s,e,n,t){if(t==0){n==1&&(e[0]=s-1-e[0],e[1]=s-1-e[1]);const r=e[0];e[0]=e[1],e[1]=r}}var po=[0,1,5,21,85,341,1365,5461,21845,87381,349525,1398101,5592405,22369621,89478485,357913941,1431655765,5726623061,22906492245,91625968981,366503875925,1466015503701,5864062014805,23456248059221,93824992236885,375299968947541,0x5555555555555];function mo(s,e,n){if(s>26)throw Error("Tile zoom level exceeds max safe number limit (26)");if(e>Math.pow(2,s)-1||n>Math.pow(2,s)-1)throw Error("tile x/y outside zoom level bounds");const t=po[s],r=Math.pow(2,s);let o=0,i=0,u=0;const l=[e,n];let c=r/2;for(;c>0;)o=(l[0]&c)>0?1:0,i=(l[1]&c)>0?1:0,u+=c*c*(3*o^i),$o(c,l,o,i),c=c/2;return t+u}function qt(s,e){return H(this,null,function*(){if(e===1||e===0)return s;if(e===2){if(typeof globalThis.DecompressionStream>"u")return Xe(new Uint8Array(s));{let t=new Response(s).body.pipeThrough(new globalThis.DecompressionStream("gzip"));return new Response(t).arrayBuffer()}}else throw Error("Compression method not supported")})}var go=127;function ho(s,e){let n=0,t=s.length-1;for(;n<=t;){const r=t+n>>1,o=e-s[r].tileId;if(o>0)n=r+1;else if(o<0)t=r-1;else return s[r]}return t>=0&&(s[t].runLength===0||e-s[t].tileId=300)throw Error("Bad response code: "+r.status);const o=r.headers.get("Content-Length");if(r.status===200&&(!o||+o>e))throw t&&t.abort(),Error("Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.");return{data:yield r.arrayBuffer(),etag:r.headers.get("ETag")||void 0,cacheControl:r.headers.get("Cache-Control")||void 0,expires:r.headers.get("Expires")||void 0}})}};function ee(s,e){const n=s.getUint32(e+4,!0),t=s.getUint32(e+0,!0);return n*Math.pow(2,32)+t}function wo(s,e){const n=new DataView(s),t=n.getUint8(7);if(t>3)throw Error(`Archive is spec version ${t} but this library supports up to spec version 3`);return{specVersion:t,rootDirectoryOffset:ee(n,8),rootDirectoryLength:ee(n,16),jsonMetadataOffset:ee(n,24),jsonMetadataLength:ee(n,32),leafDirectoryOffset:ee(n,40),leafDirectoryLength:ee(n,48),tileDataOffset:ee(n,56),tileDataLength:ee(n,64),numAddressedTiles:ee(n,72),numTileEntries:ee(n,80),numTileContents:ee(n,88),clustered:n.getUint8(96)===1,internalCompression:n.getUint8(97),tileCompression:n.getUint8(98),tileType:n.getUint8(99),minZoom:n.getUint8(100),maxZoom:n.getUint8(101),minLon:n.getInt32(102,!0)/1e7,minLat:n.getInt32(106,!0)/1e7,maxLon:n.getInt32(110,!0)/1e7,maxLat:n.getInt32(114,!0)/1e7,centerZoom:n.getUint8(118),centerLon:n.getInt32(119,!0)/1e7,centerLat:n.getInt32(123,!0)/1e7,etag:e}}function Kt(s){const e={buf:new Uint8Array(s),pos:0},n=Ae(e),t=[];let r=0;for(let o=0;o0?t[o].offset=t[o-1].offset+t[o-1].length:t[o].offset=i-1}return t}function vo(s){const e=new DataView(s);return e.getUint16(2,!0)===2?(console.warn("PMTiles spec version 2 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade"),2):e.getUint16(2,!0)===1?(console.warn("PMTiles spec version 1 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade"),1):3}var Se=class extends Error{};function ko(s,e,n,t){return H(this,null,function*(){const r=yield s.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error("Wrong magic number for PMTiles archive");if(vo(r.data)<3)return[yield Zt.getHeader(s)];const i=r.data.slice(0,go);let u=r.etag;t&&r.etag!=t&&(console.warn("ETag conflict detected; your HTTP server might not support content-based ETag headers. ETags disabled for "+s.getKey()),u=void 0);const l=wo(i,u);if(n){const c=r.data.slice(l.rootDirectoryOffset,l.rootDirectoryOffset+l.rootDirectoryLength),a=s.getKey()+"|"+(l.etag||"")+"|"+l.rootDirectoryOffset+"|"+l.rootDirectoryLength,f=Kt(yield e(c,l.internalCompression));return[l,[a,f.length,f]]}return[l,void 0]})}function bo(s,e,n,t,r){return H(this,null,function*(){const o=yield s.getBytes(n,t);if(r.etag&&r.etag!==o.etag)throw new Se(o.etag);const i=yield e(o.data,r.internalCompression),u=Kt(i);if(u.length===0)throw new Error("Empty directory is invalid");return u})}var yo=class{constructor(s=100,e=!0,n=qt){this.cache=new Map,this.maxCacheEntries=s,this.counter=1,this.prefetch=e,this.decompress=n}getHeader(s,e){return H(this,null,function*(){const n=s.getKey();if(this.cache.has(n))return this.cache.get(n).lastUsed=this.counter++,yield this.cache.get(n).data;const t=new Promise((r,o)=>{ko(s,this.decompress,this.prefetch,e).then(i=>{i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:Promise.resolve(i[1][2])}),r(i[0]),this.prune()}).catch(i=>{o(i)})});return this.cache.set(n,{lastUsed:this.counter++,data:t}),t})}getDirectory(s,e,n,t){return H(this,null,function*(){const r=s.getKey()+"|"+(t.etag||"")+"|"+e+"|"+n;if(this.cache.has(r))return this.cache.get(r).lastUsed=this.counter++,yield this.cache.get(r).data;const o=new Promise((i,u)=>{bo(s,this.decompress,e,n,t).then(l=>{i(l),this.prune()}).catch(l=>{u(l)})});return this.cache.set(r,{lastUsed:this.counter++,data:o}),o})}getArrayBuffer(s,e,n,t){return H(this,null,function*(){const r=s.getKey()+"|"+(t.etag||"")+"|"+e+"|"+n;if(this.cache.has(r))return this.cache.get(r).lastUsed=this.counter++,yield this.cache.get(r).data;const o=new Promise((i,u)=>{s.getBytes(e,n).then(l=>{if(t.etag&&t.etag!==l.etag)throw new Se(l.etag);i(l.data),this.cache.has(r),this.prune()}).catch(l=>{u(l)})});return this.cache.set(r,{lastUsed:this.counter++,data:o}),o})}prune(){if(this.cache.size>=this.maxCacheEntries){let s=1/0,e;this.cache.forEach((n,t)=>{n.lastUsedo.maxZoom)return;let i=o.rootDirectoryOffset,u=o.rootDirectoryLength;for(let l=0;l<=3;l++){const c=yield this.cache.getDirectory(this.source,i,u,o),a=ho(c,r);if(a)if(a.runLength>0){const f=yield this.source.getBytes(o.tileDataOffset+a.offset,a.length,t);if(o.etag&&o.etag!==f.etag)throw new Se(f.etag);return{data:yield this.decompress(f.data,o.tileCompression),cacheControl:f.cacheControl,expires:f.expires}}else i=o.leafDirectoryOffset+a.offset,u=a.length;else return}throw Error("Maximum directory depth exceeded")})}getZxy(s,e,n,t){return H(this,null,function*(){try{return yield this.getZxyAttempt(s,e,n,t)}catch(r){if(r instanceof Se)return this.cache.invalidate(this.source,r.message),yield this.getZxyAttempt(s,e,n,t);throw r}})}getMetadataAttempt(){return H(this,null,function*(){const s=yield this.cache.getHeader(this.source),e=yield this.source.getBytes(s.jsonMetadataOffset,s.jsonMetadataLength);if(s.etag&&s.etag!==e.etag)throw new Se(e.etag);const n=yield this.decompress(e.data,s.internalCompression),t=new TextDecoder("utf-8");return JSON.parse(t.decode(n))})}getMetadata(){return H(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(s){if(s instanceof Se)return this.cache.invalidate(this.source,s.message),yield this.getMetadataAttempt();throw s}})}};function Lo(s){return Ye(()=>{let e=new co;ct.addProtocol("pmtiles",e.tile)}),Bt(()=>{ct.removeProtocol("pmtiles")}),[]}class Co extends F{constructor(e){super(),j(this,e,Lo,null,R,{})}}function bt(s,e,n){const t=s.slice();return t[15]=e[n],t}function So(s){let e;return{c(){e=b("Home")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function yt(s){let e,n;return e=new cn({props:{errorMessage:s[1]}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&2&&(o.errorMessage=t[1]),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Lt(s){let e,n,t,r;function o(l){s[10](l)}function i(l){s[11](l)}let u={schemes:s[2]};return s[3]!==void 0&&(u.schemesToBeShown=s[3]),s[4]!==void 0&&(u.filterText=s[4]),e=new ir({props:u}),V.push(()=>Z(e,"schemesToBeShown",o)),V.push(()=>Z(e,"filterText",i)),{c(){w(e.$$.fragment)},m(l,c){v(e,l,c),r=!0},p(l,c){const a={};c&4&&(a.schemes=l[2]),!n&&c&8&&(n=!0,a.schemesToBeShown=l[3],q(()=>n=!1)),!t&&c&16&&(t=!0,a.filterText=l[4],q(()=>t=!1)),e.$set(a)},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){_(e.$$.fragment,l),r=!1},d(l){k(e,l)}}}function Ct(s){let e,n,t=Le(s[2].values()),r=[];for(let i=0;i_(r[i],1,1,()=>{r[i]=null});return{c(){e=A("ul");for(let i=0;i{r=null}),ge())},i(o){t||(h(r),t=!0)},o(o){_(r),t=!1},d(o){o&&g(n),r&&r.d(o)}}}function To(s){let e,n,t,r,o,i,u,l,c,a,f,$,p;n=new Ie({props:{$$slots:{default:[So]},$$scope:{ctx:s}}}),n.$on("click",s[9]),u=new gn({props:{boundaryGeojson:s[5]}});let y=s[1]&&yt(s);a=new sn({props:{label:"Load from GeoJSON",id:"load-geojson",loadFile:s[7]}});let d=s[2].size>0&&Lt(s),C=s[0]&&Ct(s);return{c(){e=A("div"),w(n.$$.fragment),t=M(),r=A("div"),o=A("h1"),o.textContent="Browse schemes",i=M(),w(u.$$.fragment),l=M(),y&&y.c(),c=M(),w(a.$$.fragment),f=M(),d&&d.c(),$=M(),C&&C.c(),ue(r,"display","flex"),ue(r,"justify-content","space-between"),G(e,"slot","sidebar"),G(e,"class","govuk-prose")},m(L,D){m(L,e,D),v(n,e,null),S(e,t),S(e,r),S(r,o),S(r,i),v(u,r,null),S(e,l),y&&y.m(e,null),S(e,c),v(a,e,null),S(e,f),d&&d.m(e,null),S(e,$),C&&C.m(e,null),p=!0},p(L,D){const U={};D&262144&&(U.$$scope={dirty:D,ctx:L}),n.$set(U);const O={};D&32&&(O.boundaryGeojson=L[5]),u.$set(O),L[1]?y?(y.p(L,D),D&2&&h(y,1)):(y=yt(L),y.c(),h(y,1),y.m(e,c)):y&&(me(),_(y,1,1,()=>{y=null}),ge()),L[2].size>0?d?(d.p(L,D),D&4&&h(d,1)):(d=Lt(L),d.c(),h(d,1),d.m(e,$)):d&&(me(),_(d,1,1,()=>{d=null}),ge()),L[0]?C?(C.p(L,D),D&1&&h(C,1)):(C=Ct(L),C.c(),h(C,1),C.m(e,null)):C&&(me(),_(C,1,1,()=>{C=null}),ge())},i(L){p||(h(n.$$.fragment,L),h(u.$$.fragment,L),h(y),h(a.$$.fragment,L),h(d),h(C),p=!0)},o(L){_(n.$$.fragment,L),_(u.$$.fragment,L),_(y),_(a.$$.fragment,L),_(d),_(C),p=!1},d(L){L&&g(e),k(n),k(u),y&&y.d(),k(a),d&&d.d(),C&&C.d()}}}function Do(s){let e,n,t,r,o,i,u,l,c,a;return e=new ks({}),t=new yr({}),o=new dr({}),u=new Ts({}),c=new cs({}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(f,$){v(e,f,$),m(f,n,$),v(t,f,$),m(f,r,$),v(o,f,$),m(f,i,$),v(u,f,$),m(f,l,$),v(c,f,$),a=!0},i(f){a||(h(e.$$.fragment,f),h(t.$$.fragment,f),h(o.$$.fragment,f),h(u.$$.fragment,f),h(c.$$.fragment,f),a=!0)},o(f){_(e.$$.fragment,f),_(t.$$.fragment,f),_(o.$$.fragment,f),_(u.$$.fragment,f),_(c.$$.fragment,f),a=!1},d(f){f&&(g(n),g(r),g(i),g(l)),k(e,f),k(t,f),k(o,f),k(u,f),k(c,f)}}}function Oo(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Do]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Mo(s){let e,n;return e=new Rr({}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function No(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Mo]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Uo(s){let e,n,t,r,o,i,u,l;return e=new Yr({}),t=new xs({}),o=new Xn({}),u=new Ar({}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment)},m(c,a){v(e,c,a),m(c,n,a),v(t,c,a),m(c,r,a),v(o,c,a),m(c,i,a),v(u,c,a),l=!0},i(c){l||(h(e.$$.fragment,c),h(t.$$.fragment,c),h(o.$$.fragment,c),h(u.$$.fragment,c),l=!0)},o(c){_(e.$$.fragment,c),_(t.$$.fragment,c),_(o.$$.fragment,c),_(u.$$.fragment,c),l=!1},d(c){c&&(g(n),g(r),g(i)),k(e,c),k(t,c),k(o,c),k(u,c)}}}function Ao(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Uo]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Bo(s){let e,n;return e=new jn({}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Po(s){let e,n,t,r,o,i,u,l,c,a;return e=new _e({props:{label:"Trip generators",$$slots:{default:[Oo]},$$scope:{ctx:s}}}),t=new _e({props:{label:"Road network",$$slots:{default:[No]},$$scope:{ctx:s}}}),o=new _e({props:{label:"Boundaries",$$slots:{default:[Ao]},$$scope:{ctx:s}}}),u=new _e({props:{label:"Census",$$slots:{default:[Bo]},$$scope:{ctx:s}}}),c=new dn({props:{style:s[6]}}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(f,$){v(e,f,$),m(f,n,$),v(t,f,$),m(f,r,$),v(o,f,$),m(f,i,$),v(u,f,$),m(f,l,$),v(c,f,$),a=!0},p(f,$){const p={};$&262144&&(p.$$scope={dirty:$,ctx:f}),e.$set(p);const y={};$&262144&&(y.$$scope={dirty:$,ctx:f}),t.$set(y);const d={};$&262144&&(d.$$scope={dirty:$,ctx:f}),o.$set(d);const C={};$&262144&&(C.$$scope={dirty:$,ctx:f}),u.$set(C)},i(f){a||(h(e.$$.fragment,f),h(t.$$.fragment,f),h(o.$$.fragment,f),h(u.$$.fragment,f),h(c.$$.fragment,f),a=!0)},o(f){_(e.$$.fragment,f),_(t.$$.fragment,f),_(o.$$.fragment,f),_(u.$$.fragment,f),_(c.$$.fragment,f),a=!1},d(f){f&&(g(n),g(r),g(i),g(l)),k(e,f),k(t,f),k(o,f),k(u,f),k(c,f)}}}function Eo(s){let e,n,t,r,o,i,u,l,c,a,f;return e=new _n({props:{colorInterventions:Pt("v1")}}),t=new ne({props:{layer:"interventions-points",tooltip:s[8],clickable:!1}}),o=new ne({props:{layer:"interventions-lines",tooltip:s[8],clickable:!1}}),u=new ne({props:{layer:"interventions-polygons",tooltip:s[8],clickable:!1}}),a=new _e({props:{label:"Layers",open:!0,$$slots:{default:[Po]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),c=A("div"),w(a.$$.fragment),G(c,"class","top-right svelte-12h3i77")},m($,p){v(e,$,p),m($,n,p),v(t,$,p),m($,r,p),v(o,$,p),m($,i,p),v(u,$,p),m($,l,p),m($,c,p),v(a,c,null),f=!0},p($,p){const y={};p&262144&&(y.$$scope={dirty:p,ctx:$}),a.$set(y)},i($){f||(h(e.$$.fragment,$),h(t.$$.fragment,$),h(o.$$.fragment,$),h(u.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(e.$$.fragment,$),_(t.$$.fragment,$),_(o.$$.fragment,$),_(u.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(n),g(r),g(i),g(l),g(c)),k(e,$),k(t,$),k(o,$),k(u,$),k(a)}}}function xo(s){let e,n,t,r,o;return n=new Co({}),r=new hn({props:{style:s[6],startBounds:[-5.96,49.89,2.31,55.94],$$slots:{default:[Eo]},$$scope:{ctx:s}}}),{c(){e=A("div"),w(n.$$.fragment),t=M(),w(r.$$.fragment),G(e,"slot","main")},m(i,u){m(i,e,u),v(n,e,null),S(e,t),v(r,e,null),o=!0},p(i,u){const l={};u&262144&&(l.$$scope={dirty:u,ctx:i}),r.$set(l)},i(i){o||(h(n.$$.fragment,i),h(r.$$.fragment,i),o=!0)},o(i){_(n.$$.fragment,i),_(r.$$.fragment,i),o=!1},d(i){i&&g(e),k(n),k(r)}}}function zo(s){let e,n;return e=new mn({props:{$$slots:{main:[xo],sidebar:[To]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&262207&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Io(s,e,n){let t,r;W(s,re,D=>n(12,t=D)),W(s,Te,D=>n(5,r=D));let o=null;Ye(async()=>{on();let D=await ln();n(0,o=new Set(D.features.map(U=>U.properties.name)))});let u=new URLSearchParams(window.location.search).get("style")||"dataviz",l="",c=new Map,a=new Set,f="";Bt(()=>{Te.set(an())});function $(D){try{let U=JSON.parse(D);n(2,c=Yn(U)),Te.set(U),n(1,l=""),t==null||t.fitBounds(At(U),{padding:20,animate:!1})}catch(U){n(1,l=`Couldn't load schemes from a file: ${U}`)}}function p(D){let U=D.properties;var O='
';return O+=`

${y(U.name)} (${U.intervention_type})

`,O+=`

Scheme reference: ${U.scheme_reference}

`,U.length_meters&&(O+=`

Length: ${fn(U.length_meters)}

`),U.description&&(O+=`

${y(U.description)}

`),O+="
",O}function y(D){return f?D.replace(new RegExp(f,"gi"),U=>`${U}`):D}const d=()=>window.open("index.html");function C(D){a=D,n(3,a)}function L(D){f=D,n(4,f)}return[o,l,c,a,f,r,u,$,p,d,C,L]}class Fo extends F{constructor(e){super(),j(this,e,Io,zo,R,{})}}document.body.className=document.body.className?document.body.className+" js-enabled":"js-enabled";new Fo({target:document.getElementById("app")}); + right 2023.`)},m(f,$){m(f,e,$),S(e,n),v(t,e,null),S(e,r),m(f,o,$),m(f,i,$),S(i,u),v(l,i,null),S(i,c),a=!0},p(f,$){const p={};$&32&&(p.$$scope={dirty:$,ctx:f}),t.$set(p);const y={};$&32&&(y.$$scope={dirty:$,ctx:f}),l.$set(y)},i(f){a||(h(t.$$.fragment,f),h(l.$$.fragment,f),a=!0)},o(f){_(t.$$.fragment,f),_(l.$$.fragment,f),a=!1},d(f){f&&(g(e),g(o),g(i)),k(t),k(l)}}}function Us(s){let e,n,t;return n=new fe({props:{$$slots:{default:[Ns]},$$scope:{ctx:s}}}),{c(){e=A("span"),w(n.$$.fragment),G(e,"slot","right")},m(r,o){m(r,e,o),v(n,e,null),t=!0},p(r,o){const i={};o&32&&(i.$$scope={dirty:o,ctx:r}),n.$set(i)},i(r){t||(h(n.$$.fragment,r),t=!0)},o(r){_(n.$$.fragment,r),t=!1},d(r){r&&g(e),k(n)}}}function As(s){let e,n,t,r,o;function i(l){s[3](l)}let u={id:le,$$slots:{right:[Us],default:[Ds]},$$scope:{ctx:s}};return s[0]!==void 0&&(u.checked=s[0]),e=new ie({props:u}),V.push(()=>Z(e,"checked",i)),r=new ne({props:{layer:le,tooltip:Bs,show:s[0],clickable:!0}}),r.$on("click",Ps),{c(){w(e.$$.fragment),t=M(),w(r.$$.fragment)},m(l,c){v(e,l,c),m(l,t,c),v(r,l,c),o=!0},p(l,[c]){const a={};c&32&&(a.$$scope={dirty:c,ctx:l}),!n&&c&1&&(n=!0,a.checked=l[0],q(()=>n=!1)),e.$set(a);const f={};c&1&&(f.show=l[0]),r.$set(f)},i(l){o||(h(e.$$.fragment,l),h(r.$$.fragment,l),o=!0)},o(l){_(e.$$.fragment,l),_(r.$$.fragment,l),o=!1},d(l){l&&g(t),k(e,l),k(r,l)}}}let le="wards";function Bs(s){return`

${s.properties.name}

`}function Ps(s){let e=encodeURIComponent(s.detail.properties.name);window.open(`https://www.google.com/search?q=${e}+councillor`,"_blank")}function Es(s,e,n){let t;W(s,re,l=>n(2,t=l));let r=K.wards,o=`${le}-outline`;Pe(t,le,`https://atip.uk/layers/v1/${le}.pmtiles`),De(t,{id:le,source:le,sourceLayer:le,color:r,opacity:de(.5,.1)}),Oe(t,{id:o,source:le,sourceLayer:le,color:r,width:2.5});let i=!1;function u(l){i=l,n(0,i)}return s.$$.update=()=>{s.$$.dirty&5&&t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i?"visible":"none")},[i,r,t,u]}class xs extends j{constructor(e){super(),F(this,e,Es,As,R,{})}}var H=(s,e,n)=>new Promise((t,r)=>{var o=l=>{try{u(n.next(l))}catch(c){r(c)}},i=l=>{try{u(n.throw(l))}catch(c){r(c)}},u=l=>l.done?t(l.value):Promise.resolve(l.value).then(o,i);u((n=n.apply(s,e)).next())}),X=Uint8Array,Ce=Uint16Array,zs=Int32Array,Et=new X([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),xt=new X([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Is=new X([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),zt=function(s,e){for(var n=new Ce(31),t=0;t<31;++t)n[t]=e+=1<>1|(x&21845)<<1,ce=(ce&52428)>>2|(ce&13107)<<2,ce=(ce&61680)>>4|(ce&3855)<<4,Je[x]=((ce&65280)>>8|(ce&255)<<8)>>1;var ce,x,Be=function(s,e,n){for(var t=s.length,r=0,o=new Ce(e);r>l]=c}else for(u=new Ce(t),r=0;r>15-s[r]);return u},Ee=new X(288);for(x=0;x<144;++x)Ee[x]=8;var x;for(x=144;x<256;++x)Ee[x]=9;var x;for(x=256;x<280;++x)Ee[x]=7;var x;for(x=280;x<288;++x)Ee[x]=8;var x,Ft=new X(32);for(x=0;x<32;++x)Ft[x]=5;var x,Gs=Be(Ee,9,1),Hs=Be(Ft,5,1),Ze=function(s){for(var e=s[0],n=1;ne&&(e=s[n]);return e},Q=function(s,e,n){var t=e/8|0;return(s[t]|s[t+1]<<8)>>(e&7)&n},qe=function(s,e){var n=e/8|0;return(s[n]|s[n+1]<<8|s[n+2]<<16)>>(e&7)},Vs=function(s){return(s+7)/8|0},Zs=function(s,e,n){(e==null||e<0)&&(e=0),(n==null||n>s.length)&&(n=s.length);var t=new X(n-e);return t.set(s.subarray(e,n)),t},qs=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],J=function(s,e,n){var t=new Error(e||qs[s]);if(t.code=s,Error.captureStackTrace&&Error.captureStackTrace(t,J),!n)throw t;return t},tt=function(s,e,n,t){var r=s.length,o=t?t.length:0;if(!r||e.f&&!e.l)return n||new X(0);var i=!n||e.i!=2,u=e.i;n||(n=new X(r*3));var l=function(lt){var it=n.length;if(lt>it){var at=new X(Math.max(it*2,lt));at.set(n),n=at}},c=e.f||0,a=e.p||0,f=e.b||0,$=e.l,p=e.d,y=e.m,d=e.n,C=r*8;do{if(!$){c=Q(s,a,1);var L=Q(s,a+1,3);if(a+=3,L)if(L==1)$=Gs,p=Hs,y=9,d=5;else if(L==2){var N=Q(s,a,31)+257,B=Q(s,a+10,15)+4,P=N+Q(s,a+5,31)+1;a+=14;for(var T=new X(P),E=new X(19),I=0;I>4;if(D<16)T[I++]=D;else{var ke=0,ze=0;for(D==16?(ze=3+Q(s,a,3),a+=2,ke=T[I-1]):D==17?(ze=3+Q(s,a,7),a+=3):D==18&&(ze=11+Q(s,a,127),a+=7);ze--;)T[I++]=ke}}var rt=T.subarray(0,N),Y=T.subarray(N);y=Ze(rt),d=Ze(Y),$=Be(rt,y,1),p=Be(Y,d,1)}else J(1);else{var D=Vs(a)+4,U=s[D-4]|s[D-3]<<8,O=D+U;if(O>r){u&&J(0);break}i&&l(f+U),n.set(s.subarray(D,O),f),e.b=f+=U,e.p=a=O*8,e.f=c;continue}if(a>C){u&&J(0);break}}i&&l(f+131072);for(var Wt=(1<>4;if(a+=ke&15,a>C){u&&J(0);break}if(ke||J(2),be<256)n[f++]=be;else if(be==256){Re=a,$=null;break}else{var st=be-254;if(be>264){var I=be-257,Ne=Et[I];st=Q(s,a,(1<>4;Ge||J(3),a+=Ge&15;var Y=Rs[He];if(He>3){var Ne=xt[He];Y+=qe(s,a)&(1<C){u&&J(0);break}i&&l(f+131072);var Ve=f+st;if(f>3&1)+(e>>4&1);t>0;t-=!s[n++]);return n+(e&2)},Js=function(s){var e=s.length;return(s[e-4]|s[e-3]<<8|s[e-2]<<16|s[e-1]<<24)>>>0},Xs=function(s,e){return((s[0]&15)!=8||s[0]>>4>7||(s[0]<<8|s[1])%31)&&J(6,"invalid zlib data"),(s[1]>>5&1)==+!e&&J(6,"invalid zlib data: "+(s[1]&32?"need":"unexpected")+" dictionary"),(s[1]>>3&4)+2};function Ys(s,e){return tt(s,{i:2},e&&e.out,e&&e.dictionary)}function Qs(s,e){var n=Ws(s);return n+8>s.length&&J(6,"invalid gzip data"),tt(s.subarray(n,-8),{i:2},e&&e.out||new X(Js(s)),e&&e.dictionary)}function eo(s,e){return tt(s.subarray(Xs(s,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}function Xe(s,e){return s[0]==31&&s[1]==139&&s[2]==8?Qs(s,e):(s[0]&15)!=8||s[0]>>4>7||(s[0]<<8|s[1])%31?Ys(s,e):eo(s,e)}var to=typeof TextDecoder<"u"&&new TextDecoder,no=0;try{to.decode(Ks,{stream:!0}),no=1}catch{}var Rt=(s,e)=>s*Math.pow(2,e),Ue=(s,e)=>Math.floor(s/Math.pow(2,e)),je=(s,e)=>Rt(s.getUint16(e+1,!0),8)+s.getUint8(e),Gt=(s,e)=>Rt(s.getUint32(e+2,!0),16)+s.getUint16(e,!0),ro=(s,e,n,t,r)=>{if(s!=t.getUint8(r))return s-t.getUint8(r);const o=je(t,r+1);if(e!=o)return e-o;const i=je(t,r+4);return n!=i?n-i:0},so=(s,e,n,t)=>{const r=Ht(s,e|128,n,t);return r?{z:e,x:n,y:t,offset:r[0],length:r[1],is_dir:!0}:null},wt=(s,e,n,t)=>{const r=Ht(s,e,n,t);return r?{z:e,x:n,y:t,offset:r[0],length:r[1],is_dir:!1}:null},Ht=(s,e,n,t)=>{let r=0,o=s.byteLength/17-1;for(;r<=o;){const i=o+r>>1,u=ro(e,n,t,s,i*17);if(u>0)r=i+1;else if(u<0)o=i-1;else return[Gt(s,i*17+7),s.getUint32(i*17+13,!0)]}return null},oo=(s,e)=>s.is_dir&&!e.is_dir?1:!s.is_dir&&e.is_dir?-1:s.z!==e.z?s.z-e.z:s.x!==e.x?s.x-e.x:s.y-e.y,Vt=(s,e)=>{const n=s.getUint8(e*17);return{z:n&127,x:je(s,e*17+1),y:je(s,e*17+4),offset:Gt(s,e*17+7),length:s.getUint32(e*17+13,!0),is_dir:n>>7===1}},vt=s=>{const e=[],n=new DataView(s);for(let t=0;t{s.sort(oo);const e=new ArrayBuffer(17*s.length),n=new Uint8Array(e);for(let t=0;t>8&255,n[t*17+3]=r.x>>16&255,n[t*17+4]=r.y&255,n[t*17+5]=r.y>>8&255,n[t*17+6]=r.y>>16&255,n[t*17+7]=r.offset&255,n[t*17+8]=Ue(r.offset,8)&255,n[t*17+9]=Ue(r.offset,16)&255,n[t*17+10]=Ue(r.offset,24)&255,n[t*17+11]=Ue(r.offset,32)&255,n[t*17+12]=Ue(r.offset,48)&255,n[t*17+13]=r.length&255,n[t*17+14]=r.length>>8&255,n[t*17+15]=r.length>>16&255,n[t*17+16]=r.length>>24&255}return e},io=(s,e)=>{if(s.byteLength<17)return null;const n=s.byteLength/17,t=Vt(s,n-1);if(t.is_dir){const r=t.z,o=e.z-r,i=Math.trunc(e.x/(1<{if(s.type=="json"){const n=s.url.substr(10);let t=this.tiles.get(n);return t||(t=new kt(n),this.tiles.set(n,t)),t.getHeader().then(r=>{const o={tiles:[s.url+"/{z}/{x}/{y}"],minzoom:r.minZoom,maxzoom:r.maxZoom,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat]};e(null,o,null,null)}).catch(r=>{e(r,null,null,null)}),{cancel:()=>{}}}else{const n=new RegExp(/pmtiles:\/\/(.+)\/(\d+)\/(\d+)\/(\d+)/),t=s.url.match(n);if(!t)throw new Error("Invalid PMTiles protocol URL");const r=t[1];let o=this.tiles.get(r);o||(o=new kt(r),this.tiles.set(r,o));const i=t[2],u=t[3],l=t[4],c=new AbortController,a=c.signal;let f=()=>{c.abort()};return o.getHeader().then($=>{o.getZxy(+i,+u,+l,a).then(p=>{p?e(null,new Uint8Array(p.data),p.cacheControl,p.expires):$.tileType==1?e(null,new Uint8Array,null,null):e(null,null,null,null)}).catch(p=>{p.name!=="AbortError"&&e(p,null,null,null)})}),{cancel:f}}},this.tiles=new Map}add(s){this.tiles.set(s.source.getKey(),s)}get(s){return this.tiles.get(s)}};function ye(s,e){return(e>>>0)*4294967296+(s>>>0)}function uo(s,e){const n=e.buf;let t,r;if(r=n[e.pos++],t=(r&112)>>4,r<128||(r=n[e.pos++],t|=(r&127)<<3,r<128)||(r=n[e.pos++],t|=(r&127)<<10,r<128)||(r=n[e.pos++],t|=(r&127)<<17,r<128)||(r=n[e.pos++],t|=(r&127)<<24,r<128)||(r=n[e.pos++],t|=(r&1)<<31,r<128))return ye(s,t);throw new Error("Expected varint not more than 10 bytes")}function Ae(s){const e=s.buf;let n,t;return t=e[s.pos++],n=t&127,t<128||(t=e[s.pos++],n|=(t&127)<<7,t<128)||(t=e[s.pos++],n|=(t&127)<<14,t<128)||(t=e[s.pos++],n|=(t&127)<<21,t<128)?n:(t=e[s.pos],n|=(t&15)<<28,uo(n,s))}function $o(s,e,n,t){if(t==0){n==1&&(e[0]=s-1-e[0],e[1]=s-1-e[1]);const r=e[0];e[0]=e[1],e[1]=r}}var po=[0,1,5,21,85,341,1365,5461,21845,87381,349525,1398101,5592405,22369621,89478485,357913941,1431655765,5726623061,22906492245,91625968981,366503875925,1466015503701,5864062014805,23456248059221,93824992236885,375299968947541,0x5555555555555];function mo(s,e,n){if(s>26)throw Error("Tile zoom level exceeds max safe number limit (26)");if(e>Math.pow(2,s)-1||n>Math.pow(2,s)-1)throw Error("tile x/y outside zoom level bounds");const t=po[s],r=Math.pow(2,s);let o=0,i=0,u=0;const l=[e,n];let c=r/2;for(;c>0;)o=(l[0]&c)>0?1:0,i=(l[1]&c)>0?1:0,u+=c*c*(3*o^i),$o(c,l,o,i),c=c/2;return t+u}function qt(s,e){return H(this,null,function*(){if(e===1||e===0)return s;if(e===2){if(typeof globalThis.DecompressionStream>"u")return Xe(new Uint8Array(s));{let t=new Response(s).body.pipeThrough(new globalThis.DecompressionStream("gzip"));return new Response(t).arrayBuffer()}}else throw Error("Compression method not supported")})}var go=127;function ho(s,e){let n=0,t=s.length-1;for(;n<=t;){const r=t+n>>1,o=e-s[r].tileId;if(o>0)n=r+1;else if(o<0)t=r-1;else return s[r]}return t>=0&&(s[t].runLength===0||e-s[t].tileId=300)throw Error("Bad response code: "+r.status);const o=r.headers.get("Content-Length");if(r.status===200&&(!o||+o>e))throw t&&t.abort(),Error("Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.");return{data:yield r.arrayBuffer(),etag:r.headers.get("ETag")||void 0,cacheControl:r.headers.get("Cache-Control")||void 0,expires:r.headers.get("Expires")||void 0}})}};function ee(s,e){const n=s.getUint32(e+4,!0),t=s.getUint32(e+0,!0);return n*Math.pow(2,32)+t}function wo(s,e){const n=new DataView(s),t=n.getUint8(7);if(t>3)throw Error(`Archive is spec version ${t} but this library supports up to spec version 3`);return{specVersion:t,rootDirectoryOffset:ee(n,8),rootDirectoryLength:ee(n,16),jsonMetadataOffset:ee(n,24),jsonMetadataLength:ee(n,32),leafDirectoryOffset:ee(n,40),leafDirectoryLength:ee(n,48),tileDataOffset:ee(n,56),tileDataLength:ee(n,64),numAddressedTiles:ee(n,72),numTileEntries:ee(n,80),numTileContents:ee(n,88),clustered:n.getUint8(96)===1,internalCompression:n.getUint8(97),tileCompression:n.getUint8(98),tileType:n.getUint8(99),minZoom:n.getUint8(100),maxZoom:n.getUint8(101),minLon:n.getInt32(102,!0)/1e7,minLat:n.getInt32(106,!0)/1e7,maxLon:n.getInt32(110,!0)/1e7,maxLat:n.getInt32(114,!0)/1e7,centerZoom:n.getUint8(118),centerLon:n.getInt32(119,!0)/1e7,centerLat:n.getInt32(123,!0)/1e7,etag:e}}function Kt(s){const e={buf:new Uint8Array(s),pos:0},n=Ae(e),t=[];let r=0;for(let o=0;o0?t[o].offset=t[o-1].offset+t[o-1].length:t[o].offset=i-1}return t}function vo(s){const e=new DataView(s);return e.getUint16(2,!0)===2?(console.warn("PMTiles spec version 2 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade"),2):e.getUint16(2,!0)===1?(console.warn("PMTiles spec version 1 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade"),1):3}var Se=class extends Error{};function ko(s,e,n,t){return H(this,null,function*(){const r=yield s.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error("Wrong magic number for PMTiles archive");if(vo(r.data)<3)return[yield Zt.getHeader(s)];const i=r.data.slice(0,go);let u=r.etag;t&&r.etag!=t&&(console.warn("ETag conflict detected; your HTTP server might not support content-based ETag headers. ETags disabled for "+s.getKey()),u=void 0);const l=wo(i,u);if(n){const c=r.data.slice(l.rootDirectoryOffset,l.rootDirectoryOffset+l.rootDirectoryLength),a=s.getKey()+"|"+(l.etag||"")+"|"+l.rootDirectoryOffset+"|"+l.rootDirectoryLength,f=Kt(yield e(c,l.internalCompression));return[l,[a,f.length,f]]}return[l,void 0]})}function bo(s,e,n,t,r){return H(this,null,function*(){const o=yield s.getBytes(n,t);if(r.etag&&r.etag!==o.etag)throw new Se(o.etag);const i=yield e(o.data,r.internalCompression),u=Kt(i);if(u.length===0)throw new Error("Empty directory is invalid");return u})}var yo=class{constructor(s=100,e=!0,n=qt){this.cache=new Map,this.maxCacheEntries=s,this.counter=1,this.prefetch=e,this.decompress=n}getHeader(s,e){return H(this,null,function*(){const n=s.getKey();if(this.cache.has(n))return this.cache.get(n).lastUsed=this.counter++,yield this.cache.get(n).data;const t=new Promise((r,o)=>{ko(s,this.decompress,this.prefetch,e).then(i=>{i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:Promise.resolve(i[1][2])}),r(i[0]),this.prune()}).catch(i=>{o(i)})});return this.cache.set(n,{lastUsed:this.counter++,data:t}),t})}getDirectory(s,e,n,t){return H(this,null,function*(){const r=s.getKey()+"|"+(t.etag||"")+"|"+e+"|"+n;if(this.cache.has(r))return this.cache.get(r).lastUsed=this.counter++,yield this.cache.get(r).data;const o=new Promise((i,u)=>{bo(s,this.decompress,e,n,t).then(l=>{i(l),this.prune()}).catch(l=>{u(l)})});return this.cache.set(r,{lastUsed:this.counter++,data:o}),o})}getArrayBuffer(s,e,n,t){return H(this,null,function*(){const r=s.getKey()+"|"+(t.etag||"")+"|"+e+"|"+n;if(this.cache.has(r))return this.cache.get(r).lastUsed=this.counter++,yield this.cache.get(r).data;const o=new Promise((i,u)=>{s.getBytes(e,n).then(l=>{if(t.etag&&t.etag!==l.etag)throw new Se(l.etag);i(l.data),this.cache.has(r),this.prune()}).catch(l=>{u(l)})});return this.cache.set(r,{lastUsed:this.counter++,data:o}),o})}prune(){if(this.cache.size>=this.maxCacheEntries){let s=1/0,e;this.cache.forEach((n,t)=>{n.lastUsedo.maxZoom)return;let i=o.rootDirectoryOffset,u=o.rootDirectoryLength;for(let l=0;l<=3;l++){const c=yield this.cache.getDirectory(this.source,i,u,o),a=ho(c,r);if(a)if(a.runLength>0){const f=yield this.source.getBytes(o.tileDataOffset+a.offset,a.length,t);if(o.etag&&o.etag!==f.etag)throw new Se(f.etag);return{data:yield this.decompress(f.data,o.tileCompression),cacheControl:f.cacheControl,expires:f.expires}}else i=o.leafDirectoryOffset+a.offset,u=a.length;else return}throw Error("Maximum directory depth exceeded")})}getZxy(s,e,n,t){return H(this,null,function*(){try{return yield this.getZxyAttempt(s,e,n,t)}catch(r){if(r instanceof Se)return this.cache.invalidate(this.source,r.message),yield this.getZxyAttempt(s,e,n,t);throw r}})}getMetadataAttempt(){return H(this,null,function*(){const s=yield this.cache.getHeader(this.source),e=yield this.source.getBytes(s.jsonMetadataOffset,s.jsonMetadataLength);if(s.etag&&s.etag!==e.etag)throw new Se(e.etag);const n=yield this.decompress(e.data,s.internalCompression),t=new TextDecoder("utf-8");return JSON.parse(t.decode(n))})}getMetadata(){return H(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(s){if(s instanceof Se)return this.cache.invalidate(this.source,s.message),yield this.getMetadataAttempt();throw s}})}};function Lo(s){return Ye(()=>{let e=new co;ct.addProtocol("pmtiles",e.tile)}),Bt(()=>{ct.removeProtocol("pmtiles")}),[]}class Co extends j{constructor(e){super(),F(this,e,Lo,null,R,{})}}function bt(s,e,n){const t=s.slice();return t[15]=e[n],t}function So(s){let e;return{c(){e=b("Home")},m(n,t){m(n,e,t)},d(n){n&&g(e)}}}function yt(s){let e,n;return e=new cn({props:{errorMessage:s[1]}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&2&&(o.errorMessage=t[1]),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Lt(s){let e,n,t,r;function o(l){s[10](l)}function i(l){s[11](l)}let u={schemes:s[2]};return s[3]!==void 0&&(u.schemesToBeShown=s[3]),s[4]!==void 0&&(u.filterText=s[4]),e=new ir({props:u}),V.push(()=>Z(e,"schemesToBeShown",o)),V.push(()=>Z(e,"filterText",i)),{c(){w(e.$$.fragment)},m(l,c){v(e,l,c),r=!0},p(l,c){const a={};c&4&&(a.schemes=l[2]),!n&&c&8&&(n=!0,a.schemesToBeShown=l[3],q(()=>n=!1)),!t&&c&16&&(t=!0,a.filterText=l[4],q(()=>t=!1)),e.$set(a)},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){_(e.$$.fragment,l),r=!1},d(l){k(e,l)}}}function Ct(s){let e,n,t=Le(s[2].values()),r=[];for(let i=0;i_(r[i],1,1,()=>{r[i]=null});return{c(){e=A("ul");for(let i=0;i{r=null}),ge())},i(o){t||(h(r),t=!0)},o(o){_(r),t=!1},d(o){o&&g(n),r&&r.d(o)}}}function To(s){let e,n,t,r,o,i,u,l,c,a,f,$,p;n=new Ie({props:{$$slots:{default:[So]},$$scope:{ctx:s}}}),n.$on("click",s[9]),u=new gn({props:{boundaryGeojson:s[5]}});let y=s[1]&&yt(s);a=new sn({props:{label:"Load from GeoJSON",id:"load-geojson",loadFile:s[7]}});let d=s[2].size>0&&Lt(s),C=s[0]&&Ct(s);return{c(){e=A("div"),w(n.$$.fragment),t=M(),r=A("div"),o=A("h1"),o.textContent="Browse schemes",i=M(),w(u.$$.fragment),l=M(),y&&y.c(),c=M(),w(a.$$.fragment),f=M(),d&&d.c(),$=M(),C&&C.c(),ue(r,"display","flex"),ue(r,"justify-content","space-between"),G(e,"slot","sidebar"),G(e,"class","govuk-prose")},m(L,D){m(L,e,D),v(n,e,null),S(e,t),S(e,r),S(r,o),S(r,i),v(u,r,null),S(e,l),y&&y.m(e,null),S(e,c),v(a,e,null),S(e,f),d&&d.m(e,null),S(e,$),C&&C.m(e,null),p=!0},p(L,D){const U={};D&262144&&(U.$$scope={dirty:D,ctx:L}),n.$set(U);const O={};D&32&&(O.boundaryGeojson=L[5]),u.$set(O),L[1]?y?(y.p(L,D),D&2&&h(y,1)):(y=yt(L),y.c(),h(y,1),y.m(e,c)):y&&(me(),_(y,1,1,()=>{y=null}),ge()),L[2].size>0?d?(d.p(L,D),D&4&&h(d,1)):(d=Lt(L),d.c(),h(d,1),d.m(e,$)):d&&(me(),_(d,1,1,()=>{d=null}),ge()),L[0]?C?(C.p(L,D),D&1&&h(C,1)):(C=Ct(L),C.c(),h(C,1),C.m(e,null)):C&&(me(),_(C,1,1,()=>{C=null}),ge())},i(L){p||(h(n.$$.fragment,L),h(u.$$.fragment,L),h(y),h(a.$$.fragment,L),h(d),h(C),p=!0)},o(L){_(n.$$.fragment,L),_(u.$$.fragment,L),_(y),_(a.$$.fragment,L),_(d),_(C),p=!1},d(L){L&&g(e),k(n),k(u),y&&y.d(),k(a),d&&d.d(),C&&C.d()}}}function Do(s){let e,n,t,r,o,i,u,l,c,a;return e=new ks({}),t=new yr({}),o=new dr({}),u=new Ts({}),c=new cs({}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(f,$){v(e,f,$),m(f,n,$),v(t,f,$),m(f,r,$),v(o,f,$),m(f,i,$),v(u,f,$),m(f,l,$),v(c,f,$),a=!0},i(f){a||(h(e.$$.fragment,f),h(t.$$.fragment,f),h(o.$$.fragment,f),h(u.$$.fragment,f),h(c.$$.fragment,f),a=!0)},o(f){_(e.$$.fragment,f),_(t.$$.fragment,f),_(o.$$.fragment,f),_(u.$$.fragment,f),_(c.$$.fragment,f),a=!1},d(f){f&&(g(n),g(r),g(i),g(l)),k(e,f),k(t,f),k(o,f),k(u,f),k(c,f)}}}function Oo(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Do]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Mo(s){let e,n;return e=new Rr({}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function No(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Mo]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Uo(s){let e,n,t,r,o,i,u,l;return e=new Yr({}),t=new xs({}),o=new Xn({}),u=new Ar({}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment)},m(c,a){v(e,c,a),m(c,n,a),v(t,c,a),m(c,r,a),v(o,c,a),m(c,i,a),v(u,c,a),l=!0},i(c){l||(h(e.$$.fragment,c),h(t.$$.fragment,c),h(o.$$.fragment,c),h(u.$$.fragment,c),l=!0)},o(c){_(e.$$.fragment,c),_(t.$$.fragment,c),_(o.$$.fragment,c),_(u.$$.fragment,c),l=!1},d(c){c&&(g(n),g(r),g(i)),k(e,c),k(t,c),k(o,c),k(u,c)}}}function Ao(s){let e,n;return e=new Qe({props:{small:!0,$$slots:{default:[Uo]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,r){const o={};r&262144&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Bo(s){let e,n;return e=new Fn({}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Po(s){let e,n,t,r,o,i,u,l,c,a;return e=new _e({props:{label:"Trip generators",$$slots:{default:[Oo]},$$scope:{ctx:s}}}),t=new _e({props:{label:"Road network",$$slots:{default:[No]},$$scope:{ctx:s}}}),o=new _e({props:{label:"Boundaries",$$slots:{default:[Ao]},$$scope:{ctx:s}}}),u=new _e({props:{label:"Census",$$slots:{default:[Bo]},$$scope:{ctx:s}}}),c=new dn({props:{style:s[6]}}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),w(c.$$.fragment)},m(f,$){v(e,f,$),m(f,n,$),v(t,f,$),m(f,r,$),v(o,f,$),m(f,i,$),v(u,f,$),m(f,l,$),v(c,f,$),a=!0},p(f,$){const p={};$&262144&&(p.$$scope={dirty:$,ctx:f}),e.$set(p);const y={};$&262144&&(y.$$scope={dirty:$,ctx:f}),t.$set(y);const d={};$&262144&&(d.$$scope={dirty:$,ctx:f}),o.$set(d);const C={};$&262144&&(C.$$scope={dirty:$,ctx:f}),u.$set(C)},i(f){a||(h(e.$$.fragment,f),h(t.$$.fragment,f),h(o.$$.fragment,f),h(u.$$.fragment,f),h(c.$$.fragment,f),a=!0)},o(f){_(e.$$.fragment,f),_(t.$$.fragment,f),_(o.$$.fragment,f),_(u.$$.fragment,f),_(c.$$.fragment,f),a=!1},d(f){f&&(g(n),g(r),g(i),g(l)),k(e,f),k(t,f),k(o,f),k(u,f),k(c,f)}}}function Eo(s){let e,n,t,r,o,i,u,l,c,a,f;return e=new _n({props:{colorInterventions:Pt("v1")}}),t=new ne({props:{layer:"interventions-points",tooltip:s[8],clickable:!1}}),o=new ne({props:{layer:"interventions-lines",tooltip:s[8],clickable:!1}}),u=new ne({props:{layer:"interventions-polygons",tooltip:s[8],clickable:!1}}),a=new _e({props:{label:"Layers",open:!0,$$slots:{default:[Po]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment),n=M(),w(t.$$.fragment),r=M(),w(o.$$.fragment),i=M(),w(u.$$.fragment),l=M(),c=A("div"),w(a.$$.fragment),G(c,"class","top-right svelte-12h3i77")},m($,p){v(e,$,p),m($,n,p),v(t,$,p),m($,r,p),v(o,$,p),m($,i,p),v(u,$,p),m($,l,p),m($,c,p),v(a,c,null),f=!0},p($,p){const y={};p&262144&&(y.$$scope={dirty:p,ctx:$}),a.$set(y)},i($){f||(h(e.$$.fragment,$),h(t.$$.fragment,$),h(o.$$.fragment,$),h(u.$$.fragment,$),h(a.$$.fragment,$),f=!0)},o($){_(e.$$.fragment,$),_(t.$$.fragment,$),_(o.$$.fragment,$),_(u.$$.fragment,$),_(a.$$.fragment,$),f=!1},d($){$&&(g(n),g(r),g(i),g(l),g(c)),k(e,$),k(t,$),k(o,$),k(u,$),k(a)}}}function xo(s){let e,n,t,r,o;return n=new Co({}),r=new hn({props:{style:s[6],startBounds:[-5.96,49.89,2.31,55.94],$$slots:{default:[Eo]},$$scope:{ctx:s}}}),{c(){e=A("div"),w(n.$$.fragment),t=M(),w(r.$$.fragment),G(e,"slot","main")},m(i,u){m(i,e,u),v(n,e,null),S(e,t),v(r,e,null),o=!0},p(i,u){const l={};u&262144&&(l.$$scope={dirty:u,ctx:i}),r.$set(l)},i(i){o||(h(n.$$.fragment,i),h(r.$$.fragment,i),o=!0)},o(i){_(n.$$.fragment,i),_(r.$$.fragment,i),o=!1},d(i){i&&g(e),k(n),k(r)}}}function zo(s){let e,n;return e=new mn({props:{$$slots:{main:[xo],sidebar:[To]},$$scope:{ctx:s}}}),{c(){w(e.$$.fragment)},m(t,r){v(e,t,r),n=!0},p(t,[r]){const o={};r&262207&&(o.$$scope={dirty:r,ctx:t}),e.$set(o)},i(t){n||(h(e.$$.fragment,t),n=!0)},o(t){_(e.$$.fragment,t),n=!1},d(t){k(e,t)}}}function Io(s,e,n){let t,r;W(s,re,D=>n(12,t=D)),W(s,Te,D=>n(5,r=D));let o=null;Ye(async()=>{on();let D=await ln();n(0,o=new Set(D.features.map(U=>U.properties.name)))});let u=new URLSearchParams(window.location.search).get("style")||"dataviz",l="",c=new Map,a=new Set,f="";Bt(()=>{Te.set(an())});function $(D){try{let U=JSON.parse(D);n(2,c=Yn(U)),Te.set(U),n(1,l=""),t==null||t.fitBounds(At(U),{padding:20,animate:!1})}catch(U){n(1,l=`Couldn't load schemes from a file: ${U}`)}}function p(D){let U=D.properties;var O='
';return O+=`

${y(U.name)} (${U.intervention_type})

`,O+=`

Scheme reference: ${U.scheme_reference}

`,U.length_meters&&(O+=`

Length: ${fn(U.length_meters)}

`),U.description&&(O+=`

${y(U.description)}

`),O+="
",O}function y(D){return f?D.replace(new RegExp(f,"gi"),U=>`${U}`):D}const d=()=>window.open("index.html");function C(D){a=D,n(3,a)}function L(D){f=D,n(4,f)}return[o,l,c,a,f,r,u,$,p,d,C,L]}class jo extends j{constructor(e){super(),F(this,e,Io,zo,R,{})}}document.body.className=document.body.className?document.body.className+" js-enabled":"js-enabled";new jo({target:document.getElementById("app")}); diff --git a/more-trip-generators/assets/railway_stations-4c8eac3e.geojson b/more-trip-generators/assets/railway_stations-4c8eac3e.geojson deleted file mode 100644 index 9bc4aeab7..000000000 --- a/more-trip-generators/assets/railway_stations-4c8eac3e.geojson +++ /dev/null @@ -1,2809 +0,0 @@ -{"type":"FeatureCollection","features":[ -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7858762,51.5656526]},"properties":{"name":"Swindon","naptan:AtcoCode":"9100SDON","network":"National Rail","network:wikidata":"Q26334","operator":"First Great Western","platforms":"4","public_transport":"station","railway":"station","ref:crs":"SWI","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q3244572","wikipedia":"en:Swindon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0269749,52.0532089]},"properties":{"name":"Royston","naptan:AtcoCode":"9100ROYSTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RYS","wikidata":"Q2034540","wikipedia":"en:Royston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5049707,50.8550478]},"properties":{"name":"Beaulieu Road","naptan:AtcoCode":"9100BLIEURD","network":"National Rail","postal_code":"SO42 7YQ","public_transport":"station","railway":"station","ref:crs":"BEU","wikidata":"Q3095938","wikipedia":"en:Beaulieu Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.610086,50.7846689]},"properties":{"name":"Sway","naptan:AtcoCode":"9100SWAY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SWY","wikidata":"Q2441290","wikipedia":"en:Sway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6576697,50.7557623]},"properties":{"name":"New Milton","naptan:AtcoCode":"9100NMILTON","network":"National Rail","railway":"station","ref:crs":"NWM","wikidata":"Q1913828","wikipedia":"en:New Milton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5475333,52.3993806]},"properties":{"name":"Canley","naptan:AtcoCode":"9100CANLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CNL","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2317360","wikipedia":"en:Canley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.480623,53.6628109]},"properties":{"name":"Sandal and Agbrigg","naptan:AtcoCode":"9100SABR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SNA","wikidata":"Q2018294","wikipedia":"en:Sandal and Agbrigg railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6762814,52.3037832]},"properties":{"name":"Wellingborough","naptan:AtcoCode":"9100WLNGBRO","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WEL","train":"yes","wheelchair":"yes","wikidata":"Q2562129","wikimedia_commons":"Category:Wellingborough railway station","wikipedia":"en:Wellingborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2143782,53.853331]},"properties":{"name":"Ulleskelf","naptan:AtcoCode":"9100ULESKLF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ULL","source":"npe","wikidata":"Q951589","wikipedia":"en:Ulleskelf railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1800228,53.5720808]},"properties":{"internet_access:fee":"yes","name":"Adwick","naptan:AtcoCode":"9100ADWICK","network":"National Rail","railway":"station","ref:crs":"AWK","source":"NPE","wheelchair":"yes","wikidata":"Q2325641","wikipedia":"en:Adwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.427499,53.4986826]},"properties":{"name":"Elsecar","naptan:AtcoCode":"9100ELSC","network":"National Rail","platforms":"2","railway":"station","ref:crs":"ELR","source":"NPE","wikidata":"Q3287228","wikipedia":"en:Elsecar railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5320346,53.5442059]},"properties":{"name":"Dodworth","naptan:AtcoCode":"9100DODWRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DOD","source":"NPE","wikidata":"Q1996156","wikipedia":"en:Dodworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.305111,50.8835729]},"properties":{"name":"Bursledon","naptan:AtcoCode":"9100BURSLDN","network":"National Rail","platforms":"1","public_transport":"station","railway":"station","ref:crs":"BUO","wikidata":"Q2219439","wikipedia":"en:Bursledon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4143441,51.3729077]},"properties":{"name":"Walton-on-Thames","naptan:AtcoCode":"9100WONT","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WAL","wheelchair":"yes","wikidata":"Q2183741","wikipedia":"en:Walton-on-Thames railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8392253,52.5285663]},"properties":{"name":"Erdington","naptan:AtcoCode":"9100ERDNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ERD","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2415516","wikipedia":"en:Erdington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8324576,52.5357946]},"properties":{"name":"Chester Road","naptan:AtcoCode":"9100CHSRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CRD","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2405727","wikipedia":"en:Chester Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8252548,52.5647207]},"properties":{"name":"Sutton Coldfield","naptan:AtcoCode":"9100SUTCO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SUT","west_midlands_fare_zone":"4","wikidata":"Q525739","wikipedia":"en:Sutton Coldfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8527077,52.5153876]},"properties":{"name":"Gravelly Hill","naptan:AtcoCode":"9100GRAVLYH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GVH","west_midlands_fare_zone":"2","wikidata":"Q2098592","wikipedia":"en:Gravelly Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2130325,53.4711176]},"properties":{"description":"Ardwick Station has a very limited service. Two trains a day run towards the city on Monday to Friday mornings, and two trains away from the city in the evening. No service at weekends.","name":"Ardwick","name:ur":"آرڈ وک","naptan:AtcoCode":"9100ARDWICK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ADK","wikidata":"Q4788330","wikipedia":"en:Ardwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4932507,50.9927043]},"properties":{"name":"Romsey","naptan:AtcoCode":"9100ROMSEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ROM","wheelchair":"limited","wikidata":"Q1872195","wikipedia":"en:Romsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5468958,51.033863]},"properties":{"name":"Mottisfont & Dunbridge","naptan:AtcoCode":"9100MOTFONT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DBG","wikidata":"Q6918669","wikipedia":"en:Mottisfont & Dunbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2263134,51.50607]},"properties":{"fare_zone":"2","line":"Hammersmith & City;Circle","name":"Shepherd's Bush Market","name:ru":"Шепердс-Буш-Маркет","naptan:AtcoCode":"940GZZLUSBM","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1857909","wikipedia":"en:Shepherd's Bush Market tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.722846,51.5183532]},"properties":{"layer":"3","name":"Maidenhead","naptan:AtcoCode":"9100MDNHEAD","network":"National Rail;Elizabeth Line","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"MAI","wheelchair":"yes","wikidata":"Q1801859","wikipedia":"en:Maidenhead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4718293,51.5097364]},"properties":{"fare_zone":"6","name":"West Drayton","naptan:AtcoCode":"9100WDRYTON","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"WDT","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway tions","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2033143","wikipedia":"en:West Drayton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.192318,51.6008355]},"properties":{"fare_zone":"4","line":"Northern","name":"Finchley Central","naptan:AtcoCode":"940GZZLUFYC","network":"London Underground","old_name":"Finchley (Church End)","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1416721","wikipedia":"en:Finchley Central tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2944932,50.9323988]},"properties":{"name":"Hedge End","naptan:AtcoCode":"9100HEDGEND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HDE","wikidata":"Q2686491","wikipedia":"en:Hedge End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8383384,52.5925882]},"properties":{"name":"Butlers Lane","naptan:AtcoCode":"9100BTLRSLA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BUL","west_midlands_fare_zone":"5","wikidata":"Q5002705","wikipedia":"en:Butlers Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7320452,52.3934872]},"properties":{"name":"Kettering","naptan:AtcoCode":"9100KETR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KET","train":"yes","wheelchair":"yes","wikidata":"Q2284587","wikimedia_commons":"Category:Kettering railway station","wikipedia":"en:Kettering railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1566159,50.7241835]},"properties":{"image":"File:Ryde St. John's Road Railway station 1971.jpg","name":"Ryde St John's Road","naptan:AtcoCode":"9100RYDS","network":"National Rail","operator":"Island Line Trains","public_transport":"station","railway":"station","ref:crs":"RYR","wikidata":"Q4567463","wikipedia":"en:Ryde St John's Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1386289,50.6782995]},"properties":{"image":"File:Brading station, Isle of Wight.jpg","name":"Brading","naptan:AtcoCode":"9100BRDING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BDN","wikidata":"Q2274755","wikipedia":"en:Brading railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1550109,50.7114593]},"properties":{"name":"Smallbrook Junction","naptan:AtcoCode":"9100SMALBRK","network":"National Rail","note":"No road/path access - open for interchange only","operator":"Island Line Trains","public_transport":"station","railway":"station","ref:crs":"SAB","wikidata":"Q1868757","wikipedia":"en:Smallbrook Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2146336,50.7054566]},"properties":{"addr:city":"Havenstreet, near Ryde","addr:street":"Main Road","name":"Havenstreet","naptan:AtcoCode":"940GZZIWHVS","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5683726"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.634563,51.0424158]},"properties":{"name":"Dean","naptan:AtcoCode":"9100DEAN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DEN","wikidata":"Q671580","wikipedia":"en:Dean railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5304821,51.7142815]},"properties":{"name":"Lydney","naptan:AtcoCode":"9100LYDNEY","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","railway":"station","ref:crs":"LYD","source":"NPE","wheelchair":"yes","wikipedia":"en:Lydney railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2590525,50.9163612]},"properties":{"addr:city":"Eastleigh","addr:housename":"Botley Railway Station","addr:postcode":"SO30 2DY","addr:street":"Station Hill","name":"Botley","naptan:AtcoCode":"9100BOTLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BOE","wikidata":"Q2041220","wikipedia":"en:Botley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2365831,51.653894]},"properties":{"name":"Culham","naptan:AtcoCode":"9100CULHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CUM","source":"NPE","wikidata":"Q2740729","wikipedia":"en:Culham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2424741,51.6394882]},"properties":{"name":"Appleford","naptan:AtcoCode":"9100APPLEFD","network":"National Rail","railway":"station","ref:crs":"APF","source":"NPE","wikidata":"Q2550440","wikipedia":"en:Appleford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1057186,51.394738]},"properties":{"name":"St Mary Cray","naptan:AtcoCode":"9100STMRYC","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SMY","toilets:wheelchair":"no","wheelchair":"no","wikidata":"Q2349500","wikipedia":"en:St Mary Cray railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3289942,50.8712423]},"properties":{"name":"Hamble","naptan:AtcoCode":"9100HMBLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HME","wikidata":"Q927502","wikipedia":"en:Hamble railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.602769,53.2662973]},"properties":{"name":"Acton Bridge","naptan:AtcoCode":"9100ACBG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ACB","uic_ref":"7000024","wikipedia":"en:Acton Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9329194,54.8905816]},"properties":{"name":"Carlisle","naptan:AtcoCode":"9100CARLILE","network":"National Rail","operator":"Avanti West Coast","public_transport":"station","railway":"station","ref:crs":"CAR","train":"yes","wikidata":"Q2792535","wikipedia":"en:Carlisle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3939977,51.8326251]},"properties":{"name":"Combe","naptan:AtcoCode":"9100COMBE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CME","toilets:wheelchair":"no","wheelchair":"limited","wikidata":"Q2751535","wikipedia":"en:Combe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5924463,51.8658738]},"properties":{"name":"Shipton","naptan:AtcoCode":"9100SPTN","network":"National Rail","operator":"First Great Western","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SIP","wikidata":"Q2202267","wikipedia":"en:Shipton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4696045,51.8528179]},"properties":{"name":"Finstock","naptan:AtcoCode":"9100FINSTCK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FIN","wikidata":"Q2368596","wikipedia":"en:Finstock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.125024,50.8488504]},"properties":{"name":"Portchester","naptan:AtcoCode":"9100PCHESTR","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"PTC","wikidata":"Q1951021","wikipedia":"en:Portchester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1610285,51.0883048]},"properties":{"name":"Alresford","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4735710","wikipedia":"en:Alresford_railway_station_(Hampshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7784454,54.2472695]},"properties":{"addr:housename":"Pickering Station","addr:postcode":"YO18 7AJ","addr:street":"Park Street","name":"Pickering","naptan:AtcoCode":"940GZZNYPCK","railway":"station","usage":"tourism","website":"https://www.nymr.co.uk/","wikidata":"Q7190832"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7443884,54.3082776]},"properties":{"name":"Levisham","naptan:AtcoCode":"940GZZNYLEV","railway":"station","ref:tiploc":"PICKLEV","usage":"tourism","wikidata":"Q6535693","wikipedia":"en:Levisham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7177548,54.3424545]},"properties":{"name":"Newton Dale","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7020211","wikipedia":"en:Newton Dale Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7120943,54.4005905]},"properties":{"name":"Goathland","naptan:AtcoCode":"940GZZNYGTH","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5575368","wikipedia":"en:Goathland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7248417,54.4361695]},"properties":{"name":"Grosmont","naptan:AtcoCode":"910GGROSMNT","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2808342,54.0669551]},"properties":{"name":"Settle","naptan:AtcoCode":"9100SETTLE","network":"National Rail","network:wikidata":"Q26334","postal_code":"BD24 9AA","public_transport":"station","railway":"station","ref:crs":"SET","route":"Settle to Carlisle Railway","source":"GPX + NPE","train":"yes","wikidata":"Q2210148","wikipedia":"en:Settle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.743655,52.5185309]},"properties":{"name":"Water Orton","naptan:AtcoCode":"9100WTRORTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTO","wikidata":"Q2674112","wikipedia":"en:Water Orton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2488001,51.6126689]},"properties":{"alt_name":"Mill Hill Broadway Rail Station","name":"Mill Hill Broadway","naptan:AtcoCode":"9100MLHB","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"MIL","source":"GPS waypoint","toilets:wheelchair":"no","wheelchair":"no","wikidata":"Q2396825","wikipedia":"en:Mill Hill Broadway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0261521,51.4444696]},"properties":{"air_conditioning":"no","baby_feeding":"no","level":"1","name":"Catford","naptan:AtcoCode":"9100CATFORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CTF","source":"survey","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wikidata":"Q2401174","wikipedia":"en:Catford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0673875,50.8418849]},"properties":{"alt_name":"Cosham Railway Station","name":"Cosham","naptan:AtcoCode":"9100COSHAM","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"CSA","source":"NPE","wikidata":"Q5172759","wikipedia":"en:Cosham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8960456,53.2821114]},"properties":{"name":"Ellesmere Port","naptan:AtcoCode":"9100ELSMPRT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ELP","train":"yes","wikidata":"Q5365264","wikipedia":"en:Ellesmere Port railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0549484,50.6382716]},"properties":{"name":"Corfe Castle","naptan:AtcoCode":"940GZZSRCFC","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CFC","train":"yes","usage":"tourism","wikidata":"Q5170476","wikipedia":"en:Corfe Castle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0265551,50.6197911]},"properties":{"name":"Harman's Cross","naptan:AtcoCode":"940GZZSRHMC","platforms":"2","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5659026"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9804011,50.6130644]},"properties":{"name":"Herston Halt","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","wikidata":"Q15223746"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3085216,51.0793769]},"properties":{"name":"Littlehaven","naptan:AtcoCode":"9100LHVN","network":"National Rail","network:wikidata":"Q26334","old_name":"Littlehaven Halt","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"LVN","train":"yes","wikidata":"Q2327144","wikipedia":"en:Littlehaven railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2630067,51.0959458]},"properties":{"name":"Faygate","naptan:AtcoCode":"9100FAYGATE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FGT","source":"NPE","wikidata":"Q2337132","wikipedia":"en:Faygate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2144647,51.1155376]},"properties":{"name":"Ifield","naptan:AtcoCode":"9100IFIELD","network":"National Rail","operator":"Southern","railway":"station","ref:crs":"IFI","wheelchair":"no","wikidata":"Q4933252","wikipedia":"en:Ifield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1609224,51.1567346]},"properties":{"addr:postcode":"RH6 0RD","name":"Gatwick Airport","naptan:AtcoCode":"9100GTWK","network":"National Rail","old_name":"Gatwick Racecourse","public_transport":"station","railway":"station","ref:crs":"GTW","wheelchair":"yes","wikidata":"Q1495884","wikipedia":"en:Gatwick Airport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1457168,50.9247179]},"properties":{"addr:postcode":"BN6 8JD","name":"Hassocks","naptan:AtcoCode":"9100HASOCKS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"HSK","wikidata":"Q2831648","wikipedia":"en:Hassocks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2376466,51.826163]},"properties":{"name":"Islip","naptan:AtcoCode":"9100ISLIP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ISP","wikidata":"Q1847555","wikipedia":"en:Islip railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1493759,51.8924126]},"properties":{"name":"Bicester Village","naptan:AtcoCode":"9100BCSTRTN","network":"National Rail","note:name":"used to be Bicester Town, don't ask","operator":"Chiltern Rail","postal_code":"OX26 6HU","public_transport":"station","railway":"station","ref:crs":"BIT","train":"yes","wikidata":"Q1873632","wikipedia":"en:Bicester Village railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1558767,51.4922264]},"properties":{"fare_zone":"1","line":"District;Circle","name":"Sloane Square","name:ru":"Слоун-сквер","naptan:AtcoCode":"940GZZLUSSQ","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q1530578","wikipedia":"en:Sloane Square tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8429813,51.4119036]},"properties":{"name":"Wokingham","naptan:AtcoCode":"9100WOKNGHM","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"WKM","wheelchair":"yes","wikidata":"Q2588372","wikipedia":"en:Wokingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.776776,51.3315657]},"properties":{"name":"Blackwater","naptan:AtcoCode":"9100BCKWATR","network":"National Rail","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"BAW","train":"yes","wheelchair":"yes","wikidata":"Q2760814","wikipedia":"en:Blackwater railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5639687,51.8674576]},"properties":{"name":"Ascott-under-Wychwood","naptan:AtcoCode":"9100ASCTUWD","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"AUW","wikidata":"Q4804064","wikipedia":"en:Ascott-under-Wychwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0678139,51.9243306]},"properties":{"name":"Cheltenham Racecourse","naptan:AtcoCode":"940GZZGRCRC","operator":"Gloucestershire and Warwickshire Steam Railway","public_transport":"station","railway":"station","source":"npe","usage":"tourism","wikidata":"Q5090223","wikipedia":"en:Cheltenham Racecourse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3416249,50.8749]},"properties":{"name":"Netley","naptan:AtcoCode":"9100NETLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NTL","wikidata":"Q2555327","wikipedia":"en:Netley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7711482,53.2752889]},"properties":{"name":"Helsby","naptan:AtcoCode":"9100HELSBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HSB","wikipedia":"en:Helsby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5623447,51.5258271]},"properties":{"name":"Patchway","naptan:AtcoCode":"9100PATCHWY","network":"National Rail","postal_code":"BS34 6LP","railway":"station","ref:crs":"PWY","wikidata":"Q2385086","wikipedia":"en:Patchway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7136258,50.752603]},"properties":{"name":"Hinton Admiral","naptan:AtcoCode":"9100HINTONA","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HNA","source":"NPE","train":"yes","wikidata":"Q1968589","wikipedia":"en:Hinton Admiral railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4321734,51.5413993]},"properties":{"name":"Yate","naptan:AtcoCode":"9100YATE","network":"National Rail","postal_code":"BS37 5JF","public_transport":"station","railway":"station","ref:crs":"YAE","wikidata":"Q3900748","wikipedia":"en:Yate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0732559,50.7964461]},"properties":{"name":"Fratton","naptan:AtcoCode":"9100FRATTON","network":"National Rail","operator":"South Westen Railway","public_transport":"station","railway":"station","ref:crs":"FTN","wheelchair":"yes","wikidata":"Q2618118","wikipedia":"en:Fratton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1499566,51.9034655]},"properties":{"name":"Bicester North","naptan:AtcoCode":"9100BCSTN","network":"National Rail","postal_code":"OX26 6EF","public_transport":"station","railway":"station","ref:crs":"BCS","wheelchair":"yes","wikidata":"Q2184930","wikipedia":"en:Bicester North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4422487,51.2192418]},"properties":{"name":"Gomshall","naptan:AtcoCode":"9100GOMSHAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GOM","wheelchair":"yes","wikidata":"Q3199982","wikipedia":"en:Gomshall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2143313,51.3200055]},"properties":{"name":"Trowbridge","naptan:AtcoCode":"9100TRWBRDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TRO","source":"NPE","wikidata":"Q2974092","wikipedia":"en:Trowbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1526024,51.1284231]},"properties":{"addr:postcode":"TN3 9TL","name":"Ashurst","naptan:AtcoCode":"9100ASHURST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AHS","source":"gps","wikidata":"Q2393085","wikipedia":"en:Ashurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0639692,51.5084776]},"properties":{"light_rail":"yes","name":"Cyprus","naptan:AtcoCode":"940GZZDLCYP","network":"Docklands Light Railway","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q599724","wikipedia":"en:Cyprus DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2052902,51.4220721]},"properties":{"fare_zone":"3","line":"District","name":"Wimbledon","name:ru":"Уимблдон","naptan:AtcoCode":"9100WIMBLDN","network":"National Rail;London Underground;London Trams","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WIM","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","tram":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikipedia":"en:Wimbledon station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4800873,52.647832]},"properties":{"name":"Stamford","naptan:AtcoCode":"9100STAMFD","network":"National Rail","network:wikidata":"Q26334","operator":"CrossCountry Trains","postal_code":"PE9 2JL","public_transport":"station","railway":"station","ref:crs":"SMD","train":"yes","wikidata":"Q2661650","wikipedia":"en:Stamford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0952228,51.5118924]},"properties":{"fare_zone":"1","line":"District;Circle","name":"Mansion House","name:ru":"Мэншн Хаус","naptan:AtcoCode":"940GZZLUMSH","network":"London Underground","operator":"Transport for London","platforms":"3","public_transport":"station","railway":"station","source:name":"local knowledge","start_date":"1871-07-03","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1477336","wikimedia_commons":"Category:Mansion House tube station","wikipedia":"en:Mansion House tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2028067,52.5713504]},"properties":{"name":"Narborough","naptan:AtcoCode":"9100NARBRO","network":"National Rail","postal_code":"LE9 5HR","public_transport":"station","railway":"station","ref:crs":"NBR","source":"survey","wikidata":"Q1823442","wikipedia":"en:Narborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9524816,53.8149218]},"properties":{"name":"Oxenhope","naptan:AtcoCode":"940GZZKWOXH","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7115190","wikipedia":"en:Oxenhope railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3592754,51.5575208]},"properties":{"name":"Northolt Park","naptan:AtcoCode":"9100NTHOLTP","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"NLT","wheelchair":"limited","wheelchair:description":"Flat access to both platforms. Please note that there is no flat access between platforms (access between platforms is via the footbridge). Flat access from one platform to another is via public footpaths and is a distance of roughly 500m.","wikidata":"Q2799274","wikipedia":"en:Northolt Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3631762,51.5851618]},"properties":{"fare_zone":"5","line":"Metropolitan","name":"North Harrow","naptan:AtcoCode":"940GZZLUNHA","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q645943","wikipedia":"en:North Harrow tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1734867,51.1972229]},"properties":{"addr:postcode":"TN11 8JE","name":"Penshurst","naptan:AtcoCode":"9100PNSHRST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PHR","wikidata":"Q2675582","wikipedia":"en:Penshurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8267335,50.7311874]},"properties":{"addr:city":"Bournemouth","name":"Pokesdown","naptan:AtcoCode":"9100POKSDWN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"POK","source":"NPE","wheelchair":"no","wikidata":"Q12066077","wikipedia":"en:Pokesdown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9478482,50.7229607]},"properties":{"addr:postcode":"BH14 8UD","name":"Parkstone","naptan:AtcoCode":"9100PSTONE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PKS","source":"NPE","wikidata":"Q7138723","wikipedia":"en:Parkstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9196847,50.7269847]},"properties":{"addr:postcode":"BH12 1DF","name":"Branksome","naptan:AtcoCode":"9100BRANKSM","network":"National Rail","railway":"station","ref:crs":"BSM","source":"NPE","wikidata":"Q4957509","wikipedia":"en:Branksome railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9836745,50.7189814]},"properties":{"addr:postcode":"BH15 2BQ","name":"Poole","naptan:AtcoCode":"9100POOLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"POO","source":"NPE","surveillance":"outdoor","train":"yes","wheelchair":"yes","wikidata":"Q7228632","wikipedia":"en:Poole railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.077724,50.7114998]},"properties":{"name":"Holton Heath","naptan:AtcoCode":"9100HOLTONH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HOL","source":"NPE","surveillance":"public","train":"yes","wheelchair":"yes","wikidata":"Q2271679","wikipedia":"en:Holton Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2404522,53.3485037]},"properties":{"name":"Styal","naptan:AtcoCode":"9100STYAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SYA","wikipedia":"en:Styal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.710798,51.5769144]},"properties":{"name":"Bourne End","naptan:AtcoCode":"9100BORNEND","network":"National Rail","old_name":"Marlow Road","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"BNE","source":"NPE","wikidata":"Q2018754","wikipedia":"en:Bourne End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3348748,51.5922178]},"properties":{"fare_zone":"5","line":"Bakerloo","name":"Harrow & Wealdstone","naptan:AtcoCode":"9100HROW","network":"London Underground;London Overground","network:subway":"London Underground","network:train":"London Overground;National Rail","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"HRW","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q800896","wikipedia":"en:Harrow & Wealdstone station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4378216,51.7064134]},"properties":{"name":"Kings Langley","naptan:AtcoCode":"9100KLGL","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"KGL","source":"GPX + NPE","wheelchair":"no","wikidata":"Q2206088","wikipedia":"en:Kings Langley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3345214,53.1431867]},"properties":{"name":"Skegness","naptan:AtcoCode":"9100SKEGNES","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"SKG","source":"NPE tracing","train":"yes","wheelchair":"yes","wikipedia":"en:Skegness railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2729912,53.1146157]},"properties":{"name":"Havenhouse","naptan:AtcoCode":"9100HAVENHS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HVN","source":"NPE tracing","wikidata":"Q2676343","wikipedia":"en:Havenhouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2345366,53.105126]},"properties":{"name":"Wainfleet","naptan:AtcoCode":"9100WAINFLT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WFL","source":"NPE tracing","wikipedia":"en:Wainfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0313195,52.978108]},"properties":{"name":"Boston","name:lt":"Bostonas","naptan:AtcoCode":"9100BOSTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BSN","source":"NPE tracing","wheelchair":"yes","wikidata":"Q1812453","wikipedia":"en:Boston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2038369,51.2418815]},"properties":{"addr:city":"Reigate","addr:postcode":"RH2 0BD","name":"Reigate","naptan:AtcoCode":"9100REIGATE","network":"National Rail","postal_code":"RH2 0BD","public_transport":"station","railway":"station","ref:crs":"REI","toilets:wheelchair":"yes","website":"http://www.nationalrail.co.uk/stations-and-destinations/stations-made-easy/reigate-station-plan","wheelchair":"yes","wheelchair:description":"Platform 1 for Gatwick: Step free via side gate to ticket office & WC, Platform 2 for Reading & London step free, Blue Badge Bays nearby. Hearing Loop in Booking Office. Uneven \"Step-free\" to town is across rail tracks. Subway has steps.","wikidata":"Q628747","wikipedia":"en:Reigate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2887523,51.5174885]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"North Ealing","naptan:AtcoCode":"940GZZLUNEN","network":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1272075","wikipedia":"en:North Ealing tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.342528,51.7446585]},"properties":{"name":"St Albans Abbey","naptan:AtcoCode":"9100STALBNA","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"SAA","ref:stanox":"71030","ref:tiploc":"STALBNA","wheelchair":"yes","wikidata":"Q2693952","wikipedia":"en:St Albans Abbey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3400687,51.7256643]},"properties":{"name":"Park Street","naptan:AtcoCode":"9100PKST","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"PKT","ref:stanox":"71032","ref:tiploc":"PKST","wikidata":"Q2162503","wikipedia":"en:Park Street railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3591176,51.7055662]},"properties":{"internet_access":"no","name":"Bricket Wood","naptan:AtcoCode":"9100BCWD","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"BWO","ref:stanox":"71036","ref:tiploc":"BCWD","train":"yes","wheelchair":"yes","wikidata":"Q2407794","wikipedia":"en:Bricket Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3818122,51.6865229]},"properties":{"name":"Garston","naptan:AtcoCode":"9100GRSTH","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"GSN","ref:stanox":"71038","ref:tiploc":"GRSTH","wheelchair":"limited","wikidata":"Q19895","wikipedia":"en:Garston railway station (Hertfordshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3902879,51.6750417]},"properties":{"name":"Watford North","naptan:AtcoCode":"9100WATFDN","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"WFN","ref:stanox":"71039","ref:tiploc":"WATFDN","wheelchair":"yes","wikidata":"Q19902","wikipedia":"en:Watford North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3446753,51.7176358]},"properties":{"name":"How Wood","naptan:AtcoCode":"9100HOWWOOD","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"HWW","ref:stanox":"71034","ref:tiploc":"HOWWOOD","wikidata":"Q2664311","wikipedia":"en:How Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6367716,55.392793]},"properties":{"name":"Alnmouth","naptan:AtcoCode":"9100ALNMOTH","network":"National Rail","railway":"station","ref:crs":"ALM","source":"NPE","wikidata":"Q4734063","wikipedia":"en:Alnmouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0105423,55.7745555]},"properties":{"name":"Berwick-upon-Tweed","naptan:AtcoCode":"910GBRWCKUT","network":"National Rail","operator":"London North Eastern Railway","railway":"station","ref:crs":"BWK","wikidata":"Q2232337","wikipedia":"en:Berwick-upon-Tweed railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7066521,55.5367261]},"properties":{"name":"Chathill","naptan:AtcoCode":"9100CHHL","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CHT","source":"NPE","wikidata":"Q5087731","wikipedia":"en:Chathill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1959184,52.7690651]},"properties":{"addr:city":"Loughborough","addr:housename":"Loughborough Central Station","addr:postcode":"LE11 1RW","name":"Loughborough Central","naptan:AtcoCode":"940GZZGCLBC","public_transport":"station","railway":"station","tourism":"attraction","train":"yes","usage":"tourism","wheelchair":"limited","wikidata":"Q6686151","wikipedia":"en:Loughborough Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1407393,50.8288602]},"properties":{"addr:city":"Brighton","addr:postcode":"BN1 3XP","name":"Brighton","naptan:AtcoCode":"9100BRGHTN","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BTN","train":"yes","wheelchair":"yes","wheelchair:description":"Level access from buses and taxis. Tactile plan near entrance. Step-free between ends of all platforms. Train access requires ramps, no Harrington Humps discovered.","wikidata":"Q800573","wikipedia":"en:Brighton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3658792,52.2015139]},"properties":{"name":"Dullingham","naptan:AtcoCode":"9100DULNGHM","network":"National Rail","railway":"station","ref:crs":"DUL","wikidata":"Q3353344","wikipedia":"en:Dullingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.664932,54.9588888]},"properties":{"addr:city":"Gateshead","addr:postcode":"NE11 9GA","alt_name":"Metro Centre","name":"MetroCentre","naptan:AtcoCode":"9100GTSHDMC","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"MCE","source":"Bing;local knowledge;gps","train":"yes","wheelchair":"yes","wikidata":"Q2781169","wikipedia":"en:MetroCentre railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7720801,54.809435]},"properties":{"name":"Armathwaite","naptan:AtcoCode":"9100ARMTHWT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AWT","source":"OS_OpenData_StreetView","wikidata":"Q2444747","wikipedia":"en:Armathwaite railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7036908,54.7508153]},"properties":{"name":"Lazonby and Kirkoswald","naptan:AtcoCode":"9100LAZKRKO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LZB","source":"NPE","wikidata":"Q1973653","wikipedia":"en:Lazonby & Kirkoswald railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6635574,54.6943632]},"properties":{"name":"Langwathby","naptan:AtcoCode":"9100LWBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LGW","source":"NPE","wheelchair":"yes","wikidata":"Q2035773","wikipedia":"en:Langwathby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3263682,54.3214617]},"properties":{"name":"Garsdale","naptan:AtcoCode":"9100GARSDLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GSD","source":"NPE","wikidata":"Q2145153","wikipedia":"en:Garsdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3636343,54.2825661]},"properties":{"name":"Dent","naptan:AtcoCode":"9100DENT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DNT","source":"NPE","train":"yes","wikidata":"Q2319302","wikipedia":"en:Dent railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3603709,54.2054988]},"properties":{"name":"Ribblehead","naptan:AtcoCode":"9100RIBLHED","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref":"RHD","ref:crs":"RHD","source":"NPE","wikidata":"Q2801135","wikipedia":"en:Ribblehead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3020982,54.149217]},"properties":{"internet_access":"wlan","name":"Horton-in-Ribblesdale","naptan:AtcoCode":"9100HTNRIBL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HIR","source":"NPE","wikidata":"Q5906817","wikipedia":"en:Horton-in-Ribblesdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1553443,50.8460091]},"properties":{"addr:postcode":"BN1 6SG","name":"Preston Park","naptan:AtcoCode":"9100PRSP","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"PRP","wikidata":"Q2337400","wikipedia":"en:Preston Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1875624,51.9929714]},"properties":{"name":"Baldock","naptan:AtcoCode":"9100BALDOCK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BDK","wheelchair":"no","wikidata":"Q19953","wikipedia":"en:Baldock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6729068,52.2952126]},"properties":{"addr:city":"Hatton","addr:postcode":"CV35 7LE","addr:street":"Station Road","name":"Hatton","naptan:AtcoCode":"9100HATTON","network":"National Rail","old_name":"Hatton Junction","public_transport":"station","railway":"station","ref:crs":"HTN","wikidata":"Q13528205","wikipedia":"en:Hatton railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7257883,52.3417839]},"properties":{"name":"Lapworth","naptan:AtcoCode":"9100LAPWRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LPW","wikidata":"Q1904720","wikipedia":"en:Lapworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7527829,52.3718817]},"properties":{"name":"Dorridge","naptan:AtcoCode":"9100DORIDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DDG","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2512506","wikipedia":"en:Dorridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7743426,52.3962802]},"properties":{"name":"Widney Manor","naptan:AtcoCode":"9100WDNYMNR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WMR","west_midlands_fare_zone":"4","wikidata":"Q2079928","wikipedia":"en:Widney Manor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7888672,52.4146286]},"properties":{"name":"Solihull","naptan:AtcoCode":"9100SOLIHUL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOL","west_midlands_fare_zone":"4","wikidata":"Q7558107","wikipedia":"en:Solihull railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.877661,52.4722127]},"properties":{"name":"Bordesley","naptan:AtcoCode":"9100BRDS","network":"National Rail","note":"only open on BCFC match days","public_transport":"station","railway":"station","ref:crs":"BBS","source":"NPE;survey","west_midlands_fare_zone":"2","wikidata":"Q3333114","wikipedia":"en:Bordesley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8992405,52.4834796]},"properties":{"name":"Birmingham Snow Hill","naptan:AtcoCode":"9100BHAMSNH","network":"National Rail","operator":"London Midland","public_transport":"station","railway":"station","ref:crs":"BSW","source":"knowledge","west_midlands_fare_zone":"1","wheelchair":"yes","wikidata":"Q3280363","wikipedia":"en:Birmingham Snow Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2502743,52.3790353]},"properties":{"addr:postcode":"CV21 3LA","addr:street":"Railway Terrace","name":"Rugby","naptan:AtcoCode":"9100RUGBY","network":"National Rail","operator":"Avanti West Coast","public_transport":"station","railway":"station","ref:crs":"RUG","source":"NPE","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q3250380","wikipedia":"en:Rugby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3924982,51.6522296]},"properties":{"check_date:wheelchair":"2022-11-10","name":"Watford High Street","naptan:AtcoCode":"9100WATFDHS","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"WFH","ref:stanox":"72002","ref:tiploc":"WATFDHS","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q19898","wikipedia":"en:Watford High Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7179834,51.9999805]},"properties":{"name":"Fenny Stratford","naptan:AtcoCode":"9100FSTR","network":"National Rail","operator":"London Northwestern Railway","postal_code":"MK2 2XP","public_transport":"station","railway":"station","ref:crs":"FEN","source":"NPE","wikidata":"Q2277649","wikipedia":"en:Fenny Stratford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8190719,54.3756184]},"properties":{"addr:city":"Staveley","addr:postcode":"LA8 9NG","addr:street":"Station Road","alt_name":"Staveley (Cumbria)","name":"Staveley","naptan:AtcoCode":"9100STAVELY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SVL","wheelchair":"no","wikidata":"Q2032914","wikipedia":"en:Staveley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8292113,51.7359634]},"properties":{"name":"Monks Risborough","naptan:AtcoCode":"9100MNKRISB","network":"National Rail","note":"This is a halt IIRC- Little more than a platform with a ticket machine","operator":"Chiltern Railways","platforms":"1","public_transport":"station","railway":"station","ref:crs":"MRS","source":"NPE","wikidata":"Q925646","wikipedia":"en:Monks Risborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9421714,51.771088]},"properties":{"name":"Haddenham and Thame Parkway","naptan:AtcoCode":"9100HADMATP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HDM","wikidata":"Q2848978","wikipedia":"en:Haddenham & Thame Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8254447,51.6759885]},"properties":{"name":"Saunderton","naptan:AtcoCode":"9100SUNDRTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SDR","train":"yes","wikidata":"Q2740928","wikipedia":"en:Saunderton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5549256,51.5887853]},"properties":{"name":"Gerrards Cross","naptan:AtcoCode":"9100GERRDSX","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"GER","source":"Bing","wikidata":"Q2412080","wikipedia":"en:Gerrards Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5181943,51.5806166]},"properties":{"name":"Denham Golf Club","naptan:AtcoCode":"9100DENHMGC","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"DGC","wheelchair":"no","wikidata":"Q2521362","wikipedia":"en:Denham Golf Club railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4975242,51.5787242]},"properties":{"name":"Denham","naptan:AtcoCode":"9100DENHAM","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"DNM","source":"NPE","wikidata":"Q2780894","wikipedia":"en:Denham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4104614,51.5606573]},"properties":{"fare_zone":"5","line":"Central","name":"Ruislip Gardens","naptan:AtcoCode":"940GZZLURSG","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1718915","wikipedia":"en:Ruislip Gardens tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0658086,52.5305353]},"properties":{"name":"Tipton","naptan:AtcoCode":"9100TIPTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TIP","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2660685","wikipedia":"en:Tipton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7476905,51.7618168]},"properties":{"name":"Wendover","naptan:AtcoCode":"9100WENDOVR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WND","source":"NPE","wikidata":"Q2751439","wikipedia":"en:Wendover railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7092458,51.7033896]},"properties":{"name":"Great Missenden","naptan:AtcoCode":"9100GTMSNDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GMN","source":"NPE","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q1843842","wikipedia":"en:Great Missenden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9701934,52.4964344]},"properties":{"name":"Smethwick Rolfe Street","naptan:AtcoCode":"9100SMTHKRS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SMR","west_midlands_fare_zone":"2","wikidata":"Q2274385","wikipedia":"en:Smethwick Rolfe Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3085949,51.5703765]},"properties":{"fare_zone":"4","line":"Bakerloo","name":"South Kenton","naptan:AtcoCode":"9100SKENTON","network":"London Underground;London Overground","network:subway":"London Overground","network:train":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"SOK","ref:stanox":"72009","ref:tiploc":"SKENTON","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q801454","wikipedia":"en:South Kenton station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3038698,51.5624017]},"properties":{"fare_zone":"4","line":"Bakerloo","name":"North Wembley","naptan:AtcoCode":"9100NWEMBLY","network":"London Underground;London Overground","network:subway":"London Overground","network:train":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"NWB","ref:stanox":"72010","ref:tiploc":"NWEMBLY","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q730267","wikipedia":"en:North Wembley station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8251247,52.6802201]},"properties":{"name":"Lichfield City","naptan:AtcoCode":"9100LCHC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LIC","source":"NPE","train":"yes","wikidata":"Q1924638","wikipedia":"en:Lichfield City railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9371251,52.7545973]},"properties":{"name":"Rugeley Town","naptan:AtcoCode":"9100RUGLTWN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RGT","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2649169","wikipedia":"en:Rugeley Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2988432,53.0930252]},"properties":{"addr:postcode":"ST7 2XW","addr:street":"Sandbach Road","name":"Alsager","naptan:AtcoCode":"9100ALSAGER","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ASG","source":"NPE","wikipedia":"en:Alsager railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9924997,52.3609702]},"properties":{"name":"Barnt Green","naptan:AtcoCode":"9100BGRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BTG","source":"NPE","wikidata":"Q2658226","wikipedia":"en:Barnt Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1583391,52.2683805]},"properties":{"name":"Droitwich Spa","naptan:AtcoCode":"9100DRTWCHS","network":"National Rail","operator":"London Midland","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DTW","train":"yes","wikidata":"Q2360854","wikipedia":"en:Droitwich Spa railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1193938,52.7236965]},"properties":{"name":"Penkridge","naptan:AtcoCode":"9100PNKRDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PKG","source":"NPE","wikidata":"Q2547278","wikipedia":"en:Penkridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9909844,52.5630075]},"properties":{"name":"Bescot Stadium","naptan:AtcoCode":"9100BSCTSTA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BSC","source":"NPE","west_midlands_fare_zone":"4","wikidata":"Q4896204","wikipedia":"en:Bescot Stadium railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9759632,52.5522427]},"properties":{"name":"Tame Bridge Parkway","naptan:AtcoCode":"9100TAMEBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TAB","west_midlands_fare_zone":"4","wikidata":"Q1881868","wikipedia":"en:Tame Bridge Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9023511,52.516406]},"properties":{"name":"Perry Barr","naptan:AtcoCode":"9100PRYBR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PRY","train":"yes","west_midlands_fare_zone":"2","wikidata":"Q2113907","wikimedia_commons":"Category:Perry Barr railway station","wikipedia":"en:Perry Barr railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.266464,52.0258212]},"properties":{"name":"Arlesey","naptan:AtcoCode":"9100ARLSEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ARL","ref:tiploc":"ARLSEY","source:name":"local knowledge","wikidata":"Q4567224","wikipedia":"en:Arlesey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6100124,50.9186255]},"properties":{"name":"Doleham","naptan:AtcoCode":"9100DOLEHAM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DLH","train":"yes","wheelchair":"yes","wikidata":"Q2174016","wikipedia":"en:Doleham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5768255,50.8583028]},"properties":{"addr:city":"Hastings","name":"Hastings","naptan:AtcoCode":"9100HASTING","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HGS","train":"yes","wikidata":"Q2556633","wikimedia_commons":"Category:Hastings railway station","wikipedia":"en:Hastings railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9422803,51.3485177]},"properties":{"name":"Weston Milton","naptan:AtcoCode":"9100WMILTON","network":"National Rail","network:wikidata":"Q26334","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"WNM","source":"NPE + GPX","train":"yes","wikidata":"Q2432877","wikipedia":"en:Weston Milton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8277046,51.3908826]},"properties":{"name":"Yatton","naptan:AtcoCode":"9100YATTON","network":"National Rail","operator":"GWR","platforms":"2","public_transport":"station","railway":"station","ref:crs":"YAT","source":"NPE + GPX","wikidata":"Q1957149","wikipedia":"en:Yatton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9718305,51.344496]},"properties":{"name":"Weston-super-Mare","naptan:AtcoCode":"9100WSMARE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WSM","source":"NPE","train":"yes","wikidata":"Q2335883","wikipedia":"en:Weston-super-Mare railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5021627,50.7313015]},"properties":{"name":"Polsloe Bridge","naptan:AtcoCode":"9100POLSBDG","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"POL","train":"yes","wheelchair":"no","wikidata":"Q2782711","wikipedia":"en:Polsloe Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4637875,50.685645]},"properties":{"name":"Topsham","name:be":"Топшам","name:en":"Topsham","name:ru":"Топшем","naptan:AtcoCode":"9100TOPSHAM","network":"National Rail","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"TOP","source":"NPE + GPX","wheelchair":"yes","wikidata":"Q1990205","wikipedia":"en:Topsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4440694,50.6680325]},"properties":{"name":"Exton","naptan:AtcoCode":"9100EXTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EXN","request_stop":"yes","wikidata":"Q4553827","wikipedia":"en:Exton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4409796,50.6625937]},"properties":{"name":"Lympstone Commando","naptan:AtcoCode":"9100LYMPSTC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LYC","request_stop":"yes","train":"yes","wikidata":"Q1977209","wikipedia":"en:Lympstone Commando railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4149555,50.621614]},"properties":{"name":"Exmouth","name:en":"Exmouth","name:lt":"Eksmutas","naptan:AtcoCode":"9100EXMOUTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EXM","train":"yes","wikidata":"Q2681544","wikipedia":"en:Exmouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3195676,52.1258094]},"properties":{"addr:postcode":"WR14 1SW","name":"Malvern Link","naptan:AtcoCode":"9100MLVRNLK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MVL","source":"NPE","wikidata":"Q2657768","wikipedia":"en:Malvern Link railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3277225,51.0221625]},"properties":{"name":"Shawford","naptan:AtcoCode":"9100SHAWFD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SHW","train":"yes","wikidata":"Q3295440","wikipedia":"en:Shawford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1767711,52.4064788]},"properties":{"name":"Blakedown","naptan:AtcoCode":"9100BLAKEDN","network":"National Rail","operator":"London Midland","public_transport":"station","railway":"station","ref:crs":"BKD","source":"NPE","train":"yes","wikidata":"Q2171050","wikipedia":"en:Blakedown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1465358,52.4224267]},"properties":{"name":"Hagley","naptan:AtcoCode":"9100HAGLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HAG","source":"NPE","wikidata":"Q2763246","wikipedia":"en:Hagley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1340314,52.4476157]},"properties":{"name":"Stourbridge Junction","naptan:AtcoCode":"9100STRBDGJ","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SBJ","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2045806","wikipedia":"en:Stourbridge Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1419647,52.4556424]},"properties":{"name":"Stourbridge Town","naptan:AtcoCode":"9100STRBDGT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SBT","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2746016","wikipedia":"en:Stourbridge Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1160497,52.4599417]},"properties":{"name":"Lye","naptan:AtcoCode":"9100LYEE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LYE","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2044178","wikipedia":"en:Lye railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0906252,52.4694408]},"properties":{"name":"Cradley Heath","naptan:AtcoCode":"9100CRADLYH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CRA","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q1924927","wikipedia":"en:Cradley Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0308221,52.4774198]},"properties":{"name":"Rowley Regis","naptan:AtcoCode":"9100ROWLEYR","network":"National Rail","operator":"London Midland","public_transport":"station","railway":"station","ref:crs":"ROW","source":"NPE","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2497234","wikipedia":"en:Rowley Regis railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0054314,52.4934857]},"properties":{"name":"Langley Green","naptan:AtcoCode":"9100LGRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LGG","source":"NPE","west_midlands_fare_zone":"3","wikidata":"Q2390772","wikipedia":"en:Langley Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0091415,52.0908316]},"properties":{"name":"Meldreth","naptan:AtcoCode":"9100MELDRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MEL","wikidata":"Q2915277","wikipedia":"en:Meldreth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3066603,52.3757574]},"properties":{"name":"Bewdley","naptan:AtcoCode":"940GZZSVBEW","network":"Severn Valley Railway","operator":"Severn Valley Railway","platforms":"3","public_transport":"station","railway":"station","source":"NPE","usage":"tourism","wikidata":"Q4899741"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3275672,52.3947134]},"properties":{"name":"Northwood Halt","operator":"Severn Valley Railway","platforms":"1","public_transport":"station","railway":"station","request_stop":"yes","source":"NPE","usage":"tourism","wikidata":"Q7060470"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3488657,52.4171608]},"properties":{"name":"Arley","naptan:AtcoCode":"940GZZSVARL","network":"Severn Valley Railway","operator":"Severn Valley Railway","platforms":"2","public_transport":"station","railway":"station","source":"NPE","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3771788,52.4738899]},"properties":{"name":"Hampton Loade","naptan:AtcoCode":"940GZZSVHLD","network":"Severn Valley Railway","operator":"Severn Valley Railway","platforms":"2","public_transport":"station","railway":"station","source":"NPE","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3705819,52.444908]},"properties":{"name":"Highley","naptan:AtcoCode":"940GZZSVHIG","network":"Severn Valley Railway","note":"Name from nearby village","operator":"Severn Valley Railway","platforms":"1","public_transport":"station","railway":"station","source":"NPE","usage":"tourism","wikidata":"Q5759466"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4585987,51.9054737]},"properties":{"name":"Leagrave","naptan:AtcoCode":"9100LEAGRVE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LEA","wheelchair":"no","wikidata":"Q12061118","wikipedia":"en:Leagrave railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2659524,50.8757192]},"properties":{"addr:city":"Southampton","addr:country":"GB","addr:postcode":"SO31 1BA","name":"Swanwick","naptan:AtcoCode":"9100SWNWICK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SNW","wikidata":"Q2765966","wikipedia":"en:Swanwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0230749,51.6767954]},"properties":{"name":"Kemble","naptan:AtcoCode":"9100KEMBLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KEM","source":"survey","wheelchair":"yes","wikidata":"Q1877761","wikipedia":"en:Kemble railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3361942,51.558533]},"properties":{"name":"Sudbury Hill Harrow","naptan:AtcoCode":"9100SDBRYHH","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"SDH","wheelchair":"no","wikidata":"Q941324","wikipedia":"en:Sudbury Hill Harrow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2191762,51.7444813]},"properties":{"name":"Stroud","naptan:AtcoCode":"9100STRUD","network":"National Rail","network:wikidata":"Q26334","postal_code":"GL5 3AP","public_transport":"station","railway":"station","ref:crs":"STD","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q3079073","wikipedia":"en:Stroud railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2794209,51.7459341]},"properties":{"name":"Stonehouse","naptan:AtcoCode":"9100STNHSE","network":"National Rail","postal_code":"GL10 2JW","railway":"station","ref:crs":"SHU","source":"NPE","wheelchair":"yes","wikidata":"Q1992485","wikipedia":"en:Stonehouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4830687,50.9176659]},"properties":{"alt_name":"Totton Rail Station","name":"Totton","naptan:AtcoCode":"9100TOTTON","network":"National Rail","old_name":"Totton and Eling","postal_code":"SO40 3AB","public_transport":"station","railway":"station","ref:crs":"TTN","wikidata":"Q2008136","wikipedia":"en:Totton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2272134,53.8270101]},"properties":{"name":"Church Fenton","naptan:AtcoCode":"9100CHFN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHF","source":"npe","wikidata":"Q3489838","wikipedia":"en:Church Fenton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1597188,51.4356228]},"properties":{"fare_zone":"3","line":"Northern","name":"Tooting Bec","name:ru":"Тутинг-Бек","naptan:AtcoCode":"940GZZLUTBC","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1424421","wikipedia":"en:Tooting Bec tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5779212,53.8121567]},"properties":{"name":"Burley Park","naptan:AtcoCode":"9100BRLEYPK","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BUY","wikidata":"Q3298380","wikipedia":"en:Burley Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0195165,54.5873806]},"properties":{"name":"Marske","naptan:AtcoCode":"9100MRSK","network":"National Rail","railway":"station","ref:crs":"MSK","ref:stanox":"15668","ref:tiploc":"MRSK","uic_ref":"7001509","wikidata":"Q951534","wikipedia":"en:Marske railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1299205,51.4651241]},"properties":{"fare_zone":"2","line":"Northern","name":"Clapham North","name:ru":"Клэпхем-Норт","naptan:AtcoCode":"940GZZLUCPN","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1095082","wikipedia":"en:Clapham North tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1123953,51.4818339]},"properties":{"fare_zone":"2","line":"Northern","name":"Oval","name:ru":"Овал","naptan:AtcoCode":"940GZZLUOVL","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q426804","wikimedia_commons":"Category:Oval tube station","wikipedia":"en:Oval tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1058829,51.4882861]},"properties":{"fare_zone":"1;2","line":"Northern","name":"Kennington","name:ru":"Кеннингтон","naptan:AtcoCode":"940GZZLUKNG","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Cross-platform interchange in same direction only. No entry or exit.","wikidata":"Q1738951","wikipedia":"en:Kennington tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2219984,53.4093155]},"properties":{"name":"East Didsbury","naptan:AtcoCode":"9100EDIDBRY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EDY","wikipedia":"en:East Didsbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.074968,51.5452841]},"properties":{"addr:street":"Dalston Lane","electrified":"rail","name":"Dalston Junction","name:fr":"Gare de Dalston Junction","naptan:AtcoCode":"9100DALS","network":"London Overground","operator":"London Overground","platforms":"4","public_transport":"station","railway":"station","ref:crs":"DLJ","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"yes","wheelchair:description":"Wide gates, lift down to all plaforms, Radar key operated wheelchair accessible toilet near lift at ticket hall level. Step-free from platform to train.","wikidata":"Q800651","wikipedia":"en:Dalston Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3711055,52.5351729]},"properties":{"name":"Hinckley","naptan:AtcoCode":"9100HINCKLY","network":"National Rail","postal_code":"LE10 1UE","public_transport":"station","railway":"station","ref:crs":"HNK","source":"GPS waypoint","train":"yes","upload_tag":"ojw_bham","wheelchair":"yes","wikidata":"Q2733409","wikipedia":"en:Hinckley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2402569,51.6856231]},"properties":{"name":"Radley","naptan:AtcoCode":"9100RDLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RAD","wikidata":"Q4386081","wikipedia":"en:Radley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8007743,53.6348054]},"properties":{"name":"Lockwood","naptan:AtcoCode":"9100LKWD","network":"National Rail","railway":"station","ref:crs":"LCK","source":"npe","wikipedia":"en:Lockwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7935857,53.6210459]},"properties":{"name":"Berry Brow","naptan:AtcoCode":"9100BERRYB","network":"National Rail","operator":"Northern","railway":"station","ref:crs":"BBW","source":"npe","wikipedia":"en:Berry Brow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.780828,53.6082445]},"properties":{"name":"Honley","naptan:AtcoCode":"9100HONLEY","network":"National Rail","railway":"station","ref:crs":"HOY","source":"npe","wikipedia":"en:Honley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7698266,53.5970261]},"properties":{"name":"Brockholes","naptan:AtcoCode":"9100BKHLS","network":"National Rail","railway":"station","ref:crs":"BHS","source":"npe","wikipedia":"en:Brockholes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.663204,53.5728721]},"properties":{"name":"Denby Dale","naptan:AtcoCode":"9100DNDL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DBD","wikipedia":"en:Denby Dale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6223537,53.5253151]},"properties":{"name":"Penistone","naptan:AtcoCode":"9100PENISTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PNS","wikidata":"Q2001260","wikipedia":"en:Penistone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5630289,53.5353509]},"properties":{"name":"Silkstone Common","naptan:AtcoCode":"9100SKSCMN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SLK","wikidata":"Q1882359","wikipedia":"en:Silkstone Common railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8179843,53.5898466]},"properties":{"name":"Crowle","naptan:AtcoCode":"9100CROWLE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"CWE","source":"NPE","wikidata":"Q961797","wikipedia":"en:Crowle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.732955,53.5855457]},"properties":{"name":"Althorpe","naptan:AtcoCode":"9100ALTPE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"ALP","source":"NPE","wikidata":"Q4736675","wikipedia":"en:Althorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4097613,53.5750127]},"properties":{"name":"Barnetby","naptan:AtcoCode":"9100BNTBY","network":"National Rail","operator":"First TransPennine Express","public_transport":"station","railway":"station","ref:crs":"BTB","source":"npe","wikidata":"Q1861647","wikipedia":"en:Barnetby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4857584,53.5490517]},"properties":{"addr:city":"Brigg","addr:postcode":"DN20 8HX","addr:street":"Station Road","name":"Brigg","naptan:AtcoCode":"9100BRGG","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BGG","source":"Bing","wikidata":"Q2549335","wikipedia":"en:Brigg railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5935507,53.4852618]},"properties":{"name":"Kirton Lindsey","naptan:AtcoCode":"9100KRTNLND","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"KTL","source":"NPE","wikidata":"Q3060156","wikipedia":"en:Kirton Lindsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9488416,53.8313183]},"properties":{"name":"Haworth","naptan:AtcoCode":"940GZZKWHAW","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5685412","wikipedia":"en:Haworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9419575,53.8413266]},"properties":{"name":"Oakworth","naptan:AtcoCode":"940GZZKWOAK","public_transport":"station","railway":"station","source":"OS 1:25k","usage":"tourism","wikidata":"Q7074337","wikipedia":"en:Oakworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.924448,53.8459194]},"properties":{"name":"Damems","naptan:AtcoCode":"940GZZKWDMM","railway":"station","usage":"tourism","wikidata":"Q5212155","wikipedia":"en:Damems railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9151443,53.8536646]},"properties":{"name":"Ingrow (West)","naptan:AtcoCode":"940GZZKWIGN","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6033350","wikipedia":"en:Ingrow (West) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7536925,53.8501789]},"properties":{"name":"Baildon","naptan:AtcoCode":"9100BAILDON","network":"National Rail","railway":"station","ref:crs":"BLD","source":"NPE","wikidata":"Q4475770","wikipedia":"en:Baildon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5886798,51.4683479]},"properties":{"addr:city":"Bristol","addr:street":"Station Road","name":"Montpelier","naptan:AtcoCode":"9100MONPELR","network":"National Rail","operator":"Great Western Railway","railway":"station","ref:crs":"MTP","wikidata":"Q962430","wikipedia":"en:Montpelier railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2551519,54.0166575]},"properties":{"name":"Long Preston","naptan:AtcoCode":"9100LPRESTN","network":"National Rail","old_ref":"NPE + GPX","public_transport":"station","railway":"station","ref:crs":"LPR","wikipedia":"en:Long Preston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4488239,53.8048112]},"properties":{"name":"Langho","naptan:AtcoCode":"9100LGHO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LHO","source":"NPE","train":"yes","wikipedia":"en:Langho railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4642693,53.6979355]},"properties":{"name":"Darwen","name:lt":"Darvenas","naptan:AtcoCode":"9100DARWEN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DWN","source":"NPE","wikidata":"Q2248104","wikipedia":"en:Darwen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4139637,53.6556886]},"properties":{"addr:city":"Entwistle","addr:postcode":"BL7 0NG","addr:street":"Overshores Road","name":"Entwistle","naptan:AtcoCode":"9100ENTWISL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ENT","request_stop":"yes","source":"npe","train":"yes","wikidata":"Q2933251","wikipedia":"en:Entwistle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3141164,53.5223155]},"properties":{"name":"Clifton","naptan:AtcoCode":"9100CLTN","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CLI","ref:tiploc":"CLTN","train":"yes","wikidata":"Q2708119","wikipedia":"en:Clifton railway station (Greater Manchester)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0883292,51.4541783]},"properties":{"name":"North Dulwich","name:ru":"Норт-Далвич","naptan:AtcoCode":"9100NDULWCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NDL","wheelchair":"no","wikidata":"Q2105973","wikipedia":"en:North Dulwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5663184,51.467446]},"properties":{"name":"Stapleton Road","naptan:AtcoCode":"9100STPLTNR","network":"National Rail","railway":"station","ref:crs":"SRD","source":"NPE","wikidata":"Q2537961","wikipedia":"en:Stapleton Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.56417,51.45858]},"properties":{"addr:city":"Bristol","addr:postcode":"BS5 0AF","addr:street":"Church Road","name":"Lawrence Hill","naptan:AtcoCode":"9100LAWRNCH","network":"National Rail","railway":"station","ref:crs":"LWH","wheelchair":"limited","wikidata":"Q4785868","wikipedia":"en:Lawrence Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5698672,53.5912146]},"properties":{"air_conditioning":"no","internet_access":"no","name":"Blackrod","naptan:AtcoCode":"9100BLRD","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BLK","ref:tiploc":"BLRD","train":"yes","wheelchair":"yes","wikidata":"Q1820371","wikipedia":"en:Blackrod railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3138473,50.701118]},"properties":{"name":"Moreton","naptan:AtcoCode":"9100MORETON","network":"National Rail","railway":"station","ref:crs":"MTN","source:name":"local knowledge","wikidata":"Q2165170","wikipedia":"en:Moreton railway station (Dorset)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2212157,50.6816539]},"properties":{"name":"Wool","naptan:AtcoCode":"9100WOOL","network":"National Rail","railway":"station","ref:crs":"WOO","source:name":"local knowledge","wikidata":"Q2547367","wikipedia":"en:Wool railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9228151,53.4052171]},"properties":{"name":"Wavertree Technology Park","naptan:AtcoCode":"9100WVRTTEC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WAV","ref:tiploc":"WVRTTEC","train":"yes","wheelchair":"yes","wikidata":"Q2969859","wikipedia":"en:Wavertree Technology Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7251202,53.4267142]},"properties":{"name":"Lea Green","naptan:AtcoCode":"9100LEGR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LEG","ref:tiploc":"LEGR","wheelchair":"yes","wikidata":"Q2797507","wikipedia":"en:Lea Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7594696,53.4366896]},"properties":{"name":"Thatto Heath","naptan:AtcoCode":"9100THHT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"THH","source":"npe","wikipedia":"en:Thatto Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6719929,53.4880481]},"properties":{"name":"Garswood","naptan:AtcoCode":"9100GARW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GSW","source":"npe","wikipedia":"en:Garswood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6476163,53.4997249]},"properties":{"name":"Bryn","naptan:AtcoCode":"9100BRYN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BYN","source":"NPE","wikipedia":"en:Bryn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2306618,53.3932392]},"properties":{"name":"Gatley","naptan:AtcoCode":"9100GATLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GTY","wikipedia":"en:Gatley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0237594,51.5815237]},"properties":{"name":"Walthamstow Queen's Road","naptan:AtcoCode":"9100WLTHQRD","network":"London Overground","old_name":"Walthamstow","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WMW","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2546520","wikipedia":"en:Walthamstow Queen's Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1817423,50.8363558]},"properties":{"name":"Aldrington","naptan:AtcoCode":"9100ALDTON","network":"National Rail","operator":"Southern","railway":"station","ref:crs":"AGT","wikidata":"Q2802053","wikipedia":"en:Aldrington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6031782,53.3859367]},"properties":{"addr:street":"Parker Street","name":"Warrington Bank Quay","naptan:AtcoCode":"9100WRGTNBQ","network":"National Rail","operator":"Avanti West Coast","public_transport":"station","railway":"station","ref:crs":"WBQ","was:addr:postcode":"WA1 1LW","website":"https://www.nationalrail.co.uk/stations_destinations/wbq.aspx","wikidata":"Q2641986","wikipedia":"en:Warrington Bank Quay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3340515,53.4855266]},"properties":{"addr:postcode":"M30 0DN","addr:street":"St Mary's Road","name":"Eccles","name:lt":"Eklsas","naptan:AtcoCode":"9100ECCLES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ECC","ref:tiploc":"ECCLES","train":"yes","wikidata":"Q2890052","wikipedia":"en:Eccles railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8110345,52.4851563]},"properties":{"name":"Stechford","naptan:AtcoCode":"9100STECHFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SCF","source":"NPE","west_midlands_fare_zone":"3","wikidata":"Q2419238","wikipedia":"en:Stechford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.786031,52.4805217]},"properties":{"name":"Lea Hall","naptan:AtcoCode":"9100LEAHALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LEH","west_midlands_fare_zone":"3","wikidata":"Q2499943","wikipedia":"en:Lea Hall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1345942,51.4992816]},"properties":{"fare_zone":"1","line":"District;Circle","loc_name":"Saint James Park","name":"St. James's Park","name:ru":"Сент-Джеймс Парк","naptan:AtcoCode":"940GZZLUSJP","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1567095","wikipedia":"en:St. James's Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6997231,52.4286358]},"properties":{"name":"Hampton-in-Arden","naptan:AtcoCode":"9100HMPTNIA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HIA","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2728174","wikipedia":"en:Hampton-in-Arden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5068108,51.5086086]},"properties":{"name":"Iver","naptan:AtcoCode":"9100IVER","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"IVR","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q6098724","wikipedia":"en:Iver railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1249302,51.5013562]},"properties":{"fare_zone":"1","line":"District;Circle;Jubilee","name":"Westminster","name:da":"Westminster Station","name:ru":"Вестминстер","naptan:AtcoCode":"940GZZLUWSM","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Lifts link all platforms on Jubilee and Circle/District lines. (photos to follow)","wikidata":"Q1135834","wikimedia_commons":"Category:Westminster tube station","wikipedia":"en:Westminster tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1826954,52.0505184]},"properties":{"name":"Derby Road","naptan:AtcoCode":"9100DERBYRD","network":"National Rail","railway":"station","ref:crs":"DBR","start_date":"1877-05-01","wikidata":"Q2353885","wikipedia":"en:Derby Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3498136,51.9670171]},"properties":{"name":"Felixstowe","naptan:AtcoCode":"9100FLXSTOW","network":"National Rail","network:wikidata":"Q26334","old_name":"Felixstowe Town","public_transport":"station","railway":"station","ref:crs":"FLX","train":"yes","wikidata":"Q3247616","wikipedia":"en:Felixstowe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1659683,52.0810736]},"properties":{"name":"Westerfield","naptan:AtcoCode":"9100WSTRFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WFI","start_date":"1859-06-01","wikidata":"Q1815407","wikipedia":"en:Westerfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.339152,51.3890554]},"properties":{"addr:city":"Thames Ditton","addr:postcode":"KT7 0PA","addr:street":"Station Road","baby_feeding":"no","internet_access":"no","name":"Thames Ditton","naptan:AtcoCode":"9100TDITTON","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"THD","website":"https://www.nationalrail.co.uk/stations/THD/details.html","wheelchair":"limited","wheelchair:description":"Long and steep ramps to both platforms from separate entrances - gradient up to 1:5 on Platform 2 side, up to 1:8 on Platform 1 side.","wikidata":"Q2476102","wikimedia_commons":"File:Thames Ditton stn look north2.JPG","wikipedia":"en:Thames Ditton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4668807,51.4439411]},"properties":{"name":"Oldland Common","naptan:AtcoCode":"940GZZAVOLD","railway":"station","usage":"tourism","wheelchair":"yes","wikidata":"Q7085686"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4946798,50.5481567]},"properties":{"electrified":"no","name":"Teignmouth","naptan:AtcoCode":"9100TEINMTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TGM","source:name":"local knowledge","train":"yes","wheelchair":"no","wikidata":"Q2369625","wikipedia":"en:Teignmouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.134245,51.3220643]},"properties":{"name":"Coulsdon Town","naptan:AtcoCode":"9100SMITHAM","network":"National Rail","old_name":"Smitham","public_transport":"station","railway":"station","ref:crs":"CDN","tracks":"2","wheelchair":"yes","wikidata":"Q2136840","wikipedia":"en:Coulsdon Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1540011,51.3189499]},"properties":{"name":"Woodmansterne","naptan:AtcoCode":"9100WDMNSTR","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WME","train":"yes","wheelchair":"no","wikidata":"Q2737664","wikipedia":"en:Woodmansterne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2110128,51.2947257]},"properties":{"name":"Kingswood","naptan:AtcoCode":"9100KGWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KND","wheelchair":"yes","wikidata":"Q2192379","wikipedia":"en:Kingswood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1234118,51.3311273]},"properties":{"name":"Reedham","naptan:AtcoCode":"9100REEDHMS","network":"National Rail","postal_code":"CR8 4DJ","public_transport":"station","railway":"station","ref:crs":"RHM","wheelchair":"limited","wheelchair:description":"Level access to platform 2 (to Tattenham Corner). Steps to platform 1 (to London).","wikidata":"Q1972220","wikipedia":"en:Reedham railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4181588,52.6233603]},"properties":{"name":"Brundall Gardens","naptan:AtcoCode":"9100BRUNDLG","network":"National Rail","railway":"station","ref:crs":"BGA","source":"NPE","wikidata":"Q2262602","wikipedia":"en:Brundall Gardens railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4958797,51.418071]},"properties":{"name":"Keynsham","naptan:AtcoCode":"9100KEYNSHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KYN","wikidata":"Q2658052","wikipedia":"en:Keynsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6114362,51.4644315]},"properties":{"name":"Clifton Down","naptan:AtcoCode":"9100CLFDOWN","network":"National Rail","railway":"station","ref:crs":"CFN","wheelchair":"yes","wikidata":"Q2462275","wikipedia":"en:Clifton Down railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4676146,52.1293364]},"properties":{"name":"Bedford St Johns","naptan:AtcoCode":"9100BESJOHN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BSJ","train":"yes","wikidata":"Q2567167","wikimedia_commons":"Category:Bedford St Johns railway station","wikipedia":"en:Bedford St Johns railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5388213,50.717201]},"properties":{"electrified":"no","name":"Exeter St Thomas","naptan:AtcoCode":"9100EXETRST","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"EXT","train":"yes","wheelchair":"no","wikidata":"Q1928272","wikipedia":"en:Exeter St Thomas railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1025399,51.0874683]},"properties":{"name":"Ropley","naptan:AtcoCode":"940GZZMHROP","operator":"The Mid Hants Railway 'Watercress Line'","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.watercressline.co.uk/","wikidata":"Q7366762"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3801898,51.379219]},"properties":{"name":"Oldfield Park","naptan:AtcoCode":"9100OLDFLDP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OLF","wheelchair":"yes","wikidata":"Q2275914","wikipedia":"en:Oldfield Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4386558,52.6196558]},"properties":{"name":"Brundall","naptan:AtcoCode":"9100BRUNDAL","network":"National Rail","railway":"station","ref:crs":"BDA","wheelchair":"yes","wikidata":"Q282288","wikipedia":"en:Brundall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9054279,51.8865086]},"properties":{"name":"Colchester Town","naptan:AtcoCode":"9100CLCHRTN","network":"National Rail","old_name":"St Botolph's","operator":"Abellio Greater Anglia","platforms":"1","public_transport":"station","railway":"station","ref:crs":"CET","wikidata":"Q4489756","wikipedia":"en:Colchester Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1147325,51.4626818]},"properties":{"fare_zone":"2","line":"Victoria","name":"Brixton","name:ru":"Брикстон","naptan:AtcoCode":"940GZZLUBXN","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikimedia_commons":"Category:Brixton tube station","wikipedia":"en:Brixton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.589163,53.7505897]},"properties":{"name":"Morley","naptan:AtcoCode":"9100MRLY","network":"National Rail","network:wikidata":"Q26334","old_name":"Morley Low","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MLY","source":"gpx","train":"yes","wikidata":"Q2079875","wikipedia":"en:Morley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4094509,52.5610781]},"properties":{"name":"Yarwell Junction (NVR)","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism","wikidata":"Q8049606","wikipedia":"en:Yarwell Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.912095,53.3586932]},"properties":{"name":"Cressington","naptan:AtcoCode":"9100CRSNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSG","wikidata":"Q2465226","wikipedia":"en:Cressington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3005891,51.3417702]},"properties":{"name":"Freshford","naptan:AtcoCode":"9100FRESHFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FFD","wikidata":"Q1915042","wikipedia":"en:Freshford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1598113,52.7042808]},"properties":{"addr:city":"Rothley","addr:housename":"Rothley Railway Station","addr:postcode":"LE7 7LD","name":"Rothley","naptan:AtcoCode":"940GZZGCRTH","public_transport":"station","railway":"station","source":"NPE","train":"yes","usage":"tourism","wikidata":"Q7370489","wikipedia":"en:Rothley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3157744,53.6768699]},"properties":{"name":"Irwell Vale","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2918033,53.698586]},"properties":{"name":"Rawtenstall","naptan:AtcoCode":"940GZZELRAW","operator":"East Lancashire Railway Preservation Society","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3134126,53.6279534]},"properties":{"name":"Summerseat","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7637658"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3032556,53.6113055]},"properties":{"name":"Burrs Country Park Halt","network":"East Lancashire Railway","note":"Opened to the public on Jan 1st 2017","operator":"East Lancashire Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q28197680"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3003018,53.5929094]},"properties":{"name":"Bury, Bolton Street","naptan:AtcoCode":"940GZZELBBS","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q5001073"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1988601,51.389451]},"properties":{"name":"St. Helier","name:fr":"Saint-Hélier","naptan:AtcoCode":"9100SHLIER","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"SIH","wheelchair":"no","wikidata":"Q2217526","wikipedia":"en:St Helier railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1961049,51.3754313]},"properties":{"name":"Sutton Common","naptan:AtcoCode":"9100SUTTONC","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"SUC","wheelchair":"no","wikidata":"Q2482182","wikipedia":"en:Sutton Common railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3146606,53.6473535]},"properties":{"name":"Ramsbottom","naptan:AtcoCode":"940GZZELRAM","operator":"East Lancashire Railway Preservatoion Society","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7290149"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.062958,53.2917321]},"properties":{"addr:city":"Neston","addr:postcode":"CH64 9SR","addr:street":"Ladies Walk","internet_access":"no","name":"Neston","naptan:AtcoCode":"9100NESTON","network":"National Rail","operator":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"NES","wikidata":"Q2540573","wikipedia":"en:Neston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8314247,52.545628]},"properties":{"name":"Wylde Green","naptan:AtcoCode":"9100WYGN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WYL","west_midlands_fare_zone":"4","wheelchair":"yes","wheelchair:description":"Book ramps before travelling.","wikidata":"Q1840659","wikipedia":"en:Wylde Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9266096,53.3645118]},"properties":{"name":"Aigburth","naptan:AtcoCode":"9100AIGBURT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AIG","train":"yes","wheelchair":"no","wikidata":"Q2677471","wikipedia":"en:Aigburth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5936286,51.4406058]},"properties":{"name":"Bedminster","naptan:AtcoCode":"9100BDMNSTR","network":"National Rail","operator":"First Great Western","railway":"station","ref:crs":"BMT","wikidata":"Q4879315","wikipedia":"en:Bedminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6085368,51.432994]},"properties":{"name":"Parson Street","naptan:AtcoCode":"9100PARSNST","network":"National Rail","railway":"station","ref:crs":"PSN","wikidata":"Q2492432","wikipedia":"en:Parson Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.294296,52.9772821]},"properties":{"name":"Heckington","naptan:AtcoCode":"9100HCKNGTN","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"HEC","source":"Bing","wikidata":"Q1998480","wikipedia":"en:Heckington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4101594,52.9955161]},"properties":{"name":"Sleaford","naptan:AtcoCode":"9100SLEFD","network":"National Rail","network:wikidata":"Q26334","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"SLR","train":"yes","wikidata":"Q2661734","wikipedia":"en:Sleaford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4559695,52.9852782]},"properties":{"name":"Rauceby","naptan:AtcoCode":"9100RAUCEBY","network":"National Rail","railway":"station","ref:crs":"RAU","source":"Bing","wikidata":"Q2146289","wikipedia":"en:Rauceby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8554051,52.9521534]},"properties":{"name":"Elton and Orston","naptan:AtcoCode":"9100ELTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ELO","source":"NPE","wikidata":"Q2585835","wikipedia":"en:Elton and Orston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.415295,52.5996554]},"properties":{"name":"Shenton","naptan:AtcoCode":"940GZZBFSHE","railway":"station","usage":"tourism","wikidata":"Q7494333"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4412337,52.6556653]},"properties":{"name":"Shackerstone","naptan:AtcoCode":"940GZZBFSHA","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7460166"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8906635,51.3116525]},"properties":{"addr:city":"Faversham","addr:postcode":"ME13 8EB","addr:street":"Station Road","name":"Faversham","naptan:AtcoCode":"9100FAVRSHM","network":"National Rail","operator":"Southeastern","platforms":"4","public_transport":"station","railway":"station","ref:crs":"FAV","wheelchair":"yes","wikidata":"Q4753369","wikipedia":"en:Faversham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6326933,52.0212048]},"properties":{"name":"Aspley Guise","naptan:AtcoCode":"9100ASPLEYG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"APG","source":"NPE","wikidata":"Q3043426","wikipedia":"en:Aspley Guise railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5948526,52.0263878]},"properties":{"name":"Ridgmont","naptan:AtcoCode":"9100RIDGMNT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RID","source":"Bing","wikidata":"Q7332882","wikipedia":"en:Ridgmont railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5204876,52.0694881]},"properties":{"name":"Stewartby","naptan:AtcoCode":"9100STWRTBY","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"SWR","source":"NPE","wikidata":"Q2379914","wikipedia":"en:Stewartby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6645392,51.5596758]},"properties":{"name":"Severn Beach","naptan:AtcoCode":"9100SVRNBCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SVB","train":"yes","wikidata":"Q2224831","wikipedia":"en:Severn Beach railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0933566,54.4575551]},"properties":{"name":"Battersby","naptan:AtcoCode":"9100BTRSBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BTT","uic_ref":"7000359","wikidata":"Q367057","wikipedia":"en:Battersby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6470844,51.5233926]},"properties":{"name":"Burnham","naptan:AtcoCode":"9100BNHAM","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"BNM","wheelchair":"yes","wikidata":"Q1999740","wikipedia":"en:Burnham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9760156,53.3832177]},"properties":{"name":"Brunswick","naptan:AtcoCode":"9100BNWK","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BRW","wheelchair":"yes","wikidata":"Q2471511","wikipedia":"en:Brunswick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.991213,53.9753772]},"properties":{"name":"Embsay","naptan:AtcoCode":"940GZZEBEMB","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q5370259","wikipedia":"en:Embsay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9600589,53.9758359]},"properties":{"name":"Holywell","note":"Serves adjacent Craven Fault viewpoint and picnic sites only. No publicly accessible route to A65.","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q5887184","wikipedia":"en:Holywell Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9071791,50.8481981]},"properties":{"name":"Southbourne","naptan:AtcoCode":"9100SBOURNE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOB","wikidata":"Q2075322","wikipedia":"en:Southbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9385075,50.8516544]},"properties":{"name":"Emsworth","naptan:AtcoCode":"9100EMSWTH","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"EMS","wikidata":"Q1991227","wikipedia":"en:Emsworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9087257,53.9761778]},"properties":{"name":"Bolton Abbey","naptan:AtcoCode":"940GZZEBBAB","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q4940142","wikipedia":"en:Bolton Abbey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.058643,50.8283898]},"properties":{"name":"Hilsea","naptan:AtcoCode":"9100HILSEA","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HLS","website":"https://www.nationalrail.co.uk/stations/HLS/details.html","wikidata":"Q5391111","wikipedia":"en:Hilsea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6557662,53.6755716]},"properties":{"name":"Ravensthorpe","naptan:AtcoCode":"9100RTHP","network":"National Rail","railway":"station","ref:crs":"RVN","wikipedia":"en:Ravensthorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.9050319,50.393467]},"properties":{"name":"Ivybridge","naptan:AtcoCode":"9100IVYBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"IVY","wheelchair":"yes","wikipedia":"en:Ivybridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5430302,50.4610509]},"properties":{"electrified":"no","name":"Torquay","naptan:AtcoCode":"9100TORQUAY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TQY","train":"yes","wheelchair":"yes","wikipedia":"en:Torquay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5465008,50.4731928]},"properties":{"electrified":"no","name":"Torre","naptan:AtcoCode":"9100TORRE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TRR","wikidata":"Q2985310","wikipedia":"en:Torre railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9852679,52.5841365]},"properties":{"name":"Walsall","naptan:AtcoCode":"9100WALSALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WSL","source":"NPE","west_midlands_fare_zone":"4","wikidata":"Q2586719","wikipedia":"en:Walsall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7779892,53.6674573]},"properties":{"name":"Croston","naptan:AtcoCode":"9100CROT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSO","source":"npe","wikipedia":"en:Croston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8405323,53.5975512]},"properties":{"name":"Burscough Junction","naptan:AtcoCode":"9100BRSCGHJ","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BCJ","source":"npe","train":"yes","wikidata":"Q2676129","wikipedia":"en:Burscough Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8182181,53.7818059]},"properties":{"name":"Salwick","naptan:AtcoCode":"9100SALWICK","network":"National Rail","operator":"Northern Rail","railway":"station","ref:crs":"SLW","source":"NPE","wikipedia":"en:Salwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8833796,53.7869046]},"properties":{"name":"Kirkham and Wesham","naptan:AtcoCode":"9100KIRKHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KKM","source":"NPE","wikipedia":"en:Kirkham and Wesham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.942894,53.764962]},"properties":{"name":"Moss Side","naptan:AtcoCode":"9100MSSD","network":"National Rail","railway":"station","ref:crs":"MOS","start_date":"1846","wikipedia":"en:Moss Side railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8037555,54.169607]},"properties":{"name":"Silverdale","naptan:AtcoCode":"9100SDAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SVR","wikipedia":"en:Silverdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7714886,54.1296244]},"properties":{"name":"Carnforth","naptan:AtcoCode":"9100CRNF","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CNF","train":"yes","wikidata":"Q2576627","wikipedia":"en:Carnforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.029934,53.8353586]},"properties":{"name":"Layton","naptan:AtcoCode":"9100LAYTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAY","source":"npe","train":"yes","wheelchair":"limited","wikidata":"Q2117163","wikipedia":"en:Layton railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6716808,53.6598241]},"properties":{"name":"Euxton Balshaw Lane","naptan:AtcoCode":"9100EUXT","network":"National Rail","old_name":"Balshaw Lane & Euxton Railway Station","railway":"station","ref:crs":"EBA","source":"npe","wheelchair":"yes","wikipedia":"en:Euxton Balshaw Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0483841,51.1030758]},"properties":{"addr:city":"East Grinstead","addr:hamlet":"Kingscote","addr:postcode":"RH19 4LD","addr:street":"Vowels Lane","image":"https://upload.wikimedia.org/wikipedia/commons/8/8e/Kingscote_Railway_Station_waiting_carriage.JPG","name":"Kingscote","naptan:AtcoCode":"940GZZBBKNG","operator":"Bluebell Railway","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism","website":"http://www.bluebell-railway.co.uk","wikidata":"Q6413185","wikimedia_commons":"File:Kingscote_Railway_Station_waiting_carriage.JPG","wikipedia":"en:Kingscote_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0448579,51.046255]},"properties":{"name":"Horsted Keynes","naptan:AtcoCode":"940GZZBBHDK","operator":"Bluebell Railway","public_transport":"station","railway":"station","railway:preserved":"yes","source":"npe","usage":"tourism","website":"http://www.bluebell-railway.co.uk","wikidata":"Q15225335"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0012346,50.9955844]},"properties":{"name":"Sheffield Park","naptan:AtcoCode":"940GZZBBSHF","operator":"Bluebell Railway","public_transport":"station","railway":"station","railway:preserved":"yes","source":"npe","toilets:wheelchair":"yes","usage":"tourism","website":"http://www.bluebell-railway.co.uk","wheelchair":"yes","wikidata":"Q7492725"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1880755,51.1122821]},"properties":{"name":"Groombridge","naptan:AtcoCode":"940GZZSLGRM","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q5610271"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2526778,51.1235888]},"properties":{"name":"Tunbridge Wells West","naptan:AtcoCode":"940GZZSLTWW","public_transport":"station","railway":"station","tourism":"preserved_railway","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q7852851","wikipedia":"en:Tunbridge Wells West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6852189,51.0703263]},"properties":{"name":"Tenterden Town","naptan:AtcoCode":"940GZZKETTN","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7700834","wikipedia":"en:Tenterden Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6600068,51.0639927]},"properties":{"name":"Rolvenden","naptan:AtcoCode":"940GZZKERLV","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7361435","wikipedia":"en:Rolvenden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6611109,51.0279011]},"properties":{"name":"Wittersham Road","naptan:AtcoCode":"940GZZKEWRD","note":"Explictly named on NPE","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q8028586","wikipedia":"en:Wittersham Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.613833,51.0093928]},"properties":{"name":"Northiam","naptan:AtcoCode":"940GZZKENTM","note":"Explicitly named on NPE","public_transport":"station","railway":"station","source":"survey","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7059479"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5389926,50.9966492]},"properties":{"name":"Bodiam","naptan:AtcoCode":"940GZZKEBOD","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q4936557"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0719648,51.0712703]},"properties":{"name":"Hythe","naptan:AtcoCode":"940GZZRHHYT","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","source":"npe","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.954204,50.9859473]},"properties":{"addr:housenumber":"2","addr:postcode":"TN28 8PL","addr:street":"Littlestone Road","contact:phone":"+44 1797 362353","name":"New Romney","naptan:AtcoCode":"940GZZRHNRM","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","note":"Survey or additional information required to verify station layout","operator":"Romney, Hythe & Dymchurch Railway","public_transport":"station","railway":"station","source:addr:postcode":"Gift bag","source:contact:phone":"Gift bag","tourism":"attraction","train":"yes","usage":"tourism","wikidata":"Q13570472","wikipedia":"en:New Romney railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.963136,50.9587303]},"properties":{"name":"Romney Sands","naptan:AtcoCode":"940GZZRHRMS","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","operator":"Romney, Hythe & Dymchurch Railway","public_transport":"station","railway":"station","source":"survey","tourism":"attraction","train":"yes","usage":"tourism","wikidata":"Q7363267"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9705863,50.914493]},"properties":{"name":"Dungeness","naptan:AtcoCode":"940GZZRHDUN","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1623117,53.3601721]},"properties":{"name":"Bramhall","naptan:AtcoCode":"9100BMHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BML","wikipedia":"en:Bramhall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7497508,51.4159485]},"properties":{"name":"Queenborough","naptan:AtcoCode":"9100QUENBRO","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"QBR","train":"yes","wikidata":"Q2323119","wikipedia":"en:Queenborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7583155,51.4407137]},"properties":{"name":"Sheerness-on-Sea","naptan:AtcoCode":"9100SHRNSOS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SSS","train":"yes","wikidata":"Q7492505","wikipedia":"en:Sheerness-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7349601,51.3617377]},"properties":{"name":"Kemsley","naptan:AtcoCode":"9100KMSLY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"KML","train":"yes","wheelchair":"yes","wikidata":"Q2625213","wikipedia":"en:Kemsley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6591006,51.6036509]},"properties":{"name":"Hockley","naptan:AtcoCode":"9100HOCKLEY","network":"National Rail","network:wikidata":"Q26334","operator":"Greater Anglia","operator:wikidata":"Q318679","public_transport":"station","railway":"station","ref:crs":"HOC","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2288120","wikipedia":"en:Hockley railway station (Essex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2450874,53.7934673]},"properties":{"name":"Burnley Central","naptan:AtcoCode":"9100BURNLYC","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BNC","source":"npe","train":"yes","wheelchair":"yes","wikipedia":"en:Burnley Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2573183,53.791034]},"properties":{"name":"Burnley Barracks","naptan:AtcoCode":"9100BURNLYB","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BUB","request_stop":"yes","source":"yahoo+wikipedia description","train":"yes","wikipedia":"en:Burnley Barracks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2142644,53.8347164]},"properties":{"name":"Nelson","naptan:AtcoCode":"9100NLSN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NEL","source":"npe","train":"yes","wheelchair":"yes","wikidata":"Q1943735","wikipedia":"en:Nelson railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.236243,53.8243669]},"properties":{"name":"Brierfield","naptan:AtcoCode":"9100BRIERFL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BRF","source":"npe","train":"yes","wikipedia":"en:Brierfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0519248,54.609055]},"properties":{"name":"Redcar East","naptan:AtcoCode":"9100REDCARE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RCE","ref:stanox":"15664","ref:tiploc":"REDCARE","uic_ref":"7001851","wikidata":"Q4318568","wikipedia":"en:Redcar East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3761766,50.8186425]},"properties":{"name":"Worthing","naptan:AtcoCode":"9100WORTHNG","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WRH","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q2161323","wikipedia":"en:Worthing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0416453,51.5867174]},"properties":{"fare_zone":"3","line":"Victoria","name":"Blackhorse Road","name:ru":"Блэкхорс-роуд","naptan:AtcoCode":"9100BLCHSRD","network":"London Underground;London Overground","network:subway":"London Overground","network:train":"London Overground","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","ref:crs":"BHO","source":"local knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"London Overground only. Access from platform to train by manual boarding ramp.","wikidata":"Q800541","wikipedia":"en:Blackhorse Road station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1309424,53.4574018]},"properties":{"name":"Denton","naptan:AtcoCode":"9100DNTON","network":"National Rail","note":"One train per week: Fridays at 09:31","public_transport":"station","railway":"station","ref:crs":"DTN","ref:stanox":"32520","ref:tiploc":"DNTON","train":"yes","wikidata":"Q5259635","wikipedia":"en:Denton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1586843,53.4359636]},"properties":{"name":"Reddish South","naptan:AtcoCode":"9100REDISHS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RDS","source":"NPE","train":"yes","wikipedia":"en:Reddish South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0835284,53.3600557]},"properties":{"alt_name":"Middlewood (Lower)","name":"Middlewood","naptan:AtcoCode":"9100MDWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MDL","wikidata":"Q1922273","wikimedia_commons":"Category:Help Category:Middlewood railway station","wikipedia":"en:Middlewood railway station","wikipedia:en":"Middlewood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0028279,53.6468651]},"properties":{"name":"Southport","naptan:AtcoCode":"9100SOUTHPT","network":"National Rail","old_name":"Chapel Street","public_transport":"station","railway":"station","ref:crs":"SOP","source":"npe","wheelchair":"yes","wikidata":"Q650633","wikipedia":"en:Southport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6818864,51.5233325]},"properties":{"addr:city":"Taplow","addr:housename":"Taplow Station","addr:postcode":"SL6 0NU","addr:street":"Station Road","internet_access":"no","name":"Taplow","naptan:AtcoCode":"9100TAPLOW","network":"National Rail;Elizabeth Line","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"TAP","train":"yes","website":"https://tfl.gov.uk/national-rail/stop/910GTAPLOW/taplow-rail-station","wheelchair":"limited","wheelchair:description":"Access from platform","wikidata":"Q4330307","wikipedia":"en:Taplow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4660183,51.426953]},"properties":{"name":"Higham","naptan:AtcoCode":"9100HIGM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HGM","source":"survey","wikidata":"Q1883622","wikipedia":"en:Higham railway station (Kent)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3933519,50.818373]},"properties":{"name":"West Worthing","naptan:AtcoCode":"9100WWRTHNG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WWO","train":"yes","wikidata":"Q2982338","wikipedia":"en:West Worthing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3194153,51.9766523]},"properties":{"name":"Trimley","naptan:AtcoCode":"9100TRIMLEY","network":"National Rail","railway":"station","ref:crs":"TRM","ref:stanox":"49138","ref:tiploc":"TRIMLEY","wheelchair":"yes","wikidata":"Q2889017","wikipedia":"en:Trimley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6964411,51.5124477]},"properties":{"name":"St Andrews Road","naptan:AtcoCode":"9100SADWRD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAR","source":"NPE","train":"yes","wikidata":"Q1922079","wikipedia":"en:St Andrews Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6789317,51.4842773]},"properties":{"name":"Shirehampton","naptan:AtcoCode":"9100SHAMPTN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SHH","source":"NPE","train":"yes","wikidata":"Q2346420","wikipedia":"en:Shirehampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6695158,53.530526]},"properties":{"name":"Pemberton","naptan:AtcoCode":"9100PBRT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PEM","source":"npe","wikipedia":"en:Pemberton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6342351,53.5450582]},"properties":{"name":"Wigan Wallgate","naptan:AtcoCode":"9100WIGANWL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WGW","source:name":"local knowledge","train":"yes","wikidata":"Q7999554","wikipedia":"en:Wigan Wallgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7662872,53.4171892]},"properties":{"name":"Rainhill","naptan:AtcoCode":"9100RHIL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RNH","ref:tiploc":"RHIL","ref:tipoc":"RHIL","source":"npe","wikidata":"Q2634815","wikipedia":"en:Rainhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7091136,53.53016]},"properties":{"name":"Orrell","naptan:AtcoCode":"9100ORRELL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ORR","source":"npe","wikipedia":"en:Orrell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7410475,53.5284097]},"properties":{"name":"Upholland","naptan:AtcoCode":"9100UPHOLND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"UPL","source":"npe","wikipedia":"en:Upholland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7885785,53.5171092]},"properties":{"name":"Rainford","naptan:AtcoCode":"9100RNFD","network":"National Rail","operator":"Northern Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"RNF","source":"npe","wheelchair":"no","wikipedia":"en:Rainford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9019651,53.4866188]},"properties":{"name":"Kirkby","naptan:AtcoCode":"9100KKBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KIR","source":"npe","wikidata":"Q2638933","wikipedia":"en:Kirkby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9562987,53.473813]},"properties":{"name":"Aintree","naptan:AtcoCode":"9100AINTREE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AIN","source":"npe","wheelchair":"yes","wikidata":"Q2184297","wikipedia":"en:Aintree railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0251924,53.4746595]},"properties":{"name":"Waterloo","naptan:AtcoCode":"9100WLOO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WLO","source":"npe","wikidata":"Q2305041","wikipedia":"en:Waterloo railway station (Merseyside)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0708893,53.5543419]},"properties":{"name":"Formby","naptan:AtcoCode":"9100FORMBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FBY","source":"npe","wikidata":"Q2740647","wikipedia":"en:Formby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.04264,53.6018568]},"properties":{"name":"Ainsdale","naptan:AtcoCode":"9100AINSDAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ANS","source":"npe","wikidata":"Q958339","wikipedia":"en:Ainsdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0044303,53.4654002]},"properties":{"alt_name":"Seaforth and Litherland","name":"Seaforth & Litherland","naptan:AtcoCode":"9100SFRTHAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SFL","source":"npe","wheelchair":"yes","wikidata":"Q7440410","wikipedia":"en:Seaforth & Litherland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9946334,53.4529983]},"properties":{"name":"Bootle New Strand","naptan:AtcoCode":"9100BOOTLNS","network":"National Rail","old_name":"Marsh Lane & Strand Road","public_transport":"station","railway":"station","ref:crs":"BNW","source":"npe","wikidata":"Q2183294","wikipedia":"en:Bootle New Strand railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9956678,53.4467]},"properties":{"name":"Bootle Oriel Road","naptan:AtcoCode":"9100BOOTLOR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BOT","source":"npe","wikidata":"Q2149213","wikipedia":"en:Bootle Oriel Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8349663,54.0746566]},"properties":{"name":"Bare Lane","naptan:AtcoCode":"9100BARELA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BAR","source":"npe","wikidata":"Q2533607","wikipedia":"en:Bare Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8685482,54.0703282]},"properties":{"name":"Morecambe","naptan:AtcoCode":"9100MORCAME","naptan:CommonName":"Morecambe Rail Station","naptan:LocalityCode":"E0015996","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MCM","source":"npe","wheelchair":"yes","wikidata":"Q6911230","wikipedia":"en:Morecambe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.912999,54.0333273]},"properties":{"name":"Heysham Port","naptan:AtcoCode":"9100HEYMST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HHB","source":"npe","wikipedia":"en:Heysham Port railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.05584,50.150758]},"properties":{"name":"Falmouth Docks","name:kw":"Porthklos Aberfala","naptan:AtcoCode":"9100FALMTHD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"FAL","train":"yes","wikidata":"Q2296272","wikipedia":"en:Falmouth Docks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0649675,50.1483073]},"properties":{"name":"Falmouth Town","name:kw":"Arwennek Aberfala","naptan:AtcoCode":"9100FALMTHT","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"FMT","train":"yes","wikidata":"Q5432605","wikipedia":"en:Falmouth Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0832589,50.1503799]},"properties":{"fixme":"?sourcing?","name":"Penmere","name:kw":"Pennmeur","naptan:AtcoCode":"9100PENMERE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PNM","train":"yes","wikidata":"Q2675101","wikipedia":"en:Penmere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.1116752,50.1707383]},"properties":{"name":"Penryn","naptan:AtcoCode":"9100PRYN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PYN","source":"npe","toilets":"no","train":"yes","wheelchair":"yes","wikidata":"Q2804226","wikipedia":"en:Penryn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.1119791,50.2166335]},"properties":{"name":"Perranwell","naptan:AtcoCode":"9100PERANWL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PRW","source":"NPE","wheelchair":"yes","wikidata":"Q7169596","wikipedia":"en:Perranwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4095333,50.4266018]},"properties":{"name":"Menheniot","naptan:AtcoCode":"9100MENHENT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MEN","train":"yes","wikidata":"Q1851249","wikipedia":"en:Menheniot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.3084572,50.3942108]},"properties":{"name":"St Germans","naptan:AtcoCode":"9100STGRMNS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SGM","wikidata":"Q2411195","wikipedia":"en:St Germans railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.2091547,50.4072015]},"properties":{"name":"Saltash","naptan:AtcoCode":"9100SASH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"STS","train":"yes","wikidata":"Q2607990","wikipedia":"en:Saltash railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1798923,50.3899651]},"properties":{"name":"Keyham","naptan:AtcoCode":"9100KEYHAM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"KEY","source":"Yahoo imagery","train":"yes","wikidata":"Q2296539","wikipedia":"en:Keyham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3825907,54.5354896]},"properties":{"name":"Warcop","railway":"station","usage":"tourism","wikidata":"Q7968900"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.357978,54.4625907]},"properties":{"end_date":"1962-01-22","name":"Kirkby Stephen East","operator":"Stainmore Railway","public_transport":"station","railway":"station","source":"NPE","start_date":"1861-08-08","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0999836,53.4080707]},"properties":{"electrified":"rail","name":"Leasowe","naptan:AtcoCode":"9100LEASOWE","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"LSW","source":"npe","wikidata":"Q3441748","wikipedia":"en:Leasowe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1132099,53.407278]},"properties":{"electrified":"rail","name":"Moreton","naptan:AtcoCode":"9100MOTO","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"MRT","source":"npe","wikidata":"Q2556146","wikipedia":"en:Moreton railway station (Merseyside)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0841027,53.3864458]},"properties":{"addr:city":"Upton","addr:postcode":"CH43 9RY","addr:street":"Noctorum Avenue","internet_access":"no","name":"Upton","naptan:AtcoCode":"9100UPTON","network":"National Rail","operator":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"UPT","wheelchair":"limited","wikidata":"Q2736977","wikipedia":"en:Upton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1822306,51.5746268]},"properties":{"fare_zone":"6","name":"Romford","naptan:AtcoCode":"9100ROMFORD","network":"National Rail;London Overground;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"RMF","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2299776","wikipedia":"en:Romford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4881271,50.8165151]},"properties":{"name":"Angmering","naptan:AtcoCode":"9100ANGMRNG","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"ANG","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q1932910","wikipedia":"en:Angmering railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2371971,50.8324943]},"properties":{"name":"Southwick","naptan:AtcoCode":"9100STHWICK","network":"National Rail","operator":"Southern","railway":"station","ref:crs":"SWK","wikidata":"Q2497816","wikipedia":"en:Southwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8444546,52.3443845]},"properties":{"name":"Wood End","naptan:AtcoCode":"9100WDND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDE","request_stop":"yes","source":"NPE","wikidata":"Q2519103","wikipedia":"en:Wood End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7163221,52.1944695]},"properties":{"name":"Stratford-upon-Avon","naptan:AtcoCode":"9100SOAV","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAV","train":"yes","wheelchair":"yes","wikidata":"Q1941516","wikipedia":"en:Stratford-upon-Avon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8514322,52.3918816]},"properties":{"name":"Whitlocks End","naptan:AtcoCode":"9100WHLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTE","source":"NPE","west_midlands_fare_zone":"4","wikidata":"Q2133242","wikipedia":"en:Whitlocks End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8654572,52.3800791]},"properties":{"internet_access":"no","name":"Wythall","naptan:AtcoCode":"9100WYTH","network":"National Rail","operator":"West Midlands Railway","public_transport":"station","railway":"station","ref:crs":"WYT","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2171448","wikipedia":"en:Wythall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7839992,52.2914546]},"properties":{"name":"Henley-in-Arden","naptan:AtcoCode":"9100HENLYIA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HNL","wikidata":"Q2185706","wikipedia":"en:Henley-in-Arden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7304498,52.2065538]},"properties":{"name":"Stratford-upon-Avon Parkway","naptan:AtcoCode":"9100SOAVPWY","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"STY","wikidata":"Q7621977","wikipedia":"en:Stratford-upon-Avon Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5890083,50.7787397]},"properties":{"name":"Newton St Cyres","naptan:AtcoCode":"9100NSTCYRE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NTC","request_stop":"yes","source":"NPE","wikidata":"Q7020367","wikipedia":"en:Newton St Cyres railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6467418,50.7833186]},"properties":{"name":"Crediton","naptan:AtcoCode":"9100CREDITN","network":"National Rail","network:wikidata":"Q26334","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CDI","source":"NPE","train":"yes","wikidata":"Q5183802","wikipedia":"en:Crediton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7267107,50.7767481]},"properties":{"name":"Yeoford","naptan:AtcoCode":"9100YEOFORD","network":"National Rail","old_name":"Yeoford Junction","public_transport":"station","railway":"station","ref:crs":"YEO","request_stop":"yes","source":"NPE","wikidata":"Q2754205","wikipedia":"en:Yeoford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7513163,50.8143464]},"properties":{"name":"Copplestone","naptan:AtcoCode":"9100COPLSTN","network":"National Rail","operator":"GWR","platforms":"1","public_transport":"station","railway":"station","ref:crs":"COP","request_stop":"yes","source":"NPE","wikidata":"Q3045063","wikipedia":"en:Copplestone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7761159,50.8317005]},"properties":{"name":"Morchard Road","naptan:AtcoCode":"9100MOCHARD","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"MRD","request_stop":"yes","source":"NPE","wikidata":"Q2019504","wikipedia":"en:Morchard Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.8107134,50.8570052]},"properties":{"name":"Lapford","naptan:AtcoCode":"9100LAPFORD","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"LAP","request_stop":"yes","source":"NPE","wikidata":"Q2708582","wikipedia":"en:Lapford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.8747359,50.8876037]},"properties":{"name":"Eggesford","naptan:AtcoCode":"9100EGGESFD","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"EGG","source":"NPE","wheelchair":"yes","wikidata":"Q2626978","wikipedia":"en:Eggesford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.9054023,50.9359781]},"properties":{"name":"Kings Nympton","naptan:AtcoCode":"9100KNYMPTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KGN","request_stop":"yes","source":"NPE","wikidata":"Q1890866","wikipedia":"en:Kings Nympton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.9827596,50.9966433]},"properties":{"name":"Umberleigh","naptan:AtcoCode":"9100UMBRLGH","network":"National Rail","railway":"station","ref:crs":"UMB","request_stop":"yes","wikidata":"Q2207387","wikipedia":"en:Umberleigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.0245509,51.016229]},"properties":{"name":"Chapelton","naptan:AtcoCode":"9100CHAPLTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CPN","request_stop":"yes","wikidata":"Q2291762","wikipedia":"en:Chapelton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.9964221,50.7323333]},"properties":{"addr:city":"Okehampton","addr:housename":"Okehampton Station","addr:postcode":"EX20 1EJ","addr:street":"Station Road","name":"Okehampton","naptan:AtcoCode":"9100OKHMPTN","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"OKE","source":"NPE","train":"yes","wikidata":"Q7081920","wikipedia":"en:Okehampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1814548,50.4510874]},"properties":{"name":"Bere Ferrers","naptan:AtcoCode":"9100BEREFRS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BFE","source":"NPE","wikidata":"Q2550845","wikipedia":"en:Bere Ferrers railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.2004694,50.4855896]},"properties":{"name":"Bere Alston","naptan:AtcoCode":"9100BEREALS","network":"National Rail","railway":"station","ref:crs":"BAS","wikidata":"Q1967233","wikipedia":"en:Bere Alston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.208583,50.497994]},"properties":{"name":"Calstock","naptan:AtcoCode":"9100CALSTCK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSK","source":"NPE","wheelchair":"yes","wikidata":"Q2615167","wikipedia":"en:Calstock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4813527,50.4451584]},"properties":{"name":"Coombe Junction Halt","naptan:AtcoCode":"9100COOMBE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"COE","source":"NPE","train":"yes","wikidata":"Q2587767","wikipedia":"en:Coombe Junction Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4633482,50.4228214]},"properties":{"name":"St Keyne Wishing Well Halt","naptan:AtcoCode":"9100STKEYNE","network":"National Rail","old_name":"St Keyne","public_transport":"station","railway":"station","ref:crs":"SKN","request_stop":"yes","source:old_name":"npe","wikidata":"Q7593897","wikipedia":"en:St Keyne Wishing Well Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4664151,50.4056895]},"properties":{"name":"Causeland","naptan:AtcoCode":"9100CAUSLND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CAU","request_stop":"yes","source:name":"npe","wikidata":"Q2024573","wikipedia":"en:Causeland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4563912,50.3595613]},"properties":{"internet_access":"yes","name":"Looe","naptan:AtcoCode":"9100LOOE","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway (GWR)","public_transport":"station","railway":"station","ref:crs":"LOO","source":"NPE","train":"yes","wikidata":"Q9298791","wikipedia":"en:Looe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9671209,50.8535025]},"properties":{"name":"Warblington","naptan:AtcoCode":"9100WRBLNGT","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WBL","wheelchair":"yes","wikidata":"Q129721","wikipedia":"en:Warblington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1822374,52.8438171]},"properties":{"name":"Rushcliffe Halt","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7380777","wikipedia":"en:Rushcliffe Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3898649,52.5681509]},"properties":{"name":"Wansford (NVR)","naptan:AtcoCode":"940GZZNVWSF","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism","wikidata":"Q7968086","wikipedia":"en:Wansford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2800883,52.5600241]},"properties":{"name":"Orton Mere (NVR)","naptan:AtcoCode":"940GZZNVOTM","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism","wikidata":"Q7105095","wikipedia":"en:Orton Mere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9602545,50.6099662]},"properties":{"addr:postcode":"BH19 1HB","name":"Swanage","naptan:AtcoCode":"940GZZSRSWN","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q7653554"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1701007,50.3785212]},"properties":{"name":"Devonport","naptan:AtcoCode":"9100DEVNPRT","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DPT","train":"yes","wikidata":"Q1970495","wikipedia":"en:Devonport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1760432,50.3823684]},"properties":{"name":"Dockyard","naptan:AtcoCode":"9100DOCKYDP","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DOC","request_stop":"yes","train":"yes","wheelchair":"no","wikidata":"Q2705589","wikipedia":"en:Dockyard railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0030416,54.7431657]},"properties":{"name":"Stanhope","naptan:AtcoCode":"910GSHPE","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q106437994"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1476057,51.4527671]},"properties":{"fare_zone":"2;3","line":"Northern","name":"Clapham South","name:ru":"Клэпхем-Саут","naptan:AtcoCode":"940GZZLUCPS","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1095083","wikipedia":"en:Clapham South tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1528977,51.4433857]},"properties":{"fare_zone":"3","line":"Northern","name":"Balham","naptan:AtcoCode":"940GZZLUBLM","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"LU station not accessible. However, NR station is step-free to platform via the LU entrance.","wikipedia":"en:Balham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1682905,51.4277387]},"properties":{"air_conditioning":"no","fare_zone":"3","internet_access":"wlan","internet_access:fee":"no","line":"Northern","name":"Tooting Broadway","name:ru":"Тутинг-Бродвей","naptan:AtcoCode":"940GZZLUTBY","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q685100","wikipedia":"en:Tooting Broadway tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1778626,51.4182747]},"properties":{"fare_zone":"3","line":"Northern","name":"Colliers Wood","naptan:AtcoCode":"940GZZLUCSD","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1109527","wikipedia":"en:Colliers Wood tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1926457,51.4151759]},"properties":{"addr:city":"London","addr:street":"Morden Road","fare_zone":"3;4","internet_access":"yes","line":"Northern","name":"South Wimbledon","naptan:AtcoCode":"940GZZLUSWN","network":"London Underground","operator":"TFL","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1974760","wikipedia":"en:South Wimbledon tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8155144,50.8391034]},"properties":{"name":"Fishbourne","naptan:AtcoCode":"9100FSHBORN","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"FSB","wikidata":"Q3245103","wikipedia":"en:Fishbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3142945,54.1745371]},"properties":{"addr:city":"Hunmanby","addr:postcode":"YO14 0LR","length":"923","name":"Hunmanby","naptan:AtcoCode":"9100HUNMNBY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HUB","ref:tiploc":"HUNMNBY","source":"npe","train":"yes","wikipedia":"en:Hunmanby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0454097,51.5763203]},"properties":{"fare_zone":"4","line":"Central","name":"Redbridge","naptan:AtcoCode":"940GZZLURBG","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1974732","wikipedia":"en:Redbridge tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5226051,50.7309872]},"properties":{"name":"St James' Park","naptan:AtcoCode":"9100STJAMSP","network":"National Rail","network:wikidata":"Q26334","operator":"First Great Western","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SJP","source":"NPE","train":"yes","wheelchair":"no","wikidata":"Q1102571","wikipedia":"en:St James Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.950017,53.4448108]},"properties":{"addr:city":"Glossop","addr:street":"Norfolk Street","name":"Glossop","naptan:AtcoCode":"9100GLSP","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GLO","wheelchair":"yes","wikidata":"Q2189195","wikipedia":"en:Glossop railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9705971,53.4493243]},"properties":{"name":"Dinting","naptan:AtcoCode":"9100DNTG","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"DTG","wheelchair":"yes","wikidata":"Q2470567","wikipedia":"en:Dinting railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0163275,53.4408091]},"properties":{"name":"Broadbottom","naptan:AtcoCode":"9100BRBM","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BDB","wikidata":"Q2634328","wikipedia":"en:Broadbottom railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0399051,53.445183]},"properties":{"name":"Hattersley","naptan:AtcoCode":"9100HATRSLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HTY","wikidata":"Q2196766","wikipedia":"en:Hattersley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0558149,53.4523506]},"properties":{"name":"Godley","naptan:AtcoCode":"9100GODLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GDL","wheelchair":"no","wikidata":"Q2288400","wikipedia":"en:Godley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0928676,53.4291998]},"properties":{"name":"Woodley","naptan:AtcoCode":"9100WOODLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WLY","source":"NPE","wikipedia":"en:Woodley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0765086,53.3960432]},"properties":{"name":"Rose Hill Marple","naptan:AtcoCode":"9100ROHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RSH","source":"NPE","train":"yes","wikipedia":"en:Rose Hill Marple railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0850769,53.4513383]},"properties":{"name":"Hyde Central","naptan:AtcoCode":"9100HYDEC","network":"National Rail","old_name":"Hyde","public_transport":"station","railway":"station","ref:crs":"HYC","source":"NPE","wikidata":"Q2623426","wikipedia":"en:Hyde Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3039992,51.3924111]},"properties":{"addr:city":"Surbiton","addr:postcode":"KT6 4PE","addr:street":"Victoria Road","baby_feeding":"no","internet_access":"no","name":"Surbiton","naptan:AtcoCode":"9100SURBITN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SUR","website":"https://www.nationalrail.co.uk/stations/SUR/details.html","wheelchair":"yes","wikidata":"Q2526353","wikimedia_commons":"File:Surbiton station.jpg","wikipedia":"en:Surbiton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1367025,51.4022099]},"properties":{"name":"Aldermaston","naptan:AtcoCode":"9100ALDMSTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AMT","source":"NPE","wikidata":"Q2148392","wikipedia":"en:Aldermaston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1782912,51.3960664]},"properties":{"name":"Midgham","naptan:AtcoCode":"9100MIDGHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MDG","source":"NPE","wikidata":"Q1984950","wikipedia":"en:Midgham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3068476,51.3986841]},"properties":{"name":"Newbury Racecourse","naptan:AtcoCode":"9100NEWBRYR","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"NRC","source":"NPE","wheelchair":"limited","wikidata":"Q2460953","wikipedia":"en:Newbury Racecourse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4471521,51.1116892]},"properties":{"name":"Bruton","naptan:AtcoCode":"9100BRUTON","network":"National Rail","railway":"station","ref:crs":"BRU","source":"NPE","wikidata":"Q585326","wikipedia":"en:Bruton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5222813,51.0998987]},"properties":{"name":"Castle Cary","naptan:AtcoCode":"9100CCARY","network":"National Rail","railway":"station","ref:crs":"CLC","source":"NPE","wikidata":"Q922144","wikipedia":"en:Castle Cary railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.144607,51.3801725]},"properties":{"name":"Melksham","naptan:AtcoCode":"9100MELKSHM","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"MKM","source":"NPE","wheelchair":"yes","wikidata":"Q2264906","wikipedia":"en:Melksham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4040132,52.777345]},"properties":{"name":"Worstead","naptan:AtcoCode":"9100WORSTED","network":"National Rail","railway":"station","ref:crs":"WRT","source":"NPE","wikidata":"Q248736","wikipedia":"en:Worstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4310966,50.6484198]},"properties":{"name":"Lympstone Village","naptan:AtcoCode":"9100LYMPSTN","network":"National Rail","old_name":"Lympstone","public_transport":"station","railway":"station","ref:crs":"LYM","source":"npe","wheelchair":"yes","wikidata":"Q3090642","wikipedia":"en:Lympstone Village railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2396076,51.3948747]},"properties":{"name":"Motspur Park","naptan:AtcoCode":"9100MOTSPRP","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"MOT","ref:stanox":"87301","toilets:wheelchair":"no","wheelchair":"no","wikidata":"Q2303311","wikipedia":"en:Motspur Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0495079,52.524465]},"properties":{"name":"Dudley Port","naptan:AtcoCode":"9100DUDLPT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DDP","source":"Survey","west_midlands_fare_zone":"4","wikidata":"Q1980286","wikipedia":"en:Dudley Port railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2055176,51.4033264]},"properties":{"name":"South Merton","naptan:AtcoCode":"9100SMERTON","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"SMO","wheelchair":"no","wikidata":"Q3951461","wikipedia":"en:South Merton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5987661,51.4684317]},"properties":{"name":"Redland","naptan:AtcoCode":"9100REDLAND","network":"National Rail","railway":"station","ref:crs":"RDA","source":"NPE","wikidata":"Q603576","wikipedia":"en:Redland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6267285,51.556377]},"properties":{"addr:city":"Pilning","addr:housename":"Pilning Station","addr:postcode":"BS35 4JT","addr:street":"Station Road","internet_access":"no","name":"Pilning","naptan:AtcoCode":"9100PILNING","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"PIL","source":"NPE","train":"yes","website":"http://www.nationalrail.co.uk/stations/pil/details.aspx","wheelchair":"limited","wikidata":"Q7194244","wikipedia":"en:Pilning railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6545570000000001,52.0181089]},"properties":{"name":"Woburn Sands","naptan:AtcoCode":"9100WOBURNS","network":"National Rail","operator":"West Midlands Railways","postal_code":"MK17 8UD","public_transport":"station","railway":"station","ref:crs":"WOB","source":"NPE","wikidata":"Q2253624","wikipedia":"en:Woburn Sands railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6962178,52.0042693]},"properties":{"name":"Bow Brickhill","naptan:AtcoCode":"9100BOWBRKH","network":"National Rail","postal_code":"MK7 8LA","public_transport":"station","railway":"station","ref:crs":"BWB","source":"NPE","wikidata":"Q2144435","wikipedia":"en:Bow Brickhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.8323694,51.2316264]},"properties":{"addr:country":"GB","name":"Lynmouth Bay Railway Station","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes","wikidata":"Q18619254","wikipedia":"en:Lynmouth Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.466093,50.6485094]},"properties":{"name":"Upwey","naptan:AtcoCode":"9100UPWEY","network":"National Rail","old_name":"Upwey Junction","railway":"station","ref:crs":"UPW","source":"NPE","wikidata":"Q2522736","wikipedia":"en:Upwey railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.569663,50.7802255]},"properties":{"name":"Maiden Newton","naptan:AtcoCode":"9100MDNNWTN","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MDN","train":"yes","wikidata":"Q2466692","wikipedia":"en:Maiden Newton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5729619,50.866344]},"properties":{"name":"Chetnole","naptan:AtcoCode":"9100CHETNOL","network":"National Rail","railway":"station","ref:crs":"CNO","request_stop":"yes","source":"NPE","wikidata":"Q2793642","wikipedia":"en:Chetnole railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5738017,50.8957019]},"properties":{"name":"Yetminster","naptan:AtcoCode":"9100YTMNSTR","network":"National Rail","railway":"station","ref:crs":"YET","request_stop":"yes","source":"NPE","wikidata":"Q1870455","wikipedia":"en:Yetminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5791402,50.9106779]},"properties":{"name":"Thornford","naptan:AtcoCode":"9100THFORD","network":"National Rail","railway":"station","ref:crs":"THO","request_stop":"yes","source":"NPE","wikidata":"Q2365529","wikipedia":"en:Thornford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.61304,50.9446866]},"properties":{"name":"Yeovil Pen Mill","naptan:AtcoCode":"9100YOVILPM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"YVP","source":"NPE","train":"yes","wikidata":"Q2213897","wikipedia":"en:Yeovil Pen Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1778063,52.4978134]},"properties":{"addr:postcode":"PE15 0HG","addr:street":"Station Road","name":"Manea","naptan:AtcoCode":"9100MANEA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MNE","source":"OS_OpenData_StreetView","wikidata":"Q2486636","wikipedia":"en:Manea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2388805,51.5802174]},"properties":{"name":"Hendon","naptan:AtcoCode":"9100HDON","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"HEN","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step-free southbound only. Access from platform to train by manual boarding ramp.","wikidata":"Q2047351","wikipedia":"en:Hendon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7284148,51.5331544]},"properties":{"name":"Furze Platt","naptan:AtcoCode":"9100FURZEP","network":"National Rail","note":"this is really a classic halt","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"FZP","source":"NPE","wikidata":"Q2099123","wikipedia":"en:Furze Platt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3170888,51.6853254]},"properties":{"name":"Radlett","naptan:AtcoCode":"9100RADLETT","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"RDT","source":"NPE","wikidata":"Q1834590","wikipedia":"en:Radlett railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6204438,51.1701959]},"properties":{"name":"Grateley","naptan:AtcoCode":"9100GRATELY","network":"National Rail","railway":"station","ref:crs":"GRT","source":"NPE","wikidata":"Q13590986","wikipedia":"en:Grateley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7847306,50.7383709]},"properties":{"name":"Christchurch","naptan:AtcoCode":"9100CHRISTC","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CHR","source":"NPE","train":"yes","wikidata":"Q5109112","wikipedia":"en:Christchurch railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4114787,50.8174419]},"properties":{"name":"Durrington-on-Sea","naptan:AtcoCode":"9100DRNGTOS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"DUR","toilets:wheelchair":"no","train":"yes","wheelchair":"yes","wikidata":"Q2654300","wikipedia":"en:Durrington-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6162192,55.2411444]},"properties":{"name":"Widdrington","naptan:AtcoCode":"9100WDRNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDD","source":"NPE","wheelchair":"yes","wikidata":"Q2572775","wikipedia":"en:Widdrington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0457926,51.1134108]},"properties":{"name":"Medstead and Four Marks","naptan:AtcoCode":"940GZZMHMED","operator":"Watercress Line","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes","wikidata":"Q6807304"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4764729,51.4308406]},"properties":{"name":"Bitton","naptan:AtcoCode":"940GZZAVBIT","railway":"station","usage":"tourism","wheelchair":"yes","wikidata":"Q4919146"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.2195227,50.5166278]},"properties":{"internet_access":"wlan","internet_access:fee":"no","name":"Gunnislake","naptan:AtcoCode":"9100GUNISLK","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"GSL","source":"NPE;local knowledge","wikidata":"Q2734942","wikipedia":"en:Gunnislake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9740018,54.1779678]},"properties":{"alt_name":"Cark","name":"Cark and Cartmel","naptan:AtcoCode":"9100CARK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CAK","wikidata":"Q2229171","wikipedia":"en:Cark & Cartmel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1788365,54.154226]},"properties":{"alt_name":"Dalton-in-Furness","name":"Dalton","naptan:AtcoCode":"9100DALTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DLT","source":"npe","wikidata":"Q3152097","wikipedia":"en:Dalton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2159351,54.2585965]},"properties":{"name":"Foxfield","naptan:AtcoCode":"9100FOXFILD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FOX","source":"npe","train":"yes","wikidata":"Q2206984","wikipedia":"en:Foxfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3346818,54.2260891]},"properties":{"name":"Silecroft","naptan:AtcoCode":"9100SILCRFT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SIC","request_stop":"yes","source":"npe","train":"yes","wikidata":"Q2587065","wikipedia":"en:Silecroft railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4851711,54.3962884]},"properties":{"name":"Seascale","naptan:AtcoCode":"9100SEASCAL","network":"National Rail","public_transport":"stop_position","railway":"station","ref:crs":"SSC","source":"npe","train":"yes","wikidata":"Q2605327","wikipedia":"en:Seascale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5656239,54.4562273]},"properties":{"name":"Nethertown","naptan:AtcoCode":"9100NETHRTN","network":"National Rail","public_transport":"stop_position","railway":"station","ref:crs":"NRT","request_stop":"yes","source":"npe","train":"yes","wikidata":"Q1901274","wikipedia":"en:Nethertown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5655496,54.6135197]},"properties":{"name":"Harrington","naptan:AtcoCode":"9100HNGT","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"HRR","source":"npe","wikipedia":"en:Harrington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5205306,54.6899875]},"properties":{"name":"Flimby","naptan:AtcoCode":"9100FLIMBY","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"FLM","request_stop":"yes","source":"npe","train":"yes","wikidata":"Q2075537","wikipedia":"en:Flimby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9885758,54.846165]},"properties":{"name":"Dalston","naptan:AtcoCode":"9100DALSTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DLS","source":"npe","train":"yes","wikidata":"Q5211644","wikipedia":"en:Dalston railway station (Cumbria)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2218222,53.069977]},"properties":{"name":"Newstead","naptan:AtcoCode":"9100NWSTEAD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NSD","source":"NPE","train":"yes","wikidata":"Q2700960","wikipedia":"en:Newstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5343584,52.4474224]},"properties":{"name":"Lakenheath","naptan:AtcoCode":"9100LAKNHTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAK","request_stop":"yes","source":"NPE","wikidata":"Q2579323","wikipedia":"en:Lakenheath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9310007,53.5064588]},"properties":{"name":"Maghull","naptan:AtcoCode":"9100MAGHULL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MAG","source":"NPE","wikipedia":"en:Maghull railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6817622,51.6486316]},"properties":{"name":"North Fambridge","naptan:AtcoCode":"9100FAMBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NFA","wikidata":"Q2611356","wikipedia":"en:North Fambridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4331815,50.8176931]},"properties":{"name":"Goring-by-Sea","naptan:AtcoCode":"9100GORNGBS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"GBS","train":"yes","wheelchair":"yes","wikidata":"Q2789351","wikipedia":"en:Goring-by-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9640258,53.7393032]},"properties":{"name":"Lytham","naptan:AtcoCode":"9100LYTHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LTM","source":"npe","source:name":"local knowledge","start_date":"1863","wheelchair":"yes","wikipedia":"en:Lytham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.993513,53.741637]},"properties":{"name":"Ansdell & Fairhaven","naptan:AtcoCode":"9100ANSDELL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AFV","source":"npe","source:name":"local knowledge","wheelchair":"yes","wikipedia":"en:Ansdell & Fairhaven railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0501715,53.7769901]},"properties":{"name":"Squires Gate","naptan:AtcoCode":"9100SQUIRES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SQU","source":"npe","wheelchair":"no","wikipedia":"en:Squires Gate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3551084,50.821592]},"properties":{"name":"East Worthing","naptan:AtcoCode":"9100EWRTHNG","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"EWR","train":"yes","wikidata":"Q2716006","wikipedia":"en:East Worthing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.323201,50.8270354]},"properties":{"name":"Lancing","naptan:AtcoCode":"9100LNCG","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"LAC","train":"yes","wikidata":"Q2308589","wikipedia":"en:Lancing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2714448,50.8343756]},"properties":{"name":"Shoreham-by-Sea","naptan:AtcoCode":"9100SHRHMBS","network":"National Rail","operator":"Southern","railway":"station","ref:crs":"SSE","wikidata":"Q2674041","wikipedia":"en:Shoreham-by-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2195601,50.8343013]},"properties":{"name":"Fishersgate","naptan:AtcoCode":"9100FSHRSGT","network":"National Rail","note":"might only be a halt, needs checking","operator":"Southern","railway":"station","ref:crs":"FSG","wikidata":"Q2193586","wikipedia":"en:Fishersgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9739215,54.2696333]},"properties":{"name":"Newby Bridge Halt","naptan:AtcoCode":"940GZZLHNBR","public_transport":"station","railway":"station","source":"npe","usage":"tourism","wikidata":"Q7017288"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0000168,54.2497682]},"properties":{"name":"Haverthwaite","naptan:AtcoCode":"940GZZLHHVT","public_transport":"station","railway":"station","source":"npe","usage":"tourism","wikidata":"Q5683876"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9653832,53.4608456]},"properties":{"name":"Hadfield","naptan:AtcoCode":"9100HADFILD","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HDF","source":"npe","wikidata":"Q1926252","wikipedia":"en:Hadfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5956683,51.8390134]},"properties":{"name":"White Notley","naptan:AtcoCode":"9100WNOTLEY","network":"National Rail","railway":"station","ref:crs":"WNY","wikidata":"Q1817277","wikipedia":"en:White Notley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5779203,51.852306]},"properties":{"name":"Cressing","naptan:AtcoCode":"9100CRESING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CES","train":"yes","wikidata":"Q1886114","wikipedia":"en:Cressing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5681965,51.8692939]},"properties":{"addr:postcode":"CM77 8YH","addr:street":"Chapel Hill Retail Park","name":"Braintree Freeport","naptan:AtcoCode":"9100BRAINFP","network":"National Rail","note":"FIXME location approximate, judged from landsat","public_transport":"station","railway":"station","ref:crs":"BTP","train":"yes","wheelchair":"yes","wikidata":"Q2540597","wikipedia":"en:Braintree Freeport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6002479,51.5894866]},"properties":{"name":"Rayleigh","naptan:AtcoCode":"9100RAYLEGH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RLG","source":"NPE","wheelchair":"yes","wheelchair:description":"Book in advance. Access to train via ramp. Use entrance from Station Road for trains to London and booking hall. Use entrance from The Approach for trains to Southend.","wikidata":"Q2290604","wikipedia":"en:Rayleigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7021425,51.5816749]},"properties":{"name":"Rochford","naptan:AtcoCode":"9100ROCHFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RFD","source":"NPE","wikidata":"Q2859251","wikipedia":"en:Rochford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.856515,52.89681]},"properties":{"name":"Uttoxeter","naptan:AtcoCode":"9100UTOXETR","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"UTT","wikidata":"Q2429181","wikipedia":"en:Uttoxeter railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.066925,52.9678303]},"properties":{"name":"Blythe Bridge","naptan:AtcoCode":"9100BLYBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BYB","source":"GPS waypoint","wikidata":"Q2525068","wikipedia":"en:Blythe Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1372966,52.9900417]},"properties":{"internet_access":"no","name":"Longton","naptan:AtcoCode":"9100LNTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LGN","source":"NPE","wikidata":"Q2096431","wikipedia":"en:Longton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7498157,52.2449168]},"properties":{"name":"Bearley","naptan:AtcoCode":"9100BEARLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BER","request_stop":"yes","source":"NPE","wikidata":"Q2235875","wikipedia":"en:Bearley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6963369,52.2772189]},"properties":{"name":"Claverdon","naptan:AtcoCode":"9100CLAVRDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLV","request_stop":"yes","source":"NPE","wikidata":"Q4349134","wikipedia":"en:Claverdon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4186178,55.0009858]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0876094,51.5256284]},"properties":{"addr:city":"London","addr:street":"Old Street","fare_zone":"1","line":"Northern City;Northern","name":"Old Street","name:da":"Old Street Station","name:ru":"Олд-стрит","naptan:AtcoCode":"9100OLDST","network":"National Rail;London Underground","network:subway":"London Underground","network:train":"National Rail","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"OLD","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wheelchair:description":"Steps between lower Northern & higher National Rail station levels. No Lifts.","wikidata":"Q801299","wikipedia":"en:Old Street station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3656264,52.604156]},"properties":{"name":"Downham Market","naptan:AtcoCode":"9100DOWNHAM","network":"National Rail","railway":"station","ref:crs":"DOW","wikidata":"Q980263","wikipedia":"en:Downham Market railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4056223,54.2799474]},"properties":{"name":"Scarborough","naptan:AtcoCode":"9100SCARBRO","network":"National Rail","operator":"First Transpennine Express","public_transport":"station","railway":"station","ref:crs":"SCA","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikipedia":"en:Scarborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1149086,50.6930546]},"properties":{"name":"Wareham","naptan:AtcoCode":"9100WARHAM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WRM","train":"yes","wikidata":"Q2754705","wikipedia":"en:Wareham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5041757,52.0917922]},"properties":{"name":"Kempston Hardwick","naptan:AtcoCode":"9100KMPSTNH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KMH","source":"NPE","wikidata":"Q2903851","wikipedia":"en:Kempston Hardwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5323915,52.0542365]},"properties":{"name":"Millbrook","naptan:AtcoCode":"9100MLBRKB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MLB","source":"NPE","wikidata":"Q777709","wikipedia":"en:Millbrook railway station (Bedfordshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0733389,53.3296559]},"properties":{"addr:city":"Heswall","addr:postcode":"CH60 1XQ","addr:street":"Brimstage Road","internet_access":"no","name":"Heswall","naptan:AtcoCode":"9100HESWALL","network":"National Rail","operator":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"HSW","source":"NPE","wheelchair":"yes","wikidata":"Q3418506","wikipedia":"en:Heswall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2107897,52.9413671]},"properties":{"name":"Sheringham","naptan:AtcoCode":"9100SHRGHAM","network":"National Rail","network:wikidata":"Q26334","operator":"Greater Anglia","owner":"Network Rail","public_transport":"station","railway":"station","ref:crs":"SHM","source:ref":"ATOC","train":"yes","wikipedia":"en:Sheringham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2456974,52.9355246]},"properties":{"name":"West Runton","naptan:AtcoCode":"9100WRUNTON","network":"National Rail","railway":"station","ref:crs":"WRN","wikidata":"Q217353","wikipedia":"en:West Runton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2916476,52.9300536]},"properties":{"name":"Cromer","naptan:AtcoCode":"9100CMER","network":"National Rail","old_name":"Cromer Beach","railway":"station","ref:crs":"CMR","wikidata":"Q1950073","wikipedia":"en:Cromer railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0177978,51.409198]},"properties":{"name":"Bromley North","naptan:AtcoCode":"9100BROMLYN","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BMN","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wikidata":"Q2367801","wikipedia":"en:Bromley North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2329024,53.7975092]},"properties":{"name":"Sherburn-in-Elmet","naptan:AtcoCode":"9100SHBN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SIE","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q1881964","wikipedia":"en:Sherburn-in-Elmet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.8307554,50.4186675]},"properties":{"name":"Roche","naptan:AtcoCode":"9100RCHE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ROC","request_stop":"yes","wikidata":"Q1832838","wikipedia":"en:Roche railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7918183,50.4002195]},"properties":{"fixme":"?active?","name":"Bugle","naptan:AtcoCode":"9100BUGLE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BGL","request_stop":"yes","source":"NPE","tracks":"1","train":"yes","usage":"branch","wikidata":"Q2294931","wikipedia":"en:Bugle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7484178,50.3903538]},"properties":{"name":"Luxulyan","naptan:AtcoCode":"9100LUXULYN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LUX","request_stop":"yes","source":"NPE","wikidata":"Q647554","wikipedia":"en:Luxulyan railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.941332,50.3987461]},"properties":{"name":"St. Columb Road","naptan:AtcoCode":"9100STCLMBR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SCR","request_stop":"yes","source":"NPE","wikidata":"Q2117314","wikipedia":"en:St Columb Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1327187,50.8189252]},"properties":{"name":"Aquarium","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1111537,50.8145411]},"properties":{"name":"Black Rock","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3166378,51.5815255]},"properties":{"fare_zone":"4","line":"Bakerloo","name":"Kenton","naptan:AtcoCode":"9100KTON","network":"London Underground;London Overground","network:subway":"London Overground","network:train":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"KNT","ref:stanox":"72008","ref:tiploc":"KTON","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q801001","wikipedia":"en:Kenton station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7567947,51.3618635]},"properties":{"name":"Kemsley Down","network":"Sittingbourne and Kemsley Light Railway","operator":"Sittingbourne and Kemsley Light Railway","public_transport":"station","railway":"station","tourism":"heritage_railway","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2151579,53.4221262]},"properties":{"name":"Burnage","naptan:AtcoCode":"9100BAGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BNA","wikipedia":"en:Burnage railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9284688,54.3191529]},"properties":{"name":"Redmire","naptan:AtcoCode":"940GZZWDRED","network":"Wensleydale Railway","operator":"Wensleydale Railway Association","public_transport":"station","railway":"station","source":"OS OpenData StreetView","source:name":"NPE","train":"yes","usage":"tourism","wikidata":"Q7306097"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8766558,51.4985546]},"properties":{"name":"Wargrave","naptan:AtcoCode":"9100WARGRAV","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"WGV","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2081278","wikipedia":"en:Wargrave railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1180869,52.5495767]},"properties":{"name":"Whittlesea","naptan:AtcoCode":"9100WHTLSEA","network":"National Rail","note":"station name really _is_ spelled differently friom the town!","public_transport":"station","railway":"station","ref:crs":"WLE","source":"survey","wikidata":"Q2123705","wikipedia":"en:Whittlesea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6131717,54.9740058]},"properties":{"light_rail":"yes","name":"Monument","naptan:AtcoCode":"940GZZTWMMT","network":"Tyne and Wear Metro","operator":"Nexus","platforms":"4","public_transport":"station","railway":"station","station":"light_rail","train":"yes","wheelchair":"yes","wikidata":"Q6906821","wikipedia":"en:Monument Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8443329,52.6392159]},"properties":{"name":"Shenstone","naptan:AtcoCode":"9100SHNS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SEN","wikidata":"Q2469188","wikipedia":"en:Shenstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6823404,52.864141]},"properties":{"name":"Tutbury and Hatton","naptan:AtcoCode":"9100TUTBURY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TUT","wikidata":"Q2564949","wikipedia":"en:Tutbury and Hatton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6779534,54.6572212]},"properties":{"name":"Bishop Auckland","naptan:AtcoCode":"9100BSAUKLD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BIA","train":"yes","wikidata":"Q2347286","wikipedia":"en:Bishop Auckland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6367101,54.6261932]},"properties":{"name":"Shildon","naptan:AtcoCode":"9100SHDN","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SHD","source":"NPE","wikidata":"Q2203193","wikipedia":"en:Shildon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.467126,54.5149831]},"properties":{"name":"Dinsdale","naptan:AtcoCode":"9100DINSDAL","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"DND","source":"NPE","wikidata":"Q1868098","wikipedia":"en:Dinsdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1038974,52.5703742]},"properties":{"name":"Wymondham Abbey","naptan:AtcoCode":"940GZZMNWYN","public_transport":"station","railway":"station","tourism":"preserved_railway","train":"yes","usage":"tourism","wikidata":"Q8039987","wikipedia":"en:Wymondham Abbey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0518284,52.5910486]},"properties":{"name":"Kimberley Park","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q6409843"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0246114,52.610697]},"properties":{"name":"Hardingham","railway":"station","usage":"tourism","wikidata":"Q5656160"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0006859,52.6249314]},"properties":{"name":"Thuxton","operator":"Mid-Norfolk Railway","platforms":"2","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7799504"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9596864,52.6523643]},"properties":{"name":"Yaxham","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q8050492"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9476376,52.6789805]},"properties":{"addr:postcode":"NR19 1DF","name":"Dereham","naptan:AtcoCode":"940GZZMNDER","operator":"Mid-Norfolk Railway","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q5261757","wikipedia":"en:Dereham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.020883,53.3881969]},"properties":{"name":"Birkenhead Central","naptan:AtcoCode":"9100BRKNHDC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BKC","wikipedia":"en:Birkenhead Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0162757,53.3833042]},"properties":{"name":"Green Lane","naptan:AtcoCode":"9100GNLN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GNL","wikidata":"Q2253816","wikipedia":"en:Green Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3804741,53.0413872]},"properties":{"name":"Ruskington","naptan:AtcoCode":"9100RSKNGTN","network":"National Rail","railway":"station","ref:crs":"RKT","source":"Bing","wikidata":"Q7380966","wikipedia":"en:Ruskington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.363387,51.0201404]},"properties":{"name":"Stonegate","naptan:AtcoCode":"9100SNGT","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SOG","source":"NPE","train":"yes","wikidata":"Q2192587","wikipedia":"en:Stonegate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8471677,50.8428556]},"properties":{"name":"Bosham","naptan:AtcoCode":"9100BOSHAM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BOH","source":"NPE","wikidata":"Q2591345","wikipedia":"en:Bosham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8839188,50.8461502]},"properties":{"name":"Nutbourne","naptan:AtcoCode":"9100NUTBORN","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"NUT","source":"NPE","wikidata":"Q4404768","wikipedia":"en:Nutbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2603854,51.1825114]},"properties":{"name":"Micheldever","naptan:AtcoCode":"9100MCHLDVR","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MIC","source":"NPE","wheelchair":"limited","wikidata":"Q633826","wikipedia":"en:Micheldever railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2599752,51.2541369]},"properties":{"name":"Overton","naptan:AtcoCode":"9100OVTN","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"OVR","source":"NPE","wheelchair":"yes","wikidata":"Q2197986","wikipedia":"en:Overton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3690152,50.9587312]},"properties":{"name":"Monks Brook Halt","public_transport":"station","railway":"station","tourism":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3844999,52.8168567]},"properties":{"name":"North Walsham","naptan:AtcoCode":"9100NWALSHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NWA","source":"NPE","wikidata":"Q217655","wikipedia":"en:North Walsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1239491,51.530609]},"properties":{"fare_zone":"1","line":"Metropolitan;Northern;Piccadilly;Circle;Victoria;Hammersmith & City","name":"King's Cross St Pancras","name:he":"תחנת הרכבת התחתית קינגס קרוס סיינט פנקראס","name:ru":"Кингс-Кросс Сент-Панкрасс","naptan:AtcoCode":"940GZZLUKSX","network":"London Underground","note":"Official name: King's Cross St Pancras Underground Station","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q826120","wikipedia":"en:King's Cross St Pancras tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1959496,53.0384983]},"properties":{"name":"Hucknall","naptan:AtcoCode":"9100HUCKNAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HKN","source":"knowledge","train":"yes","wikidata":"Q2393008","wikipedia":"en:Hucknall station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2017516,53.1634635]},"properties":{"name":"Mansfield Woodhouse","naptan:AtcoCode":"9100MFLDWSE","network":"National Rail","operator":"East Midlands Railway","platforms":"3","public_transport":"station","railway":"station","ref:crs":"MSW","source:operator":"local_knowledge","train":"yes","wikidata":"Q2656994","wikipedia":"en:Mansfield Woodhouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.605539,51.4480613]},"properties":{"name":"SS Great Britain","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2744379,54.3953088]},"properties":{"name":"Dalegarth for Boot","naptan:AtcoCode":"940GZZREDLG","old_name":"Eskdale (Dalegarth)","operator":"Ravenglass & Eskdale Railway","platforms":"2","public_transport":"station","railway":"station","source":"OS7","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q5210738","wikipedia":"en:Dalegarth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3034231,54.3923259]},"properties":{"name":"Fisherground Halt","operator":"Ravenglass & Eskdale Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q5454871","wikipedia":"en:Fisherground railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3177092,54.386818]},"properties":{"alt_name":"The Green","name":"Eskdale Green","naptan:AtcoCode":"940GZZREESK","operator":"Ravenglass & Eskdale Railway","public_transport":"station","railway":"station","source":"OS7","source:name":"knowledge","usage":"tourism","wikidata":"Q7738219","wikipedia":"en:The Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3300669,54.3879142]},"properties":{"name":"Irton Road","naptan:AtcoCode":"940GZZREIRT","operator":"Ravenglass & Eskdale Railway","platforms":"2","public_transport":"station","railway":"station","source":"OS7","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q6073966","wikipedia":"en:Irton Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4081846,54.3558349]},"properties":{"name":"Ravenglass (R&ER)","naptan:AtcoCode":"940GZZRERVG","railway":"station","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q7296448","wikipedia":"en:Ravenglass (R&ER) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8933889,53.4065083]},"properties":{"name":"Broad Green","naptan:AtcoCode":"9100BROADGR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BGE","ref:tiploc":"BROADGR","wikidata":"Q2629741","wikipedia":"en:Broad Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3910625,53.1389295]},"properties":{"name":"Metheringham","naptan:AtcoCode":"9100MTHRNGH","network":"National Rail","old_name":"Blankney & Metheringham","public_transport":"station","railway":"station","ref:crs":"MGM","source":"Bing","wikidata":"Q2228454","wikipedia":"en:Metheringham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7951793,52.9447732]},"properties":{"name":"Bottesford","naptan:AtcoCode":"9100BOTESFD","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"BTF","source":"NPE","wikidata":"Q3985747","wikipedia":"en:Bottesford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1098555,52.975325]},"properties":{"name":"Hubberts Bridge","naptan:AtcoCode":"9100HBRTBDG","network":"National Rail","railway":"station","ref:crs":"HBB","source":"NPE","wikidata":"Q2354815","wikipedia":"en:Hubberts Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1174351,51.3673338]},"properties":{"name":"Waddon","naptan:AtcoCode":"9100WADDON","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WDO","source":"NPE","wheelchair":"limited","wheelchair:description":"Step-free access via side gate to platform 2 (to Sutton). Steps to platform 1 (to London).","wikidata":"Q2120787","wikipedia":"en:Waddon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1146617,53.6984869]},"properties":{"name":"Hensall","naptan:AtcoCode":"9100HENSALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HEL","source":"NPE","wikidata":"Q2785836","wikipedia":"en:Hensall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9612713,53.6889426]},"properties":{"name":"Rawcliffe","naptan:AtcoCode":"9100RAWCLIF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RWC","source":"NPE","wikidata":"Q2080885","wikipedia":"en:Rawcliffe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3189035,53.6940034]},"properties":{"addr:city":"Pontefract","addr:postcode":"WF8 4PQ","addr:street":"Park Road","name":"Pontefract Tanshelf","naptan:AtcoCode":"9100PTFTTSF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"POT","source":"NPE","train":"yes","wikidata":"Q3043294","wikipedia":"en:Pontefract Tanshelf railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2853506,53.5948464]},"properties":{"name":"South Elmsall","naptan:AtcoCode":"9100SELMSAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SES","source":"NPE","wikidata":"Q2431458","wikipedia":"en:South Elmsall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2804944,51.9388367]},"properties":{"name":"Dovercourt","naptan:AtcoCode":"9100DOVRCRT","network":"National Rail","operator":"Abellio East Anglia","public_transport":"station","railway":"station","ref:crs":"DVC","train":"yes","wikidata":"Q2135790","wikipedia":"en:Dovercourt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1877512,50.402196000000007]},"properties":{"name":"St Budeaux Victoria Road","naptan:AtcoCode":"9100STBDXVR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SBV","source":"NPE and Yahoo imagery","wheelchair":"yes","wikidata":"Q2524155","wikipedia":"en:St Budeaux Victoria Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7586045,51.9258987]},"properties":{"name":"Chappel and Wakes Colne","naptan:AtcoCode":"9100CHPWKSC","network":"National Rail","railway":"station","ref:crs":"CWC","source":"NPE","wikidata":"Q2666580","wikipedia":"en:Chappel & Wakes Colne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7691382,51.9712069]},"properties":{"name":"Bures","naptan:AtcoCode":"9100BURES","network":"National Rail","railway":"station","ref:crs":"BUE","source":"NPE","wikidata":"Q2069489","wikipedia":"en:Bures railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7355732,52.0362647]},"properties":{"name":"Sudbury","naptan:AtcoCode":"9100SUDBURY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SUY","source":"NPE","toilets:wheelchair":"no","wheelchair":"no","wikidata":"Q2463248","wikipedia":"en:Sudbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1225014,51.472211]},"properties":{"fare_zone":"2","line":"Northern;Victoria","name":"Stockwell","name:ru":"Стокуэлл","naptan:AtcoCode":"940GZZLUSKW","network":"London Underground","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Cross-platform interchange in same direction only. No entry or exit.","wikidata":"Q1549562","wikimedia_commons":"Category:Stockwell tube station","wikipedia":"en:Stockwell tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1871029,50.4015816]},"properties":{"name":"St Budeaux Ferry Road","naptan:AtcoCode":"9100STBDXFR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SBF","source":"NPE and Yahoo imagery","wheelchair":"yes","wikidata":"Q960725","wikipedia":"en:St Budeaux Ferry Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1074866,51.5583839]},"properties":{"fare_zone":"2","line":"Piccadilly","name":"Arsenal","name:ar":"آرسينال","name:cs":"Arsenal","name:de":"Arsenal","name:en":"Arsenal tube station","name:fa":"ایستگاه متروی آرسنال","name:fi":"Arsenalin metroasema","name:fr":"Arsenal","name:gan":"阿森納站","name:hu":"Arsenal metróállomás","name:it":"Arsenal","name:ja":"アーセナル駅","name:lmo":"Arsenal","name:nl":"Arsenal","name:no":"Arsenal undergrunnsstasjon","name:pl":"Arsenal","name:uk":"Арсенал","name:ur":"آرسنل ٹیوب اسٹیشن","name:yi":"ארסענאל אונטערגרונט סטאנציע","name:yue":"阿仙奴站","name:zh":"阿仙奴站","naptan:AtcoCode":"940GZZLUASL","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q262548","wikipedia":"en:Arsenal tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6171916,54.968733]},"properties":{"name":"Newcastle","naptan:AtcoCode":"9100NWCSTLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NCL","start_date":"1850","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q2047417","wikimedia_commons":"File:Gare_Centrale_Newcastle_Tyne_1.jpg","wikipedia":"en:Newcastle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1995165,53.1230326]},"properties":{"name":"Thorpe Culvert","naptan:AtcoCode":"9100TCULVRT","network":"National Rail","railway":"station","ref:crs":"TPC","wikidata":"Q7796688","wikipedia":"en:Thorpe Culvert railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3913667,52.6755817]},"properties":{"name":"Salhouse","naptan:AtcoCode":"9100SALHOUS","network":"National Rail","railway":"station","ref:crs":"SAH","source":"NPE","wikidata":"Q248738","wikipedia":"en:Salhouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4080243,52.7154885]},"properties":{"name":"Hoveton and Wroxham","naptan:AtcoCode":"9100WROXHAM","network":"National Rail","railway":"station","ref:crs":"HXM","source":"NPE","wheelchair":"yes","wikidata":"Q281183","wikipedia":"en:Hoveton & Wroxham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5877727,53.7680337]},"properties":{"name":"Cottingley","naptan:AtcoCode":"9100COTNGLY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"COT","source":"gpx","train":"yes","wikidata":"Q3033284","wikipedia":"en:Cottingley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3846154,54.902301]},"properties":{"light_rail":"yes","name":"Park Lane","naptan:AtcoCode":"940GZZTWPRK","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"CIC","station":"light_rail","wikipedia":"en:Park Lane Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4073491,52.238341]},"properties":{"addr:city":"Newmarket","addr:street":"Green Road","name":"Newmarket","naptan:AtcoCode":"9100NWMKET","network":"National Rail","network:wikidata":"Q26334","operator":"Greater Anglia","platforms":"1","public_transport":"station","railway":"station","ref:crs":"NMK","train":"yes","wheelchair":"yes","wikidata":"Q2320175","wikipedia":"en:Newmarket (Suffolk) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7686403,50.4828098]},"properties":{"name":"Buckfastleigh","naptan:AtcoCode":"940GZZSDBCK","railway":"station","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6856839,50.4394733]},"properties":{"name":"Totnes Riverside","naptan:AtcoCode":"940GZZSDTOT","note":"Renamed from 1 January 2017","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7149082,50.4609185]},"properties":{"name":"Staverton","naptan:AtcoCode":"940GZZSDSTV","operator":"South Devon Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5651763,50.4345442]},"properties":{"electrified":"no","name":"Paignton","naptan:AtcoCode":"9100PAIGNTN","network":"National Rail","network:wikidata":"Q26334","platforms":"2","public_transport":"station","railway":"station","ref:crs":"PGN","train":"yes","wheelchair":"yes","wikidata":"Q2049642","wikipedia":"en:Paignton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4664375,53.4625006]},"properties":{"name":"Chapeltown","naptan:AtcoCode":"9100CHPLTWN","network":"National Rail","note":"original station was 400m further north from present station","old_name":"Chapeltown South","railway":"station","ref:crs":"CLN","source":"NPE+adjustment","wikidata":"Q2967180","wikipedia":"en:Chapeltown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5615812,50.4246083]},"properties":{"addr:postcode":"TQ4 6LN","name":"Goodrington Sands","naptan:AtcoCode":"940GZZPDGDR","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","website":"https://www.dartmouthrailriver.co.uk/","wikidata":"Q5583591"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4983835,51.1807671]},"properties":{"name":"Merryfield Lane","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6820490"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5569587,50.3961487]},"properties":{"name":"Churston","naptan:AtcoCode":"940GZZPDCHU","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5118324"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4459987,51.4590893]},"properties":{"fare_zone":"6","layer":"-2","name":"Heathrow Terminal 4","naptan:AtcoCode":"9100HTRWTE4","network":"National Rail;Elizabeth Line","operator":"Heathrow Airport Holdings","public_transport":"station","railway":"station","ref:crs":"HAF","train":"yes","wheelchair":"yes","wikipedia":"en:Heathrow Terminal 4 railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6113061,53.5971303]},"properties":{"name":"Clayton West","network":"Whistlestop Valley","operator":"Whistlestop Valley","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6528756,53.5954363]},"properties":{"name":"Skelmanthorpe","network":"Whistlestop Valley","operator":"Whistlestop Valley","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6856984,53.5872189]},"properties":{"name":"Shelley","network":"Whistlestop Valley","operator":"Whistlestop Valley","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5691356,53.0356487]},"properties":{"name":"Idridgehay","naptan:AtcoCode":"940GZZEVIDR","railway":"station","usage":"tourism","wikidata":"Q5989561"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.349369,52.866075]},"properties":{"name":"Gunton","naptan:AtcoCode":"9100GUNTON","network":"National Rail","railway":"station","ref:crs":"GNT","source":"NPE","wikidata":"Q217665","wikipedia":"en:Gunton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2997514,52.9179454]},"properties":{"name":"Roughton Road","naptan:AtcoCode":"9100RGHTNRD","network":"National Rail","railway":"station","ref:crs":"RNR","wheelchair":"no","wikidata":"Q217695","wikipedia":"en:Roughton Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.913704,52.4896794]},"properties":{"name":"Jewellery Quarter","naptan:AtcoCode":"9100BHAMJEW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"JEQ","west_midlands_fare_zone":"1","wikidata":"Q1893132","wikipedia":"en:Jewellery Quarter station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2080451,52.9417019]},"properties":{"name":"Sheringham (NNR)","naptan:AtcoCode":"940GZZNNSHM","operator":"North Norfolk Railway","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.547398,53.0182899]},"properties":{"name":"Shottle","public_transport":"station","railway":"station","source":"NPE","usage":"tourism","wikidata":"Q7502588"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5687991,53.0827559]},"properties":{"name":"Wirksworth","naptan:AtcoCode":"910GCATZ007","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q8026960","wikipedia":"en:Wirksworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9535298,53.3759381]},"properties":{"name":"St Michaels","naptan:AtcoCode":"9100STMCHLS","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"STM","wheelchair":"no","wikidata":"Q1817693","wikipedia":"en:St Michaels railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3499611,50.9687923]},"properties":{"name":"Eastleigh","naptan:AtcoCode":"9100ELGH","network":"National Rail","postal_code":"SO50 4FL","public_transport":"station","railway":"station","ref:crs":"ESL","wheelchair":"yes","wikidata":"Q2285305","wikipedia":"en:Eastleigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0538832,53.787882]},"properties":{"name":"Blackpool Pleasure Beach","naptan:AtcoCode":"9100BLCKPB","network":"National Rail","note":"approximate, known to be at the SE corner of Pleasure Beach","public_transport":"station","railway":"station","ref:crs":"BPB","wikidata":"Q2149557","wikipedia":"en:Blackpool Pleasure Beach railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.183063,50.6964692]},"properties":{"name":"Ashey","naptan:AtcoCode":"940GZZIWASH","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","wikidata":"Q4804934"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7161761,52.4777293]},"properties":{"name":"Oulton Broad North","naptan:AtcoCode":"9100OULTNBN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OUN","source":"NPE","wikidata":"Q2854239","wikipedia":"en:Oulton Broad North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5696314,52.4588262]},"properties":{"name":"Beccles","naptan:AtcoCode":"9100BECCLES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BCC","source":"NPE","wikidata":"Q2659206","wikipedia":"en:Beccles railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7499873,52.47424]},"properties":{"name":"Lowestoft","naptan:AtcoCode":"9100LOWSTFT","network":"National Rail","network:wikidata":"Q26334","old_name":"Lowestoft Central","public_transport":"station","railway":"station","ref:crs":"LWT","train":"yes","wheelchair":"yes","wikidata":"Q2008297","wikipedia":"en:Lowestoft railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5235658,52.2730379]},"properties":{"name":"Darsham","naptan:AtcoCode":"9100DARSHAM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DSM","source":"Bing","train":"yes","wikidata":"Q2998721","wikipedia":"en:Darsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6928646999999999,53.6714301]},"properties":{"name":"Mirfield","naptan:AtcoCode":"9100MIRFILD","network":"National Rail","note":"checkme, the 1852-base mapping doesn't fit too well","operator":"Northern","platforms":"3","public_transport":"station","railway":"station","ref:crs":"MIR","source":"NPE","wikipedia":"en:Mirfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4722913,52.8976023]},"properties":{"name":"Peartree","naptan:AtcoCode":"9100PEARTRE","network":"National Rail","note":"Only a few services call here, I would not consider it a railway=halt since it has proper platforms and it isn't a request stop","public_transport":"station","railway":"station","ref:crs":"PEA","source":"NPE","start_date":"1839","wikidata":"Q7158389","wikipedia":"en:Peartree railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.71598,52.3711007]},"properties":{"addr:street":"Station Drive","name":"Ludlow","name:cy":"Llwydlo","naptan:AtcoCode":"9100LUDLOW","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LUD","source":"NPE","wikidata":"Q2237004","wikipedia":"en:Ludlow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6797073,52.6105794]},"properties":{"name":"Wilnecote","naptan:AtcoCode":"9100WILNECT","network":"National Rail","network:wikidata":"Q26334","note":"Operator refers to the station not the train services","operator":"West Midlands Railway","public_transport":"station","railway":"station","ref:crs":"WNE","source":"NPE","train":"yes","wikidata":"Q2247229","wikipedia":"en:Wilnecote railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5440761,52.6347047]},"properties":{"name":"Acle","naptan:AtcoCode":"9100ACLE","network":"National Rail","railway":"station","ref:crs":"ACL","source":"NPE","wikidata":"Q281169","wikipedia":"en:Acle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.631036,52.5902155]},"properties":{"addr:postcode":"NR30 1SB","name":"Berney Arms","naptan:AtcoCode":"9100BRNYARM","network":"National Rail","railway":"station","ref:crs":"BYA","request_stop":"yes","source":"NPE","wikidata":"Q281175","wikipedia":"en:Berney Arms railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4701518,52.5977147]},"properties":{"name":"Buckenham","naptan:AtcoCode":"9100BUCKNHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BUC","request_stop":"yes","source":"NPE","toilets:wheelchair":"no","wikidata":"Q2064742","wikipedia":"en:Buckenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.6230138,52.5289897]},"properties":{"name":"Haddiscoe","naptan:AtcoCode":"9100HADISCO","network":"National Rail","railway":"station","ref:crs":"HAD","source":"NPE","wikidata":"Q2754722","wikipedia":"en:Haddiscoe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4899035,52.6220652]},"properties":{"name":"Lingwood","naptan:AtcoCode":"9100LGWOOD","network":"National Rail","railway":"station","ref:crs":"LGD","source":"NPE","wheelchair":"yes","wikidata":"Q281164","wikipedia":"en:Lingwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5918178,51.7798721]},"properties":{"name":"Hatfield Peverel","naptan:AtcoCode":"9100HFLPEVL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HAP","wikidata":"Q5576323","wikipedia":"en:Hatfield Peverel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.081649,51.9435862]},"properties":{"name":"Mistley","naptan:AtcoCode":"9100MISTLEY","network":"National Rail","railway":"station","ref:crs":"MIS","source":"NPE","wheelchair":"yes","wikidata":"Q2053659","wikipedia":"en:Mistley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3181754,54.5698756]},"properties":{"name":"Stockton","naptan:AtcoCode":"9100STOCTON","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"STK","source":"Bing","wikidata":"Q2749128","wikipedia":"en:Stockton railway station (County Durham)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3591702,51.7176405]},"properties":{"name":"Cam and Dursley","naptan:AtcoCode":"9100DURSLEY","network":"National Rail","postal_code":"GL11 5DJ","railway":"station","ref:crs":"CDU","wheelchair":"yes","wikidata":"Q2359933","wikipedia":"en:Cam and Dursley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0851419,53.4645839]},"properties":{"name":"Hyde North","naptan:AtcoCode":"9100HYDEN","network":"National Rail","old_name":"Hyde Junction","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HYT","source":"NPE","wikidata":"Q13528479","wikipedia":"en:Hyde North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9093225,51.3578502]},"properties":{"name":"Worle","naptan:AtcoCode":"9100WORLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WOR","wikidata":"Q2416797","wikipedia":"en:Worle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7524631,53.6682922]},"properties":{"name":"Deighton","naptan:AtcoCode":"9100DEIGHTN","network":"National Rail","railway":"station","ref:crs":"DHN","wikipedia":"en:Deighton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0232631,53.5888703]},"properties":{"name":"Hatfield & Stainforth","naptan:AtcoCode":"9100HTFLASF","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HFS","source":"wikipedia","wikidata":"Q2113263","wikipedia":"en:Hatfield & Stainforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0745371,53.5636066]},"properties":{"name":"Kirk Sandall","naptan:AtcoCode":"9100KKSNDAL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"KKS","source":"wikipedia","wikidata":"Q2060574","wikipedia":"en:Kirk Sandall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9552556,53.6033448]},"properties":{"name":"Thorne South","naptan:AtcoCode":"9100THORNES","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"TNS","source":"wikipedia","wikidata":"Q7796381","wikipedia":"en:Thorne South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4772984,53.5544108]},"properties":{"name":"Barnsley Interchange","naptan:AtcoCode":"9100BNSLY","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BNY","wheelchair":"yes","wikidata":"Q2711384","wikipedia":"en:Barnsley Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.374636,53.6326086]},"properties":{"name":"Fitzwilliam","naptan:AtcoCode":"9100FITZWLM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FZW","toilets:wheelchair":"no","wheelchair":"yes","wikidata":"Q2666065","wikipedia":"en:Fitzwilliam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8433204,53.4095394]},"properties":{"name":"Huyton","naptan:AtcoCode":"9100HUYTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HUY","ref:tiploc":"HUYTON","website":"https://www.nationalrail.co.uk/stations_destinations/huy.aspx","wikidata":"Q946322","wikipedia":"en:Huyton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7965367,53.4139015]},"properties":{"name":"Whiston","naptan:AtcoCode":"9100WHISTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WHN","ref:tiploc":"WHISTON","wheelchair":"yes","wikidata":"Q2459451","wikipedia":"en:Whiston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9811665,53.4407853]},"properties":{"name":"Kirkdale","naptan:AtcoCode":"9100KRKDALE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KKD","wikidata":"Q1853000","wikipedia":"en:Kirkdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9880433,53.4379509]},"properties":{"name":"Bank Hall","naptan:AtcoCode":"9100BNKHALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BAH","wikidata":"Q2777932","wikipedia":"en:Bank Hall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4108352,53.6139542]},"properties":{"name":"Bromley Cross","naptan:AtcoCode":"9100BRMCRSS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BMC","source":"NPE","train":"yes","wikidata":"Q3921315","wikipedia":"en:Bromley Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4130759,53.5974456]},"properties":{"name":"Hall i' th' Wood","naptan:AtcoCode":"9100HITW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HID","source":"knowledge","wikidata":"Q2311804","wikipedia":"en:Hall i' th' Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5438215,52.3955079]},"properties":{"name":"Brampton","naptan:AtcoCode":"9100BRAMPTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BRP","request_stop":"yes","wikidata":"Q2599812","wikipedia":"en:Brampton railway station (Suffolk)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3381527,52.1043512]},"properties":{"name":"Melton","naptan:AtcoCode":"9100MELTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MES","wikidata":"Q3246752","wikipedia":"en:Melton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9060291,51.6981184]},"properties":{"description":"A heritage railway line between Chinnor and Princes Risborough","dog:website":"https://www.chinnorrailway.co.uk/article.php/68/bring-your-dog","name":"Chinnor","note":"name from Village served","opening_hours":"\"Open most Sundays and some Saturdays. Generally closed on weekdays.\"","public_transport":"station","railway":"station","railway:preserved":"yes","source":"npe/ contrib survey","usage":"tourism","website":"https://www.chinnorrailway.co.uk/","wikidata":"Q5101198","wikipedia":"en:Chinnor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5730892,50.3863638]},"properties":{"closed":"yes","name":"Greenway Halt","naptan:AtcoCode":"940GZZPDGRE","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","website":"https://www.dartmouthrailriver.co.uk/","wikidata":"Q5604779","wikipedia":"en:Greenway Halt railway station (Devon)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5121653,53.6763613]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.217517,52.0192173]},"properties":{"name":"Audley End Miniature Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9469988,52.6761138]},"properties":{"name":"Chasewater Heaths","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5087257"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1609726,51.8477944]},"properties":{"name":"Thorpe-le-Soken","naptan:AtcoCode":"9100THPLESK","network":"National Rail","railway":"station","ref:crs":"TLS","wikidata":"Q2802841","wikipedia":"en:Thorpe-le-Soken railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2137971,51.8415069]},"properties":{"name":"Kirby Cross","naptan:AtcoCode":"9100KIRBYX","network":"National Rail","railway":"station","ref:crs":"KBX","wikidata":"Q2205087","wikipedia":"en:Kirby Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2433218,51.8377612]},"properties":{"name":"Frinton-on-Sea","naptan:AtcoCode":"9100FRINTON","network":"National Rail","railway":"station","ref:crs":"FRI","wikidata":"Q5504626","wikipedia":"en:Frinton-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.4637047,50.1970953]},"properties":{"name":"Carbis Bay","naptan:AtcoCode":"9100CARBISB","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CBB","train":"yes","wheelchair":"yes","wikidata":"Q2652764","wikipedia":"en:Carbis Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.4365104,50.1839692]},"properties":{"name":"Lelant","naptan:AtcoCode":"9100LELANT","network":"National Rail","network:wikidata":"Q26334","operator":"FGW","public_transport":"station","railway":"station","ref:crs":"LEL","request_stop":"yes","train":"yes","wikidata":"Q1924157","wikipedia":"en:Lelant railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.441159,50.1785858]},"properties":{"name":"Lelant Saltings","naptan:AtcoCode":"9100LELANTS","network":"National Rail","network:wikidata":"Q26334","operator":"FGW","public_transport":"station","railway":"station","ref:crs":"LTS","train":"yes","wikidata":"Q2741296","wikipedia":"en:Lelant Saltings railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5395674,51.7357697]},"properties":{"name":"Norchard","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7050477"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5319837,51.725442]},"properties":{"name":"Lydney Town","naptan:AtcoCode":"940GZZDFLDT","operator":"Dean Forest Railway","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"no","wikidata":"Q6707734"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5307606,51.7155121]},"properties":{"name":"Lydney Junction","naptan:AtcoCode":"940GZZDFLDJ","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0288475,50.4041228]},"properties":{"name":"Quintrell Downs","naptan:AtcoCode":"9100QNTRLDW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"QUI","source":"NPE","wikidata":"Q2380141","wikipedia":"en:Quintrell Downs railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.6521998,52.5101587]},"properties":{"name":"Somerleyton","naptan:AtcoCode":"9100SMRLYTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SYT","source":"NPE","wikidata":"Q1920909","wikipedia":"en:Somerleyton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7074886,52.4695869]},"properties":{"name":"Oulton Broad South","naptan:AtcoCode":"9100OULTNBS","network":"National Rail","old_name":"Carlton Colville","public_transport":"station","railway":"station","ref:crs":"OUS","wikidata":"Q1870239","wikipedia":"en:Oulton Broad South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2678629,51.8462158]},"properties":{"name":"Walton-on-the-Naze","naptan:AtcoCode":"9100WONNAZE","network":"National Rail","railway":"station","ref:crs":"WON","wikidata":"Q2359051","wikipedia":"en:Walton-on-the-Naze railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1507819,53.5438085]},"properties":{"name":"Bentley (South Yorkshire)","naptan:AtcoCode":"9100BTLYSY","network":"National Rail","postal_code":"DN5 0BE","railway":"station","ref:crs":"BYK","wikidata":"Q2347117","wikipedia":"en:Bentley railway station (South Yorkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8843934,54.7262139]},"properties":{"name":"Wolsingham","naptan:AtcoCode":"910GWOLSHAM","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9640609,54.7269224]},"properties":{"name":"Frosterley","naptan:AtcoCode":"910GFROSTLY","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q106437999"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2333506,51.1007791]},"properties":{"HE_ref":"1345657","addr:city":"Taunton","addr:country":"GB","addr:county":"Somerset","addr:hamlet":"Crowcombe Heathfield","addr:postcode":"TA4 4PA","addr:street":"Bakers Orchard","addr:village":"Crowcombe","fhrs:authority":"West Somerset","fhrs:id":"161568","fhrs:local_authority_id":"PI/000001597","heritage":"2","heritage:operator":"Historic England","listed_status":"Grade II","name":"Crowcombe Heathfield","naptan:AtcoCode":"940GZZWSCRW","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","start_date":"1862","train":"yes","usage":"tourism","wikidata":"Q5189150","wikipedia":"en:Crowcombe Heathfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2737572,51.1279555]},"properties":{"addr:city":"Taunton","addr:country":"GB","addr:county":"Somerset","addr:postcode":"TA4 3TR","addr:street":"Station Road","addr:village":"Stogumber","fhrs:authority":"West Somerset","fhrs:id":"161587","fhrs:local_authority_id":"PI/000001616","name":"Stogumber","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7618365"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3115629,51.1783525]},"properties":{"alt_name":"Doniford Beach Halt","name":"Doniford Halt","naptan:AtcoCode":"940GZZWSDON","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","wikidata":"Q5296109"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3096911,51.1667493]},"properties":{"addr:city":"Taunton","addr:country":"GB","addr:county":"Somerset","addr:postcode":"TA4 4RQ","addr:village":"Williton","name":"Williton","naptan:AtcoCode":"940GZZWSWIL","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q8022160"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3688908,51.1615078]},"properties":{"addr:city":"Watchet","addr:country":"GB","addr:county":"Somerset","addr:housename":"Washford Station","addr:postcode":"TA23 0PP","addr:street":"Station Road","addr:village":"Washford","fhrs:authority":"West Somerset","fhrs:id":"161831","fhrs:local_authority_id":"PI/000001926","name":"Washford","naptan:AtcoCode":"940GZZWSWAS","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7971489","wikipedia":"en:Washford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3297097,51.180634]},"properties":{"addr:city":"Watchet","addr:country":"GB","addr:postcode":"TA23 0AU","addr:street":"Brendon Road","fhrs:authority":"West Somerset","fhrs:id":"161737","fhrs:local_authority_id":"PI/000001823","name":"Watchet","naptan:AtcoCode":"940GZZWSWAT","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4009333,51.1816647]},"properties":{"addr:city":"Minehead","addr:country":"GB","addr:county":"Somerset","addr:postcode":"TA24 6LG","addr:street":"Carhampton Road","addr:village":"Blue Anchor","fhrs:authority":"West Somerset","fhrs:id":"161875","fhrs:local_authority_id":"PI/000001964","name":"Blue Anchor","naptan:AtcoCode":"940GZZWSBLA","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q4928826","wikipedia":"en:Blue Anchor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4384228,51.1931186]},"properties":{"addr:city":"Minehead","addr:country":"GB","addr:county":"Somerset","addr:housename":"Dunster Station","addr:postcode":"TA24 6PJ","addr:street":"Station Road","addr:village":"Dunster","fhrs:authority":"West Somerset","fhrs:id":"160726","fhrs:local_authority_id":"PI/000000530","name":"Dunster","naptan:AtcoCode":"940GZZWSDUN","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q5315739"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4678346,51.2062859]},"properties":{"addr:city":"Minehead","addr:postcode":"TA24 5BG","addr:street":"Warren Road","name":"Minehead","naptan:AtcoCode":"940GZZWSMIN","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1020387,51.378808]},"properties":{"name":"West Croydon","naptan:AtcoCode":"9100WCROYDN","network":"National Rail;London Overground","operator":"London Overground","postal_code":"CR0 2TA","public_transport":"station","railway":"station","ref:crs":"WCY","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","website":"http://www.nationalrail.co.uk/stations/wcy/details.html","wheelchair":"yes","wheelchair:description":"Step-free from street to Overground platform. Ramp to bridge for other platforms. On demand platform to train portable ramps.","wikidata":"Q801592","wikipedia":"en:West Croydon station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1334879,51.4892267]},"properties":{"fare_zone":"1","internet_access":"wlan","line":"Victoria","name":"Pimlico","name:ru":"Пимлико","naptan:AtcoCode":"940GZZLUPCO","network":"London Underground","not:network:wikidata":"Q111297173","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1473963","wikipedia":"en:Pimlico tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.0824638,50.3949795]},"properties":{"name":"Marsh Mills","network":"Plym Valley Railway","operator":"Plym Valley Railway","railway":"station","usage":"tourism","wikipedia":"en:South Devon and Tavistock Railway#Marsh Mills"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.563826,51.503393]},"properties":{"name":"Filton Abbey Wood","naptan:AtcoCode":"9100FILTNEW","network":"National Rail","postal_code":"BS34 7JW","public_transport":"station","railway":"station","ref:crs":"FIT","train":"yes","wheelchair":"yes","wikidata":"Q2311503","wikipedia":"en:Filton Abbey Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6514512,51.9087698]},"properties":{"name":"Page's Park","public_transport":"station","railway":"station","source":"survey","tourism":"narrow_gauge_railway","usage":"tourism","wikidata":"Q7124203"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.6746399,50.4598754]},"properties":{"name":"Colesloggett Halt","naptan:AtcoCode":"940GZZBWCOL","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5144670"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7166011,50.4658792]},"properties":{"name":"Bodmin General","naptan:AtcoCode":"940GZZBWBDG","public_transport":"station","railway":"station","source":"npe","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.3648051,50.6404065]},"properties":{"name":"Launceston","note":"ISTR this was a 'new build' alibet in a suitable style","public_transport":"station","railway":"station","source":"Estimated from NPE (contriubtor memory)","usage":"tourism","website":"https://www.launcestonsr.co.uk/","wikidata":"Q6498373"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5136275,52.5787207]},"properties":{"name":"Cantley","naptan:AtcoCode":"9100CNTLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CNY","source":"NPE","wikidata":"Q2149282","wikipedia":"en:Cantley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.01168,52.5085779]},"properties":{"name":"Sandwell and Dudley","naptan:AtcoCode":"9100SNDWDUD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SAD","west_midlands_fare_zone":"4","wikidata":"Q3404216","wikipedia":"en:Sandwell and Dudley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1134842,52.9143627]},"properties":{"name":"Holt","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q12060441"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0549426,51.5087601]},"properties":{"light_rail":"yes","name":"Beckton Park","naptan:AtcoCode":"940GZZDLBPK","network":"Docklands Light Railway","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q813749","wikipedia":"en:Beckton Park DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7820793,51.057239]},"properties":{"name":"Holycombe Junction","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5052124,51.5516536]},"properties":{"name":"Grand Central Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3432686,53.3957446]},"properties":{"name":"Navigation Road","naptan:AtcoCode":"9100NAVGTNR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NVR","wikipedia":"en:Navigation Road station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6489387,51.4639151]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6531323,51.4646093]},"properties":{"attraction":"train","layer":"1","name":"Sky Rider","public_transport":"station","railway":"station","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.964545,52.5055248]},"properties":{"name":"The Hawthorns","naptan:AtcoCode":"9100HNDSHWT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"THW","west_midlands_fare_zone":"2","wikidata":"Q2130925","wikipedia":"en:The Hawthorns station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0927317,51.3758448]},"properties":{"addr:city":"Croydon","electrified":"rail","name":"East Croydon","naptan:AtcoCode":"9100ECROYDN","network":"National Rail","network:train":"National Rail","operator":"Southern","owner":"Network Rail","platforms":"6","postal_code":"CR0 1LF","public_transport":"station","railway":"station","ref:crs":"ECR","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"yes","train":"yes","website":"http://www.nationalrail.co.uk/stations/ecr/details.html","wheelchair":"yes","wheelchair:description":"Lifts from West entrance & ramps from main George Street concourse to all platforms. Accessible WCs not checked today.","wikidata":"Q800699","wikipedia":"en:East Croydon station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8683605,52.9471474]},"properties":{"alt_name":"The Midden Halt","name":"The Midden","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q85807902","wikipedia":"en:The Midden Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8777375,52.9363888]},"properties":{"name":"Warham","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7969378","wikipedia":"en:Warham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8790464,52.918577]},"properties":{"alt_name":"Wighton","name":"Wighton Halt","old_name":"Seton's Halt","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7999660","wikipedia":"en:Wighton Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4085335,52.7168488]},"properties":{"name":"Wroxham BVR","naptan:AtcoCode":"940GZZBVWXM","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q20718188"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3603255,52.7344055]},"properties":{"name":"Coltishall","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q5149451"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3070895,52.7575759]},"properties":{"name":"Buxton","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q5003285"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2913721,52.7669535]},"properties":{"name":"Brampton","operator":"Bure Valley Railway","railway":"station","tourism":"preserved_railway","usage":"tourism","wheelchair":"no","wikidata":"Q4956208","wikipedia":"en:Brampton railway station (Norfolk)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.255403,52.7910457]},"properties":{"name":"Aylsham","naptan:AtcoCode":"940GZZBVAYL","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wheelchair":"yes","wikidata":"Q4831443","wikipedia":"en:Aylsham South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8653811,52.9491822]},"properties":{"name":"Wells-on-Sea","naptan:AtcoCode":"940GZZWWWEL","public_transport":"station","railway":"station","source":"NPE","tourism":"narrow_gauge_railway","usage":"tourism","wikidata":"Q7981731","wikipedia":"en:Wells on Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8719869,52.8961239]},"properties":{"name":"Walsingham","naptan:AtcoCode":"940GZZWWWAL","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7963857","wikipedia":"en:Walsingham (W&WLR) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3025918,52.5589076]},"properties":{"alt_name":"Ferry Meadows (NVR","name":"Overton for Ferry Meadows","naptan:AtcoCode":"940GZZNVFMD","public_transport":"station","railway":"station","source:name":"Traditional wooden name boards trackside on platform","tourism":"heritage_railway","usage":"tourism","wikidata":"Q5445493","wikipedia":"en:Ferry Meadows railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2479461,52.5677599]},"properties":{"name":"Peterborough (NVR)","naptan:AtcoCode":"940GZZNVPTB","operator":"Nene Valley Railway","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism","website":"https://www.nvr.org.uk/nene-valley-station","wikidata":"Q7178016","wikipedia":"en:Peterborough Nene Valley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5817712,51.9957579]},"properties":{"name":"Castle Hedingham","operator":"Colne Valley Railway","railway":"station","tourism":"attraction","usage":"tourism","wikidata":"Q868803","wikipedia":"en:Colne Valley Railway"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4902723,52.2152245]},"properties":{"name":"Saxmundham","naptan:AtcoCode":"9100SXMNDHM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAX","train":"yes","wheelchair":"yes","wikidata":"Q763638","wikipedia":"en:Saxmundham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7106494,51.5505931]},"properties":{"name":"Prittlewell","naptan:AtcoCode":"9100PRITLWL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PRL","wikidata":"Q1880808","wikipedia":"en:Prittlewell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7158518,51.5326972]},"properties":{"layer":"1","name":"Shore","public_transport":"station","railway":"station","tourism":"light_railway","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q23018785","wikipedia":"en:Shore railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4739411,50.7142155]},"properties":{"name":"Digby and Sowton","naptan:AtcoCode":"9100DIGBY","network":"National Rail","network:wikidata":"Q26334","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"DIG","train":"yes","wheelchair":"yes","wikidata":"Q735385","wikipedia":"en:Digby and Sowton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2824194,54.392606]},"properties":{"name":"Beckfoot","naptan:AtcoCode":"940GZZREBCK","operator":"Ravenglass & Eskdale Railway","railway":"station","source":"Bing","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q4878703","wikipedia":"en:Beckfoot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.230519,51.1896657]},"properties":{"addr:city":"Shepherdswell","addr:street":"Station Road","name":"Shepherdswell (EKR)","naptan:AtcoCode":"940GZZEKSPW","network":"East Kent Railway","operator":"East Kent Railway","public_transport":"station","railway":"station","source":"npe","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1479442,52.8845732]},"properties":{"name":"Ruddington Fields","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1449555,52.9473037]},"properties":{"addr:city":"Nottingham","addr:postcode":"NG2 3AQ","addr:street":"Carrington Street","alt_name":"Nottingham Midland","fhrs:id":"218710","name":"Nottingham","naptan:AtcoCode":"9100NTNG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NOT","source":"Local Knowledge","source:addr":"NCC Open Data planning","train":"yes","wheelchair":"yes","wikidata":"Q1988621","wikipedia":"en:Nottingham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9456089,52.3063807]},"properties":{"name":"Redditch","naptan:AtcoCode":"9100RDIT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RDC","wheelchair":"yes","wikidata":"Q2253146","wikipedia":"en:Redditch railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0175675,52.6253158]},"properties":{"name":"Bloxwich North","naptan:AtcoCode":"9100BLOXN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BWN","west_midlands_fare_zone":"5","wikidata":"Q2570127","wikipedia":"en:Bloxwich North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7222357,52.0480742]},"properties":{"name":"Miniature Train","public_transport":"station","railway":"station","train":"yes","type":"miniature","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.457762,51.4155427]},"properties":{"name":"Avon Riverside","railway":"station","usage":"tourism","wheelchair":"yes","wikidata":"Q4829234","wikipedia":"en:Avon Riverside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0885594,51.2684238]},"properties":{"internet_access":"wlan","name":"Basingstoke","name:lt":"Beizingstokas","naptan:AtcoCode":"9100BSNGSTK","network":"National Rail","operator":"South West Trains","platforms":"5","public_transport":"station","railway":"station","ref:crs":"BSK","wikidata":"Q2421375","wikipedia":"en:Basingstoke railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2470646,52.2316268]},"properties":{"addr:city":"St Neots","addr:postcode":"PE19 1QF","addr:street":"Hawkesden Road","alt_name":"Saint Neots","name":"St Neots","naptan:AtcoCode":"9100STNEOTS","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"SNO","ref:tiploc":"STNEOTS","website":"http://www.nationalrail.co.uk/stations/sno/details.html","wheelchair":"yes","wikidata":"Q3072111","wikipedia":"en:St. Neots railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.420975,52.624726]},"properties":{"closed":"13 April 1931","name":"Market Bosworth","opened":"19 March 2011","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q15248129"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.489054,54.8539136]},"properties":{"name":"Lintley","naptan:AtcoCode":"910GZZTYLIN","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.686687,54.8973288]},"properties":{"name":"Causey Arch","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6757241,54.9084492]},"properties":{"name":"Andrews House","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4816699,52.6629789]},"properties":{"name":"Horsehay & Dawley","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q28970323"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4692529,53.3014]},"properties":{"name":"Dronfield","naptan:AtcoCode":"9100DRONFLD","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DRO","wheelchair":"yes","wikidata":"Q2161199","wikipedia":"en:Dronfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4437159,50.5986475]},"properties":{"electrified":"no","name":"Dawlish Warren","naptan:AtcoCode":"9100DAWLSHW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DWW","source":"survey","train":"yes","wikipedia":"en:Dawlish Warren railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5363956,53.7614562]},"properties":{"name":"Park Halt","network":"Middleton Railway","operator":"The Middleton Railway Trust","public_transport":"station","railway":"station","source:name":"official_website","train":"yes","usage":"tourism","wikidata":"Q7137761","wikipedia":"en:Park Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.483138,51.2809511]},"properties":{"addr:city":"Midsomer Norton","addr:housename":"Midsomer Norton Station","addr:postcode":"BA3 2EY","addr:street":"Silver Street","name":"Midsomer Norton","operator":"S&D Preserved Line","public_transport":"station","railway":"station","tourism":"attraction","usage":"tourism","wikidata":"Q6843017","wikipedia":"en:Midsomer Norton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8810028,53.1908811]},"properties":{"light_rail":"yes","name":"Grosvenor Park Miniature Railway","public_transport":"station","railway":"station","station":"light_rail","type":"miniature station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6990466,52.5615629]},"properties":{"name":"Harvesters","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.065492,50.9354781]},"properties":{"name":"Isfield","operator":"The Lavender Line","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism","website":"https://www.lavender-line.co.uk","wikidata":"Q6079829"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5521311,51.7531306]},"properties":{"name":"Whitecroft","railway":"station","usage":"tourism","wikidata":"Q7995820"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2818436,51.33956]},"properties":{"name":"Avoncliff","naptan:AtcoCode":"9100AVNCLFF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AVF","source":"NPE","wikidata":"Q2877190","wikipedia":"en:Avoncliff railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6753699,54.920206]},"properties":{"name":"Sunniside","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1504254,52.932886]},"properties":{"name":"Weybourne","naptan:AtcoCode":"940GZZNNWEY","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7990292"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1431522,51.4963688]},"properties":{"fare_zone":"1","line":"District;Circle;Victoria","name":"Victoria","name:ru":"Виктория","naptan:AtcoCode":"940GZZLUVIC","network":"London Underground","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q985210","wikipedia":"en:London Victoria station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3759387,52.4549609]},"properties":{"name":"Country Park Halt","operator":"Severn Valley Railway","platforms":"1","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2516815,51.5589708]},"properties":{"fare_zone":"6","line":"District","name":"Upminster","name:nl":"Station Upminster","naptan:AtcoCode":"9100UPMNSP6","network":"National Rail;London Underground;London Overground","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"UPM","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q801547","wikipedia":"en:Upminster station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3994742,53.6761886]},"properties":{"name":"Streethouse","naptan:AtcoCode":"9100STHS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SHC","start_date":"1982","wheelchair":"yes","wikidata":"Q2065164","wikipedia":"en:Streethouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2260089,53.3270993]},"properties":{"name":"Wilmslow","naptan:AtcoCode":"9100WLMSL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WML","wikipedia":"en:Wilmslow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1883499,53.3760261]},"properties":{"name":"Cheadle Hulme","naptan:AtcoCode":"9100CHDH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHU","wikipedia":"en:Cheadle Hulme railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9238379,52.2937192]},"properties":{"name":"Pitsford and Brampton","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7199048"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0676425,53.1180013]},"properties":{"name":"Rudyard","railway":"station","usage":"tourism","wheelchair":"no","wikidata":"Q7377724"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0723755,53.1222913]},"properties":{"name":"The Dam","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0820086,53.1348078]},"properties":{"name":"Hunthouse Wood","railway":"station","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.336998,53.5148082]},"properties":{"name":"Swinton (Manchester)","naptan:AtcoCode":"9100SWNT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SNN","train":"yes","wikidata":"Q2685761","wikipedia":"en:Swinton railway station (Greater Manchester)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2800532,51.5636297]},"properties":{"fare_zone":"4","line":"Metropolitan;Jubilee","name":"Wembley Park","naptan:AtcoCode":"490000257374","naptan:Bearing":"N","naptan:CommonName":"Wembley Park","naptan:Indicator":"86374","naptan:verified":"no","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"naptan_import;survey","station":"subway","subway":"yes","survey:date":"2013-08-23","wheelchair":"yes","wikidata":"Q956849","wikipedia":"en:Wembley Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9720037,51.2183132]},"properties":{"name":"Highbridge and Burnham","naptan:AtcoCode":"9100HGHBRDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HIG","wikidata":"Q2508684","wikipedia":"en:Highbridge and Burnham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0272962,53.0654183]},"properties":{"listed_status":"Grade II","name":"Cheddleton","naptan:AtcoCode":"940GZZCVCHD","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism","wikidata":"Q5089206"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8775033,52.9856788]},"properties":{"monorail":"yes","name":"Alton Towers Car Park","railway":"station","station":"monorail","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4318151,51.5930135]},"properties":{"alt_name":"Ruislip Lido Station","name":"Willow Lawn","naptan:AtcoCode":"940GZZRLWLN","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4291065,51.5886994]},"properties":{"name":"Woody Bay","naptan:AtcoCode":"940GZZRLWBY","public_transport":"station","railway":"station","tourism":"miniature_railway","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1643538,54.829095]},"properties":{"local_ref":"AT","name":"Wigton","naptan:AtcoCode":"9100WIGTON","naptan:Bearing":"N","naptan:BusStopType":"CUS","naptan:CommonName":"Railway Station","naptan:Indicator":"at","naptan:Landmark":"Wigton Railway Station","naptan:NaptanCode":"cumagwag","naptan:Street":"Station Road spur","naptan:verified":"no","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"WGT","source":"naptan_import","wheelchair":"yes","wikidata":"Q2251503","wikipedia":"en:Wigton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.399376,50.8035469]},"properties":{"name":"Exbury Central","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4040902,50.8056806]},"properties":{"name":"Exbury North","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7496898,51.4196718]},"properties":{"internet_access":"no","name":"Nailsea and Backwell","naptan:AtcoCode":"9100NAILSEA","network":"National Rail","network:wikidata":"Q26334","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"NLS","source":"GPX + NPE","train":"yes","wikidata":"Q6959642","wikipedia":"en:Nailsea and Backwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6414408,54.9499976]},"properties":{"addr:city":"Dunston","addr:postcode":"NE11 9SS","addr:street":"Ellison Road","name":"Dunston","naptan:AtcoCode":"9100DNSN","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"DOT","train":"yes","wheelchair":"yes","wikidata":"Q678990","wikipedia":"en:Dunston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9568567,52.6748556]},"properties":{"name":"Norton Lakeside Halt","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q15262595"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7235659,53.2958317]},"properties":{"addr:postcode":"WA6 7DJ","name":"Frodsham","naptan:AtcoCode":"9100FRDSHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FRD","wikidata":"Q2471361","wikipedia":"en:Frodsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3584675,51.8428763]},"properties":{"name":"Palace Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3502102,51.8387889]},"properties":{"name":"Pleasure Gardens","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3409694,50.8672425]},"properties":{"name":"Chapel Road Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3407083,50.8672955]},"properties":{"name":"Piccadilly","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7736115,53.8335128]},"properties":{"name":"Shipley","naptan:AtcoCode":"9100SHPY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SHY","wikidata":"Q4762414","wikipedia":"en:Shipley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.382282,53.7965742]},"properties":{"name":"Garforth","naptan:AtcoCode":"9100GARFRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GRF","wikidata":"Q2324929","wikipedia":"en:Garforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1064144,51.5648345]},"properties":{"fare_zone":"2","line":"Piccadilly;Victoria","name":"Finsbury Park","naptan:AtcoCode":"9100FNPK","network":"National Rail;London Underground","network:subway":"London Underground","network:train":"National Rail","operator":"Great Northern;London Underground","operator:subway":"London Underground","operator:train":"Great Northern","public_transport":"station","railway":"station","ref:crs":"FPK","ref:tiploc":"FNPK","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q536796","wikipedia":"en:Finsbury Park station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5880507,54.2891975]},"properties":{"name":"Bedale","naptan:AtcoCode":"940GZZWDBED","operator":"Wensleydale Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4878983","wikipedia":"en:Bedale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1375027,52.194144]},"properties":{"addr:city":"Cambridge","addr:postcode":"CB1 2JH","addr:street":"Station Road","name":"Cambridge","name:cy":"Caergrawnt","naptan:AtcoCode":"9100CAMBDGE","network":"National Rail","operator":"Abellio Greater Anglia / Great Northern","platforms":"8","public_transport":"station","railway":"station","ref:crs":"CBG","wheelchair":"yes","wikidata":"Q3088356","wikipedia":"en:Cambridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2762606,51.1873942]},"properties":{"name":"Longleat","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6992903,54.8885497]},"properties":{"name":"East Tanfield","railway":"station","usage":"tourism","wikipedia":"en:Tanfield Railway"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0113494,50.8705975]},"properties":{"addr:city":"Lewes","name":"Lewes","naptan:AtcoCode":"9100LEWES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LWS","website":"https://www.nationalrail.co.uk/stations_destinations/LWS.aspx","wheelchair":"yes","wikidata":"Q933911","wikipedia":"en:Lewes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7242433,51.4074442]},"properties":{"name":"Martins Heron","naptan:AtcoCode":"9100MHERON","network":"National Rail","operator":"South West Trains","railway":"station","ref:crs":"MAO","wikidata":"Q2744100","wikipedia":"en:Martins Heron railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4142289,50.9074977]},"properties":{"addr:city":"Southampton","addr:country":"GB","addr:postcode":"SO15 1AL","addr:street":"Blechynden Terrace","name":"Southampton Central","naptan:AtcoCode":"9100SOTON","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SOU","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q2396008","wikipedia":"en:Southampton Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9645057,53.0215468]},"properties":{"name":"Kingsley & Froghall","naptan:AtcoCode":"940GZZCVKFG","operator":"Churnet Valley Railway","platforms":"2","public_transport":"station","railway":"station","tourism":"heritage_railway","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5588064,52.0416894]},"properties":{"name":"Lidlington","naptan:AtcoCode":"9100LDLNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LID","wikidata":"Q2323668","wikipedia":"en:Lidlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1543273,51.7945324]},"properties":{"name":"Clacton-on-Sea","naptan:AtcoCode":"9100CLACTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLT","wikidata":"Q5124903","wikipedia":"en:Clacton-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.4777671,50.2088461]},"properties":{"alt_name":"St Ives (Cornwall)","name":"St Ives","naptan:AtcoCode":"9100STIVES","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SIV","train":"yes","wheelchair":"yes","wikidata":"Q2150660","wikipedia":"en:St Ives railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5897097,54.613739]},"properties":{"name":"Newton Aycliffe","naptan:AtcoCode":"9100NWTA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NAY","source":"NPE","wikidata":"Q2609531","wikipedia":"en:Newton Aycliffe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7217326,51.2962035]},"properties":{"name":"Frimley Lodge Miniature Railway","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.flmr.org/","wheelchair":"no","wikipedia":"en:Frimley Lodge Park Railway"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.8354722,51.2313042]},"properties":{"addr:city":"Lynton","addr:postcode":"EX35 6EQ","addr:suburb":"Lynmouth","name":"Lynton Village Railway Station","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.cliffrailwaylynton.co.uk","wheelchair":"yes","wikidata":"Q18619256","wikipedia":"en:Lynton Village railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.464799,50.3875961]},"properties":{"name":"Sandplace","naptan:AtcoCode":"9100SDPLACE","network":"National Rail","network:wikidata":"Q26334","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"SDP","request_stop":"yes","train":"yes","wikidata":"Q577887","wikipedia":"en:Sandplace railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5495933,55.1897525]},"properties":{"name":"Museum Halt","railway":"station","usage":"tourism","wikidata":"Q8032742"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5513922,55.1960868]},"properties":{"name":"Lakeside Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9705382,54.5793885]},"properties":{"name":"Forest Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5870103,50.8570022]},"properties":{"public_transport":"station","railway":"station","source":"OS_OpenData_StreetView","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4176529,52.5341676]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3497203,54.5300894]},"properties":{"name":"Eaglescliffe","name:ur":"ایگلس کلف","naptan:AtcoCode":"9100EGLSCLF","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"EAG","source":"npe","wikidata":"Q2239157","wikipedia":"en:Eaglescliffe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5947674,50.8563763]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6934055,52.5657715]},"properties":{"name":"Far Leys Station","notes":"Officially opened 15 May 2010","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.358285,53.6790992]},"properties":{"name":"Featherstone","naptan:AtcoCode":"9100FTHRSTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FEA","source":"NPE","wikidata":"Q5439656","wikipedia":"en:Featherstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.843859,51.6073804]},"properties":{"name":"Blunsdon","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4930769"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8471715,51.61365]},"properties":{"name":"Hayes Knoll","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q15223394"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4825389,52.6628632]},"properties":{"name":"Spring Village","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3383531,54.5379232]},"properties":{"name":"Tees Small Gauge Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2825222,50.9912669]},"properties":{"internet_access":"no","name":"Penguin Station","network":"Marwell Railway","operator":"Marwell Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7468492,51.3889653]},"properties":{"name":"Swale","naptan:AtcoCode":"9100SWALE","network":"National Rail","old_name":"Kings Ferry Bridge Halt;Swale Halt","public_transport":"station","railway":"station","ref:crs":"SWL","train":"yes","wikidata":"Q2191551","wikipedia":"en:Swale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7998436,52.756564]},"properties":{"name":"Central Station","railway":"station","source":"Bing","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8382098,53.7012857]},"properties":{"name":"Delph","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8386748,53.7006551]},"properties":{"name":"Willow Tree Halt","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8381198,53.6995716]},"properties":{"name":"Becconsall Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4182678,52.5344063]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9348538,52.1141441]},"properties":{"public_transport":"station","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5887033,50.8551212]},"properties":{"public_transport":"station","railway":"station","source":"OS OpenData StreetView","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.595146,50.8558522]},"properties":{"public_transport":"station","railway":"station","source":"OS OpenData StreetView","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.59749,51.4480951]},"properties":{"name":"Princes Wharf","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1377192,52.9319908]},"properties":{"name":"Kelling Heath Park","railway":"station","request_stop":"yes","tourism":"preserved_railway","usage":"tourism","wikidata":"Q6385812"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6816499,54.657132]},"properties":{"name":"Bishop Auckland West","naptan:AtcoCode":"910GBSAUWEA","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.260819,52.0850343]},"properties":{"name":"Biggleswade","naptan:AtcoCode":"9100BIGLSWD","network":"National Rail","railway":"station","ref:crs":"BIW","ref:tiploc":"BIGLSWD","source":"NPE","wheelchair":"no","wikidata":"Q2751241","wikipedia":"en:Biggleswade railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.423798,51.6622838]},"properties":{"name":"Cassiobury Park Station","public_transport":"no","railway":"station","source":"Bing","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4274432,51.5970382]},"properties":{"name":"Haste Hill","naptan:AtcoCode":"940GZZRLHHL","public_transport":"station","railway":"station","source":"Bing","tourism":"miniature_railway","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3073283,52.5627863]},"properties":{"name":"Ham Lane (FMR)","operator":"Ferry Meadows Railway","public_transport":"station","railway":"station","tourism":"miniature_railway","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3125963,52.5667473]},"properties":{"name":"Gunwade (FMR)","operator":"Ferry Meadows Railway","public_transport":"station","railway":"station","tourism":"miniature_railway","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.001219,53.0379472]},"properties":{"name":"Consall","railway":"station","tourism":"heritage_railway","usage":"tourism","wikidata":"Q5162710"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7182651,52.8561108]},"properties":{"name":"Wem","naptan:AtcoCode":"9100WEMM","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WEM","source":"Local Knowledge","wheelchair":"yes","wikidata":"Q2557796","wikipedia":"en:Wem railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6716574,52.9682221]},"properties":{"name":"Whitchurch","name:cy":"Eglwys Wen","naptan:AtcoCode":"9100WCHR","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"WTC","source":"NPE","wikidata":"Q1963093","wikipedia":"en:Whitchurch railway station (Shropshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5187309,53.0635485]},"properties":{"name":"Nantwich","naptan:AtcoCode":"9100NANTWCH","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"NAN","wikipedia":"en:Nantwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6895572,52.8994613]},"properties":{"name":"Prees","naptan:AtcoCode":"9100PREES","network":"National Rail","network:wikidata":"Q26334","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"PRS","request_stop":"yes","source":"NPE","train":"yes","wikidata":"Q2717690","wikipedia":"en:Prees railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5956111,53.0195948]},"properties":{"name":"Wrenbury","naptan:AtcoCode":"9100WRENBRY","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"WRE","request_stop":"yes","wikidata":"Q2669037","wikipedia":"en:Wrenbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5057452,52.3469592]},"properties":{"name":"Halesworth","naptan:AtcoCode":"9100HALSWTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HAS","train":"yes","wikidata":"Q2406246","wikipedia":"en:Halesworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.216635,53.0419934]},"properties":{"name":"Longport","naptan:AtcoCode":"9100LNGP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LPT","source":"NPE","wheelchair":"yes","wikidata":"Q2375819","wikipedia":"en:Longport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6199792,51.4465304]},"properties":{"name":"Butterfly Junction","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3851927,51.6456488]},"properties":{"check_date:wheelchair":"2022-11-10","name":"Bushey","naptan:AtcoCode":"9100BUSHEY","network":"National Rail;London Overground","old_name":"Bushey & Oxhey","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"BSH","ref:tiploc":"BSH","source":"OS_OpenData_StreetView;Bing","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q19817","wikipedia":"en:Bushey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5661533,51.3947559]},"properties":{"name":"Fort Apache","railway":"station","tourism":"miniature_railway","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1554718,52.9084696]},"properties":{"name":"Stone","naptan:AtcoCode":"9100STONE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SNE","source":"NPE","wheelchair":"no","wikidata":"Q2749551","wikipedia":"en:Stone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9185882,53.2566395]},"properties":{"name":"Buxton Miniature Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.942884,52.6726252]},"properties":{"name":"Chasetown (Church Street)","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5087253"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3387418,51.2376461]},"properties":{"name":"Whitchurch","naptan:AtcoCode":"9100WHTCHRH","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"WCH","source":"NPE","wikidata":"Q1865326","wikipedia":"en:Whitchurch railway station (Hampshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1332687,52.6678412]},"properties":{"addr:city":"Leicester","addr:housename":"Leicester North Railway Station","addr:postcode":"LE4 3BR","name":"Leicester North","naptan:AtcoCode":"940GZZGCLCN","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q4882689"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2245186,51.1224788]},"properties":{"name":"High Rocks","naptan:AtcoCode":"940GZZSLHRK","public_transport":"station","railway":"station","tourism":"preserved_railway","train":"yes","usage":"tourism","wikidata":"Q15223909"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2638353,51.1991459]},"properties":{"addr:city":"Eythorne","addr:street":"Shooters Hill","name":"Eythorne","naptan:AtcoCode":"940GZZEKEYT","network":"East Kent Railway","operator":"East Kent Railway","public_transport":"station","railway":"station","tourism":"attraction","usage":"tourism","wikidata":"Q5423046"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.793929,54.4395064]},"properties":{"name":"Glaisdale","naptan:AtcoCode":"9100GLAISDL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GLS","uic_ref":"7000940","wikidata":"Q2357575","wikipedia":"en:Glaisdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9749222,54.4812297]},"properties":{"name":"Commondale","naptan:AtcoCode":"9100COMONDL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"COM","uic_ref":"7000525","wikidata":"Q1943197","wikipedia":"en:Commondale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0751373,50.4143924]},"properties":{"name":"Newquay","naptan:AtcoCode":"9100NEWQUAY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"NQY","train":"yes","wikidata":"Q616016","wikipedia":"en:Newquay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7617497,54.4375309]},"properties":{"addr:postcode":"YO21 1UX","name":"Egton","naptan:AtcoCode":"9100EGTON","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"EGT","uic_ref":"7000776","wikidata":"Q2437498","wikipedia":"en:Egton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6627591,54.4611128]},"properties":{"name":"Sleights","naptan:AtcoCode":"9100SLEGHTS","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SLH","uic_ref":"7001999","wikidata":"Q2658220","wikipedia":"en:Sleights railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3990848,50.8707819]},"properties":{"name":"Hythe Town","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3936001,50.8745854]},"properties":{"name":"Hythe Pier","public_transport":"station","railway":"station","source":"Bing","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5264572,50.8898464]},"properties":{"addr:city":"Southampton","addr:country":"GB","addr:postcode":"SO40 7AA","name":"Ashurst New Forest","naptan:AtcoCode":"9100LYNDHRD","network":"National Rail","note":"Transferred from a nearby node","public_transport":"station","railway":"station","ref:crs":"ANF","wikidata":"Q2909800","wikipedia":"en:Ashurst New Forest railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9467256,54.4671478]},"properties":{"name":"Castleton Moor","naptan:AtcoCode":"9100CTNM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSM","uic_ref":"7000512","wikidata":"Q2181881","wikipedia":"en:Castleton Moor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2401282,52.3839758]},"properties":{"name":"Coalyard Miniature Railway","naptan:AtcoCode":"940GZZSVKID","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2874059,50.7882891]},"properties":{"name":"Eastbourne Miniature Steam Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9035605,52.1834767]},"properties":{"name":"Avonvale MES","public_transport":"station","railway":"station","source":"Bing","usage":"tourism","website":"http://www.avonvale.me.uk/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3768816,54.8811186]},"properties":{"name":"Siloth Miniature Railway","railway":"station","station":"miniature","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1173766,52.2503532]},"properties":{"name":"Brockford","railway":"station","usage":"tourism","wikidata":"Q4972790","wikipedia":"en:Brockford and Wetheringsett railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1052701,51.5775578]},"properties":{"name":"Harringay","naptan:AtcoCode":"9100HRGY","network":"National Rail","old_name":"Harringay West","opening_hours":"Mo-Fr 06:30-14:00","operator":"Great Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HGY","ref:tiploc":"HRGY","wheelchair":"no","wikidata":"Q2241512","wikipedia":"en:Harringay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1567349,51.5225862]},"properties":{"fare_zone":"1","line":"Circle;Hammersmith & City;Bakerloo;Jubilee;Metropolitan","loc_name":"Baker Street tube station","name":"Baker Street","name:ru":"Бейкер-стрит","naptan:AtcoCode":"940GZZLUBST","network":"London Underground","public_transport":"station","railway":"station","source":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between terminating Metropolitan line trains and trains continuing towards Aldgate. You can change between the Bakerloo line southbound by manual boarding ramp and the Jubilee line southbound. You can also change between the Bakerloo line n","wikidata":"Q616218","wikipedia":"en:Baker Street tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.175365,51.5154795]},"properties":{"fare_zone":"1","line":"District;Circle;Bakerloo","name":"Paddington (Bakerloo, Circle and District lines)","name:ru":"Паддингтон (линии Бейкерлу, Дистрикт и Кольцевая)","naptan:AtcoCode":"910GPADTON","network":"London Underground","old_name":"Praed Street","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q214788","wikipedia":"en:Paddington tube station (Bakerloo, Circle and District lines)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7613243,50.4739305]},"properties":{"name":"Boscarne Junction","naptan:AtcoCode":"940GZZBWBOS","public_transport":"station","railway":"station","source":"npe","usage":"tourism","wikidata":"Q4947133","wikipedia":"en:Boscarne Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.632996,53.5433996]},"properties":{"name":"Wigan North Western","naptan:AtcoCode":"9100WIGANNW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WGN","train":"yes","wikidata":"Q2186551","wikipedia":"en:Wigan North Western railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1664698,50.6461826]},"properties":{"name":"Lake","naptan:AtcoCode":"9100LAKEIOW","network":"National Rail","network:wikidata":"Q26334","operator":"Island Line Trains","public_transport":"station","railway":"station","ref:crs":"LKE","train":"yes","wheelchair":"yes","wikidata":"Q2126164","wikipedia":"en:Lake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2795366,54.6057149]},"properties":{"addr:postcode":"TS23 3TG","name":"Billingham","name:en":"Billingham","name:lt":"Bilinghamas","name:ur":"بلنگھم","naptan:AtcoCode":"9100BLNGHM","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BIL","train":"yes","wikidata":"Q3488349","wikipedia":"en:Billingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.17018,50.8352056]},"properties":{"addr:city":"Hove","name":"Hove","naptan:AtcoCode":"9100HOVE","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"HOV","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Ramp to booking hall. Step-free to platform 3 (westbound). Lift to subway for island platforms 1,2 (north & eastbound), and WC. No Humps, portable ramps for trains. [Induction Loop working at ticket window]","wikidata":"Q2426316","wikipedia":"en:Hove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0055878,53.54102]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7076312,52.3846758]},"properties":{"name":"Wicksteed Park","network":"Wicksteed Park Railway","public_transport":"station","railway":"station","tourism":"narrow_gauge_railway","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7852812,51.4378653]},"properties":{"public_transport":"station","railway":"station","station":"miniature","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.486536,54.58041]},"properties":{"name":"Appleby","naptan:AtcoCode":"9100APBY","network":"National Rail","network:wikidata":"Q26334","old_name":"Appleby West","public_transport":"station","railway":"station","ref:crs":"APP","source":"NPE","train":"yes","wheelchair":"limited","wikidata":"Q2169384","wikipedia":"en:Appleby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1349977,51.5654371]},"properties":{"fare_zone":"2;3","line":"Northern","name":"Archway","name:ru":"Арчвей","naptan:AtcoCode":"940GZZLUACY","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q636351","wikipedia":"en:Archway tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4774061,51.1851655]},"properties":{"name":"Cranmore","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5182230"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5174746,51.1801021]},"properties":{"name":"Mendip Vale","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6816650"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0414814,50.3622999]},"properties":{"name":"East Wheal Rose","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0460553,50.3576343]},"properties":{"name":"Newlyn Halt","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0411698,50.3621161]},"properties":{"name":"Groggly Halt","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0411177,50.3757546]},"properties":{"name":"Benny Halt","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q19460475"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.910998,54.4661746]},"properties":{"name":"Danby","naptan:AtcoCode":"9100DANBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DNY","train":"yes","uic_ref":"7000644","wikidata":"Q2012537","wikipedia":"en:Danby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8255112,54.4604593]},"properties":{"name":"Lealholm","naptan:AtcoCode":"9100LEALHLM","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"LHM","uic_ref":"7001380","wheelchair":"yes","wikidata":"Q2377733","wikipedia":"en:Lealholm railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.266985,53.3384086]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0683268,54.4777507]},"properties":{"name":"Kildale","naptan:AtcoCode":"9100KLDL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KLD","source":"OS_OpenData_StreetView","uic_ref":"7001251","wikidata":"Q6406700","wikipedia":"en:Kildale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0645022,52.9756762]},"properties":{"name":"Caverswall Road Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0466557,53.000399]},"properties":{"name":"Dilhorne Park","railway":"station","source":"Bing","usage":"tourism","wikidata":"Q5276776"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4192072,53.4937958]},"properties":{"heritage":"2","heritage:operator":"Elsecar Heritage Railway Ltd","name":"Rockingham","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7355379","wikipedia":"en:Rockingham railway station (South Yorkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2994468,51.9185846]},"properties":{"name":"Heyford","naptan:AtcoCode":"9100HEYFORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HYD","wikidata":"Q2075758","wikipedia":"en:Heyford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5504551,50.9493579]},"properties":{"name":"Rio Grande Train Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9902484,51.1278436]},"properties":{"name":"Bridgwater","name:lt":"Bridžvoteris","naptan:AtcoCode":"9100BRDGWTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BWT","train":"yes","wikidata":"Q643448","wikipedia":"en:Bridgwater railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0499793,52.3201581]},"properties":{"name":"Bromsgrove","naptan:AtcoCode":"9100BRMSGRV","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BMV","source":"NPE","wikidata":"Q1978141","wikipedia":"en:Bromsgrove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.248137,51.5173451]},"properties":{"fare_zone":"2","line":"Central","name":"East Acton","name:ru":"Ист-Актон","naptan:AtcoCode":"940GZZLUEAN","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1920-08-03","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1277721","wikimedia_commons":"Category:East Acton tube station","wikipedia":"en:East Acton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9630872,51.9663467]},"properties":{"name":"Winchcombe","naptan:AtcoCode":"940GZZGRWCH","operator":"Gloucestershire and Warwickshire Steam Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q8023754"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9284569,51.989334]},"properties":{"name":"Toddington","naptan:AtcoCode":"940GZZGRTOD","operator":"Gloucestershire and Warwickshire Steam Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7812739","wikipedia":"en:Toddington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1152354,54.4894968]},"properties":{"name":"Great Ayton","naptan:AtcoCode":"9100GTAYTON","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GTA","train":"yes","uic_ref":"7000910","wikidata":"Q3377096","wikipedia":"en:Great Ayton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3028455,54.0617706]},"properties":{"addr:city":"Settle","addr:postcode":"BD24 0EA","addr:village":"Giggleswick","name":"Giggleswick","naptan:AtcoCode":"9100GGLSWCK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GIG","source":"NPE;Bing;OS_OpenData_StreetView","wheelchair":"yes","wikidata":"Q2802459","wikipedia":"en:Giggleswick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9752233,54.5834185]},"properties":{"name":"Saltburn","naptan:AtcoCode":"9100SBRN","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SLB","uic_ref":"7001928","wikidata":"Q2033443","wikipedia":"en:Saltburn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0309929,54.5893375]},"properties":{"name":"Longbeck","naptan:AtcoCode":"9100LONGBCK","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"LGK","uic_ref":"7001313","wikidata":"Q2337724","wikipedia":"en:Longbeck railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1277852,51.4383281]},"properties":{"name":"Streatham Hill","name:ru":"Стретем-Хилл","naptan:AtcoCode":"9100STRHILL","network":"National Rail","operator":"Southern Railway","public_transport":"station","railway":"station","ref:crs":"SRH","wheelchair":"yes","wikidata":"Q1986365","wikipedia":"en:Streatham Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1941161,51.0541419]},"properties":{"addr:city":"Taunton","addr:country":"GB","addr:county":"Somerset","addr:postcode":"TA4 3RU","addr:village":"Bishops Lydeard","name":"Bishops Lydeard","naptan:AtcoCode":"9100BSPSLYD","network":"West Somerset Railway","network:wikidata":"Q12072724","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","ref:crs":"BIB","train":"yes","usage":"tourism","wikidata":"Q4918063","wikipedia":"en:Bishops Lydeard railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0215864,51.5808033]},"properties":{"fare_zone":"4","line":"Central","name":"Snaresbrook","naptan:AtcoCode":"940GZZLUSNB","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikipedia":"en:Snaresbrook tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2872899,52.8849595]},"properties":{"name":"Long Eaton","naptan:AtcoCode":"9100LNGEATN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LGE","train":"yes","wheelchair":"limited","wheelchair:description":"Both platforms have a lift available. Sloped access is steep.","wikidata":"Q2357399","wikipedia":"en:Long Eaton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3393309,51.4391919]},"properties":{"name":"Strawberry Hill","naptan:AtcoCode":"9100STRWBYH","network":"National Rail","operator":"South Western Railway","platforms":"2","public_transport":"station","railway":"station","ref:crs":"STW","wheelchair":"yes","wheelchair:description":"Ramp at approx 1:14 gradient to Platform 1. Short unevenly-graded floor at approx 1:10 gradient to Platform 2. Step-free access between platforms via full-barrier level crossing.","wikidata":"Q2561677","wikipedia":"en:Strawberry Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0380294,51.9672114]},"properties":{"name":"Gotherington","naptan:AtcoCode":"940GZZGRGOT","operator":"Gloucestershire and Warwickshire Steam Railway","public_transport":"station","railway":"station","source":"Bing;local_knowledge","usage":"tourism","wikidata":"Q5587849"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3163815,52.4623343]},"properties":{"internet_access":"no","name":"Littleport","naptan:AtcoCode":"9100LTLPORT","network":"National Rail","railway":"station","ref:crs":"LTP","wheelchair":"limited","wikidata":"Q2173947","wikipedia":"en:Littleport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.574777,53.0964641]},"properties":{"fixme":"location needs verification as the trees are too dense to see the platfom...","name":"Recreation Ground Halt","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5707431,53.0957021]},"properties":{"name":"Steeple Grange","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8192585,51.3664877]},"properties":{"name":"Crowthorne","naptan:AtcoCode":"9100CRWTHRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CRN","source":"bing","wheelchair":"yes","wikidata":"Q4371483","wikipedia":"en:Crowthorne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8038071,51.3465435]},"properties":{"name":"Sandhurst","naptan:AtcoCode":"9100SNDHRST","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"SND","source":"bing","source:operator":"Local Knowledge","wheelchair":"no","wikidata":"Q2848846","wikipedia":"en:Sandhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4674675,52.4793285]},"properties":{"name":"Bedworth","name:lt":"Bedvertas","naptan:AtcoCode":"9100BEDWRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEH","source":"NPE","wikidata":"Q2201463","wikipedia":"en:Bedworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0893749,51.5131048]},"properties":{"fare_zone":"1","light_rail":"yes","line":"Northern;Central;Waterloo & City","name":"Bank","name:ru":"Бэнк","naptan:AtcoCode":"940GZZLUBNK","network":"London Underground;Docklands Light Railway","platforms":"8","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","start_date":"1898-08-08","station":"subway","subway":"yes","wheelchair":"limited","wikidata":"Q806704","wikimedia_commons":"Category:Bank and Monument stations","wikipedia":"en:Bank and Monument stations"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1194539,51.856458]},"properties":{"name":"Watton-at-Stone","naptan:AtcoCode":"9100WATONAS","network":"National Rail","railway":"station","ref:crs":"WAS","wikidata":"Q2678656","wikipedia":"en:Watton-at-Stone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2158,51.7651554]},"properties":{"name":"Hatfield","naptan:AtcoCode":"9100HATFILD","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"HAT","ref:tiploc":"HATFILD","source:ref":"ATOC/National Rail","wheelchair":"yes","wikidata":"Q19956","wikipedia":"en:Hatfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9275278,51.8858134]},"properties":{"name":"Hythe (Colchester)","naptan:AtcoCode":"9100CLCHHYT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HYH","train":"yes","wikidata":"Q2552020","wikipedia":"en:Hythe railway station (Essex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1924714,52.3288086]},"properties":{"name":"Huntingdon","naptan:AtcoCode":"9100HNTNGDN","network":"National Rail","network:wikidata":"Q26334","platforms":"3","public_transport":"station","railway":"station","ref:crs":"HUN","ref:tiploc":"HNTNGDN","source":"NPE","train":"yes","wikidata":"Q5945150","wikipedia":"en:Huntingdon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4454717,51.4588093]},"properties":{"description":"Heathrow Terminal 4 - Piccadilly Line - Westbound -> to Terminal 1,2,3","fare_zone":"6","level":"-2","line":"Piccadilly","name":"Heathrow Terminal 4","naptan:AtcoCode":"9100HTRWTM4","network":"London Underground","public_transport":"station","railway":"station","source:name":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","source_ref:network":"https//en.wikipedia.org/wiki/List_of_London_railway_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikipedia":"en:Heathrow Terminal 4 tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2144055,51.4903477]},"properties":{"fare_zone":"2","line":"District;Piccadilly","name":"Barons Court","name:ru":"Баронс-Корт","naptan:AtcoCode":"940GZZLUBSC","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q808729","wikipedia":"en:Barons Court tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1332873,51.6164024]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Arnos Grove","naptan:AtcoCode":"940GZZLUASG","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q697151","wikipedia":"en:Arnos Grove tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7124293,51.2495324]},"properties":{"name":"Ash","naptan:AtcoCode":"9100ASHH","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"ASH","wheelchair":"yes","wikidata":"Q2102056","wikipedia":"en:Ash railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6676084,51.244622]},"properties":{"name":"Wanborough","naptan:AtcoCode":"9100WANBRO","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WAN","wheelchair":"no","wikidata":"Q372011","wikipedia":"en:Wanborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4476371,50.6275884]},"properties":{"name":"Starcross","naptan:AtcoCode":"9100STRCROS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SCS","train":"yes","wikidata":"Q2308834","wikipedia":"en:Starcross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5293235,50.7576921]},"properties":{"name":"Lymington Pier","naptan:AtcoCode":"9100LMTNPIR","network":"National Rail","network:wikidata":"Q26334","public_transport":"stop_position","railway":"station","ref:crs":"LYP","train":"yes","wikidata":"Q2165461","wikipedia":"en:Lymington Pier railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5371052,50.7610799]},"properties":{"name":"Lymington Town","naptan:AtcoCode":"9100LMTNTWN","network":"National Rail","network:wikidata":"Q26334","public_transport":"stop_position","railway":"station","ref:crs":"LYT","train":"yes","wheelchair":"yes","wikidata":"Q1898375","wikipedia":"en:Lymington Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9212824,52.2814739]},"properties":{"name":"Boughton","operator":"Northampton Lamport Railway","public_transport":"station","railway":"station","tourism":"preserved_railway","train":"yes","usage":"tourism","wikidata":"Q4949436"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0480464,53.4373879]},"properties":{"name":"New Brighton","naptan:AtcoCode":"9100NBTN","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"NBN","source":"local_knowledge","wikidata":"Q2194863","wikipedia":"en:New Brighton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1060356,51.5324874]},"properties":{"addr:city":"London","addr:postcode":"N1 9LQ","addr:street":"Islington High Street","fare_zone":"1","internet_access":"wlan","line":"Northern","name":"Angel","name:da":"Angel Station","name:ru":"Энджел","naptan:AtcoCode":"940GZZLUAGL","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q531444","wikipedia":"en:Angel tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1426957,51.5394397]},"properties":{"fare_zone":"2","line":"Northern","name":"Camden Town","name:ru":"Камден-таун","naptan:AtcoCode":"940GZZLUCTN","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the northbound platform toward High Barnet and the northbound platform towards Edgeware.","wikidata":"Q1028430","wikipedia":"en:Camden Town tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1648137,51.5871881]},"properties":{"fare_zone":"3","line":"Northern","name":"East Finchley","name:ru":"Ист-Финчли","naptan:AtcoCode":"940GZZLUEFY","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1277850","wikipedia":"en:East Finchley tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1458316,51.5776825]},"properties":{"fare_zone":"3","layer":"-3","line":"Northern","name":"Highgate","name:ru":"Хайгейт","naptan:AtcoCode":"940GZZLUHGT","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q617824","wikipedia":"en:Highgate tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.138457,51.5568005]},"properties":{"fare_zone":"2","line":"Northern","name":"Tufnell Park","name:ru":"Тафнелл-парк","naptan:AtcoCode":"940GZZLUTFP","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1780856","wikipedia":"en:Tufnell Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2265541,51.5834006]},"properties":{"fare_zone":"3;4","line":"Northern","name":"Hendon Central","name:ru":"Хэндон-сентрал","naptan:AtcoCode":"940GZZLUHCL","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1308799","wikipedia":"en:Hendon Central tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7429378,51.3021991]},"properties":{"name":"Farnborough North","naptan:AtcoCode":"9100FRBRNTH","network":"National Rail","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"FNN","wheelchair":"limited","wikidata":"Q2498080","wikipedia":"en:Farnborough North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1938826,51.650399]},"properties":{"fare_zone":"5","line":"Northern","name":"High Barnet","naptan:AtcoCode":"940GZZLUHBT","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q671034","wikipedia":"en:High Barnet tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2139731,51.5768177]},"properties":{"fare_zone":"3","layer":"1","line":"Northern","name":"Brent Cross","name:ru":"Брент-Кросс","naptan:AtcoCode":"940GZZLUBTX","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","toilets":"no","wheelchair":"no","wikidata":"Q1828818","wikipedia":"en:Brent Cross tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9709902,54.5856932]},"properties":{"funicular":"yes","name":"Town Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7206879,52.6119213]},"properties":{"name":"Great Yarmouth","name:lt":"Didysis Jarmutas","naptan:AtcoCode":"9100YARMTH","network":"National Rail","operator":"Greater Anglia","platforms":"4","public_transport":"station","railway":"station","ref:crs":"GYM","wikidata":"Q280999","wikipedia":"en:Great Yarmouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8920461,52.9915619]},"properties":{"monorail":"yes","name":"Alton Towers Main Entrance","railway":"station","station":"monorail","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3813376,53.2746594]},"properties":{"name":"Roundhouse Halt","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.barrowhill.org/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1331195,51.5211885]},"properties":{"addr:city":"Goring-on-Thames","addr:housename":"Goring & Streatley station","addr:postcode":"RG8 0EP","addr:street":"Gatehampton Road","internet_access":"wlan","internet_access:fee":"no","level":"0","name":"Goring & Streatley","naptan:AtcoCode":"9100GORASTR","network":"National Rail","operator":"Great Western Railway","phone":"+44 3457 000 125","railway":"station","ref:crs":"GOR","start_date":"1840-06-01","wheelchair":"yes","wikidata":"Q5586504","wikipedia":"en:Goring & Streatley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9904977,51.0251985]},"properties":{"name":"Dymchurch","naptan:AtcoCode":"940GZZRHDYM","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","source":"survey","tourism":"attraction","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q5318836"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9603685,50.9972166]},"properties":{"name":"Romney Warren Halt","naptan:AtcoCode":"940GZZRHRWH","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q4104339","wikipedia":"en:Warren Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9745763,51.011562]},"properties":{"name":"St Mary's Bay","naptan:AtcoCode":"940GZZRHSMB","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","source":"survey","tourism":"attraction","train":"yes","usage":"tourism","wikidata":"Q7594246"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6846999,51.2927025]},"properties":{"name":"Stony Shaw","railway":"station","source:name":"Operator website","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3447996,51.5421177]},"properties":{"description":"Greenford, Network Rail","fare_zone":"4","layer":"1","level":"1","line":"Central","name":"Greenford","naptan:AtcoCode":"9100GFORD","network":"National Rail;London Underground","note":"Surrounding lines made sense of with help from http://www.roscalen.com/signals/Greenford/index.htm","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"GFD","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"limited","wheelchair:description":"Central Line access from platform to train by manual boarding ramp.","wikidata":"Q800841","wikipedia":"en:Greenford station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0260733,51.5517605]},"properties":{"addr:city":"London","addr:postcode":"E7 0HX","addr:street":"Woodgrange Road","name":"Wanstead Park","naptan:AtcoCode":"9100WNSTDPK","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WNP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q641970","wikipedia":"en:Wanstead Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0085412,51.5635285]},"properties":{"name":"Leytonstone High Road","naptan:AtcoCode":"9100LYTNSHR","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LER","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q3500636","wikipedia":"en:Leytonstone High Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6502646,51.4637657]},"properties":{"name":"Hill Train Bottom","network":"Hill Train","operator":"LEGOLAND Windsor Resort","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6536388,51.4641989]},"properties":{"name":"Hill Train Top","network":"Hill Train","operator":"LEGOLAND Windsor Resort","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0296866,53.7460224]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5674423,54.173908]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5637519,54.1760006]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5659244,54.1778028]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4420114,54.8146005]},"properties":{"addr:housename":"Alston Railway Station","addr:postcode":"CA9 3JB","name":"Alston","naptan:AtcoCode":"910GZZTYALS","operator":"South Tynedale Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4735872","wikipedia":"en:Alston_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2070104,53.589009]},"properties":{"name":"Heywood","naptan:AtcoCode":"940GZZELHWD","operator":"East Lancashire Railway Preservation Society","owner":"East Lancashire Railway","public_transport":"station","railway":"station","source":"npe","train":"yes","usage":"tourism","wikidata":"Q12060004"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2809729,52.0210915]},"properties":{"name":"King's Sutton","naptan:AtcoCode":"9100KINSSTN","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"KGS","wheelchair":"limited","wikidata":"Q1956571","wikipedia":"en:Kings Sutton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5620827,51.4015235]},"properties":{"name":"Virginia Water","naptan:AtcoCode":"9100VRGNWTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"VIR","source":"Surrey aerial","wikidata":"Q976686","wikipedia":"en:Virginia Water railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8941711,50.8678947]},"properties":{"name":"Woodland Walk Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8900803,50.8736888]},"properties":{"name":"Fenocchi's Junction Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0904319,51.4853553]},"properties":{"name":"Pangbourne","naptan:AtcoCode":"9100PANGBRN","network":"National Rail","operator":"Great Western Railways","railway":"station","ref:crs":"PAN","wheelchair":"yes","wikidata":"Q1959230","wikipedia":"en:Pangbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4852346,54.957505]},"properties":{"name":"Fellgate","naptan:AtcoCode":"940GZZTWFGT","network":"Tyne and Wear Metro","operator":"Nexus","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q5442459","wikipedia":"en:Fellgate Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2101451,51.6082746]},"properties":{"fare_zone":"4","line":"Northern","name":"Mill Hill East","naptan:AtcoCode":"940GZZLUMHL","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q1670635","wikipedia":"en:Mill Hill East tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1883313,51.6094298]},"properties":{"fare_zone":"4","line":"Northern","name":"West Finchley","naptan:AtcoCode":"940GZZLUWFN","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q175436","wikipedia":"en:West Finchley tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.185523,51.617938]},"properties":{"fare_zone":"4","line":"Northern","name":"Woodside Park","naptan:AtcoCode":"940GZZLUWOP","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q1974772","wikipedia":"en:Woodside Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1714727,53.5508557]},"properties":{"name":"Mills Hill","naptan:AtcoCode":"9100MLSHILL","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MIH","ref:stanox":"31049","ref:tiploc":"MLSHILL","train":"yes","wikidata":"Q2085063","wikipedia":"en:Mills Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.539083,50.8986123]},"properties":{"name":"Amberley","public_transport":"station","railway":"station","source":"visual survey;bing","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5345047,50.900274]},"properties":{"name":"Cragside","public_transport":"station","railway":"station","source":"visual survey;bing","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0732256,50.946582]},"properties":{"name":"Worth Halt","operator":"The Lavender Line","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism","website":"https://www.lavender-line.co.uk"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0204336,51.1246]},"properties":{"addr:city":"East Grinstead","addr:postcode":"RH19 1SP","addr:street":"Firbank Way","name":"East Grinstead (Bluebell)","operator":"Bluebell Railway","public_transport":"station","railway":"station","railway:preserved":"yes","toilets:wheelchair":"yes","usage":"tourism","website":"http://www.bluebell-railway.co.uk","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0498562,52.8613742]},"properties":{"name":"Oswestry","phone":"+44 1691 688763","public_transport":"station","railway":"station","usage":"tourism","website":"http://www.cambrianrailways.com","wikipedia":"en:Oswestry_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1139888,51.6936318]},"properties":{"fare_zone":"6","line":"Central","name":"Epping","naptan:AtcoCode":"940GZZLUEPG","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikipedia":"en:Epping tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.951232,50.9570164]},"properties":{"name":"Portsmouth Arms","naptan:AtcoCode":"9100PRTSMTA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PMA","request_stop":"yes","wikidata":"Q2659294","wikipedia":"en:Portsmouth Arms railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4060482,50.640519]},"properties":{"name":"Newmills","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.launcestonsr.co.uk/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5953367,50.8568166]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3300193,51.6306401]},"properties":{"name":"Shenfield","naptan:AtcoCode":"9100SHENFLD","network":"National Rail;Elizabeth Line","old_name":"Shenfield and Hutton Junction","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"SNF","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q3461338","wikipedia":"en:Shenfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0689113,51.5589375]},"properties":{"fare_zone":"4","name":"Ilford","naptan:AtcoCode":"9100ILFORD","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"IFD","train":"yes","wheelchair":"yes","wikidata":"Q587700","wikipedia":"en:Ilford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0968706,51.56394]},"properties":{"fare_zone":"4","name":"Seven Kings","naptan:AtcoCode":"9100SVNKNGS","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"SVK","train":"yes","wheelchair":"yes","wikidata":"Q2527615","wikipedia":"en:Seven Kings railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1587703,52.2246512]},"properties":{"name":"Cambridge North","naptan:AtcoCode":"9100CAMBNTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CMB","source":"survey","train":"yes","wheelchair":"yes","wikidata":"Q5025527","wikipedia":"en:Cambridge North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1226374,55.646411]},"properties":{"name":"Etal Railway Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5567303,51.8753105]},"properties":{"name":"Braintree","name:lt":"Breintris","naptan:AtcoCode":"9100BRAINTR","network":"National Rail","old_name":"Braintree and Bocking","public_transport":"station","railway":"station","ref:crs":"BTR","train":"yes","wikidata":"Q2716690","wikipedia":"en:Braintree railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3280963,52.3349535]},"properties":{"addr:city":"Soham","addr:postcode":"CB7 5DY","addr:street":"Station Road","name":"Soham","network":"National Rail","platforms":"1","public_transport":"station","railway":"station","ref:crs":"SOJ","start_date":"2021-12-13","wikidata":"Q7554647","wikipedia":"en:Soham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4947986,52.4469559]},"properties":{"name":"Coventry Arena","naptan:AtcoCode":"9100COVAREN","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CAA","wikidata":"Q5179044","wikipedia":"en:Coventry Arena railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9114939,51.5668724]},"properties":{"name":"Somersham","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.907229,51.5679824]},"properties":{"name":"Bourne Again Junction","old_name":"Bourne End","railway":"station","request_stop":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0449277,51.9491435]},"properties":{"name":"Manningtree","naptan:AtcoCode":"9100MANNGTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MNG","start_date":"1846","wikidata":"Q1938819","wikipedia":"en:Manningtree railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4567961,51.5681417]},"properties":{"name":"Basildon","name:lt":"Bazildonas","naptan:AtcoCode":"9100BASILDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BSO","wheelchair":"yes","wikidata":"Q2752701","wikipedia":"en:Basildon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3406801,51.5678537]},"properties":{"name":"West Horndon","naptan:AtcoCode":"9100WHORNDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WHR","wikidata":"Q1808174","wikipedia":"en:West Horndon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.782551,51.8808094]},"properties":{"name":"Marks Tey","naptan:AtcoCode":"9100MRKSTEY","network":"National Rail","old_name":"Marks Tey Junction","public_transport":"station","railway":"station","ref:crs":"MKT","ref:tiploc":"MRKSTEY","source":"NPE","start_date":"1844","tiploc":"MRKSTEY","wikidata":"Q2025932","wikipedia":"en:Marks Tey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1609516,51.1687913]},"properties":{"addr:city":"Horley","addr:postcode":"RH6 7NL","addr:street":"Victoria Road","name":"Horley","naptan:AtcoCode":"9100HORLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HOR","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Accessible WC in ticket office on Victoria Road, also step-free to Bus Stops A & B. (upper level). Lifts to all platforms. Step-free entrance to platform 1 from car park.","wikidata":"Q673580","wikipedia":"en:Horley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7025233,50.4612092]},"properties":{"name":"Nappers Halt","note":"Very limited services: special events only","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.157396,52.7223746]},"properties":{"name":"Nunckley Hill","network":"Mountsorrel Railway","operator":"Great Central Railway (plc)","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2289056,51.9803536]},"properties":{"name":"Letchworth Garden City","naptan:AtcoCode":"9100LTCE","network":"National Rail","old_name":"Letchworth","operator":"First Capital Connect","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LET","wikidata":"Q2582397","wikipedia":"en:Letchworth Garden City railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.079354,50.4087718]},"properties":{"name":"Plym Bridge","old_name":"Plym Bridge (Halt)","public_transport":"station","railway":"station","start_date":"30 December 2012","usage":"tourism","wikipedia":"en:Plym Valley Railway"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4940868,54.7112989]},"properties":{"name":"Maryport","naptan:AtcoCode":"9100MPRT","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"MRY","wikidata":"Q2326887","wikipedia":"en:Maryport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4808654,53.0604187]},"properties":{"addr:city":"Belper","addr:postcode":"DE56 2EN","addr:street":"Midland Terrace","name":"Ambergate","naptan:AtcoCode":"9100AMBERGT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AMB","wikidata":"Q2100978","wikipedia":"en:Ambergate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4108169,52.9120948]},"properties":{"name":"Spondon","naptan:AtcoCode":"9100SPDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SPO","source":"NPE","wikidata":"Q7578950","wikipedia":"en:Spondon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.262883,52.862275]},"properties":{"addr:postcode":"NG11 0EE","name":"East Midlands Parkway","naptan:AtcoCode":"9100EMPKWAY","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"EMD","train":"yes","wikidata":"Q5328988","wikipedia":"en:East Midlands Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.13403,52.5823924]},"properties":{"air_conditioning":"no","internet_access":"no","name":"South Wigston","naptan:AtcoCode":"9100WGSTS","network":"National Rail","operator":"East Midlands Railway","postal_code":"LE18 4XU","public_transport":"station","railway":"station","ref:crs":"SWS","wheelchair":"limited","wikidata":"Q2096724","wikimedia_commons":"Category:South Wigston railway station","wikipedia":"en:South Wigston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2038429,51.8008507]},"properties":{"name":"Welwyn Garden City","naptan:AtcoCode":"9100WLWYNGC","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WGC","ref:tiploc":"WLWYNGC","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2723798","wikipedia":"en:Welwyn Garden City railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3522211,51.5646517]},"properties":{"fare_zone":"5","line":"Piccadilly","name":"South Harrow","naptan:AtcoCode":"940GZZLUSHH","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q946831","wikipedia":"en:South Harrow tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3156202,51.550751]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Sudbury Town","naptan:AtcoCode":"940GZZLUSUT","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q1768993","wikipedia":"en:Sudbury Town tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4780606,53.7799943]},"properties":{"name":"Ramsgreave and Wilpshire","naptan:AtcoCode":"9100RMSWILP","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"RGW","train":"yes","wikipedia":"en:Ramsgreave and Wilpshire railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7253575,54.436456]},"properties":{"name":"Grosmont","naptan:AtcoCode":"9100GROSMNT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GMT","uic_ref":"7000952","wikidata":"Q5610456","wikipedia":"en:Grosmont railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2628073,51.5087164]},"properties":{"name":"Acton Central","naptan:AtcoCode":"9100ACTNCTL","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"ACC","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wikidata":"Q2640985","wikipedia":"en:Acton Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5612476,54.3051216]},"properties":{"name":"Leeming Bar","naptan:AtcoCode":"940GZZWDLEE","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6516322","wikipedia":"en:Leeming Bar railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3362525,51.5568815]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Sudbury Hill","naptan:AtcoCode":"940GZZLUSUH","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2121603","wikipedia":"en:Sudbury Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0190513,50.7253686]},"properties":{"addr:city":"Poole","addr:postcode":"BH16 5AA","addr:street":"Junction Road","name":"Hamworthy","naptan:AtcoCode":"9100HMWTHY","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HAM","source":"NPE","wikidata":"Q5646482","wikipedia":"en:Hamworthy railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1667636,51.5201935]},"properties":{"fare_zone":"1","line":"Circle;District;Hammersmith & City","name":"Edgware Road (Circle, District and Hammersmith & City lines)","name:ru":"Эджвер-роуд","naptan:AtcoCode":"940GZZLUERC","network":"London Underground","operator":"Transport for London","platforms":"4","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1284426","wikipedia":"en:Edgware Road tube station (Circle, District and Hammersmith & City lines)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7336166,51.345203]},"properties":{"name":"Sittingbourne Viaduct","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8289729,51.5916289]},"properties":{"name":"Taw Valley Halt","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7689188"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1475846,51.47761]},"properties":{"name":"Battersea Park","name:ru":"Баттерси-парк","naptan:AtcoCode":"9100BATRSPK","network":"National Rail;London Overground","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BAK","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2241899","wikipedia":"en:Battersea Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.555937,51.7677329]},"properties":{"name":"Parkend","naptan:AtcoCode":"940GZZDFPKD","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7138247"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1041577,52.1184196]},"properties":{"railway":"station","source":"OS OpenData StreetView","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.069585,52.7987314]},"properties":{"name":"Penygarreg Lane Halt","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7165406"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1447878,52.0504188]},"properties":{"addr:city":"Ipswich","addr:housename":"Ipswich Station","addr:postcode":"IP2 8AL","addr:street":"Burrell Road","name":"Ipswich","naptan:AtcoCode":"9100IPSWICH","network":"National Rail","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"IPS","train":"yes","wheelchair":"limited","wikidata":"Q2003305","wikipedia":"en:Ipswich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2436146,51.708733]},"properties":{"name":"Ongar","public_transport":"station","railway":"station","station":"preserved_railway","usage":"tourism","wikidata":"Q450533"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1641554,51.7114262]},"properties":{"name":"North Weald","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q450510"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1716892,51.9395281]},"properties":{"name":"Wrabness","naptan:AtcoCode":"9100WRABNES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WRB","wikidata":"Q3284262","wikipedia":"en:Wrabness railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2560388,51.9472249]},"properties":{"name":"Harwich International","naptan:AtcoCode":"9100PRKSTON","network":"National Rail","old_name":"Parkeston","platforms":"3","public_transport":"station","railway":"station","ref:crs":"HPQ","wikidata":"Q2058152","wikipedia":"en:Harwich International railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.063948,52.807809]},"properties":{"name":"Llynclys South","railway":"station","usage":"tourism","wikidata":"Q6662943"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0279002,51.4620317]},"properties":{"name":"Kidbrooke","naptan:AtcoCode":"9100KIDBROK","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"KDB","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access to both platforms. For trains to London from platform 1 via Park Terrace, for trains away from London from Platform 2 via Henley Cross, step free interchange between platforms via road bridge is in excess of 300 metres.","wikidata":"Q2570789","wikipedia":"en:Kidbrooke railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.57288,53.0901924]},"properties":{"name":"Ravenstor","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7296554","wikipedia":"en:Ravenstor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4251259,53.5735158]},"properties":{"addr:city":"Bolton","addr:street":"Trinity Street","name":"Bolton","naptan:AtcoCode":"9100BOLTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BON","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Lifts to all platforms, helpful staff will fetch a ramp to your train.","wikidata":"Q112080782","wikipedia":"en:Bolton Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0625676,50.6448236]},"properties":{"addr:city":"Norden","addr:housename":"Swanage Railway","addr:postcode":"BH20 5DW","alt_name":"Norden Park & Ride","alt_name_1":"Norden P&R","email":"Info@swanage-railway.co.uk","name":"Norden","naptan:AtcoCode":"940GZZSRNPR","operator":"Swanage Railway","phone":"+44 1929 425800","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.swanagerailway.co.uk/","wikidata":"Q7050598"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0606907,51.5195786]},"properties":{"fare_zone":"2","line":"District;Hammersmith & City","name":"Whitechapel","name:ru":"Уайтчепел","naptan:AtcoCode":"9100WCHAPEL","network":"London Underground;London Overground","network:subway":"London Underground","network:train":"London Overground","operator":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","ref:crs":"ZLW","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q605723","wikipedia":"en:Whitechapel station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0755835,51.5386574]},"properties":{"electrified":"rail","name":"Haggerston","naptan:AtcoCode":"9100HAGGERS","network":"London Overground","network:wikidata":"Q746021","operator":"Transport for London","operator:wikidata":"Q682520","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HGG","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"yes","wikidata":"Q1842102","wikipedia":"en:Haggerston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0519063,51.5007782]},"properties":{"check_date:wheelchair":"2022-03-05","name":"Rotherhithe","naptan:AtcoCode":"9100RTHERHI","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"ROE","wheelchair":"no","wheelchair:description":"Step-free from platform to train","wikidata":"Q175256","wikipedia":"en:Rotherhithe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0478319,51.4934207]},"properties":{"electrified":"rail","name":"Surrey Quays","naptan:AtcoCode":"9100SURREYQ","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"SQE","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"no","wheelchair:description":"Step-free from platform to train","wikidata":"Q801499","wikipedia":"en:Surrey Quays railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0560206,51.5044344]},"properties":{"electrified":"rail","name":"Wapping","naptan:AtcoCode":"9100WAPPING","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"WPE","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wheelchair:description":"Step-free from platform to train. (NOT shown Step-free from street on 2017 TfL map)","wikidata":"Q801580","wikipedia":"en:Wapping railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0896031,51.468043]},"properties":{"name":"Denmark Hill","naptan:AtcoCode":"9100DENMRKH","network":"National Rail;London Overground","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"DMK","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q1981385","wikipedia":"en:Denmark Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1384355,51.4699602]},"properties":{"name":"Wandsworth Road","name:ru":"Уондсуэрт-Роуд","naptan:AtcoCode":"9100WNDSWRD","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"WWR","source:network":"Sign","wheelchair":"no","wikidata":"Q2472566","wikipedia":"en:Wandsworth Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1323141,51.4654853]},"properties":{"name":"Clapham High Street","name:ru":"Клэпхем-Хай-стрит","naptan:AtcoCode":"9100CLPHHS","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"CLP","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2381798","wikipedia":"en:Clapham High Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.014695,53.6485824]},"properties":{"name":"Southport Princes Park","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0121469,53.6523279]},"properties":{"name":"Southport Marine Parade","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0756539,51.5315917]},"properties":{"electrified":"rail","name":"Hoxton","name:ru":"Хокстон","naptan:AtcoCode":"9100HOXTON","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HOX","source":"local_knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wikidata":"Q1851584","wikipedia":"en:Hoxton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0573427,51.4736737]},"properties":{"name":"Queens Road Peckham","naptan:AtcoCode":"9100PCKHMQD","network":"London Overground","public_transport":"station","railway":"station","ref:crs":"QRP","source:network":"Sign","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q1897912","wikipedia":"en:Queens Road Peckham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8681985,51.1812254]},"properties":{"name":"Bentley","name:lt":"Bentlis","naptan:AtcoCode":"9100BNTEY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BTY","wheelchair":"yes","wikidata":"Q1883564","wikipedia":"en:Bentley railway station (Hampshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.061208,51.6248371]},"properties":{"name":"Edmonton Green","naptan:AtcoCode":"9100EDMNGRN","network":"National Rail;London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"EDR","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2410534","wikipedia":"en:Edmonton Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1635615,50.8231964]},"properties":{"name":"Mungo's Central Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4751167,54.8405356]},"properties":{"name":"Kirkhaugh","naptan:AtcoCode":"940GZZTYKKH","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6435932,51.6114109]},"properties":{"name":"Beaconsfield","naptan:AtcoCode":"9100BCNSFLD","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"BCF","website":"http://www.nationalrail.co.uk/stations_destinations/BCF.aspx","wheelchair":"yes","wikidata":"Q4876042","wikipedia":"en:Beaconsfield railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4695395,50.9856094]},"properties":{"name":"Robertsbridge Junction","naptan:AtcoCode":"910GRBRTSBD","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1596319,50.7330485]},"properties":{"name":"Ryde Esplanade","naptan:AtcoCode":"9100RYDE","network":"National Rail","operator":"Island Line","public_transport":"station","railway":"station","ref:crs":"RYD","wheelchair":"yes","wikidata":"Q2174613","wikipedia":"en:Ryde Esplanade railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1604721,50.7390318]},"properties":{"name":"Ryde Pier Head","naptan:AtcoCode":"9100RYDP","network":"National Rail","railway":"station","ref:crs":"RYP","wikipedia":"en:Ryde Pier Head railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2405289,50.718146]},"properties":{"image":"File:Wootton station, Isle of Wight, UK.jpg","name":"Wootton","platforms":"1","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q8034101"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.180715,54.1277914]},"properties":{"addr:city":"Bempton","addr:postcode":"YO15 1HN","name":"Bempton","naptan:AtcoCode":"9100BEMPTON","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BEM","ref:tiploc":"BEMPTON","source":"npe","train":"yes","wikidata":"Q2653960","wikipedia":"en:Bempton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1622843,51.2017863]},"properties":{"addr:city":"Redhill","addr:district":"Salfords","addr:postcode":"RH1 5DE","addr:street":"Southern Avenue","name":"Salfords","naptan:AtcoCode":"9100SALFDS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SAF","toilets:wheelchair":"no","website":"www.nationalrail.co.uk/stations-and-destinations/stations-made-easy/salfords-surrey-station-plan","wheelchair":"limited","wheelchair:description":"Only Northbound platform 1 has step free access. Southbound platform 2 via bridge. Blue Badge space by station entrance. WC on platform 1 not checked as it was locked (June 2018)","wikidata":"Q2282929","wikipedia":"en:Salfords railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1709022,51.2274606]},"properties":{"addr:city":"Earlswood","addr:street":"Station Approach West","name":"Earlswood","naptan:AtcoCode":"9100EARLSWD","network":"National Rail","postal_code":"RH1 5DE","public_transport":"station","railway":"station","ref:crs":"ELD","source":"NPE","wheelchair":"limited","wheelchair:description":"Step-free to northbound platform only. No barriers. Stairs and subway to southbound. (WC not checked today) one Blue Badge space and dipped kerb opposite entrances.","wikidata":"Q772070","wikipedia":"en:Earlswood railway station (Surrey)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1967655,52.2622818]},"properties":{"name":"Waterbeach","naptan:AtcoCode":"9100WATBECH","network":"National Rail","railway":"station","ref:crs":"WBC","wikidata":"Q2620884","wikipedia":"en:Waterbeach railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1354103,51.5976296]},"properties":{"name":"Wallingford","naptan:AtcoCode":"940GZZCWWLF","operator":"Cholsey & Wallingford Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7963106","wikipedia":"en:Wallingford railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6107049,52.6258348]},"properties":{"name":"Polesworth","naptan:AtcoCode":"9100PWTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PSW","source":"NPE","wikidata":"Q2749317","wikipedia":"en:Polesworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6032062,53.5712017]},"properties":{"name":"Walker Gardens","network":"Haigh Woodland Park Miniature Railway","operator":"Wigan District Model Engineering Society","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2503162,52.5746038]},"properties":{"name":"Peterborough","naptan:AtcoCode":"9100PBRO","network":"National Rail","network:wikidata":"Q26334","operator":"London North Eastern Railway","public_transport":"station","railway":"station","ref:crs":"PBO","train":"yes","wikidata":"Q2206677","wikipedia":"en:Peterborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4207754,52.5305171]},"properties":{"name":"Bridgnorth","naptan:AtcoCode":"940GZZSVBRG","network":"Severn Valley Railway","operator":"Severn Valley Railway","platforms":"2","public_transport":"station","railway":"station","usage":"tourism","website":"http://www.bridgnorthstation.co.uk/","wikidata":"Q4966910"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2399754,52.3835966]},"properties":{"name":"Kidderminster Town","network":"Severn Valley Railway","operator":"Severn Valley Railway","platforms":"2","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6404676","wikipedia":"en:Kidderminster_Town_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9671299,51.1518972]},"properties":{"name":"Alton","naptan:AtcoCode":"9100ALTON","network":"National Rail","operator":"Southwestern Railway","public_transport":"station","railway":"station","ref:crs":"AON","source":"NPE","wikidata":"Q2694837","wikipedia":"en:Alton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9669511,50.7815104]},"properties":{"name":"Eastoke Corner","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9786105,50.7839205]},"properties":{"name":"Mengham Road","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9866592,50.7841811]},"properties":{"name":"Beachlands","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.410949,54.3009398]},"properties":{"name":"Scalby Mills","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4113865,54.2929426]},"properties":{"name":"Peasholm","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9667675,54.5841702]},"properties":{"name":"Cat Nab","railway":"station","source":"survey","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.041538,53.5150389]},"properties":{"name":"Mossley","naptan:AtcoCode":"9100MOSSLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MSL","wikidata":"Q1986726","wikipedia":"en:Mossley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4181268,51.6288429]},"properties":{"layer":"1","name":"Billericay","name:lt":"Bilerikis","naptan:AtcoCode":"9100BILERCY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BIC","wikidata":"Q1971153","wikipedia":"en:Billericay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.519396,51.6148039]},"properties":{"name":"Wickford","naptan:AtcoCode":"9100WIKFORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WIC","source":"NPE","wikidata":"Q1857839","wikipedia":"en:Wickford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.5593742,52.5644995]},"properties":{"name":"Reedham","naptan:AtcoCode":"9100RDHAMN","network":"National Rail","railway":"station","ref:crs":"REE","wikidata":"Q1960288","wikipedia":"en:Reedham railway station (Norfolk)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7026932,51.8409896]},"properties":{"name":"Kelvedon","naptan:AtcoCode":"9100KELVEDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KEL","source":"NPE","start_date":"1843 - 03 - 29","wikidata":"Q2540528","wikipedia":"en:Kelvedon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5522587,52.5784071]},"properties":{"name":"Atherstone","naptan:AtcoCode":"9100ATHRSTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ATH","source":"NPE","wikidata":"Q604337","wikipedia":"en:Atherstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1133473,51.4628953]},"properties":{"name":"Brixton","name:ru":"Брикстон","naptan:AtcoCode":"9100BRIXTON","network":"National Rail","opening_hours":"Mo-Fr 06:30-20:30; Sa 08:00-15:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BRX","ref:stanox":"87248","ref:tiploc":"BRIXTON","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2212863","wikipedia":"en:Brixton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3940413,54.3667401]},"properties":{"name":"Muncaster Mill","naptan:AtcoCode":"940GZZREMML","operator":"Ravenglass & Eskdale Railway","public_transport":"station","railway":"station","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wikidata":"Q6935639","wikipedia":"en:Muncaster Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4549096,50.6159266]},"properties":{"name":"Weymouth","naptan:AtcoCode":"9100WEYMTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WEY","train":"yes","wheelchair":"yes","wikidata":"Q2573733","wikipedia":"en:Weymouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.412795,52.4302453]},"properties":{"name":"Shippea Hill","naptan:AtcoCode":"9100SPHL","network":"National Rail","old_name":"Mildenhall Road","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"SPP","request_stop":"yes","source":"NPE","wikidata":"Q1822505","wikipedia":"en:Shippea Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1304869,52.6554684]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1380655,52.6444735]},"properties":{"public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4435652,53.757064]},"properties":{"name":"Woodlesford","naptan:AtcoCode":"9100WDLESFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDS","wikidata":"Q2432424","wikipedia":"en:Woodlesford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6372217,53.8053522]},"properties":{"name":"Bramley","naptan:AtcoCode":"9100BRMLYSR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLE","ref:tiploc":"BRMLYSR","wikidata":"Q2142080","wikipedia":"en:Bramley railway station (West Yorkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0986832,51.5201501]},"properties":{"fare_zone":"1","line":"Metropolitan;Circle;Hammersmith & City","name":"Barbican","name:ru":"Барбакан","naptan:AtcoCode":"940GZZLUBBN","network":"London Underground","old_name":"Aldersgate","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","ref":"ZBB","start_date":"1865-12-23","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q38876","wikimedia_commons":"Category:Barbican tube station","wikipedia":"en:Barbican tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0886245,51.5858181]},"properties":{"fare_zone":"4","line":"Central","name":"Barkingside","naptan:AtcoCode":"940GZZLUBKE","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-05-31","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit the eastbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q808290","wikimedia_commons":"Category:Barkingside tube station","wikipedia":"en:Barkingside tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.149149,51.5145148]},"properties":{"fare_zone":"1","highway":"traffic_signals","line":"Central;Jubilee","name":"Bond Street","name:ru":"Бонд-стрит","naptan:AtcoCode":"940GZZLUBND","network":"London Underground","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","start_date":"1900-09-24","station":"subway","subway":"yes","traffic_signals:direction":"backward","wheelchair":"yes","wikidata":"Q892189","wikimedia_commons":"Category:Bond Street tube station","wikipedia":"en:Bond Street tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0468161,51.6259439]},"properties":{"fare_zone":"5","line":"Central","name":"Buckhurst Hill","naptan:AtcoCode":"940GZZLUBKH","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","start_date":"1856-08-22","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q999705","wikimedia_commons":"Category:Buckhurst Hill tube station","wikipedia":"en:Buckhurst Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1123604,51.5181074]},"properties":{"fare_zone":"1","line":"Central","name":"Chancery Lane","name:ru":"Чансери-лейн","naptan:AtcoCode":"940GZZLUCHL","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1061682","wikimedia_commons":"Category:Chancery Lane tube station","wikipedia":"en:Chancery Lane tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0757204,51.6176444]},"properties":{"fare_zone":"4","line":"Central","name":"Chigwell","naptan:AtcoCode":"940GZZLUCWL","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-11-24","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q597571","wikimedia_commons":"Category:Chigwell tube station","wikipedia":"en:Chigwell tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.083583,51.6452814]},"properties":{"fare_zone":"6","line":"Central","name":"Debden","naptan:AtcoCode":"940GZZLUDBN","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1865-04-24","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"0","wikidata":"Q1181455","wikimedia_commons":"Category:Debden tube station","wikipedia":"en:Debden tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0911302,51.5959477]},"properties":{"fare_zone":"4","line":"Central","name":"Fairlop","naptan:AtcoCode":"940GZZLUFLP","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-05-31","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1393332","wikimedia_commons":"Category:Fairlop tube station","wikipedia":"en:Fairlop tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0648799,51.576525]},"properties":{"fare_zone":"4","line":"Central","name":"Gants Hill","naptan:AtcoCode":"940GZZLUGTH","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1947-12-14","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1493698","wikimedia_commons":"Category:Gants Hill tube station","wikipedia":"en:Gants Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0925025,51.613134]},"properties":{"fare_zone":"4","line":"Central","name":"Grange Hill","naptan:AtcoCode":"940GZZLUGGH","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-11-24","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q646052","wikimedia_commons":"Category:Grange Hil tube station","wikipedia":"en:Grange Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0933827,51.6033138]},"properties":{"fare_zone":"4","line":"Central","name":"Hainault","naptan:AtcoCode":"940GZZLUHLT","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-05-31","station":"subway","subway":"yes","toilets":"no","wheelchair":"yes","wikidata":"Q1569388","wikimedia_commons":"Category:Hainault tube station","wikipedia":"en:Hainault tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.033435,51.5253378]},"properties":{"fare_zone":"2","line":"Central;District;Hammersmith & City","name":"Mile End","name:ru":"Майл-Энд","naptan:AtcoCode":"940GZZLUMED","network":"London Underground","operator":"London Underground","platforms":"4","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1902-06-02","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between eastbound Central line, District line and the Hammersmith & City lines. You can change between westbound Central line, District line and the Hammersmith & City line. Access from platform to train by manual boarding ramp.","wikidata":"Q784876","wikimedia_commons":"Category:Mile End tube station","wikipedia":"en:Mile End tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0861271,51.5106328]},"properties":{"fare_zone":"1","line":"District;Circle","name":"Monument","name:ru":"Монумент","naptan:AtcoCode":"940GZZLUMMT","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source:name":"local knowledge","start_date":"1884-10-06","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q806704","wikimedia_commons":"Category:Bank and Monument stations","wikipedia":"en:Bank and Monument stations"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0437553,51.6170812]},"properties":{"fare_zone":"4","line":"Central","name":"Roding Valley","naptan:AtcoCode":"940GZZLURVY","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1948-11-24","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q2161169","wikimedia_commons":"Category:Roding Valley tube station","wikipedia":"en:Roding Valley tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5389272,53.7738227]},"properties":{"name":"Moor Road","network":"Middleton Railway","operator":"The Middleton Railway Trust","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q6908054","wikipedia":"en:Moor Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9225262,50.8844396]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3008051,53.6193448]},"properties":{"name":"Ulceby","naptan:AtcoCode":"9100ULCEBY","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"ULC","source":"npe","wikidata":"Q2553110","wikipedia":"en:Ulceby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4430513,53.6889938]},"properties":{"name":"Barton-on-Humber","naptan:AtcoCode":"9100BRTHMBR","network":"National Rail","network:wikidata":"Q26334","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BAU","source":"npe","train":"yes","wikidata":"Q2889992","wikipedia":"en:Barton-on-Humber railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3961114,51.6639446]},"properties":{"name":"Watford Junction","naptan:AtcoCode":"9100WATFDJ","network":"National Rail;London Overground","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"WFJ","source:network":"Sign","wheelchair":"yes","wikidata":"Q10698","wikipedia":"en:Watford Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7695068,53.3989869]},"properties":{"name":"Gainsborough Central","naptan:AtcoCode":"9100GBROC","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GNB","source":"NPE","wikidata":"Q1841218","wikipedia":"en:Gainsborough Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.392889,53.6974548]},"properties":{"name":"Barrow Haven","naptan:AtcoCode":"9100BARWHVN","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"BAV","source":"npe","wikidata":"Q4863876","wikipedia":"en:Barrow Haven railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3374071,53.6766712]},"properties":{"name":"Goxhill","naptan:AtcoCode":"9100GOXHILL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GOX","source":"npe","wikidata":"Q2573248","wikipedia":"en:Goxhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1298327,53.5757224]},"properties":{"name":"Great Coates","naptan:AtcoCode":"9100GTCOATS","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GCT","source":"npe","wikidata":"Q2397218","wikipedia":"en:Great Coates railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0758325,53.5741416]},"properties":{"name":"Grimsby Docks","naptan:AtcoCode":"9100GRMSBYD","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"GMD","source":"npe","wikidata":"Q2323942","wikipedia":"en:Grimsby Docks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2693542,53.6061]},"properties":{"name":"Habrough","naptan:AtcoCode":"9100HABRO","network":"National Rail","network:wikidata":"Q26334","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HAB","source":"npe","train":"yes","wikidata":"Q3243269","wikipedia":"en:Habrough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1606176,53.5818378]},"properties":{"name":"Healing","naptan:AtcoCode":"9100HEALING","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HLI","source":"npe","wheelchair":"yes","wikidata":"Q2627123","wikipedia":"en:Healing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0604648,53.5743075]},"properties":{"name":"New Clee","naptan:AtcoCode":"9100NEWCLEE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"NCE","wikidata":"Q4877746","wikipedia":"en:New Clee railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3602136,53.7020085]},"properties":{"name":"New Holland","naptan:AtcoCode":"9100NHOL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"NHL","wikidata":"Q13528509","wikipedia":"en:New Holland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1834359,53.5871667]},"properties":{"name":"Stallingborough","naptan:AtcoCode":"9100SBROUGH","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SLL","source":"npe","wikidata":"Q2320451","wikipedia":"en:Stallingborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3230242,53.6543161]},"properties":{"name":"Thornton Abbey","naptan:AtcoCode":"9100THABBEY","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"TNA","source":"npe","wikidata":"Q2277067","wikipedia":"en:Thornton Abbey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.750266,53.1439832]},"properties":{"name":"Collingham","naptan:AtcoCode":"9100CLHM","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"CLM","source":"NPE","wikidata":"Q2369236","wikipedia":"en:Collingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6000753,53.1950652]},"properties":{"name":"Hykeham","naptan:AtcoCode":"9100HYKEHAM","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"HKM","source":"wikipedia","train":"yes","wikidata":"Q2129974","wikipedia":"en:Hykeham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7026611,53.1693479]},"properties":{"name":"Swinderby","naptan:AtcoCode":"9100SWNDRBY","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"SWD","source":"wikipedia","wikidata":"Q2015746","wikipedia":"en:Swinderby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7693785,53.3860875]},"properties":{"name":"Gainsborough Lea Road","naptan:AtcoCode":"9100GBGHLRD","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"GBL","source":"NPE","wheelchair":"yes","wikidata":"Q5517296","wikipedia":"en:Gainsborough Lea Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9443313,53.3139351]},"properties":{"name":"Retford Low Level","naptan:AtcoCode":"9100RTFDLL","network":"National Rail","network:wikidata":"Q26334","operator":"East Coast","public_transport":"station","railway":"station","ref:crs":"RET","source":"wikipedia","train":"yes","wikidata":"Q5259666","wikipedia":"en:Retford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1228579,53.3115968]},"properties":{"name":"Worksop","naptan:AtcoCode":"9100WORKSOP","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WRK","source":"wikipedia","train":"yes","wikidata":"Q2958045","wikipedia":"en:Worksop railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1683224,53.3248638]},"properties":{"name":"Shireoaks","naptan:AtcoCode":"9100SHRKSKS","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SRO","source":"NPE","train":"yes","wikidata":"Q2358910","wikipedia":"en:Shireoaks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2670815,53.3409362]},"properties":{"name":"Kiveton Bridge","naptan:AtcoCode":"9100KVTNBDG","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"KIV","source":"wikipedia","wikidata":"Q3448631","wikipedia":"en:Kiveton Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3573689,53.3637962]},"properties":{"name":"Woodhouse","naptan:AtcoCode":"9100WDHOUSE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WDH","source":"wikipedia","wikidata":"Q2497249","wikipedia":"en:Woodhouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4123572,53.3845451]},"properties":{"name":"Darnall","naptan:AtcoCode":"9100DARNALL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"DAN","source":"wikipedia","wikidata":"Q2975270","wikipedia":"en:Darnall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4949233,50.9128867]},"properties":{"name":"Battle","naptan:AtcoCode":"9100BATTLE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BAT","source":"NPE","train":"yes","wikidata":"Q4873077","wikipedia":"en:Battle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5014804,50.8886625]},"properties":{"name":"Crowhurst","naptan:AtcoCode":"9100CRWHRST","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CWU","source":"NPE","train":"yes","wheelchair":"no","wikidata":"Q2323354","wikipedia":"en:Crowhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5399644,50.8532059]},"properties":{"name":"West St Leonards","naptan:AtcoCode":"9100WSLE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WLD","train":"yes","wikidata":"Q2335526","wikipedia":"en:West St Leonards railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4423838,51.0106562]},"properties":{"name":"Etchingham","naptan:AtcoCode":"9100ETCHNGM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"ETC","source":"NPE","train":"yes","wikidata":"Q2498415","wikipedia":"en:Etchingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4686815,50.9855542]},"properties":{"addr:city":"Robertsbridge","addr:postcode":"TN32 5DJ","addr:street":"Station Road","name":"Robertsbridge","naptan:AtcoCode":"9100RBRTSBD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"RBR","train":"yes","wikidata":"Q2012525","wikipedia":"en:Robertsbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2629955,51.1300963]},"properties":{"addr:postcode":"TN1 1BT","name":"Tunbridge Wells","naptan:AtcoCode":"9100TUNWELL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TBW","train":"yes","wheelchair":"yes","wikidata":"Q3381300","wikipedia":"en:Tunbridge Wells railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1693688,51.3093522]},"properties":{"name":"Chipstead","naptan:AtcoCode":"9100CHSD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHP","wheelchair":"limited","wikidata":"Q2033523","wikipedia":"en:Chipstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0116594,52.6184313]},"properties":{"name":"Bloxwich","naptan:AtcoCode":"9100BLOXWCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLX","west_midlands_fare_zone":"5","wikidata":"Q1993493","wikipedia":"en:Bloxwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8984194,52.9515525]},"properties":{"name":"Aslockton","naptan:AtcoCode":"9100ASLCKTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ALK","source":"NPE","train":"yes","wikidata":"Q2261645","wikipedia":"en:Aslockton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9512851,52.9542194]},"properties":{"name":"Bingham","naptan:AtcoCode":"9100BINGHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BIN","train":"yes","wikidata":"Q4914224","wikipedia":"en:Bingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2164106,53.263919]},"properties":{"name":"Creswell","naptan:AtcoCode":"9100CRWLL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CWD","source":"NPE","train":"yes","wikidata":"Q1967041","wikipedia":"en:Creswell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2532679,53.1000196]},"properties":{"name":"Kirkby-in-Ashfield","naptan:AtcoCode":"9100KRKYCEN","network":"National Rail","note":"Note the realignment after the Robin Hood line extension re-opened","public_transport":"station","railway":"station","ref:crs":"KKB","train":"yes","wikidata":"Q6415580","wikipedia":"en:Kirkby-in-Ashfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2092803,53.2327375]},"properties":{"name":"Langwith-Whaley Thorns","naptan:AtcoCode":"9100LGWITH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAG","train":"yes","wikidata":"Q2400406","wikipedia":"en:Langwith-Whaley Thorns railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2025927,53.2041213]},"properties":{"name":"Shirebrook","naptan:AtcoCode":"9100SHRBROK","network":"National Rail","operator":"East Midlands Railway;Network Rail","public_transport":"station","railway":"station","ref:crs":"SHB","train":"yes","wikidata":"Q2412758","wikipedia":"en:Shirebrook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2455485,53.1141408]},"properties":{"name":"Sutton Parkway","naptan:AtcoCode":"9100STTNPWY","network":"National Rail","note":"immediately after rejoining the old alignment; it's between two bridges, it's also miles away from its namesake","public_transport":"station","railway":"station","ref:crs":"SPK","train":"yes","wikidata":"Q1984369","wikipedia":"en:Sutton Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2527549,51.344789]},"properties":{"name":"Bradford-on-Avon","naptan:AtcoCode":"9100BRDFDOA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BOA","source":"NPE","toilets:wheelchair":"no","wheelchair":"limited","wikidata":"Q4954566","wikipedia":"en:Bradford-on-Avon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.23461,53.4895257]},"properties":{"name":"Conisbrough","naptan:AtcoCode":"9100CONBRGH","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"CNS","source":"wikipedia","wikidata":"Q5161108","wikipedia":"en:Conisbrough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2885249,53.4908309]},"properties":{"name":"Mexborough","naptan:AtcoCode":"9100MEXBRGH","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"MEX","source":"wikipedia","upload_tag":"ojw_newcastle","wikidata":"Q3983146","wikipedia":"en:Mexborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3056214,53.4855977]},"properties":{"name":"Swinton (South Yorkshire)","naptan:AtcoCode":"9100SWINTN","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SWN","source":"Wikipedia","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q2253025","wikipedia":"en:Swinton railway station (South Yorkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3610462,53.4316986]},"properties":{"name":"Rotherham Central","naptan:AtcoCode":"9100ROTHCEN","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"RMC","source":"Wikipedia","wikidata":"Q2025773","wikipedia":"en:Rotherham Central station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5338293,54.3195897]},"properties":{"name":"Scruton","railway":"station","usage":"tourism","wikidata":"Q7439362","wikipedia":"en:Scruton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4502486,54.3387164]},"properties":{"name":"Northallerton West","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q18619288","wikipedia":"en:Northallerton West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7181864,54.3058821]},"properties":{"name":"Finghall Lane","naptan:AtcoCode":"940GZZWDFIN","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q5450304"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.308097,51.35675]},"properties":{"name":"Chessington South","naptan:AtcoCode":"9100CHSSS","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CSS","ref:stanox":"87411","wheelchair":"yes","wikidata":"Q1812549","wikipedia":"en:Chessington South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1872166,54.2329033]},"properties":{"name":"Kirkby-in-Furness","naptan:AtcoCode":"9100KRKBYIF","network":"National Rail","public_transport":"stop_position","railway":"station","ref:crs":"KBF","request_stop":"yes","source":"npe","train":"yes","wikipedia":"en:Kirkby-in-Furness railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1877284,52.7400619]},"properties":{"addr:housename":"Quorn & Woodhouse Station","addr:postcode":"LE12 8AW","name":"Quorn & Woodhouse","naptan:AtcoCode":"940GZZGCQWH","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7272864","wikipedia":"en:Quorn and Woodhouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1965133,52.7795757]},"properties":{"addr:city":"Loughborough","name":"Loughborough","naptan:AtcoCode":"9100LOGHBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LBO","wheelchair":"yes","wheelchair:description":"Need help getting across the tracks","wikidata":"Q1912686","wikipedia":"en:Loughborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6098115,54.0348323]},"properties":{"name":"Fimber Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1048397,51.5201871]},"properties":{"addr:city":"London","addr:postcode":"EC1M 6BY","addr:street":"Cowcross Street","fare_zone":"1","line":"Metropolitan;Circle;Hammersmith & City","name":"Farringdon","naptan:AtcoCode":"9100FNTLSR","network":"National Rail;London Underground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"ZFD","source:ref":"http://wiki.kyiv.cogniance.com/display/CM/Absent+stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q800754","wikimedia_commons":"Category:Farringdon_station","wikipedia":"en:Farringdon station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9562415,51.8565976]},"properties":{"name":"Wivenhoe","naptan:AtcoCode":"9100WIVENHO","network":"National Rail","railway":"station","ref:crs":"WIV","wikidata":"Q2873893","wikipedia":"en:Wivenhoe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9970365,51.8539985]},"properties":{"name":"Alresford","naptan:AtcoCode":"9100ALRESFD","network":"National Rail","railway":"station","ref:crs":"ALR","wikidata":"Q2063973","wikipedia":"en:Alresford railway station (Essex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0654611,51.8517991]},"properties":{"name":"Great Bentley","naptan:AtcoCode":"9100GTBNTLY","network":"National Rail","railway":"station","ref:crs":"GRB","wheelchair":"yes","wikidata":"Q2557949","wikipedia":"en:Great Bentley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1151948,51.8529678]},"properties":{"name":"Weeley","naptan:AtcoCode":"9100WEELEY","network":"National Rail","railway":"station","ref:crs":"WEE","wikidata":"Q2157638","wikipedia":"en:Weeley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5647477,50.4343005]},"properties":{"addr:city":"Paignton","addr:postcode":"TQ4 6AF","name":"Paignton Queens Park","naptan:AtcoCode":"940GZZPDPGN","operator":"Dartmouth Steam Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1282641,51.5114642]},"properties":{"fare_zone":"1","line":"Piccadilly;Northern","name":"Leicester Square","name:ru":"Лестер-сквер","naptan:AtcoCode":"940GZZLULSQ","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q2538959","wikipedia":"en:Leicester Square tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3496851,51.4337598]},"properties":{"name":"Fulwell","naptan:AtcoCode":"9100FULWELL","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"FLW","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q3021339","wikipedia":"en:Fulwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3721547,51.4159079]},"properties":{"name":"Hampton","naptan:AtcoCode":"9100HAMPTON","network":"National Rail","note":"Platform 1 is Clapham Junction and London Waterloo bound; Platform 2 is Shepperton bound","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HMP","wheelchair":"yes","wheelchair:description":"Level access to both platforms from separate entrances. Step-free access between platforms via street and level crossing approximately 230m.","wikidata":"Q2323143","wikipedia":"en:Hampton railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4094874,51.4210039]},"properties":{"name":"Kempton Park","naptan:AtcoCode":"9100KMPTNPK","network":"National Rail","operator":"South Western Railway","postal_code":"TW16 5AE","public_transport":"station","railway":"station","ref:crs":"KMP","wikidata":"Q2297981","wikipedia":"en:Kempton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4173517,51.418324]},"properties":{"name":"Sunbury","naptan:AtcoCode":"9100SUNBURY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SUU","source:name":"local knowledge","wikidata":"Q2266833","wikipedia":"en:Sunbury (Surrey) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4307971,51.4132081]},"properties":{"name":"Upper Halliford","naptan:AtcoCode":"9100UHALIFD","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"UPH","source":"OS_OpenData_VectorMapDistrict","wikidata":"Q2164311","wikipedia":"en:Upper Halliford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4469133,51.3968972]},"properties":{"name":"Shepperton","naptan:AtcoCode":"9100SHEPRTN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SHP","source":"OS_OpenData_VectorMapDistrict","wikidata":"Q3246626","wikipedia":"en:Shepperton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1819438,51.2764117]},"properties":{"internet_access":"wlan","name":"Sevenoaks","naptan:AtcoCode":"9100SVNOAKS","network":"National Rail","postal_code":"TN13 1DP","public_transport":"station","railway":"station","ref:crs":"SEV","train":"yes","website":"http://www.nationalrail.co.uk/stations/sev/details.html","wikipedia":"en:Sevenoaks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9028039,54.195693]},"properties":{"name":"Grange-over-Sands","naptan:AtcoCode":"9100GOVS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GOS","source":"NPE","wheelchair":"yes","wikidata":"Q2404532","wikipedia":"en:Grange-over-Sands railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1462935,51.4752161]},"properties":{"name":"Queenstown Road","name:ru":"Куинстаун-Роуд","naptan:AtcoCode":"9100QTRDBAT","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"QRB","wheelchair":"no","wikidata":"Q2685594","wikipedia":"en:Queenstown Road (Battersea) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1227502,51.4858478]},"properties":{"addr:city":"London","addr:postcode":"SW8 1SS","addr:street":"South Lambeth Road","name":"Vauxhall","name:ru":"Воксхолл","naptan:AtcoCode":"9100VAUXHLW","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"VXH","source":"yahoo","wheelchair":"yes","wikidata":"Q86666660","wikimedia_commons":"Category:Vauxhall railway station","wikipedia":"en:Vauxhall station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0753092,51.2842245]},"properties":{"name":"Canterbury West","naptan:AtcoCode":"9100CNTBW","network":"National Rail","operator":"Southeastern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CBW","train":"yes","wheelchair":"yes","wikidata":"Q671106","wikipedia":"en:Canterbury West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6645975,54.8862872]},"properties":{"name":"Dipwood Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.859831,51.8312778]},"properties":{"name":"Aylesbury Vale Parkway","naptan:AtcoCode":"9100AYLSPWY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AVP","wheelchair":"yes","wikidata":"Q4831380","wikipedia":"en:Aylesbury Vale Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1540785,52.7268895]},"properties":{"name":"Mountsorrel","network":"Mountsorrel Railway","operator":"Great Central Railway (plc)","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4725586,50.7027216]},"properties":{"addr:city":"Exeter","addr:housename":"Newcourt Station","addr:postcode":"EX2 7FR","internet_access":"no","name":"Newcourt","naptan:AtcoCode":"9100NWCOURT","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railways","public_transport":"station","railway":"station","ref:crs":"NCO","train":"yes","wikidata":"Q15262145","wikipedia":"en:Newcourt railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3406341,51.3750646]},"properties":{"name":"Hinchley Wood","naptan:AtcoCode":"9100HNCHLYW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HYW","wikidata":"Q2065274","wikipedia":"en:Hinchley Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9297207,51.9887603]},"properties":{"name":"Toddington","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6073643,51.6740875]},"properties":{"fare_zone":"9","line":"Metropolitan","name":"Amersham","naptan:AtcoCode":"9100AMERSHM","network":"National Rail;London Underground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"AMR","source":"aerial imagery, GPS and interpolation from bridge.","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Metropolitan line southbound - Access from platform to train by manual boarding ramp","wikidata":"Q800384","wikipedia":"en:Amersham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7555158,51.2968188]},"properties":{"name":"Farnborough (Main)","naptan:AtcoCode":"9100FRBRMN","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"FNB","wikidata":"Q1941502","wikipedia":"en:Farnborough (Main) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5611671,51.6681019]},"properties":{"addr:postcode":"HP7 9PR","fare_zone":"8","line":"Metropolitan","name":"Chalfont & Latimer","naptan:AtcoCode":"9100CHLFNAL","network":"National Rail;London Underground","note":"Chiltern Line and Metropolitan Line Station","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"CFO","source":"GPS","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q800618","wikipedia":"en:Chalfont & Latimer station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9294965,51.1853805]},"properties":{"name":"Wye","naptan:AtcoCode":"9100WYEE","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WYE","wikidata":"Q2011884","wikipedia":"en:Wye railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5356577,50.900947]},"properties":{"name":"Brockham","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0607007,51.4175147]},"properties":{"name":"Penge West","naptan:AtcoCode":"9100PENEW","network":"National Rail;London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"PNW","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2389053","wikipedia":"en:Penge West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3398503,51.2363548]},"properties":{"name":"Dorking West","naptan:AtcoCode":"9100DRKGW","network":"National Rail","network:wikidata":"Q26334","postal_code":"RH4 5EE","public_transport":"station","railway":"station","ref:crs":"DKT","train":"yes","wheelchair":"limited","wikidata":"Q2456082","wikipedia":"en:Dorking West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1016292,51.4648215]},"properties":{"name":"Welling","naptan:AtcoCode":"9100WELLING","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"WLI","wheelchair":"limited","wheelchair:description":"Step free access to Platform 1 for services towards London via main entrance. Step free access to Platform 2 for services away from London via side entrance on Car Park. Step free interchange between platforms via the street 300 metres.","wikidata":"Q2347379","wikipedia":"en:Welling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1596467,51.4650212]},"properties":{"name":"Barnehurst","naptan:AtcoCode":"9100BRNHRST","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BNH","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to platform 1 for services to London via path from ticket office. Step free access to platform 2 for services away from London via car park.No step free interchange between platforms.","wikidata":"Q2152688","wikipedia":"en:Barnehurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0522692,51.4555936]},"properties":{"name":"Eltham","naptan:AtcoCode":"9100ELTHAM","network":"National Rail","opening_hours":"Mo-Sa 06:00-20:00; Su 08:00-16:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"ELW","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q2448983","wikipedia":"en:Eltham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1751948,51.4815782]},"properties":{"addr:city":"Erith, Kent","addr:street":"Stonewood Road","name":"Erith","naptan:AtcoCode":"9100ERITH","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"ERH","wheelchair":"limited","wheelchair:description":"Step free access to platform 2 for services away from London. There is no step free access to Platform 1. No step free interchange between platforms.","wikidata":"Q5389579","wikipedia":"en:Erith railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1882512,51.4609627]},"properties":{"name":"Wandsworth Town","name:ru":"Уондсуэрт-Таун","naptan:AtcoCode":"9100WDWTOWN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WNT","wheelchair":"no","wikidata":"Q2834607","wikipedia":"en:Wandsworth Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.150065,51.2641687]},"properties":{"addr:city":"Merstham","name":"Merstham","naptan:AtcoCode":"9100MERSTHM","network":"National Rail","postal_code":"RH1 3ED","public_transport":"station","railway":"station","ref:crs":"MHM","toilets:wheelchair":"no","wheelchair":"limited","wheelchair:description":"No access from Platform 1, Booking office and car park to Platform 2 (towards Gatwick and coast). Train ramp NOT available all day. Loop not working (3/16)","wikidata":"Q369575","wikipedia":"en:Merstham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2809105,51.3990081]},"properties":{"name":"Berrylands","naptan:AtcoCode":"9100BRLANDS","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BRS","ref:stanox":"87170","source:name":"photograph","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2649746","wikipedia":"en:Berrylands railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2557593,51.4039615]},"properties":{"name":"New Malden","naptan:AtcoCode":"9100NEWMLDN","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"NEM","ref:stanox":"87169","source:name":"local knowledge","wheelchair":"yes","wikidata":"Q1870734","wikipedia":"en:New Malden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5454292,51.270386]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1035311,51.5153401]},"properties":{"name":"City Thameslink","name:ru":"Сити-Темзлинк","naptan:AtcoCode":"9100CTMSLNK","network":"National Rail","old_name":"St Paul's Thameslink","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"CTK","source:ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wikidata":"Q800630","wikipedia":"en:City Thameslink railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0817735,51.518043]},"properties":{"fare_zone":"1","line":"Metropolitan;Central;Circle;Hammersmith & City","name":"London Liverpool Street","name:ru":"Улица Ливерпуль","naptan:AtcoCode":"9100LIVST","network":"National Rail;London Underground;London Overground","operator":"Network Rail","public_transport":"station","railway":"station","railway:ref:DB":"XKLL","ref:crs":"LST","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q801124","wikipedia":"en:Liverpool Street station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0903632,51.5113812]},"properties":{"fare_zone":"1","line":"Circle;District","name":"Cannon Street","naptan:AtcoCode":"910GCANONST","network":"London Underground","operator":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit the westbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q800615","wikipedia":"en:Cannon Street station#London Underground"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0906046,51.5106685]},"properties":{"name":"London Cannon Street","name:da":"Cannon Street Station","name:ru":"Кэннон Стрит","naptan:AtcoCode":"9100CANONST","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"CST","wheelchair":"yes","wikidata":"Q800615","wikipedia":"en:Cannon Street station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1345484,51.5098192]},"properties":{"fare_zone":"1","line":"Piccadilly;Bakerloo","name":"Piccadilly Circus","name:et":"Piccadilly Circuse metroojaam","name:ru":"Пикадилли-сёркус","naptan:AtcoCode":"940GZZLUPCC","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q26448","wikipedia":"en:Piccadilly Circus tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.112801,51.5028379]},"properties":{"name":"London Waterloo","name:et":"Waterloo metroojaam","name:ru":"Ватерлоо","name:uk":"Ватерлоо","naptan:AtcoCode":"9100WATRLMN","network":"National Rail","old_name":"Waterloo Bridge","operator":"Network Rail","public_transport":"station","railway":"station","railway:ref:DB":"XKLW","ref:crs":"WAT","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q795691","wikipedia":"en:London Waterloo station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1139812,51.5030015]},"properties":{"fare_zone":"1","line":"Jubilee;Northern;Bakerloo;Waterloo & City","name":"Waterloo","naptan:AtcoCode":"940GZZLUWLO","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q13141057","wikipedia":"en:Waterloo tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5912401,54.4923531]},"properties":{"name":"St Bees","naptan:AtcoCode":"9100STBEES","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"SBS","source":"NPE","train":"yes","wikidata":"Q2545047","wikipedia":"en:St Bees railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2612451,51.3847246]},"properties":{"name":"Malden Manor","naptan:AtcoCode":"9100MALDENM","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"MAL","ref:stanox":"87400","source":"NPE","train":"yes","wheelchair":"no","wikidata":"Q1907224","wikipedia":"en:Malden Manor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2794424,51.3768746]},"properties":{"name":"Tolworth","naptan:AtcoCode":"9100TOLWTH","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"TOL","ref:stanox":"87403","source":"NPE","wheelchair":"no","wikidata":"Q3921078","wikipedia":"en:Tolworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3007319,51.363982]},"properties":{"name":"Chessington North","naptan:AtcoCode":"9100CHSSN","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CSN","ref:stanox":"87405","source:name":"knowledge","wheelchair":"no","wikidata":"Q1934700","wikipedia":"en:Chessington North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1313131,51.4259609]},"properties":{"name":"Streatham","name:ru":"Стретем","naptan:AtcoCode":"9100STRETHM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"STE","wheelchair":"limited","wheelchair:description":"Step-free southbound only. Access from platform to train by manual boarding ramp.","wikidata":"Q368336","wikipedia":"en:Streatham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4499027,51.0150946]},"properties":{"name":"Billingshurst","naptan:AtcoCode":"9100BILSHST","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BIG","train":"yes","wikidata":"Q2365559","wikipedia":"en:Billingshurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1263945,51.5079664]},"properties":{"fare_zone":"1","line":"Bakerloo;Northern","name":"Charing Cross","naptan:AtcoCode":"940GZZLUCHX","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q795322","wikipedia":"en:Charing Cross tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0987169,51.4940431]},"properties":{"name":"Elephant & Castle","name:ru":"Элефант-энд-Касл","naptan:AtcoCode":"9100ELPHNAC","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"EPH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q13583357","wikipedia":"en:Elephant & Castle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1005731,51.4948884]},"properties":{"fare_zone":"1;2","line":"Bakerloo;Northern","name":"Elephant & Castle","name:ru":"Элефант-энд-Касл","naptan:AtcoCode":"940GZZLUEAC","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","ref":"ZEL","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1481451","wikipedia":"en:Elephant & Castle tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1908861,51.3596769]},"properties":{"addr:city":"Sutton","addr:postcode":"SM2 5AD","addr:street":"Brighton Road","name":"Sutton","naptan:AtcoCode":"9100SUTTON","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"SUO","toilets:wheelchair":"yes","website":"http://www.nationalrail.co.uk/stations-and-destinations/stations-made-easy/sutton-surrey-station-plan","wheelchair":"yes","wheelchair:description":"Lifts to all platforms. Accessible toilets on Platforms 1 & 2/3. Also ChangingPlaces Toilet on 2/3. http://changingplaces.uktoiletmap.org/toilet/view/620 - Station supervisor is able to offer a key to non-travellers.","wikidata":"Q4437087","wikipedia":"en:Sutton railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1268506,51.5318912]},"properties":{"alt_name":"St Pancras International","name":"London St. Pancras International","name:fr":"Gare de Saint-Pancras International","naptan:AtcoCode":"9100STPADOM","network":"National Rail","operator":"Network Rail (High Speed)","public_transport":"station","railway":"station","railway:ref:DB":"XKLP","ref:crs":"STP","toilets:wheelchair":"yes","uic_ref":"7015400","website":"http://www.nationalrail.co.uk/stations/stp/","website:departures":"http://www.livedepartureboards.co.uk/ldb/summary.aspx?T=STP","wheelchair":"yes","wikidata":"Q720102","wikipedia":"en:St Pancras railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1342549,51.528808]},"properties":{"air_conditioning":"no","internet_access":"wlan","internet_access:fee":"no","internet_access:ssid":"#FreeStationWiFi","name":"London Euston","name:da":"Euston Station","naptan:AtcoCode":"9100EUSTON","network":"National Rail;London Overground","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"EUS","ref:tiploc":"EUSTON","train":"yes","website":"http://www.networkrail.co.uk/aspx/819.aspx","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q800751","wikipedia":"en:Euston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1338745,51.5282865]},"properties":{"addr:city":"London","addr:postcode":"NW1 2DU","addr:street":"Eversholt Street","fare_zone":"1","line":"Northern;Victoria","name":"Euston","naptan:AtcoCode":"910GEUSTON","network":"London Underground","operator":"London Underground","platforms":"6","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the Victoria line southbound and the Northern line southbound via London Bridge. You can also change between the Victoria line northbound and the Northern line northbound.","wikipedia":"en:Euston tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6327409,51.9376191]},"properties":{"name":"Stonehenge Works","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2411817,51.466783]},"properties":{"addr:street":"Station Road","name":"Barnes","naptan:AtcoCode":"9100BARNES","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BNS","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Level access to Platforms 1 and 4 from separate entrances. Steps to Platforms 2/3.","wikidata":"Q1973974","wikipedia":"en:Barnes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5250129,51.2151195]},"properties":{"name":"Chilworth","naptan:AtcoCode":"9100CHLWTH","network":"National Rail","network:wikidata":"Q26334","operator":"First Great Western","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CHL","source":"Visit","train":"yes","wheelchair":"yes","wikidata":"Q2295135","wikipedia":"en:Chilworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.566879,51.2143603]},"properties":{"name":"Shalford","naptan:AtcoCode":"9100SHALFD","network":"National Rail","network:wikidata":"Q26334","platforms":"2","postal_code":"GU4 2WS","public_transport":"station","railway":"station","ref:crs":"SFR","train":"yes","wheelchair":"yes","wheelchair:description":"Fairly steep ramp fro","wikidata":"Q2476216","wikipedia":"en:Shalford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3532042,51.3800529]},"properties":{"name":"Esher","naptan:AtcoCode":"9100ESHER","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"ESH","source:name":"local knowledge","wheelchair":"no","wikidata":"Q1876878","wikipedia":"en:Esher railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8555038,53.4100591]},"properties":{"name":"Roby","naptan:AtcoCode":"9100ROBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ROB","ref:tiploc":"ROBY","train":"yes","wikidata":"Q3063201","wikipedia":"en:Roby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7000869,53.4337834]},"properties":{"addr:city":"St Helens","addr:housename":"St Helens Junction station","addr:postcode":"WA9 3LA","addr:street":"Station Road","name":"St Helens Junction","naptan:AtcoCode":"9100STHLNSJ","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SHJ","ref:tiploc":"STHLNSJ","source":"npe","train":"yes","wikipedia":"en:St Helens Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5307942,53.5880035]},"properties":{"name":"Darton","naptan:AtcoCode":"9100DRTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DRT","source":"NPE","wheelchair":"limited","wikidata":"Q1894541","wikipedia":"en:Darton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3123501,51.4145582]},"properties":{"name":"Hampton Wick","naptan:AtcoCode":"9100HAMWICK","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HMW","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q969228","wikipedia":"en:Hampton Wick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7924218,51.2118094]},"properties":{"addr:city":"Farnham","addr:street":"Station Hill","name":"Farnham","name:lt":"Farnamas","naptan:AtcoCode":"9100FARNHAM","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"FNH","toilets:wheelchair":"no","website":"http://www.nationalrail.co.uk/stations/FNH/details.html","wheelchair":"limited","wheelchair:description":"Step-free to London trains via steep slope & side \"gate\". Route from opposite platform across uneven level crossing. Step-free to bus stops. Narrow \"accessible\" Toilet","wikidata":"Q2178927","wikipedia":"en:Farnham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2145128,51.3556609]},"properties":{"name":"Cheam","naptan:AtcoCode":"9100CHEAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q1813087","wikipedia":"en:Cheam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1200657,51.5171149]},"properties":{"fare_zone":"1","line":"Central;Piccadilly","name":"Holborn","name:ru":"Холборн","naptan:AtcoCode":"940GZZLUHBN","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1433544","wikipedia":"en:Holborn tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6080105,51.6098754]},"properties":{"name":"Seer Green and Jordans","naptan:AtcoCode":"9100SEERGRN","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"SRG","wikidata":"Q7445936","wikipedia":"en:Seer Green and Jordans railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8166827,53.2766012]},"properties":{"name":"Ince and Elton","naptan:AtcoCode":"9100INEL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"INE","train":"yes","wikidata":"Q2676232","wikipedia":"en:Ince & Elton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8411357,53.2783095]},"properties":{"access":"no","name":"Stanlow and Thornton","naptan:AtcoCode":"9100STNLWAT","network":"National Rail","note":"\"Temporarily shut Stanlow&Thornton stationdue to concerns over the safety of the footbridge\" https://twitter.com/NetworkRailLIV/status/1489138518702108673","public_transport":"station","railway":"station","ref:crs":"SNT","source":"NPE","train":"yes","wikidata":"Q2311368","wikipedia":"en:Stanlow and Thornton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.634293,53.5949206]},"properties":{"name":"Cuckoos Nest","network":"Whistlestop Valley","operator":"Whistlestop Valley","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5817711,54.5971316]},"properties":{"name":"Heighington","naptan:AtcoCode":"9100HGHNGTN","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HEI","source":"NPE","wikidata":"Q934808","wikipedia":"en:Heighington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.346378,54.839091]},"properties":{"name":"Seaham","naptan:AtcoCode":"9100SEAHAM","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SEA","wikipedia":"en:Seaham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2005633,54.6580139]},"properties":{"name":"Seaton Carew","naptan:AtcoCode":"9100SETNCRW","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SEC","source":"Bing","wikidata":"Q2068534","wikipedia":"en:Seaton Carew railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0803672,53.4615184]},"properties":{"name":"Flowery Field","naptan:AtcoCode":"9100FLWRYFD","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"FLF","wikidata":"Q2858764","wikipedia":"en:Flowery Field railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4725898,52.5033421]},"properties":{"addr:city":"Nuneaton","addr:postcode":"CV10 7JR","addr:street":"St Davids Way","name":"Bermuda Park","naptan:AtcoCode":"9100BERMPRK","network":"National Rail","operator":"London Midland","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BEP","source":"local_Knowledge","toilets:wheelchair":"no","wheelchair":"yes","wheelchair:description":"Just an unattended Train Platform. No toilets of any kind here.","wikidata":"Q4892644","wikipedia":"en:Bermuda Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5167193,52.7014362]},"properties":{"name":"Wellington","naptan:AtcoCode":"9100WELNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WLN","wheelchair":"yes","wikidata":"Q1851350","wikipedia":"en:Wellington railway station (Shropshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7974707,53.9257438]},"properties":{"name":"Ben Rhydding","naptan:AtcoCode":"9100BNRHYDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEY","source":"OS 1:25k;Bing","wikidata":"Q4886351","wikipedia":"en:Ben Rhydding railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7531866,53.9079756]},"properties":{"name":"Burley-in-Wharfedale","naptan:AtcoCode":"9100BURLYIW","network":"National Rail","railway":"station","ref:crs":"BUW","wikidata":"Q2144142","wikipedia":"en:Burley-in-Wharfedale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7151179,53.8760658]},"properties":{"name":"Guiseley","name:lt":"Gaislis","naptan:AtcoCode":"9100GUISELY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GSY","wheelchair":"yes","wheelchair:description":"Transfer between platforms is via Oxford Road (about 500 metres). The entrance to platform 2 uses a relatively narrow path, 40 metres long.","wikidata":"Q2407772","wikipedia":"en:Guiseley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7354513,53.8923633]},"properties":{"is_in":"UK, England, West Yorkshire, Menston","name":"Menston","naptan:AtcoCode":"9100MENSTON","network":"National Rail","railway":"station","ref:crs":"MNN","wikidata":"Q2092823","wikipedia":"en:Menston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7689584,53.8203108]},"properties":{"name":"Frizinghall","naptan:AtcoCode":"9100FRZNGHL","network":"National Rail","railway":"station","ref:crs":"FZH","wheelchair":"yes","wikidata":"Q2568587","wikipedia":"en:Frizinghall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7793363,53.6981649]},"properties":{"name":"Brighouse","name:en":"Brighouse","name:lt":"Brighausas","naptan:AtcoCode":"9100BRHOUSE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BGH","start_date":"2000-05-28","wheelchair":"yes","wikidata":"Q2368938","wikipedia":"en:Brighouse railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7048254,53.5887533]},"properties":{"name":"Shepley","naptan:AtcoCode":"9100SPLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SPY","source":"NPE","wikipedia":"en:Shepley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7232658,53.5941495]},"properties":{"name":"Stocksmoor","naptan:AtcoCode":"9100STKSMR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SSM","source":"NPE","wikipedia":"en:Stocksmoor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6614198,53.7269093]},"properties":{"name":"Bamber Bridge","naptan:AtcoCode":"9100BMBRBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BMB","train":"yes","wheelchair":"yes","wikipedia":"en:Bamber Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5440104,53.7310487]},"properties":{"name":"Pleasington","naptan:AtcoCode":"9100PLSNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PLS","request_stop":"yes","train":"yes","wikidata":"Q3306245","wikipedia":"en:Pleasington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7522572,51.4130054]},"properties":{"addr:city":"Bracknell","addr:housename":"Bracknell station","addr:postcode":"RG12 1HX","addr:street":"Market Street","name":"Bracknell","name:be":"Бракнэл","name:lt":"Braknelis","naptan:AtcoCode":"9100BRACKNL","network":"National Rail","operator":"South West Railway","railway":"station","ref:crs":"BCE","wikidata":"Q1970873","wikipedia":"en:Bracknell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6654958,53.3279397]},"properties":{"name":"Runcorn East","naptan:AtcoCode":"9100RUNCRNE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RUE","source":"NPE","wikipedia":"en:Runcorn East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0703222,54.6159857]},"properties":{"name":"Redcar Central","naptan:AtcoCode":"9100REDCARC","network":"National Rail","operator":"Northern Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"RCC","uic_ref":"7001850","wikidata":"Q2317607","wikipedia":"en:Redcar Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1762715,54.5840107]},"properties":{"addr:postcode":"TS6 6AZ","name":"South Bank","name:ur":"ساؤتھ بینک","naptan:AtcoCode":"9100STHBANK","network":"National Rail","postal_code":"TS6 6AZ","public_transport":"station","railway":"station","ref:crs":"SBK","source":"website","uic_ref":"7002087","wikidata":"Q1898560","wikipedia":"en:South Bank railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3514668,54.4937626]},"properties":{"name":"Yarm","name:ur":"یارم","naptan:AtcoCode":"9100YAAM","network":"National Rail","operator":"TransPennine Express","public_transport":"station","railway":"station","ref:crs":"YRM","train":"yes","wheelchair":"yes","wikidata":"Q2733475","wikipedia":"en:Yarm railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5950836,51.385277]},"properties":{"name":"Longcross","naptan:AtcoCode":"9100LNGCROS","network":"National Rail","old_name":"Longcross Halt","public_transport":"station","railway":"station","ref:crs":"LNG","wikidata":"Q1925371","wikipedia":"en:Longcross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4263681,53.8841174]},"properties":{"addr:postcode":"HU17 7NR","name":"Arram","naptan:AtcoCode":"9100ARRAM","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"ARR","ref:tiploc":"ARRAM","wikidata":"Q662135","wikipedia":"en:Arram railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4228986,53.8421612]},"properties":{"name":"Beverley","name:ar":"بفرلي","name:az-Arab":"بورلی","name:azb":"بورلی","name:bg":"Бевърли","name:fa":"بورلی","name:uk":"Беверлі","name:ur":"بیویرلے","naptan:AtcoCode":"9100BEVERLY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BEV","ref:tiploc":"BEVERLY","source":"npe","wheelchair":"limited","wikidata":"Q522656","wikipedia":"en:Beverley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2003693,54.0840651]},"properties":{"addr:city":"Bridlington","addr:postcode":"YO15 3EP","name":"Bridlington","name:lt":"Bridlingtonas","naptan:AtcoCode":"9100BRDLNGT","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BDT","source":"npe","wikidata":"Q2684620","wikipedia":"en:Bridlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.406219,53.781315]},"properties":{"name":"Cottingham","naptan:AtcoCode":"9100CTTGHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CGM","ref:stanox":"19031","ref:tiploc":"CTTGHM","source":"NPE","wikidata":"Q5175629","wikipedia":"en:Cottingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4345405,54.0014428]},"properties":{"name":"Driffield","naptan:AtcoCode":"9100DRIFILD","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"DRF","ref:tiploc":"DRIFILD","source":"npe","train":"yes","wikipedia":"en:Driffield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2938604,54.2098083]},"properties":{"name":"Filey","naptan:AtcoCode":"9100FILEY","network":"National Rail","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"FIL","ref:tiploc":"FILEY","source":"npe","wikipedia":"en:Filey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4338384,53.9561848]},"properties":{"name":"Hutton Cranswick","naptan:AtcoCode":"9100HTNCRNS","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HUT","ref:tiploc":"HTNCRNS","source":"npe","wikidata":"Q2118467","wikipedia":"en:Hutton Cranswick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3856241,54.0113429]},"properties":{"addr:city":"Nafferton","addr:postcode":"YO25 4LS","name":"Nafferton","naptan:AtcoCode":"9100NAFERTN","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"NFN","ref:tiploc":"NAFERTN","source":"npe","wikidata":"Q2149712","wikipedia":"en:Nafferton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4169939,54.2406582]},"properties":{"name":"Seamer","naptan:AtcoCode":"9100SEAMER","network":"National Rail","operator":"TransPennine Express","railway":"station","ref:crs":"SEM","ref:tiploc":"SEAMER","source":"npe","wheelchair":"limited","wikipedia":"en:Seamer railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7316099,53.7480234]},"properties":{"name":"Gilberdyke","naptan:AtcoCode":"9100GLBRDYK","network":"National Rail","railway":"station","ref:crs":"GBD","source":"NPE","wheelchair":"yes","wikidata":"Q2370908","wikipedia":"en:Gilberdyke railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8091658,53.7220658]},"properties":{"name":"Saltmarshe","naptan:AtcoCode":"9100SLTMRSH","network":"National Rail","railway":"station","ref:crs":"SAM","source":"NPE","wikidata":"Q2553697","wikipedia":"en:Saltmarshe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2692137,52.6382346]},"properties":{"name":"Albrighton","naptan:AtcoCode":"9100ALBRGHT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ALB","wikidata":"Q2943712","wikipedia":"en:Albrighton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1873052,52.6239645]},"properties":{"name":"Bilbrook","naptan:AtcoCode":"9100BILBROK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BBK","wikidata":"Q2786231","wikipedia":"en:Bilbrook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2016755,52.6274199]},"properties":{"name":"Codsall","naptan:AtcoCode":"9100CODSALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSL","wikidata":"Q2455479","wikipedia":"en:Codsall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3006927,52.6448458]},"properties":{"name":"Cosford","naptan:AtcoCode":"9100COSFORD","network":"National Rail","railway":"station","ref:crs":"COS","wheelchair":"no","wikidata":"Q1945497","wikipedia":"en:Cosford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.450188,52.6930906]},"properties":{"name":"Oakengates","naptan:AtcoCode":"9100OAKNGTS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OKN","wikidata":"Q2384836","wikipedia":"en:Oakengates railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3716887,52.6660075]},"properties":{"name":"Shifnal","naptan:AtcoCode":"9100SHIFNAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SFN","wikidata":"Q1891199","wikipedia":"en:Shifnal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.441178,52.6811135]},"properties":{"name":"Telford Central","naptan:AtcoCode":"9100TELFRDC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TFC","wheelchair":"yes","wikipedia":"en:Telford Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8036843,52.5373034]},"properties":{"designation":"Unstaffed","name":"Church Stretton","naptan:AtcoCode":"9100CSTR","network":"National Rail","network:wikidata":"Q26334","operator":"Trafnidiaeth Cymru","operator:cy":"Eglwys Wen","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"CTT","start_date":"1914","train":"yes","wheelchair":"yes","wikidata":"Q2857475","wikipedia":"en:Church Stretton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0368846,52.8933219]},"properties":{"name":"Gobowen","naptan:AtcoCode":"9100GOBOWEN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GOB","wikidata":"Q2929352","wikipedia":"en:Gobowen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0423373,52.3450164]},"properties":{"name":"Knighton","name:cy":"Tref-y-Clawdd","naptan:AtcoCode":"9100KNIGHTN","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","platforms":"2","public_transport":"station","railway":"station","ref:crs":"KNI","wheelchair":"yes","wikidata":"Q2049884","wikipedia":"en:Knighton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0950109,53.6427541]},"properties":{"name":"Littleborough","naptan:AtcoCode":"9100LITLBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LTL","source":"npe","train":"yes","wheelchair":"yes","wikidata":"Q2111684","wikipedia":"en:Littleborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1710273,53.5232522]},"properties":{"name":"Moston","naptan:AtcoCode":"9100MSTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MSO","source":"NPE","wikipedia":"en:Moston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1140606,53.6328465]},"properties":{"name":"Smithy Bridge","naptan:AtcoCode":"9100SMBG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SMB","source":"npe","train":"yes","wikidata":"Q2490973","wikipedia":"en:Smithy Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1047674,53.6965305]},"properties":{"name":"Walsden","naptan:AtcoCode":"9100WDEN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDN","train":"yes","wikidata":"Q7963803","wikipedia":"en:Walsden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9145518,53.6238457]},"properties":{"name":"Bescar Lane","naptan:AtcoCode":"9100BESCRLA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BES","wikidata":"Q2625226","wikipedia":"en:Bescar Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8416523,53.6054245]},"properties":{"name":"Burscough Bridge","naptan:AtcoCode":"9100BRSCGHB","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BCB","wheelchair":"yes","wikidata":"Q4327046","wikipedia":"en:Burscough Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8677436,53.6116884]},"properties":{"name":"New Lane","naptan:AtcoCode":"9100NEWLANE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"NLN","wikidata":"Q2207175","wikipedia":"en:New Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7711373,53.5908551]},"properties":{"name":"Parbold","naptan:AtcoCode":"9100PARBOLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PBL","wikidata":"Q2024428","wikipedia":"en:Parbold railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8046076,53.5977688]},"properties":{"name":"Hoscar","naptan:AtcoCode":"9100HOSCAR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HSC","train":"yes","wikidata":"Q4391703","wikipedia":"en:Hoscar railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6938146,53.5593822]},"properties":{"name":"Gathurst","naptan:AtcoCode":"9100GATHRST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GST","source":"npe","wikidata":"Q2311154","wikipedia":"en:Gathurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7195791,53.578708]},"properties":{"name":"Appley Bridge","naptan:AtcoCode":"9100APLYBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"APB","wikidata":"Q4781444","wikipedia":"en:Appley Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.837164,53.8487153]},"properties":{"name":"Bingley","naptan:AtcoCode":"9100BNGY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BIY","source":"GPX","wheelchair":"yes","wikidata":"Q672653","wikipedia":"en:Bingley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.844476,53.858299]},"properties":{"name":"Crossflatts","naptan:AtcoCode":"9100CFLATTS","network":"National Rail","railway":"station","ref:crs":"CFL","wikidata":"Q1856288","wikipedia":"en:Crossflatts railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9013628,53.867932]},"properties":{"name":"Keighley","naptan:AtcoCode":"9100KEIGHLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KEI","wheelchair":"limited","wikidata":"Q518724","wikipedia":"en:Keighley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3701201,53.7527983]},"properties":{"name":"Accrington","naptan:AtcoCode":"9100ACRNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ACR","source":"npe","train":"yes","uic_ref":"7000025","wikipedia":"en:Accrington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3450711,54.9745437]},"properties":{"addr:city":"Bardon Mill","addr:postcode":"NE47 7HY","name":"Bardon Mill","naptan:AtcoCode":"9100BRDNML","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BLL","wheelchair":"yes","wikidata":"Q2052953","wikipedia":"en:Bardon Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1341235,53.4319627]},"properties":{"name":"Brinnington","naptan:AtcoCode":"9100BRNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BNT","wikipedia":"en:Brinnington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2493172,53.7851712]},"properties":{"name":"Burnley Manchester Road","naptan:AtcoCode":"9100BURNMR","network":"National Rail","network:wikidata":"Q26334","operator":"Northern Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BYM","source":"npe","train":"yes","wikipedia":"en:Burnley Manchester Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3201962,53.9974183]},"properties":{"name":"Cattal","naptan:AtcoCode":"9100CATTAL","network":"National Rail","railway":"station","ref:crs":"CTL","source":"NPE","wikidata":"Q2087472","wikipedia":"en:Cattal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3908916,53.7505427]},"properties":{"name":"Church and Oswaldtwistle","naptan:AtcoCode":"9100CHOS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CTW","source":"npe","train":"yes","wheelchair":"limited","wikipedia":"en:Church & Oswaldtwistle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0190286,54.9662648]},"properties":{"addr:city":"Corbridge","addr:postcode":"NE45 5AY","addr:street":"Station Road","name":"Corbridge","naptan:AtcoCode":"9100CRBG","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CRB","wheelchair":"limited","wikidata":"Q1883670","wikipedia":"en:Corbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4627642,54.9679903]},"properties":{"name":"Haltwhistle","naptan:AtcoCode":"9100HLTWHST","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HWH","source":"survey","train":"yes","wikidata":"Q13528467","wikipedia":"en:Haltwhistle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2840693,53.996331]},"properties":{"name":"Hammerton","naptan:AtcoCode":"9100HAMERTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HMM","source":"NPE","wikidata":"Q2660162","wikipedia":"en:Hammerton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.31732,53.7815747]},"properties":{"name":"Hapton","naptan:AtcoCode":"9100HAPTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HPN","request_stop":"yes","source":"npe","train":"yes","wikipedia":"en:Hapton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2472059,54.9752903]},"properties":{"addr:city":"Haydon Bridge","addr:postcode":"NE47 6LL","name":"Haydon Bridge","naptan:AtcoCode":"9100HYDB","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HDB","source":"NPE","wikidata":"Q2003647","wikipedia":"en:Haydon Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5944828,53.8180372]},"properties":{"name":"Headingley","naptan:AtcoCode":"9100HEDNGLY","network":"National Rail","old_name":"Kirkstall","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HDY","source":"NPE","wheelchair":"yes","wikidata":"Q2802879","wikipedia":"en:Headingley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0088814,53.7376399]},"properties":{"internet_access":"no","name":"Hebden Bridge","naptan:AtcoCode":"9100HBDNBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HBD","wheelchair":"yes","wikidata":"Q3273315","wikipedia":"en:Hebden Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5276765,53.9803587]},"properties":{"internet_access":"no","name":"Hornbeam Park","naptan:AtcoCode":"9100HRNBPK","network":"National Rail","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HBP","wikidata":"Q4342481","wikipedia":"en:Hornbeam Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6302169,53.8477524]},"properties":{"addr:city":"Leeds","addr:postcode":"LS18 5NL","addr:suburb":"Horsforth","name":"Horsforth","naptan:AtcoCode":"9100HSFT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HRS","wheelchair":"yes","wikidata":"Q2989114","wikipedia":"en:Horsforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3470472,53.7722434]},"properties":{"name":"Huncoat","naptan:AtcoCode":"9100HUNCOAT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HCT","source":"npe","wikipedia":"en:Huncoat railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4703169,54.0090258]},"properties":{"name":"Knaresborough","naptan:AtcoCode":"9100KNRSBGH","network":"National Rail","platforms":"2","railway":"station","ref:crs":"KNA","source":"NPE","wikidata":"Q2848537","wikipedia":"en:Knaresborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9818234,53.7290839]},"properties":{"layer":"2","name":"Mytholmroyd","naptan:AtcoCode":"9100MYTHLMR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MYT","train":"yes","wikidata":"Q2080472","wikipedia":"en:Mytholmroyd railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5326585,53.9584446]},"properties":{"name":"Pannal","naptan:AtcoCode":"9100PANNAL","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"PNL","wheelchair":"yes","wikidata":"Q2602787","wikipedia":"en:Pannal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1484069,53.9759597]},"properties":{"internet_access":"no","name":"Poppleton","naptan:AtcoCode":"9100POPLTON","network":"National Rail","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"POP","source":"NPE","train":"yes","wikidata":"Q7229551","wikipedia":"en:Poppleton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8647367,54.9658707]},"properties":{"addr:city":"Prudhoe","addr:postcode":"NE42 6NR","addr:street":"Station Road","name":"Prudhoe","naptan:AtcoCode":"9100PRUDHOE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PRU","wheelchair":"yes","wikidata":"Q2298662","wikipedia":"en:Prudhoe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1566096,53.4496862]},"properties":{"name":"Reddish North","naptan:AtcoCode":"9100REDISHN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RDN","wikidata":"Q4412893","wikipedia":"en:Reddish North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9719541,54.9489331]},"properties":{"addr:city":"Riding Mill","addr:postcode":"NE44 6EP","name":"Riding Mill","naptan:AtcoCode":"9100RIDNGML","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"RDM","shelter":"yes","source":"NPE","wheelchair":"yes","wikidata":"Q2365388","wikipedia":"en:Riding Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4201859,53.7638289]},"properties":{"name":"Rishton","naptan:AtcoCode":"9100RISHTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RIS","source":"BING","train":"yes","wikipedia":"en:Rishton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7907973,53.8385598]},"properties":{"name":"Saltaire","naptan:AtcoCode":"9100SAIR","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAE","source":"NPE","train":"yes","wikidata":"Q3117450","wikipedia":"en:Saltaire railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9072266,53.7078483]},"properties":{"name":"Sowerby Bridge","naptan:AtcoCode":"9100SWRBBDG","network":"National Rail","operator":"Northern Rail","railway":"station","ref:crs":"SOW","wheelchair":"yes","wikipedia":"en:Sowerby Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5004755,53.998881]},"properties":{"name":"Starbeck","naptan:AtcoCode":"9100STARBCK","network":"National Rail","platforms":"2","railway":"station","ref:crs":"SBE","wikidata":"Q2187296","wikipedia":"en:Starbeck railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9448075,53.9000518]},"properties":{"name":"Steeton and Silsden","naptan:AtcoCode":"9100STEETON","network":"National Rail","railway":"station","ref:crs":"SON","source":"NPE","wikidata":"Q2199805","wikipedia":"en:Steeton and Silsden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9171893,54.946811]},"properties":{"addr:city":"Stocksfield","addr:postcode":"NE43 7NQ","name":"Stocksfield","naptan:AtcoCode":"9100STCKSFL","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SKS","source":"NPE","wheelchair":"yes","wikidata":"Q2371813","wikipedia":"en:Stocksfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5812986,53.923285]},"properties":{"name":"Weeton","naptan:AtcoCode":"9100WEETON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WET","wheelchair":"limited","wikidata":"Q3015678","wikipedia":"en:Weeton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5874211,54.1236926]},"properties":{"name":"Wennington","naptan:AtcoCode":"9100WENNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WNN","source":"npe","wikidata":"Q1900362","wikipedia":"en:Wennington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8319642,54.8837307]},"properties":{"addr:city":"Wetheral","addr:postcode":"CA4 8JP","name":"Wetheral","naptan:AtcoCode":"9100WETHERL","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"WRL","source":"NPE","wikipedia":"en:Wetheral railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8138976,54.9749901]},"properties":{"name":"Wylam","naptan:AtcoCode":"9100WYLAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WYM","source":"survey","wikidata":"Q2536803","wikipedia":"en:Wylam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6145349,54.4843244]},"properties":{"name":"Whitby","naptan:AtcoCode":"9100WTBY","network":"National Rail","network:wikidata":"Q26334","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WTB","train":"yes","uic_ref":"7002397","wikidata":"Q2225295","wikipedia":"en:Whitby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6277753,54.4699399]},"properties":{"name":"Ruswarp","naptan:AtcoCode":"9100RUSWARP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RUS","uic_ref":"7001914","wikidata":"Q7382694","wikipedia":"en:Ruswarp railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1317432,53.0630002]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4900933,52.2772508]},"properties":{"name":"Kennett","naptan:AtcoCode":"9100KENNETT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KNE","wikidata":"Q3926161","wikipedia":"en:Kennett railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4647767,53.2677491]},"properties":{"addr:postcode":"CW9 7NU","addr:street":"Station Road","name":"Lostock Gralam","naptan:AtcoCode":"9100LSTG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LTG","wikipedia":"en:Lostock Gralam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7843417,51.7878849]},"properties":{"name":"Stoke Mandeville","naptan:AtcoCode":"9100STKM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SKM","source":"NPE","wikidata":"Q2244698","wikipedia":"en:Stoke Mandeville railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7351464,51.342078]},"properties":{"addr:postcode":"ME10 3ED","addr:street":"St. Michaels Road","name":"Sittingbourne","naptan:AtcoCode":"9100STNGBRN","network":"National Rail","network:wikidata":"Q26334","platforms":"3","public_transport":"station","railway":"station","ref:crs":"SIT","train":"yes","wheelchair":"yes","wikidata":"Q1919614","wikipedia":"en:Sittingbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1931746,52.0599083]},"properties":{"name":"Great Chesterford","naptan:AtcoCode":"9100GTCHSFD","network":"National Rail","railway":"station","ref:crs":"GRC","source":"GPS survey","wikidata":"Q2765395","wikipedia":"en:Great Chesterford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0343648,51.3576861]},"properties":{"name":"Whitstable","naptan:AtcoCode":"9100WHSTBLE","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WHI","wikidata":"Q2555569","wikipedia":"en:Whitstable railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0674411,51.3602828]},"properties":{"name":"Chestfield & Swalecliffe","naptan:AtcoCode":"9100CHSW","network":"National Rail","operator":"Southeastern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CSW","wikidata":"Q5093891","wikipedia":"en:Chestfield & Swalecliffe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0019759,52.7099433]},"properties":{"addr:postcode":"WS12 1AZ","addr:street":"Market Street","name":"Hednesford","naptan:AtcoCode":"9100HDNS","network":"National Rail","operator":"London Midland","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HNF","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2128872","wikipedia":"en:Hednesford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0207336,52.656769]},"properties":{"name":"Landywood","naptan:AtcoCode":"9100LNDYW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAW","west_midlands_fare_zone":"5","wikidata":"Q628960","wikipedia":"en:Landywood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0068029,51.1761001]},"properties":{"name":"Lingfield","naptan:AtcoCode":"9100LINGFLD","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"RH7 6EF","public_transport":"station","railway":"station","ref:crs":"LFD","source":"npe","wheelchair":"limited","wikidata":"Q743644","wikipedia":"en:Lingfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1971759,51.3129318]},"properties":{"name":"Otford","naptan:AtcoCode":"9100OTFORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OTF","wikidata":"Q2023511","wikipedia":"en:Otford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3825478,51.2032233]},"properties":{"name":"Walmer","naptan:AtcoCode":"9100WALMER","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WAM","source":"survey","wheelchair":"limited","wikidata":"Q3502336","wikipedia":"en:Walmer railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4200382,51.2912891]},"properties":{"name":"Effingham Junction","naptan:AtcoCode":"9100EFNGHMJ","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"EFF","wikidata":"Q2164410","wikipedia":"en:Effingham Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3311974,53.018474]},"properties":{"name":"Langley Mill","naptan:AtcoCode":"9100LGML","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LGM","source":"NPE","wheelchair":"no","wikidata":"Q2145892","wikipedia":"en:Langley Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9093112,52.4538578]},"properties":{"name":"Harling Road","naptan:AtcoCode":"9100HRLNGRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HRD","source":"NPE","wikidata":"Q2746601","wikipedia":"en:Harling Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0859995,52.5349209]},"properties":{"addr:city":"Spooner Row","addr:postcode":"NR18 9AH","addr:street":"Station Road","baby_feeding":"no","email":"contactcentre@greateranglia.co.uk","name":"Spooner Row","naptan:AtcoCode":"9100SPONRRW","network":"National Rail","operator":"Greater Anglia","phone":"+448456007245","public_transport":"station","railway":"station","ref:crs":"SPN","request_stop":"yes","source":"survey;local knowledge;NPE","website":"https://www.nationalrail.co.uk/stations/SPN/details.html","wheelchair":"yes","wikidata":"Q2476140","wikipedia":"en:Spooner Row railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0569241,51.51125]},"properties":{"electrified":"rail","name":"Shadwell","naptan:AtcoCode":"9100SHADWEL","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SDE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"no","wikidata":"Q4115037","wikipedia":"en:Shadwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2147881,51.410247]},"properties":{"name":"Wimbledon Chase","naptan:AtcoCode":"9100WIMLCHS","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"WBO","wheelchair":"no","wikidata":"Q2351064","wikipedia":"en:Wimbledon Chase railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2865821,51.4653247]},"properties":{"name":"North Sheen","naptan:AtcoCode":"9100NSHEEN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"NSH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2797378","wikipedia":"en:North Sheen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1990432,51.4340563]},"properties":{"fare_zone":"3","line":"District","name":"Wimbledon Park","name:ru":"Уимблдон-парк","naptan:AtcoCode":"940GZZLUWIP","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikipedia":"en:Wimbledon Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2357932,51.4941293]},"properties":{"fare_zone":"2","line":"District","name":"Ravenscourt Park","name:ru":"Рэйвенскорт-парк","naptan:AtcoCode":"940GZZLURVP","network":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q768560","wikipedia":"en:Ravenscourt Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1829268,51.475103]},"properties":{"name":"Imperial Wharf","name:ru":"Империал-Уорф","naptan:AtcoCode":"9100CSEAH","network":"National Rail;London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"IMW","source:network":"Sign","source_ref":"https://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q800954","wikipedia":"en:Imperial Wharf railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1876937,51.4424033]},"properties":{"name":"Earlsfield","name:ru":"Эрлсфилд","naptan:AtcoCode":"9100ERLFLD","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"EAD","source:name":"local knowledge","source_ref:network":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q742411","wikipedia":"en:Earlsfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0238695,51.7027036]},"properties":{"name":"Cheshunt","naptan:AtcoCode":"9100CHESHNT","network":"National Rail;London Overground","operator":"Abellio Greater Anglia","platforms":"3","public_transport":"station","railway":"station","ref:crs":"CHN","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 70m journey via street. Access from platform to train by manual boarding ramp.","wikidata":"Q3303565","wikipedia":"en:Cheshunt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2278823,51.2145812]},"properties":{"name":"Hildenborough","naptan:AtcoCode":"9100HLDNBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HLB","wikidata":"Q1946568","wikipedia":"en:Hildenborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2674721,51.247941]},"properties":{"addr:city":"Betchworth","addr:postcode":"RH3 7BZ","addr:street":"Pebblehill Road","name":"Betchworth","naptan:AtcoCode":"9100BTCHWTH","network":"National Rail","postal_code":"RH3 7BZ","public_transport":"station","railway":"station","ref:crs":"BTO","toilets:wheelchair":"no","website":"http://www.nationalrail.co.uk/stations/BTO/details.html","wheelchair":"limited","wheelchair:description":"Unstaffed station, ramps available for use by train crew. Steep ramps up onto platforms both sides. Gate to Gatwick trains easy to open. Nearby road has no footway.","wikidata":"Q2041117","wikipedia":"en:Betchworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5573085,51.3184492]},"properties":{"addr:city":"Woking","name":"Woking","naptan:AtcoCode":"9100WOKING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WOK","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Lifts at west end footbridge. Accessible toilets on platforms 3/4 & 5 (1/2 not checked for toilet). Some dedicated Blue Badge spaces near south entrance.","wikidata":"Q2119774","wikipedia":"en:Woking railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5055065,51.3395197]},"properties":{"name":"West Byfleet","naptan:AtcoCode":"9100WBYFLET","network":"National Rail","phonetic:en":"wɛst bajflit","public_transport":"station","railway":"station","ref:crs":"WBY","wikidata":"Q13528644","wikipedia":"en:West Byfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7994939,53.0813745]},"properties":{"name":"Newark North Gate","naptan:AtcoCode":"9100NEWANG","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"NNG","source":"NPE","train":"yes","wikidata":"Q3246476","wikipedia":"en:Newark North Gate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1613148,51.4198567]},"properties":{"name":"Tooting","name:ru":"Тутинг","naptan:AtcoCode":"9100TOOTING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TOO","wheelchair":"no","wikidata":"Q2181903","wikipedia":"en:Tooting railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1883425,51.4253627]},"properties":{"name":"Haydons Road","name:ru":"Хэйдонс-Роуд","naptan:AtcoCode":"9100HYDNSRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HYR","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q1909042","wikipedia":"en:Haydons Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2366228,53.3038625]},"properties":{"name":"Alderley Edge","naptan:AtcoCode":"9100ALDEDGE","network":"National Rail","railway":"station","ref:crs":"ALD","wheelchair":"yes","wikipedia":"en:Alderley Edge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5106193,54.1154922]},"properties":{"internet_access":"no","name":"Bentham","naptan:AtcoCode":"9100BNTHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEN","wheelchair":"yes","wikidata":"Q4890388","wikipedia":"en:Bentham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4104509,54.105416]},"properties":{"name":"Clapham","naptan:AtcoCode":"9100CLPM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CPY","source":"NPE","wikidata":"Q5125882","wikipedia":"en:Clapham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0118034,53.9171608]},"properties":{"name":"Cononley","naptan:AtcoCode":"9100CONONLY","network":"National Rail","railway":"station","ref:crs":"CEY","wikidata":"Q3295297","wikipedia":"en:Cononley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1050692,53.9782539]},"properties":{"name":"Gargrave","naptan:AtcoCode":"9100GRGRAVE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GGV","source":"NPE","wikidata":"Q2007532","wikipedia":"en:Gargrave railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3263394,53.2225699]},"properties":{"name":"Goostrey","naptan:AtcoCode":"9100GOOSTRY","network":"National Rail","railway":"station","ref:crs":"GTR","wikipedia":"en:Goostrey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1739555,53.4569538]},"properties":{"name":"Ryder Brow","naptan:AtcoCode":"9100RYDRBRW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RRB","wikidata":"Q2212798","wikipedia":"en:Ryder Brow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1635168,51.4461242]},"properties":{"name":"Wandsworth Common","name:ru":"Уондсуэрт-Коммон","naptan:AtcoCode":"9100WANDCMN","network":"National Rail","network:train":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WSW","wheelchair":"limited","wheelchair:description":"Level access to platform 1 (to Croydon / London Bridge) via rear entrance. Steps to all other platforms.","wikidata":"Q2398577","wikipedia":"en:Wandsworth Common railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1037671,51.5115854]},"properties":{"fare_zone":"1","line":"Circle;District","name":"Blackfriars","name:ru":"Блэкфраерс","naptan:AtcoCode":"940GZZLUBKF","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Lift to platform, step-free onto trains (Only Eastbound checked and photos today)","wikidata":"Q284195","wikimedia_commons":"Category:Blackfriars_station","wikipedia":"en:Blackfriars station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1445802,51.4947328]},"properties":{"name":"London Victoria","name:ru":"Виктория","naptan:AtcoCode":"9100VICTRIE","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","railway:ref:DB":"XKLV","ref:crs":"VIC","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"yes","uic_ref":"7000010","wheelchair":"yes","wheelchair:description":"Concourse to platforms step-free & wide gates. Access to all trains by portable ramps, no Harrington Humps discovered yet.","wikidata":"Q985210","wikipedia":"en:London Victoria station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1210879,50.8165473]},"properties":{"name":"Halfway Station","old_name":"Paston Place","public_transport":"station","railway":"station","toilets:wheelchair":"no","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5374305,53.9934045]},"properties":{"addr:city":"Harrogate","addr:postcode":"HG1 1TE","addr:street":"Station Parade","name":"Harrogate","naptan:AtcoCode":"9100HAGT","network":"National Rail","operator":"Northern","platforms":"3","public_transport":"station","railway":"station","ref:crs":"HGT","wheelchair":"limited","wikidata":"Q2698559","wikipedia":"en:Harrogate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9902234,53.3302771]},"properties":{"internet_access":"no","name":"Bromborough Rake","naptan:AtcoCode":"9100BRMBRK","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BMR","wikidata":"Q2270263","wikipedia":"en:Bromborough Rake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8953003,53.5541643]},"properties":{"name":"Aughton Park","naptan:AtcoCode":"9100AGHTNPH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AUG","source":"NPE","wikipedia":"en:Aughton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9506754,53.4868988]},"properties":{"name":"Old Roan","naptan:AtcoCode":"9100OLDROAN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ORN","source":"npe","wikidata":"Q7084858","wikipedia":"en:Old Roan railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9627161,53.4620285]},"properties":{"name":"Orrell Park","naptan:AtcoCode":"9100ORELPKH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OPK","wikidata":"Q2054566","wikipedia":"en:Orrell Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9044304,53.5430207]},"properties":{"name":"Town Green","naptan:AtcoCode":"9100TOWNGRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TWN","source":"NPE","wikipedia":"en:Town Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9660572,53.4563903]},"properties":{"name":"Walton","naptan:AtcoCode":"9100WALTONM","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"WAO","wheelchair":"limited","wikidata":"Q2346937","wikipedia":"en:Walton railway station (Merseyside)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1120142,51.4989328]},"properties":{"fare_zone":"1","line":"Bakerloo","name":"Lambeth North","name:ru":"Ламбет-норт","naptan:AtcoCode":"940GZZLULBN","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1549587","wikipedia":"en:Lambeth North tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9630946,53.4575059]},"properties":{"name":"Rice Lane","naptan:AtcoCode":"9100RICELA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RIL","wikidata":"Q2419192","wikipedia":"en:Rice Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0146159,53.6338886]},"properties":{"name":"Birkdale","naptan:AtcoCode":"9100BKDLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BDL","source":"npe","wikidata":"Q2470223","wikipedia":"en:Birkdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0718907,53.5662108]},"properties":{"name":"Freshfield","naptan:AtcoCode":"9100FRSHFLD","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"FRE","source":"npe","wikidata":"Q1860501","wikipedia":"en:Freshfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0497373,53.4976204]},"properties":{"name":"Hall Road","naptan:AtcoCode":"9100HALLRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HLR","source":"npe","wheelchair":"yes","wikidata":"Q2233289","wikipedia":"en:Hall Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.057184,53.5253852]},"properties":{"name":"Hightown","naptan:AtcoCode":"9100HITN","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"HTO","source":"npe","wikidata":"Q2275625","wikipedia":"en:Hightown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0254312,53.6215448]},"properties":{"name":"Hillside","naptan:AtcoCode":"9100HILLSID","network":"National Rail","note:location":"NPE and other maps are wrong, platform is on the south side of the bridge","public_transport":"station","railway":"station","ref:crs":"HIL","source":"local knowledge","wikidata":"Q2398739","wikipedia":"en:Hillside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7803346,53.4307355]},"properties":{"name":"Eccleston Park","naptan:AtcoCode":"9100ECPK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ECL","source":"NPE","wikipedia":"en:Eccleston Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7989869,53.4235274]},"properties":{"name":"Prescot","naptan:AtcoCode":"9100PRESCOT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PSC","source":"NPE","wikidata":"Q1938051","wikipedia":"en:Prescot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9369705,53.468984]},"properties":{"name":"Fazakerley","naptan:AtcoCode":"9100FAZKRLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FAZ","wikidata":"Q4837976","wikipedia":"en:Fazakerley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.102674,51.0232945]},"properties":{"addr:city":"Taunton","addr:country":"GB","addr:county":"Somerset","addr:postcode":"TA1 1QP","addr:street":"Station Approach","internet_access":"wlan","name":"Taunton","naptan:AtcoCode":"9100TAUNTON","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway","operator:wikidata":"Q1419438","public_transport":"station","railway":"station","ref:crs":"TAU","train":"yes","wikidata":"Q7688820","wikipedia":"en:Taunton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3241359,51.2411653]},"properties":{"addr:city":"Dorking","addr:street":"Station Approach","name":"Dorking","naptan:AtcoCode":"9100DORKING","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","postal_code":"RH4 1TF","public_transport":"station","railway":"station","ref:crs":"DKG","ref:stanox":"87687","train":"yes","website":"http://www.nationalrail.co.uk/stations/DKG/details.html","wheelchair":"yes","wheelchair:description":"Automatic sliding doors from street to ticket hall & platform 1. Lift to bridge for terminal platforms 2 & 3. Manual ramps. Toilets not yet checked.","wikidata":"Q1914125","wikipedia":"en:Dorking railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5091855,53.6536471]},"properties":{"name":"Pugneys Central","operator":"Pugneys Light Railway","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5116661,53.6564954]},"properties":{"name":"Pugneys Lakeside","operator":"Pugneys Light Railway","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0757186,51.5142477]},"properties":{"fare_zone":"1","line":"Metropolitan","name":"Aldgate","name:da":"Aldgate Station","name:ru":"Олдгейт","naptan:AtcoCode":"940GZZLUALD","network":"London Underground","operator":"Transport for London","platforms":"4","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q782929","wikimedia_commons":"Category:Aldgate tube station","wikipedia":"en:Aldgate tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7125888,52.2536353]},"properties":{"erected":"1847","name":"Bury St Edmunds","name:lt":"Beri Sent Edmundsas","naptan:AtcoCode":"9100BSTEDMS","network":"National Rail","operator":"National Express East Anglia","railway":"station","ref:crs":"BSE","source:ref":"ATOC","wheelchair":"yes","wikidata":"Q3243921","wikipedia":"en:Bury St Edmunds railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9125333,52.2381588]},"properties":{"internet_access":"no","name":"Elmswell","naptan:AtcoCode":"9100ELMSWEL","network":"National Rail","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"ESW","wheelchair":"yes","wikidata":"Q2980360","wikipedia":"en:Elmswell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8086544,52.2499275]},"properties":{"name":"Thurston","naptan:AtcoCode":"9100THUSTON","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TRS","source":"NPE","train":"yes","wikidata":"Q2384368","wikipedia":"en:Thurston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0555379,52.1526149]},"properties":{"name":"Needham Market","naptan:AtcoCode":"9100NEEDHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NMT","source":"NPE","wikidata":"Q2526515","wikipedia":"en:Needham Market railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.000257,52.1897991]},"properties":{"name":"Stowmarket","naptan:AtcoCode":"9100STWMRKT","network":"National Rail","phone":"+44 800 028 28 78","public_transport":"station","railway":"station","ref:crs":"SMK","source":"http://www.nationalrail.co.uk/stations/SMK/details.html","wheelchair":"limited","wikidata":"Q2618103","wikipedia":"en:Stowmarket railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0749325,51.5824738]},"properties":{"fare_zone":"3","line":"Victoria","name":"Seven Sisters","naptan:AtcoCode":"9100SEVNSIS","network":"National Rail;London Underground;London Overground","operator":"London Overground;London Underground","platforms":"3;2","public_transport":"station","railway":"station","ref:crs":"SVS","source:network":"Sign","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q801433","wikipedia":"en:Seven Sisters station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1654105,51.866427]},"properties":{"name":"Bishop's Stortford","name:lt":"Bišops Storfordas","naptan:AtcoCode":"9100BSHPSFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BIS","source_ref":"GPS survey","train":"yes","wheelchair":"limited","wikidata":"Q4351888","wikipedia":"en:Bishop's Stortford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4859786,51.4709832]},"properties":{"airside":"yes","alt_name":"T5A","layer":"-1","level":"-2","name":"Gates A1-A23","network":"Heathrow Airport","operator":"Heathrow Airport","public_transport":"station","railway":"station","start_date":"2007","station":"monorail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4812712,51.4709999]},"properties":{"airside":"yes","alt_name":"T5B","layer":"-1","level":"-2","name":"Gates B32-B48","network":"Heathrow Airport","operator":"Heathrow Airport","public_transport":"station","railway":"station","start_date":"2007","station":"monorail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.476074,51.470982]},"properties":{"airside":"yes","alt_name":"T5C","level":"-2","name":"Gates C52-C66","network":"Heathrow Airport","operator":"Heathrow Airport","public_transport":"station","railway":"station","start_date":"2010","station":"monorail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2066142,51.4457751]},"properties":{"fare_zone":"3","line":"District","name":"Southfields","name:ru":"Саутфилдс","naptan:AtcoCode":"940GZZLUSFS","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1974786","wikipedia":"en:Southfields tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6047872,54.9739724]},"properties":{"internet_access":"no","light_rail":"yes","name":"Manors","naptan:AtcoCode":"940GZZTWMNS","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q6751440","wikipedia":"en:Manors Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6443016,55.0135968]},"properties":{"name":"Fawdon","naptan:AtcoCode":"940GZZTWFDN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5438738","wikipedia":"en:Fawdon Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6356886,55.0142915]},"properties":{"name":"Wansbeck Road","naptan:AtcoCode":"940GZZTWWBK","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q7968068","wikipedia":"en:Wansbeck Road Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3073912,51.3179225]},"properties":{"name":"Ashtead","naptan:AtcoCode":"9100ASHD","network":"National Rail","postal_code":"KT21 2DR","public_transport":"station","railway":"station","ref:crs":"AHD","ref:stanox":"87683","wikidata":"Q4805961","wikipedia":"en:Ashtead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1248604,51.4860091]},"properties":{"fare_zone":"1;2","line":"Victoria","name":"Vauxhall","name:ru":"Воксхолл","naptan:AtcoCode":"940GZZLUVXL","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q664375","wikimedia_commons":"Category:Vauxhall tube station","wikipedia":"en:Vauxhall station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9402265,53.4472118]},"properties":{"name":"Manor Station","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.275093,51.8037471]},"properties":{"name":"Oxford Parkway","naptan:AtcoCode":"9100OXFPWAY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OXP","train":"yes","wikidata":"Q7973289","wikipedia":"en:Oxford Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0887195,51.3736037]},"properties":{"name":"Orpington","naptan:AtcoCode":"9100ORPNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ORP","source":"NPE","wheelchair":"yes","wikidata":"Q1956050","wikipedia":"en:Orpington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1022835,51.4534691]},"properties":{"name":"Herne Hill","name:ru":"Херн-Хилл","naptan:AtcoCode":"9100HERNEH","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"HNH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q2794382","wikipedia":"en:Herne Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3894128,51.3179185]},"properties":{"name":"Cobham & Stoke d'Abernon","naptan:AtcoCode":"9100CBHMSDA","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CSD","wheelchair":"limited","wheelchair:description":"Step-free access to platform 1. Access to platform 2 via footbridge with steps. Accessible toilets located in the ticket hall requiring a radar key.","wikidata":"Q5138880","wikipedia":"en:Cobham & Stoke d'Abernon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3239805,51.2388155]},"properties":{"addr:city":"Dorking","name":"Dorking Deepdene","naptan:AtcoCode":"9100DEPDENE","network":"National Rail","network:wikidata":"Q26334","postal_code":"RH4 7TY","public_transport":"station","railway":"station","ref:crs":"DPD","ref:stanox":"87086","toilets:wheelchair":"no","train":"yes","wheelchair":"no","wheelchair:description":"Unstaffed. Long flights of steps from both platforms to Road for interchange with Dorking North station.","wikidata":"Q2343042","wikipedia":"en:Dorking Deepdene railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.165577,51.2400546]},"properties":{"addr:city":"Redhill","addr:street":"Station Road","name":"Redhill","naptan:AtcoCode":"9100REDHILL","network":"National Rail","operator":"Southern","postal_code":"RH1 1RB","public_transport":"station","railway":"station","ref:crs":"RDH","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Blue Badge spaces (2). Ramps to ticket office and tactile map of station. Lifts to all platforms. Accessible toilet (RADAR KEY) on Platform 3. Defibrillator in subway by lift to platforms 1+2.","wikidata":"Q2383756","wikipedia":"en:Redhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2384351,51.3242508]},"properties":{"addr:street":"Bunbury Way","name":"Epsom Downs","naptan:AtcoCode":"9100EPSDNS","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"EPD","train":"yes","wikidata":"Q2576134","wikipedia":"en:Epsom Downs railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2453816,51.6175522]},"properties":{"name":"Oxford Road","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.48122,51.3496809]},"properties":{"name":"Byfleet and New Haw","naptan:AtcoCode":"9100BYFLANH","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BFN","train":"yes","wikidata":"Q2718174","wikipedia":"en:Byfleet & New Haw railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1479494,51.4402375]},"properties":{"name":"Bexley","naptan:AtcoCode":"9100BEXLEY","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BXY","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"yes","wheelchair":"limited","wheelchair:description":"Only the near platform (to Crayford) is accessible","wikidata":"Q2346075","wikipedia":"en:Bexley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4580837,51.3614381]},"properties":{"name":"Weybridge","naptan:AtcoCode":"9100WEYBDGE","network":"National Rail","operator":"South Western Railway","platforms":"3","public_transport":"station","railway":"station","ref:crs":"WYB","wikidata":"Q2842764","wikipedia":"en:Weybridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7070712,53.8420442]},"properties":{"name":"Apperley Bridge","naptan:AtcoCode":"9100APERLYB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"APY","ref:tiploc":"APERLYB","train":"yes","wheelchair":"yes","wikipedia":"en:Apperley Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5303248,50.9547688]},"properties":{"name":"Stopham Road","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.south-downs-railway.com/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4686521,51.736512]},"properties":{"internet_access":"yes","name":"Chelmsford","naptan:AtcoCode":"9100CHLMSFD","network":"National Rail","operator":"Abellio Greater Anglia","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CHM","train":"yes","wheelchair":"yes","wikidata":"Q2668271","wikipedia":"en:Chelmsford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1514426,51.4428285]},"properties":{"name":"Balham","naptan:AtcoCode":"9100BALHAM","network":"National Rail","network:train":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BAL","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q579345","wikipedia":"en:Balham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2673708,51.4680644]},"properties":{"name":"Mortlake","naptan:AtcoCode":"9100MRTLKE","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"MTL","wheelchair":"yes","wikidata":"Q3401843","wikipedia":"en:Mortlake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6619813,51.8582898]},"properties":{"name":"Cheddington","naptan:AtcoCode":"9100CHDNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CED","wikidata":"Q1885115","wikipedia":"en:Cheddington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5626636,51.7635571]},"properties":{"name":"Berkhamsted","naptan:AtcoCode":"9100BERKHMD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BKM","wikidata":"Q19955","wikipedia":"en:Berkhamsted railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2048356,51.7211572]},"properties":{"name":"Brookmans Park","naptan:AtcoCode":"9100BRKMNPK","network":"National Rail","operator":"Great Northern","railway":"station","ref:crs":"BPK","ref:tiploc":"BRKMNPK","wikidata":"Q2510114","wikipedia":"en:Brookmans Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4949825,52.0037912]},"properties":{"name":"Flitwick","naptan:AtcoCode":"9100FLITWCK","network":"National Rail","railway":"station","ref:crs":"FLT","wikidata":"Q2047756","wikimedia_commons":"Category:Flitwick railway station","wikipedia":"en:Flitwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4953396,51.9614072]},"properties":{"name":"Harlington","naptan:AtcoCode":"9100HRLG","network":"National Rail","railway":"station","ref:crs":"HLN","wikidata":"Q2107782","wikimedia_commons":"Category:Harlington railway station","wikipedia":"en:Harlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.263035,51.9531709]},"properties":{"name":"Hitchin","naptan:AtcoCode":"9100HITCHIN","network":"National Rail","railway":"station","ref:crs":"HIT","ref:tiploc":"HITCHIN","wikidata":"Q2469591","wikipedia":"en:Hitchin railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3076815,51.5008623]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"South Ealing","naptan:AtcoCode":"940GZZLUSEA","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q2304475","wikipedia":"en:South Ealing tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.187051,51.8670421]},"properties":{"name":"Knebworth","naptan:AtcoCode":"9100KNEBWTH","network":"National Rail","railway":"station","ref:crs":"KBW","ref:tiploc":"KNEBWTH","wheelchair":"no","wikidata":"Q2538068","wikipedia":"en:Knebworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3538289,51.4624598]},"properties":{"name":"Tilbury Town","naptan:AtcoCode":"9100TLBYTWN","network":"National Rail","old_name":"Tilbury Dock","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"TIL","train":"yes","wikidata":"Q3295563","wikipedia":"en:Tilbury Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0642026,50.2639862]},"properties":{"name":"Truro","name:kw":"Truru","naptan:AtcoCode":"9100TRURO","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TRU","train":"yes","wheelchair":"yes","wikidata":"Q647459","wikipedia":"en:Truro railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.1433202,50.3780005]},"properties":{"name":"Plymouth","naptan:AtcoCode":"9100PLYMTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PLY","train":"yes","wheelchair":"yes","wikidata":"Q956813","wikipedia":"en:Plymouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4090029,53.0629839]},"properties":{"name":"Hammersmith","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q5645767","wikipedia":"en:Hammersmith railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5153626,53.3275696]},"properties":{"internet_access":"wlan","internet_access:fee":"no","name":"Dore and Totley","naptan:AtcoCode":"9100DORE","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"DOR","train":"yes","wikidata":"Q2552687","wikipedia":"en:Dore & Totley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5781491,53.7269328]},"properties":{"name":"Brough","naptan:AtcoCode":"9100BROUGH","network":"National Rail","operator":"Northern Rail","railway":"station","ref:crs":"BUH","wheelchair":"yes","wikidata":"Q1827064","wikipedia":"en:Brough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8536277,53.7208399]},"properties":{"internet_access":"no","name":"Halifax","naptan:AtcoCode":"9100HLFX","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HFX","source":"NPE","train":"yes","wikidata":"Q2703979","wikipedia":"en:Halifax railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0851473,51.5048764]},"properties":{"addr:city":"London","addr:postcode":"SE1 9SP","fare_zone":"1","layer":"1","line":"Jubilee;Northern","name":"London Bridge","name:da":"London Bridge Station","naptan:AtcoCode":"9100LNDNBDE","network":"National Rail;London Underground","operator":"Network Rail","public_transport":"station","public_transport:version":"2","railway":"station","railway:ref:DB":"XKLLB","ref:crs":"LBG","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q801125","wikipedia":"en:London Bridge station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1238912,52.6318214]},"properties":{"name":"Leicester","naptan:AtcoCode":"9100LESTER","network":"National Rail","platforms":"4","postal_code":"LE2 0QB","public_transport":"station","railway":"station","ref:crs":"LEI","train":"yes","wheelchair":"yes","wikidata":"Q3399620","wikimedia_commons":"Category:Leicester Central railway station","wikipedia":"en:Leicester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4797291,52.1361826]},"properties":{"addr:city":"Bedford","addr:postcode":"MK40 1DS","addr:street":"Ashburnham Road","name":"Bedford","naptan:AtcoCode":"9100BEDFDM","network":"National Rail","network:wikidata":"Q26334","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"BDM","train":"yes","wikidata":"Q2290621","wikimedia_commons":"Category:Bedford railway station","wikipedia":"en:Bedford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2075065,52.9207938]},"properties":{"is_in:county":"Nottinghamshire","layer":"2","name":"Beeston","naptan:AtcoCode":"9100BESTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEE","wheelchair":"yes","wikidata":"Q3299120","wikipedia":"en:Beeston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4799836,52.6714844]},"properties":{"name":"Lawley Village","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7222499,51.5573685]},"properties":{"name":"Cookham","naptan:AtcoCode":"9100COOKHAM","network":"National Rail","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"COO","source":"NPE","wikidata":"Q2694705","wikipedia":"en:Cookham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2044835,51.3662613]},"properties":{"name":"West Sutton","naptan:AtcoCode":"9100WSUTTON","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"WSU","wheelchair":"no","wikidata":"Q2544455","wikipedia":"en:West Sutton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1941812,51.2901134]},"properties":{"addr:street":"Bat and Ball Road","name":"Bat & Ball","naptan:AtcoCode":"9100BATABAL","network":"National Rail","old_name":"Sevenoaks Bat & Ball","public_transport":"station","railway":"station","ref:crs":"BBL","source":"NPE","wikidata":"Q4868455","wikipedia":"en:Bat & Ball railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2042149,51.3623288]},"properties":{"name":"Eynsford","naptan:AtcoCode":"9100EYNSFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EYN","source":"NPE","wikidata":"Q2324147","wikipedia":"en:Eynsford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.341439,53.3557218]},"properties":{"name":"Ashley","naptan:AtcoCode":"9100ASHLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ASY","wikipedia":"en:Ashley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2779622,51.1497792]},"properties":{"addr:postcode":"TN2 3XE","addr:street":"North Farm Road","name":"High Brooms","naptan:AtcoCode":"9100HBROOMS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HIB","website":"http://www.nationalrail.co.uk/stations/hib/details.html","wikidata":"Q2289866","wikipedia":"en:High Brooms railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6864127,51.2951704]},"properties":{"name":"Warren Wood","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6224578,51.800672]},"properties":{"name":"Tring","naptan:AtcoCode":"9100TRING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TRI","wheelchair":"yes","wikidata":"Q2620068","wikipedia":"en:Tring railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9445158,53.3401158]},"properties":{"addr:city":"Chinley","addr:postcode":"SK23 6AR","addr:street":"Station Road","name":"Chinley","naptan:AtcoCode":"9100CHNLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLY","wikidata":"Q2343783","wikipedia":"en:Chinley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0705576,51.4918947]},"properties":{"fare_zone":"4","fixme":"Check name on roundels","name":"Woolwich","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"WWC","ref:tiploc":"WOLWXR","train":"yes","wheelchair":"yes","wikidata":"Q8033991","wikipedia":"en:Woolwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0339842,51.5351062]},"properties":{"addr:city":"London","addr:postcode":"E13 9AP","addr:street":"Green Street","fare_zone":"3","internet_access":"wlan","internet_access:fee":"no","internet_access:ssid":"Virgin Media WiFi","line":"District;Hammersmith & City","name":"Upton Park","naptan:AtcoCode":"940GZZLUUPK","network":"London Underground","operator":"Transport for London","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1649850","wikipedia":"en:Upton Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.297508,51.8814551]},"properties":{"name":"Tackley","naptan:AtcoCode":"9100TACKLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TAC","wikidata":"Q2457327","wikipedia":"en:Tackley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5720557,54.9829136]},"properties":{"light_rail":"yes","name":"Chillingham Road","naptan:AtcoCode":"940GZZTWCHM","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5099070","wikipedia":"en:Chillingham Road Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.571771,54.9531464]},"properties":{"name":"Felling","name:lt":"Felingas","naptan:AtcoCode":"940GZZTWFLG","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5442471","wikipedia":"en:Felling Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5881587,54.9576691]},"properties":{"name":"Gateshead Stadium","naptan:AtcoCode":"940GZZTWGHS","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5527162","wikipedia":"en:Gateshead Stadium Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6139281,54.9775027]},"properties":{"internet_access":"no","light_rail":"yes","name":"Haymarket","naptan:AtcoCode":"940GZZTWHMT","network":"Tyne and Wear Metro","operator":"Nexus","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q5686995","wikipedia":"en:Haymarket Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5560372,54.9515374]},"properties":{"light_rail":"yes","name":"Heworth","naptan:AtcoCode":"910GHEWORTH","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"HEZ","station":"light_rail","wikidata":"Q2367499","wikipedia":"en:Heworth Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5571558,54.9516098]},"properties":{"name":"Heworth","naptan:AtcoCode":"9100HEWORTH","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HEW","wikidata":"Q2367499","wikipedia":"en:Heworth Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6108627,55.0000112]},"properties":{"internet_access":"no","internet_access:fee":"no","name":"Ilford Road","naptan:AtcoCode":"940GZZTWIFD","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5997749","wikipedia":"en:Ilford Road Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6056954,54.9828211]},"properties":{"light_rail":"yes","name":"Jesmond","naptan:AtcoCode":"940GZZTWJMD","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q12060867","wikipedia":"en:Jesmond Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4010132,54.9064665]},"properties":{"light_rail":"yes","name":"Millfield","naptan:AtcoCode":"940GZZTWMFD","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q6859477","wikipedia":"en:Millfield Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6167186,54.9693665]},"properties":{"light_rail":"yes","loc_name":"Central Station","location":"underground","name":"Central Station","naptan:AtcoCode":"9400ZZTWCST","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"NCZ","station":"light_rail","wikidata":"Q5061864","wikipedia":"en:Central Station Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4178547,54.9127413]},"properties":{"light_rail":"yes","name":"Pallion","naptan:AtcoCode":"940GZZTWPLN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7127895","wikipedia":"en:Pallion Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6216284,55.0119539]},"properties":{"light_rail":"yes","name":"Regent Centre","naptan:AtcoCode":"940GZZTWRGC","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7308079","wikipedia":"en:Regent Centre Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6083021,55.0057849]},"properties":{"name":"South Gosforth","naptan:AtcoCode":"940GZZTWSGF","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"SGH","station":"light_rail","wikidata":"Q7567374","wikipedia":"en:South Gosforth Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4476867,54.9042829]},"properties":{"name":"South Hylton","naptan:AtcoCode":"940GZZTWSHY","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"SHZ","station":"light_rail","wikidata":"Q7567520","wikipedia":"en:South Hylton Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3837588,54.9110683]},"properties":{"internet_access":"no","internet_access:fee":"no","light_rail":"yes","name":"St Peter's","naptan:AtcoCode":"9100SNDRMNK","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7595326","wikipedia":"en:St Peter's Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3829516,54.9181372]},"properties":{"light_rail":"yes","name":"Stadium of Light","naptan:AtcoCode":"940GZZTWSOL","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7596509","wikipedia":"en:Stadium of Light Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3824404,54.9061115]},"properties":{"light_rail":"yes","name":"Sunderland","naptan:AtcoCode":"9100SNDRLND","network":"National Rail","operator":"Northern Rail","platforms":"4","public_transport":"station","railway":"station","ref:crs":"SUN","station":"light_rail","train":"yes","wikidata":"Q2669414","wikipedia":"en:Sunderland station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6098034,54.993435]},"properties":{"name":"West Jesmond","naptan:AtcoCode":"940GZZTWWJM","naptan:PlusbusZoneRef":"NWCSTLE","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7985584","wikipedia":"en:West Jesmond Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1373589,51.4620748]},"properties":{"fare_zone":"2","line":"Northern","name":"Clapham Common","name:ru":"Клэпхем-Коммон","naptan:AtcoCode":"940GZZLUCPC","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1095075","wikipedia":"en:Clapham Common tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2242361,51.5119347]},"properties":{"fare_zone":"2","line":"Central","name":"White City","naptan:AtcoCode":"940GZZLUWCY","network":"London Underground","platforms":"3","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q2120048","wikipedia":"en:White City tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.542051,54.9526638]},"properties":{"name":"Pelaw","naptan:AtcoCode":"940GZZTWPLW","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","toilets:wheelchair":"no","wheelchair":"yes","wikidata":"Q7161216","wikipedia":"en:Pelaw Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6044065,54.9617219]},"properties":{"light_rail":"yes","name":"Gateshead","naptan:AtcoCode":"940GZZTWGHD","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Gateshead Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6780732,55.0139176]},"properties":{"name":"Bank Foot","naptan:AtcoCode":"940GZZTWBKF","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q4855918","wikipedia":"en:Bank Foot Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7034114,55.0277062]},"properties":{"name":"Callerton Parkway","naptan:AtcoCode":"940GZZTWCTP","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Callerton Parkway Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7110967,55.0356373]},"properties":{"name":"Airport","naptan:AtcoCode":"910GAIRP;940GZZTWAPT","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Airport Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5676297,55.0139029]},"properties":{"light_rail":"yes","name":"Benton","naptan:AtcoCode":"940GZZTWBTN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q4890591","wikipedia":"en:Benton Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4201545,54.946345]},"properties":{"internet_access":"no","internet_access:fee":"no","name":"East Boldon","naptan:AtcoCode":"910GEBOLDON","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5327886","wikipedia":"en:East Boldon Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5785049,55.010164]},"properties":{"light_rail":"yes","name":"Four Lane Ends","naptan:AtcoCode":"940GZZTWFLE","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Four Lane Ends Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4656764,54.9742849]},"properties":{"internet_access":"no","internet_access:fee":"no","name":"Bede","naptan:AtcoCode":"940GZZTWBDE","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q4879040","wikipedia":"en:Bede Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.493592,54.9795929]},"properties":{"name":"Jarrow","naptan:AtcoCode":"940GZZTWJRW","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q6161119","wikipedia":"en:Jarrow Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5212236,54.9752922]},"properties":{"light_rail":"yes","name":"Hebburn","naptan:AtcoCode":"940GZZTWHBN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5695378","wikipedia":"en:Hebburn Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.460684,54.9595193]},"properties":{"internet_access":"no","internet_access:fee":"no","light_rail":"yes","name":"Brockley Whins","naptan:AtcoCode":"910GBRWHINS;940GZZTWBRW","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","ref:crs":"BNR","station":"light_rail","wikidata":"Q4972838","wikipedia":"en:Brockley Whins Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3865039,54.9295618]},"properties":{"name":"Seaburn","naptan:AtcoCode":"910GSEABURN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7440231","wikipedia":"en:Seaburn Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.392096,54.9027916]},"properties":{"light_rail":"yes","name":"University","naptan:AtcoCode":"940GZZTWUNI","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:University Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6210905,54.974347]},"properties":{"light_rail":"yes","name":"St James","naptan:AtcoCode":"940GZZTWSTJ","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7593500","wikipedia":"en:St James Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6056318,54.972671]},"properties":{"internet_access":"no","name":"Manors","naptan:AtcoCode":"9100MANORS","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"MAS","train":"yes","wheelchair":"no","wikidata":"Q2772409","wikipedia":"en:Manors railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5594732,54.9853512]},"properties":{"internet_access":"no","light_rail":"yes","name":"Walkergate","naptan:AtcoCode":"940GZZTWWGT","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q12072427","wikipedia":"en:Walkergate Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.580344,54.9760388]},"properties":{"light_rail":"yes","name":"Byker","naptan:AtcoCode":"940GZZTWBKR","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Byker Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5327361,54.9895984]},"properties":{"light_rail":"yes","name":"Wallsend","naptan:AtcoCode":"940GZZTWWND","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7963252","wikipedia":"en:Wallsend Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5159676,54.9922694]},"properties":{"name":"Hadrian Road","naptan:AtcoCode":"940GZZTWHRN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q5638057","wikipedia":"en:Hadrian Road Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4941598,54.9959066]},"properties":{"light_rail":"yes","name":"Howdon","naptan:AtcoCode":"940GZZTWHDN","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q5921466","wikipedia":"en:Howdon Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4746255,54.9995678]},"properties":{"light_rail":"yes","name":"Percy Main","naptan:AtcoCode":"940GZZTWPYM","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Percy Main Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4656759,55.001562]},"properties":{"name":"Meadow Well","naptan:AtcoCode":"940GZZTWMDW","network":"Tyne and Wear Metro","old_name":"Smith's Park","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q6803296","wikipedia":"en:Meadow Well Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5054224,55.0369588]},"properties":{"internet_access":"no","light_rail":"yes","name":"Shiremoor","naptan:AtcoCode":"940GZZTWSHM","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7498547","wikipedia":"en:Shiremoor Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5198326,55.0330969]},"properties":{"light_rail":"yes","name":"Northumberland Park","naptan:AtcoCode":"940GZZTWNDP","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7059817","wikipedia":"en:Northumberland Park Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5916006,55.0089239]},"properties":{"name":"Longbenton","naptan:AtcoCode":"940GZZTWLBT","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikipedia":"en:Longbenton Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5411852,55.0236937]},"properties":{"internet_access":"no","light_rail":"yes","name":"Palmersville","naptan:AtcoCode":"940GZZTWPVL","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7128339","wikipedia":"en:Palmersville Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6658823,55.0144242]},"properties":{"light_rail":"yes","name":"Kingston Park","naptan:AtcoCode":"940GZZTWKSP","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q6413575","wikipedia":"en:Kingston Park Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3616516,54.524557]},"properties":{"name":"Allens West","name:ur":"ایلنز ویسٹ","naptan:AtcoCode":"9100ALLENSW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ALW","wikidata":"Q2184547","wikipedia":"en:Allens West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0296647,51.4716513]},"properties":{"name":"Tilehurst","naptan:AtcoCode":"9100TILHRST","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"TLH","train":"yes","wikidata":"Q2285322","wikipedia":"en:Tilehurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0130109,51.4649887]},"properties":{"light_rail":"yes","name":"Lewisham DLR","naptan:AtcoCode":"940GZZDLLEW","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wheelchair:description":"DLR fully accessible","wikipedia":"en:Lewisham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1570253,51.0246094]},"properties":{"name":"Norton Fitzwarren","network":"West Somerset Railway","network:wikidata":"Q12072724","note":"not part of public service schedule","operator":"West Somerset Railway Plc","operator:wikidata":"Q20970722","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7060627","wikipedia":"en:Norton Fitzwarren railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1787546,51.5185075]},"properties":{"fare_zone":"1","line":"Circle;Hammersmith & City","name":"Paddington (Circle and Hammersmith & City lines)","naptan:AtcoCode":"940GZZLUPAH","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q214788","wikipedia":"en:London Paddington station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.11547,50.9981184]},"properties":{"internet_access":"no","name":"Beech Hurst Miniature Railway Station","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1000064,50.7729203]},"properties":{"name":"Seaford","naptan:AtcoCode":"9100SEAFORD","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"SEF","wikidata":"Q1877282","wikipedia":"en:Seaford railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7523839,53.7501367]},"properties":{"name":"Low Moor","naptan:AtcoCode":"9100LOWMOOR","network":"National Rail","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LMR","wikidata":"Q6692924","wikipedia":"en:Low Moor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8554087,53.3607333]},"properties":{"name":"Hunts Cross","naptan:AtcoCode":"9100HUNTSX","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"HNX","wikidata":"Q1867593","wikipedia":"en:Hunts Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6043738,51.1971446]},"properties":{"name":"Farncombe","naptan:AtcoCode":"9100FRNCMB","network":"National Rail","operator":"South West Trains","platforms":"2","postal_code":"GU7 3NF","public_transport":"station","railway":"station","ref:crs":"FNC","source":"NPE tracing","wikidata":"Q5435985","wikipedia":"en:Farncombe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6189563,51.1865224]},"properties":{"name":"Godalming","naptan:AtcoCode":"9100GDLMING","network":"National Rail","postal_code":"GU7 1EU","public_transport":"station","railway":"station","ref:crs":"GOD","source":"NPE","wheelchair":"yes","wikidata":"Q3053175","wikipedia":"en:Godalming railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4102826,51.4478377]},"properties":{"name":"Feltham","naptan:AtcoCode":"9100FELTHAM","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"FEL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q969784","wikipedia":"en:Feltham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3202187,51.4551535]},"properties":{"name":"St Margarets","naptan:AtcoCode":"9100STMGTS","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SMG","source":"NPE","wheelchair":"limited","wheelchair:description":"Step free access for trains towards Twickenham and Strawberry Hill. Steps required for trains towards Richmond. Access for Amyand Road for Platform 3 only.","wikidata":"Q1845639","wikipedia":"en:St Margarets railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0404348,53.4877265]},"properties":{"name":"Blundellsands & Crosby","naptan:AtcoCode":"9100BLNDLAC","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BLN","wheelchair":"yes","wikidata":"Q2342705","wikipedia":"en:Blundellsands & Crosby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6309736,53.5864278]},"properties":{"internet_access":"no","name":"Frodingham","network":"British Steel LTD","operator":"Appleby Frodingham Railway Preservation Society","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.322751,51.3975325]},"properties":{"name":"Newbury","naptan:AtcoCode":"9100NEWBURY","network":"National Rail","railway":"station","ref:crs":"NBY","source":"NPE","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q2206584","wikipedia":"en:Newbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3625418,51.3361004]},"properties":{"name":"Oxshott","naptan:AtcoCode":"9100OXSHOTT","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"OXS","source":"OS_OpenData_VectorMapDistrict","wikidata":"Q1924201","wikipedia":"en:Oxshott railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3484109,51.3610578]},"properties":{"name":"Claygate","naptan:AtcoCode":"9100CLYGATE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLG","source":"OS_OpenData_VectorMapDistrict","train":"yes","wikidata":"Q1937264","wikipedia":"en:Claygate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.611116,51.7052231]},"properties":{"fare_zone":"9","line":"Metropolitan","name":"Chesham","naptan:AtcoCode":"040GZZLUCSM","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q138914","wikipedia":"en:Chesham tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3130406,51.0733883]},"properties":{"addr:postcode":"TN5 6RZ","addr:street":"Station Road","name":"Wadhurst","naptan:AtcoCode":"9100WADHRST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WAD","website":"http://www.nationalrail.co.uk/stations/wad/details.html","wheelchair":"no","wikidata":"Q2235931","wikipedia":"en:Wadhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2943374,51.1040897]},"properties":{"name":"Frant","naptan:AtcoCode":"9100FRANT","network":"National Rail","railway":"station","ref:crs":"FRT","source":"NPE","wikidata":"Q1913083","wikipedia":"en:Frant railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0274276,51.5917798]},"properties":{"fare_zone":"4","line":"Central","name":"South Woodford","naptan:AtcoCode":"940GZZLUSWF","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 125m journey via street. Use the George Lane (West) entrance for westbound platform. Use the Station Passage (East) entrance for eastbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q2120068","wikipedia":"en:South Woodford tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4370447,51.5695047]},"properties":{"fare_zone":"6","internet_access":"wlan","line":"Central","name":"West Ruislip","naptan:AtcoCode":"9100WRUISLP","network":"National Rail;London Underground","network:subway":"London Underground","network:train":"National Rail","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"WRU","source":"NPE, and wikipedia description for which goes on which side","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q801602","wikipedia":"en:West Ruislip station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3286723,51.2539871]},"properties":{"addr:street":"Westhumble Street","name":"Box Hill & Westhumble","naptan:AtcoCode":"9100BOXHAWH","network":"National Rail","network:wikidata":"Q26334","postal_code":"RH5 6BT","public_transport":"station","railway":"station","ref:crs":"BXW","ref:stanox":"87686","train":"yes","wheelchair":"limited","wheelchair:description":"Unstaffed station. Step-free to southbound Platform 2. Footbridge only access to northbound Platform 1 towards London. One Dedicated Blue Badge space in free parking area.","wikidata":"Q4951526","wikipedia":"en:Box Hill & Westhumble railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3425203,51.4020159]},"properties":{"addr:city":"East Molesey","addr:postcode":"KT8 9AE","addr:street":"Hampton Court Way","baby_feeding":"no","internet_access":"wlan","name":"Hampton Court","naptan:AtcoCode":"9100HCRT","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HMC","website":"https://www.nationalrail.co.uk/stations/THD/details.html","wheelchair":"yes","wheelchair:description":"Step-free between platforms & to Hampton Court via east side of bridge. Nearest controlled crossing by station entrance NOT step-free. WC not checked today.","wikidata":"Q2313444","wikimedia_commons":"File:Hampton Court railway station 14.jpg","wikipedia":"en:Hampton Court railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9330953,51.9753255]},"properties":{"name":"Hailes Abbey Halt","operator":"Gloucestershire and Warwickshire Steam Railway","public_transport":"station","railway":"station","request_stop":"yes","usage":"tourism","website":"https://www.gwsr.com/planning_your_visit/finding_us/Hayles_Abbey_Halt.html","wikidata":"Q5686801"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0053134,53.538884]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6757482,50.7876895]},"properties":{"name":"Bognor Regis","naptan:AtcoCode":"9100BOGNORR","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BOG","source":"NPE tracing","wheelchair":"yes","wikidata":"Q2278205","wikipedia":"en:Bognor Regis railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1330833,53.3630039]},"properties":{"name":"Royden Park Minature Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2358629,51.2914245]},"properties":{"name":"Tadworth","naptan:AtcoCode":"9100TADWTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TAD","wheelchair":"yes","wikidata":"Q2516420","wikipedia":"en:Tadworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5398447,53.2261066]},"properties":{"addr:postcode":"LN5 7EW","addr:street":"St Marys Street","name":"Lincoln Central","naptan:AtcoCode":"9100LINCLNC","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"LCN","wikidata":"Q3427836","wikipedia":"en:Lincoln railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0997573,53.713858]},"properties":{"name":"Todmorden","naptan:AtcoCode":"9100TODMRDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TOD","source":"npe","train":"yes","wikidata":"Q2014508","wikipedia":"en:Todmorden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4790853,53.7463745]},"properties":{"name":"Blackburn","naptan:AtcoCode":"9100BLKB","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BBN","train":"yes","wikidata":"Q2726049","wikipedia":"en:Blackburn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2823158,53.7862655]},"properties":{"addr:city":"Burnley","addr:street":"Rossendale Road","internet_access":"no","name":"Rose Grove","naptan:AtcoCode":"9100ROSG","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"RSG","train":"yes","wikidata":"Q2696848","wikipedia":"en:Rose Grove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6870008,53.7243497]},"properties":{"name":"Lostock Hall","naptan:AtcoCode":"9100LSTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LOH","train":"yes","wheelchair":"yes","wikipedia":"en:Lostock Hall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5186399,53.7331819]},"properties":{"name":"Cherry Tree","naptan:AtcoCode":"9100CHTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CYT","source":"npe","train":"yes","wikidata":"Q2389820","wikipedia":"en:Cherry Tree railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5019404,53.735339]},"properties":{"name":"Mill Hill","naptan:AtcoCode":"9100MLHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MLH","source":"npe","train":"yes","wikidata":"Q654882","wikipedia":"en:Mill Hill railway station (Lancashire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1777231,53.5927444]},"properties":{"name":"Castleton","naptan:AtcoCode":"9100CSTL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CAS","source":"NPE","train":"yes","wikidata":"Q3341196","wikipedia":"en:Castleton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.070839,51.5156185]},"properties":{"fare_zone":"1","line":"District;Hammersmith & City","name":"Aldgate East","name:ru":"Альдгейт-ист","network":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the District line westbound and the Hammersmith & City line westbound (Access from platform to train by manual boarding ramp). You can change between the District line eastbound and the Hammersmith & City line eastbound.","wikidata":"Q1431064","wikipedia":"en:Aldgate East tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5462574,50.8101746]},"properties":{"name":"Littlehampton","naptan:AtcoCode":"9100LTLHMPT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LIT","train":"yes","wheelchair":"yes","wikidata":"Q2780143","wikipedia":"en:Littlehampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1228264,52.2502347]},"properties":{"name":"Dovebrook","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0980757,53.9597833]},"properties":{"public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7128813,54.9659633]},"properties":{"addr:city":"Blaydon-on-Tyne","addr:postcode":"NE21 4JB","addr:street":"Tyne Street","name":"Blaydon","naptan:AtcoCode":"9100BLAYDON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLO","source":"NPE;Bing","wheelchair":"yes","wikidata":"Q2155219","wikipedia":"en:Blaydon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8795296,53.1967494]},"properties":{"name":"Chester","name:cy":"Caer","name:en":"Chester","name:it":"Česteris","naptan:AtcoCode":"9100CHST","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"CTR","train":"yes","wheelchair":"yes","wikidata":"Q2478175","wikipedia":"en:Chester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9131016,53.2607853]},"properties":{"name":"Buxton","naptan:AtcoCode":"9100BUXTON","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BUX","wheelchair":"yes","wikidata":"Q2932479","wikipedia":"en:Buxton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0260314,53.9584308]},"properties":{"name":"Skipton","naptan:AtcoCode":"9100SKPT","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SKI","train":"yes","wheelchair":"yes","wikidata":"Q2477336","wikipedia":"en:Skipton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.627075,53.8253007]},"properties":{"name":"Kirkstall Forge","naptan:AtcoCode":"9100KRKSLFR","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"KLF","ref:tiploc":"KRKSLFR","train":"yes","wheelchair":"yes","wikidata":"Q6415822","wikipedia":"en:Kirkstall Forge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8212877,53.9247929]},"properties":{"name":"Ilkley","naptan:AtcoCode":"9100ILKLEY","network":"National Rail","operator":"Northern","railway":"station","ref:crs":"ILK","wikidata":"Q2295224","wikipedia":"en:Ilkley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7531842,53.7974386]},"properties":{"name":"Bradford Forster Square","naptan:AtcoCode":"9100BRADFS","network":"National Rail","operator":"Northern","platforms":"3","public_transport":"station","railway":"station","ref:crs":"BDQ","wheelchair":"yes","wikidata":"Q2604550","wikipedia":"en:Bradford Forster Square railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.181886,53.8549144]},"properties":{"name":"Colne","naptan:AtcoCode":"9100COLNE","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CNE","wheelchair":"yes","wikidata":"Q2800574","wikipedia":"en:Colne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3944323,53.8735624]},"properties":{"name":"Clitheroe","naptan:AtcoCode":"9100CLITHRO","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CLH","train":"yes","wheelchair":"yes","wikidata":"Q2195813","wikipedia":"en:Clitheroe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4118943,53.8244874]},"properties":{"name":"Whalley","naptan:AtcoCode":"9100WHALLEY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"WHE","train":"yes","wikidata":"Q3453912","wikipedia":"en:Whalley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2301402,53.4772197]},"properties":{"name":"Manchester Piccadilly","name:cy":"Piccadilly Manceinion","name:ur":"مانچسٹر پکاڈلی","naptan:AtcoCode":"9100MNCRPIC","network":"National Rail","operator":"Network Rail","platforms":"14","public_transport":"station","railway":"station","ref:crs":"MAN","smoking":"no","wheelchair":"yes","wikidata":"Q600367","wikipedia":"en:Manchester Piccadilly station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2422762,53.4737777]},"properties":{"alt_name:ur":"مانچسٹر اوکسفورڈ روڈ","alt_name_2:ur":"مانچسٹر اوکسفرڈ روڈ","name":"Manchester Oxford Road","name:ur":"مانچسٹر آکسفورڈ روڈ","naptan:AtcoCode":"9100MNCROXR","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"MCO","ref:tiploc":"MNCROXR","wheelchair":"yes","wikidata":"Q1859538","wikipedia":"en:Manchester Oxford Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.251063,53.4740961]},"properties":{"name":"Deansgate","name:ur":"ڈینز گیٹ","naptan:AtcoCode":"9100MNCRDGT","network":"National Rail","old_name":"Knott Mill Station","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"DGT","ref:tiploc":"MNCRDGT","train":"yes","wheelchair":"yes","wikidata":"Q1620954","wikipedia":"en:Deansgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2555159,53.4828774]},"properties":{"name":"Salford Central","name:ur":"سیلفورڈ سینٹرل","naptan:AtcoCode":"9100SLFDORD","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SFD","train":"yes","wikidata":"Q2194900","wikipedia":"en:Salford Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2424846,53.4879748]},"properties":{"name":"Manchester Victoria","name:ur":"مانچسٹر وکٹوریہ","naptan:AtcoCode":"9100MNCRVIC","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"MCV","ref:tiploc":"MNCRVIC","train":"yes","wikidata":"Q1859573","wikipedia":"en:Manchester Victoria station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2260261,54.1191205]},"properties":{"name":"Barrow-in-Furness","naptan:AtcoCode":"9100BAROW","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BIF","train":"yes","wikidata":"Q1814436","wikipedia":"en:Barrow-in-Furness railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.626934,53.6529842]},"properties":{"name":"Chorley","naptan:AtcoCode":"9100CHORLEY","network":"National Rail","operator":"Northern","railway":"station","ref:crs":"CRL","wheelchair":"yes","wikidata":"Q2315269","wikipedia":"en:Chorley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4088794,54.3556605]},"properties":{"name":"Ravenglass","naptan:AtcoCode":"9100RGLS","network":"National Rail","official_name":"Ravenglass for Eskdale","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"RAV","wikidata":"Q2401288","wikipedia":"en:Ravenglass railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5871793,54.5532204]},"properties":{"name":"Whitehaven","naptan:AtcoCode":"9100WHITHVN","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"WTH","train":"yes","wikidata":"Q2194627","wikipedia":"en:Whitehaven railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7494043,52.7118509]},"properties":{"name":"Shrewsbury","name:cy":"Yr Amwythig","naptan:AtcoCode":"9100SHRWBY","network":"National Rail","network:wikidata":"Q26334","old_name":"Shrewsbury General","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","railway:etcs":"2","ref:crs":"SHR","train":"yes","wheelchair":"yes","wikidata":"Q1911181","wikipedia":"en:Shrewsbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1697897,54.5280386]},"properties":{"name":"Nunthorpe","name:ur":"ننتھورپ","naptan:AtcoCode":"9100NUNTHRP","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"NNT","train":"yes","uic_ref":"7001667","wikidata":"Q2200991","wikipedia":"en:Nunthorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.201549,51.4750837]},"properties":{"fare_zone":"2","line":"District","name":"Parsons Green","name:ru":"Парсонс-грин","naptan:AtcoCode":"940GZZLUPSG","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1880-03-01","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1457814","wikipedia":"en:Parsons Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0774191,51.5113281]},"properties":{"name":"London Fenchurch Street","naptan:AtcoCode":"9100FENCHRS","network":"National Rail","operator":"c2c","platforms":"4","public_transport":"station","railway":"station","ref:crs":"FST","train":"yes","wheelchair":"limited","wheelchair:description":"The main entrance is the only entrance that has step free access. There is a lift to take you from the entrance to the station concourse and platform levels. Please note there is no step free access from the Coopers Road entrance to the station.","wikidata":"Q800753","wikipedia":"en:Fenchurch Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0218192,51.4191905]},"properties":{"name":"Amnerfield Miniature Railway","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1943493,51.4808834]},"properties":{"alt_name:ru":"Фулхэм-бродвей","fare_zone":"2","line":"District","name":"Fulham Broadway","name:ru":"Фулем-бродвей","naptan:AtcoCode":"940GZZLUFBY","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1473616","wikipedia":"en:Fulham Broadway tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.4199282,50.1855434]},"properties":{"name":"Hayle","naptan:AtcoCode":"9100HAYLE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HYL","source":"npe","train":"yes","wikidata":"Q2061860","wikipedia":"en:Hayle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5668186,53.1411575]},"properties":{"name":"Matlock Riverside","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q6787688","wikipedia":"en:Matlock Riverside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0166833,51.5311544]},"properties":{"fare_zone":"3","line":"District;Hammersmith & City","name":"Plaistow","naptan:AtcoCode":"940GZZLUPLW","network":"London Underground","operator":"London Underground","platforms":"3","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1326180","wikipedia":"en:Plaistow tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.024789,51.5268535]},"properties":{"fare_zone":"2","line":"District;Hammersmith & City","name":"Bow Road","name:ru":"Боу-роуд","naptan:AtcoCode":"940GZZLUBWR","network":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q895388","wikipedia":"en:Bow Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0467147,51.5217026]},"properties":{"fare_zone":"2","line":"District;Hammersmith & City","name":"Stepney Green","name:ru":"Степни-грин","naptan:AtcoCode":"940GZZLUSGN","network":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1891699","wikipedia":"en:Stepney Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1312548,51.6473302]},"properties":{"fare_zone":"5","line":"Piccadilly","name":"Oakwood","naptan:AtcoCode":"910GENFCOAK;940GZZLUOAK","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1857872","wikipedia":"en:Oakwood tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2059442,51.4907023]},"properties":{"fare_zone":"2","line":"District","name":"West Kensington","name:ru":"Вест-Кенсингтон","naptan:AtcoCode":"940GZZLUWKN","network":"London Underground","public_transport":"station","railway":"station","source":"GPX","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q944664","wikipedia":"en:West Kensington tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1951854,51.4869765]},"properties":{"fare_zone":"2","line":"District","name":"West Brompton","naptan:AtcoCode":"9100WBRMPTN","network":"London Underground;London Overground","public_transport":"station","railway":"station","ref:crs":"WBP","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"District line step-free eastbound only","wikidata":"Q801595","wikipedia":"en:West Brompton station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3254399,51.4953386]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Boston Manor","naptan:AtcoCode":"940GZZLUBOS","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q894569","wikipedia":"en:Boston Manor tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.452483,51.4713416]},"properties":{"fare_zone":"6","line":"Piccadilly","name":"Heathrow Terminals 2 & 3","naptan:AtcoCode":"9400ZZLUHRC","network":"London Underground","old_name":"Heathrow Terminals 1, 2 & 3","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https://en.wikipedia.org/wiki/List_of_London_railway_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q763293","wikipedia":"en:Heathrow Terminals 2 & 3 tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4877331,51.472515]},"properties":{"fare_zone":"6","line":"Piccadilly","name":"Heathrow Terminal 5","naptan:AtcoCode":"9100HTRBUS5","network":"London Underground","operator":"Heathrow Airport Holdings","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikipedia":"en:Heathrow Terminal 5 station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.160937,51.5015961]},"properties":{"fare_zone":"1","line":"Piccadilly","name":"Knightsbridge","name:ru":"Найтсбридж","naptan:AtcoCode":"940GZZLUKNB","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1757120","wikipedia":"en:Knightsbridge tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3858181,51.4735822]},"properties":{"fare_zone":"5","line":"Piccadilly","name":"Hounslow West","naptan:AtcoCode":"940GZZLUHWT","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Step-free access street to train","wikidata":"Q978377","wikipedia":"en:Hounslow West tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1380918,51.5340608]},"properties":{"fare_zone":"2","line":"Northern","name":"Mornington Crescent","naptan:AtcoCode":"940GZZLUMTC","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1890387","wikipedia":"en:Mornington Crescent tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3558944,51.4734727]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Hounslow East","naptan:AtcoCode":"940GZZLUHWE","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q1631346","wikipedia":"en:Hounslow East tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3662332,51.471307]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Hounslow Central","naptan:AtcoCode":"940GZZLUHWC","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1439481","wikipedia":"en:Hounslow Central tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1277858,51.6323183]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Southgate","naptan:AtcoCode":"940GZZLUSGT","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q286666","wikipedia":"en:Southgate tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1485149,51.651366]},"properties":{"fare_zone":"5","line":"Piccadilly","name":"Cockfosters","naptan:AtcoCode":"940GZZLUCKS","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q1105305","wikipedia":"en:Cockfosters tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2640125,51.6028082]},"properties":{"fare_zone":"4","line":"Northern","name":"Burnt Oak","naptan:AtcoCode":"940GZZLUBTK","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q913515","wikipedia":"en:Burnt Oak tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2087947,51.4682995]},"properties":{"fare_zone":"2","line":"District","name":"Putney Bridge","naptan:AtcoCode":"940GZZLUPYB","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikipedia":"en:Putney Bridge tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.312979,51.4996647]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"Northfields","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q764016","wikipedia":"en:Northfields tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5183558,51.6541757]},"properties":{"fare_zone":"7","line":"Metropolitan","name":"Chorleywood","naptan:AtcoCode":"9100CHRW","network":"National Rail;London Underground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"CLW","source":"GPS","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q800623","wikipedia":"en:Chorleywood station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1543249,51.5027264]},"properties":{"fare_zone":"1","layer":"-2","line":"Piccadilly","name":"Hyde Park Corner","name:ru":"Гайд-парк-корнер","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1279102","wikipedia":"en:Hyde Park Corner tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.175108,51.5118458]},"properties":{"fare_zone":"1","line":"Central","name":"Lancaster Gate","name:ru":"Ланкастер-гейт","naptan:AtcoCode":"940GZZLULGT","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1431057","wikipedia":"en:Lancaster Gate tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0899693,51.5754985]},"properties":{"fare_zone":"4","line":"Central","name":"Newbury Park","naptan:AtcoCode":"9100ILFENBP","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q744426","wikipedia":"en:Newbury Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4321576,51.6297793]},"properties":{"fare_zone":"6;7","line":"Metropolitan","name":"Moor Park","naptan:AtcoCode":"940GZZLUMPK","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1447922","wikipedia":"en:Moor Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4734045,51.6401841]},"properties":{"fare_zone":"7","line":"Metropolitan","name":"Rickmansworth","naptan:AtcoCode":"9100RCKMNSW","network":"National Rail;London Underground","note":"Chiltern Line and Metropolitan Line Station","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"RIC","source":"NPE","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"limited","wikidata":"Q801365","wikipedia":"en:Rickmansworth station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2881658,51.5097107]},"properties":{"fare_zone":"3","line":"District;Piccadilly","name":"Ealing Common","naptan:AtcoCode":"940GZZLUECM","network":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the District line westbound access from platform to train by manual boarding ramp and the Piccadilly line westbound.","wikidata":"Q1276908","wikipedia":"en:Ealing Common tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2787137,51.5843174]},"properties":{"fare_zone":"4","line":"Jubilee","name":"Kingsbury","naptan:AtcoCode":"940GZZLUKBY","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q1742147","wikipedia":"en:Kingsbury tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.286181,51.5941903]},"properties":{"fare_zone":"4","line":"Jubilee","name":"Queensbury","naptan:AtcoCode":"940GZZLUQBY","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1566247","wikipedia":"en:Queensbury tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3176997,51.578491]},"properties":{"addr:city":"Harrow","addr:housename":"Northwick Park Station","addr:postcode":"HA3 0AT","addr:street":"Northwick Avenue","fare_zone":"4","internet_access":"no","line":"Metropolitan","name":"Northwick Park","naptan:AtcoCode":"940GZZLUNKP","network":"London Underground","note:wheelchair":"No entry/exit","operator":"Transport for London","public_transport":"station","railway":"station","source":"survey","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the northbound platform and the southbound platform - use this change between trains towards West Harrow and Pinner.","wikidata":"Q1974743","wikipedia":"en:Northwick Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2958081,51.5722732]},"properties":{"fare_zone":"4","line":"Metropolitan","name":"Preston Road","naptan:AtcoCode":"940GZZLUPRD","network":"London Underground","note:wheelchair":"No entry/exit","operator":"Transport for London","public_transport":"station","railway":"station","source":"survey","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1974765","wikipedia":"en:Preston Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1806964,51.5472307]},"properties":{"fare_zone":"2","line":"Metropolitan;Jubilee","name":"Finchley Road","naptan:AtcoCode":"940GZZLUFYR","network":"London Underground","public_transport":"station","railway":"station","source":"OS","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"Jubilee line access from platform to train by manual boarding ramp. You can change between the Metropolitan line southbound access from platform to train by manual boarding ramp and the Jubilee line southbound access from platform to train by manual board","wikidata":"Q1300073","wikipedia":"en:Finchley Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3531364,51.5795991]},"properties":{"fare_zone":"5","line":"Metropolitan","name":"West Harrow","naptan:AtcoCode":"940GZZLUWHW","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1974740","wikipedia":"en:West Harrow tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3965092,51.5766614]},"properties":{"fare_zone":"5","line":"Metropolitan;Piccadilly","name":"Eastcote","naptan:AtcoCode":"940GZZLUEAE","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1278097","wikipedia":"en:Eastcote tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4423513,51.5615698]},"properties":{"fare_zone":"6","line":"Metropolitan;Piccadilly","name":"Ickenham","naptan:AtcoCode":"940GZZLUICK","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q729399","wikipedia":"en:Ickenham tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.380635,51.5926589]},"properties":{"fare_zone":"5","line":"Metropolitan","name":"Pinner","naptan:AtcoCode":"940GZZLUPNR","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1924802","wikipedia":"en:Pinner tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4084575,51.6001534]},"properties":{"fare_zone":"6","line":"Metropolitan","name":"Northwood Hills","naptan:AtcoCode":"940GZZLUNWH","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"NPE","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q2000556","wikipedia":"en:Northwood Hills tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4237072,51.6107965]},"properties":{"fare_zone":"6","line":"Metropolitan","name":"Northwood","naptan:AtcoCode":"940GZZLUNOW","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","source":"NPE","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q631448","wikipedia":"en:Northwood tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4410785,51.6475825]},"properties":{"fare_zone":"7","line":"Metropolitan","name":"Croxley","naptan:AtcoCode":"940GZZLUCXY","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q607324","wikipedia":"en:Croxley tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4183683,51.6570048]},"properties":{"fare_zone":"7","line":"Metropolitan","name":"Watford","naptan:AtcoCode":"940GZZLUWAF","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q19819","wikipedia":"en:Watford tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0086166,51.5688027]},"properties":{"fare_zone":"3;4","line":"Central","name":"Leytonstone","naptan:AtcoCode":"940GZZLULYS","network":"London Underground","operator":"London Underground","platforms":"3","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1822454","wikipedia":"en:Leytonstone tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3366561,51.5792702]},"properties":{"fare_zone":"5","line":"Metropolitan","name":"Harrow-on-the-Hill","naptan:AtcoCode":"9100HAROOTH","network":"National Rail;London Underground","network:subway":"London Underground","network:train":"National Rail","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"HOH","station":"subway","subway":"yes","toilets:wheelchair":"no","train":"yes","wheelchair":"yes","wikidata":"Q654577","wikipedia":"en:Harrow-on-the-Hill station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2799643,51.5027051]},"properties":{"fare_zone":"3","line":"District;Piccadilly","name":"Acton Town","naptan:AtcoCode":"940GZZLUACT","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q344481","wikipedia":"en:Acton Town tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1730439,51.4940494]},"properties":{"fare_zone":"1","line":"Piccadilly;District;Circle","name":"South Kensington","naptan:AtcoCode":"940GZZLUSKS","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Steps only from street level to platform level and subway to museums","wikidata":"Q976035","wikipedia":"en:South Kensington tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.610193,53.1758282]},"properties":{"name":"Derbyshire Dales Narrow Gauge Railway","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1702993,51.5204575]},"properties":{"fare_zone":"1","line":"Bakerloo","name":"Edgware Road (Bakerloo line)","name:ru":"Эджвер-роуд","naptan:AtcoCode":"940GZZLUERB","network":"London Underground","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1284426","wikipedia":"en:Edgware Road tube station (Bakerloo line)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1635046,51.5222363]},"properties":{"fare_zone":"1","line":"Bakerloo","name":"Marylebone","naptan:AtcoCode":"940GZZLUMYB","network":"London Underground","public_transport":"station","railway":"station","source":"Bing","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q649419","wikipedia":"en:Marylebone station#London Underground"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1222409,51.5072143]},"properties":{"fare_zone":"1","line":"District;Bakerloo;Northern;Circle","name":"Embankment","name:ru":"Эмбанкмент","naptan:AtcoCode":"940GZZLUEMB","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1334978","wikimedia_commons":"Category:Embankment_tube_station","wikipedia":"en:Embankment tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1961978,51.5089252]},"properties":{"fare_zone":"1;2","line":"District;Central;Circle","name":"Notting Hill Gate","name:da":"Notting Hill Gate Station","name:ru":"Ноттинг Хилл Гейт","naptan:AtcoCode":"940GZZLUNHG","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1803672","wikipedia":"en:Notting Hill Gate tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2078188,51.2488801]},"properties":{"name":"Dilton Marsh","naptan:AtcoCode":"9100DILTONM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DMH","request_stop":"yes","train":"yes","wikidata":"Q2303611","wikipedia":"en:Dilton Marsh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0783882,51.2822065]},"properties":{"name":"Caterham","naptan:AtcoCode":"9100CATERHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CAT","wikidata":"Q2581686","wikipedia":"en:Caterham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0045685,51.5280966]},"properties":{"fare_zone":"2;3","light_rail":"yes","line":"District;Hammersmith & City;Jubilee","name":"West Ham","naptan:AtcoCode":"9100WHAMHL","network":"National Rail;London Underground;Docklands Light Railway","operator":"London Underground","platforms":"8","public_transport":"station","railway":"station","ref:crs":"WEH","station":"light_rail;subway","subway":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q801601","wikipedia":"en:West Ham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0035472,51.541289]},"properties":{"fare_zone":"2;3","light_rail":"yes","line":"Central;Jubilee","name":"Stratford","naptan:AtcoCode":"9100STFD","network":"National Rail;London Underground;London Overground;Docklands Light Railway;Elizabeth Line","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"SRA","station":"light_rail;subway","subway":"yes","train":"yes","wheelchair":"yes","wikipedia":"en:Stratford station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.100844,51.324775699999999]},"properties":{"name":"Kenley","naptan:AtcoCode":"9100KNLY","network":"National Rail","postal_code":"CR8 5JA","public_transport":"station","railway":"station","ref:crs":"KLY","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wikidata":"Q2393108","wikipedia":"en:Kenley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1139278,51.3374869]},"properties":{"name":"Purley","naptan:AtcoCode":"9100PURLEY","network":"National Rail","postal_code":"CR8 2UD","public_transport":"station","railway":"station","ref:crs":"PUR","wheelchair":"yes","wikidata":"Q2180994","wikipedia":"en:Purley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0772314,51.3037508]},"properties":{"name":"Whyteleafe South","naptan:AtcoCode":"9100WHYTLFS","network":"National Rail","postal_code":"CR3 0BD","public_transport":"station","railway":"station","ref:crs":"WHS","wikidata":"Q2674703","wikipedia":"en:Whyteleafe South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0810163,51.3099209]},"properties":{"name":"Whyteleafe","naptan:AtcoCode":"9100WHYTELF","network":"National Rail","postal_code":"CR3 0AD","public_transport":"station","railway":"station","ref:crs":"WHY","wikidata":"Q2790454","wikipedia":"en:Whyteleafe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0778344,51.3085512]},"properties":{"name":"Upper Warlingham","naptan:AtcoCode":"9100UWRLNGH","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"CR3 0EP","public_transport":"station","railway":"station","ref:crs":"UWL","wheelchair":"no","wikidata":"Q2326673","wikipedia":"en:Upper Warlingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0516667,51.2896975]},"properties":{"name":"Woldingham","naptan:AtcoCode":"9100WLDNGHM","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"CR3 7LT","public_transport":"station","railway":"station","ref:crs":"WOH","wikidata":"Q2043333","wikimedia_commons":"File:Woldingham railway station (4VEP 3028) 02.JPG","wikipedia":"en:Woldingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2841108,50.1211053]},"properties":{"internet_access":"no","name":"Truthall Halt","network":"Helston Railway","operator":"Helston Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q28970313"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.296425,50.1321831]},"properties":{"name":"Prospidnick Halt","network":"Helston Railway","operator":"Helston Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2928074,50.1278773]},"properties":{"name":"Trevarno","network":"Helston Railway","operator":"Helston Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q58814845"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5410839,51.5078347]},"properties":{"name":"Langley","naptan:AtcoCode":"9100LANGLEY","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"LNY","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2790476","wikipedia":"en:Langley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0149135,51.4915188]},"properties":{"light_rail":"yes","name":"Mudchute","naptan:AtcoCode":"940GZZDLMUD","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"3","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q526836","wikipedia":"en:Mudchute DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2511292,53.7823824]},"properties":{"name":"South Milford","naptan:AtcoCode":"9100SMILFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOM","wikidata":"Q2408723","wikipedia":"en:South Milford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3336005,53.3295673]},"properties":{"name":"Mobberley","naptan:AtcoCode":"9100MOBERLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MOB","source":"NPE","wikipedia":"en:Mobberley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7341997,53.3786146]},"properties":{"name":"Widnes","naptan:AtcoCode":"9100WIDNES","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WID","wikidata":"Q1499079","wikipedia":"en:Widnes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1528351,53.6105726]},"properties":{"name":"Rochdale","naptan:AtcoCode":"9100RCHDALE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RCD","source":"npe","train":"yes","wheelchair":"yes","wikidata":"Q6746193","wikipedia":"en:Rochdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1049663,51.503925]},"properties":{"fare_zone":"1","indoor":"yes","line":"Jubilee","name":"Southwark","name:ru":"Саутуарк","naptan:AtcoCode":"940GZZLUSWK","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q38909","wikimedia_commons":"Category:Southwark_tube_station","wikipedia":"en:Southwark tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2749555,51.6136623]},"properties":{"fare_zone":"5","line":"Northern","name":"Edgware","name:ja":"エッジウェア","naptan:AtcoCode":"940GZZLUEGW","network":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q727723","wikipedia":"en:Edgware tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1630435,53.4054501]},"properties":{"name":"Stockport","name:ur":"اسٹاک پورٹ","naptan:AtcoCode":"9100STKP","network":"National Rail","operator":"Virgin Trains","public_transport":"station","railway":"station","ref:crs":"SPT","train":"yes","wheelchair":"yes","wikipedia":"en:Stockport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4886398,53.6786558]},"properties":{"addr:city":"Wakefield","addr:postcode":"WF1 4EL","addr:street":"Monk Street","name":"Wakefield Kirkgate","naptan:AtcoCode":"9100WKFLDKG","network":"National Rail","operator":"National Rail","public_transport":"station","railway":"station","ref:crs":"WKK","wikidata":"Q2279070","wikipedia":"en:Wakefield Kirkgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1388654,51.5501727]},"properties":{"fare_zone":"2","line":"Northern","name":"Kentish Town","naptan:AtcoCode":"9100KNTSHTN","network":"National Rail;London Underground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"KTN","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q636614","wikipedia":"en:Kentish Town station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5432771,52.7409495]},"properties":{"name":"Discovery Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1135802,53.4745495]},"properties":{"name":"Guide Bridge","naptan:AtcoCode":"9100GIDB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GUI","source":"npe","train":"yes","wheelchair":"yes","wikidata":"Q1854597","wikipedia":"en:Guide Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.067531,53.4567001]},"properties":{"name":"Newton for Hyde","naptan:AtcoCode":"9100NWTH","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"NWN","wheelchair":"yes","wikidata":"Q2138827","wikipedia":"en:Newton for Hyde railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6805365,53.8046713]},"properties":{"departures_board":"realtime","name":"New Pudsey","naptan:AtcoCode":"9100NPUD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NPD","timetable":"real_time","train":"yes","wheelchair":"yes","wikidata":"Q2197812","wikipedia":"en:New Pudsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3034033,53.6917363]},"properties":{"addr:city":"Pontefract","addr:postcode":"WF8 1QR","addr:street":"Station Lane","internet_access":"no","name":"Pontefract Baghill","naptan:AtcoCode":"9100PTFTBHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PFR","source":"NPE","train":"yes","wikidata":"Q4301181","wikipedia":"en:Pontefract Baghill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8720529,52.043006]},"properties":{"name":"Broadway","operator":"Gloucestershire Warwickshire Railway","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4972554"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2085253,54.5519996]},"properties":{"alt_name":"James Cook University Hospital","alt_name:ur":"جیمز کوک","name":"James Cook","name:ur":"جیمز کک","naptan:AtcoCode":"9100JAMCOK","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"JCH","source":"wikipedia","wikidata":"Q6131684","wikipedia":"en:James Cook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3840418,54.3711279]},"properties":{"name":"Miteside Halt","naptan:AtcoCode":"940GZZREMTS","operator":"Ravenglass & Eskdale Railway","public_transport":"station","railway":"station","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wheelchair":"no","wikidata":"Q6881552","wikipedia":"en:Miteside Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.494764,53.5727921]},"properties":{"name":"Lostock","naptan:AtcoCode":"9100LOSTCKP","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"LOT","train":"yes","wikidata":"Q6684520","wikipedia":"en:Lostock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6028597,53.6130719]},"properties":{"name":"Adlington","naptan:AtcoCode":"9100ADNL","network":"National Rail","railway":"station","ref:crs":"ADL","ref:tiploc":"ADNL","wikipedia":"en:Adlington railway station (Lancashire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9554994,54.2777237]},"properties":{"name":"Lakeside","naptan:AtcoCode":"940GZZLHLKS","railway":"station","usage":"tourism","wikidata":"Q6479174","wikipedia":"en:Lakeside railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.767351,54.3555182]},"properties":{"addr:city":"Burneside","addr:postcode":"LA9 6RD","addr:street":"Station Road","alt_name":"Burneside (Cumbria)","name":"Burneside","naptan:AtcoCode":"9100BNSD","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BUD","train":"yes","wikidata":"Q2520439","wikipedia":"en:Burneside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7296279,53.3459832]},"properties":{"name":"Hope (Derbyshire)","naptan:AtcoCode":"9100HOPD","network":"National Rail","railway":"station","ref:crs":"HOP","wikidata":"Q2611272","wikipedia":"en:Hope railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6624367,50.5556975]},"properties":{"name":"Goose Glen Halt","network":"Bickington Steam Railway","operator":"Bickington Steam Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9252051,54.1728754]},"properties":{"name":"Kents Bank","naptan:AtcoCode":"9100KTBK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KBK","wikidata":"Q2552522","wikipedia":"en:Kents Bank railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2459129,51.6174907]},"properties":{"name":"Burlescombe","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0979329,54.1917155]},"properties":{"name":"Ulverston","naptan:AtcoCode":"9100ULVRSTN","network":"National Rail","platforms":"3","public_transport":"station","railway":"station","ref:crs":"ULV","source":"Bing","wikidata":"Q2055056","wikipedia":"en:Ulverston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1833083,51.5229834]},"properties":{"fare_zone":"2","line":"Bakerloo","name":"Warwick Avenue","name:ru":"Уорвик-авеню","naptan:AtcoCode":"940GZZLUWKA","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1486729","wikipedia":"en:Warwick Avenue tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7038502,54.9321536]},"properties":{"addr:city":"Brampton","addr:postcode":"CA8 1HW","alt_name":"Brampton (Cumbria)","name":"Brampton","naptan:AtcoCode":"9100BRMPTNC","network":"National Rail","old_name":"Brampton Junction","operator":"Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BMP","wikidata":"Q2631617","wikipedia":"en:Brampton railway station (Cumbria)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1305125,51.5159715]},"properties":{"fare_zone":"1","line":"Northern;Central","name":"Tottenham Court Road","naptan:AtcoCode":"940GZZLUTCR","network":"London Underground","public_transport":"station","railway":"station","ref:tiploc":"TOTCTRD","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1431094","wikipedia":"en:Tottenham Court Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0209849,51.5051073]},"properties":{"light_rail":"yes","name":"Canary Wharf (DLR)","naptan:AtcoCode":"940GZZDLCAN","network":"Docklands Light Railway","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1032811","wikipedia":"en:Canary Wharf DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0154152,51.4781086]},"properties":{"light_rail":"yes","name":"Greenwich","naptan:AtcoCode":"9100GNWH","network":"National Rail;Docklands Light Railway","platforms":"4","public_transport":"station","public_transport:version":"2","railway":"station","ref:crs":"GNW","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","station":"light_rail","train":"yes","wheelchair":"yes","wikidata":"Q800840","wikipedia":"en:Greenwich station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0204833,51.5067417]},"properties":{"layer":"2","light_rail":"yes","name":"West India Quay","naptan:AtcoCode":"940GZZDLWIQ","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"3","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1971670","wikipedia":"en:West India Quay DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0130077,51.51056]},"properties":{"light_rail":"yes","name":"All Saints","naptan:AtcoCode":"940GZZDLALL","network":"Docklands Light Railway","public_transport":"station","public_transport:version":"2","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:All Saints DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0036092,51.5325414]},"properties":{"light_rail":"yes","name":"Abbey Road","naptan:AtcoCode":"940GZZDLABR","network":"Docklands Light Railway","public_transport":"station","public_transport:version":"2","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:Abbey Road DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0001288,51.5376469]},"properties":{"light_rail":"yes","name":"Stratford High Street","naptan:AtcoCode":"940GZZDLSHS","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:Stratford High Street DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0206424,51.5274411]},"properties":{"light_rail":"yes","name":"Bow Church","naptan:AtcoCode":"940GZZDLBOW","network":"Docklands Light Railway","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:Bow Church DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0394662,51.5123504]},"properties":{"light_rail":"yes","name":"Limehouse DLR","naptan:AtcoCode":"9100LIMHSE","network":"Docklands Light Railway","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q801102","wikipedia":"en:Limehouse station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0390456,51.5128705]},"properties":{"name":"Limehouse","naptan:AtcoCode":"9100LIMHSE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LHS","train":"yes","wheelchair":"yes","wikidata":"Q801102","wikipedia":"en:Limehouse station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1249047,51.607376]},"properties":{"fare_zone":"3;4","line":"Piccadilly","name":"Bounds Green","naptan:AtcoCode":"940GZZLUBDS","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q895162","wikipedia":"en:Bounds Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2250607,51.494109]},"properties":{"fare_zone":"2","line":"Circle;Hammersmith & City","name":"Hammersmith (Circle and Hammersmith & City lines)","name:ru":"Хаммерсмит","naptan:AtcoCode":"940GZZLUHSC","network":"London Underground","note":"check position","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikipedia":"en:Hammersmith tube station (Circle and Hammersmith & City lines)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0987321,51.5154195]},"properties":{"fare_zone":"1","line":"Central","name":"St. Paul's","name:ru":"Сент-Полс","naptan:AtcoCode":"940GZZLUSPU","network":"London Underground","old_name":"Post Office","public_transport":"station","railway":"station","source:name":"local knowledge","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1431081","wikipedia":"en:St. Paul's tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1308295,51.3457689]},"properties":{"name":"Knockholt","naptan:AtcoCode":"9100KNCKHLT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KCK","wikidata":"Q1908399","wikipedia":"en:Knockholt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1784251,51.5565973]},"properties":{"fare_zone":"2;3","layer":"-3","level":"-4","line":"Northern","name":"Hampstead","naptan:AtcoCode":"940GZZLUHTD","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1573996","wikipedia":"en:Hampstead tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1646146,51.5503088]},"properties":{"fare_zone":"2","line":"Northern","name":"Belsize Park","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q604060","wikipedia":"en:Belsize Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1130095,51.5528674]},"properties":{"fare_zone":"2","line":"Piccadilly","name":"Holloway Road","name:ru":"Холлоуэй-роуд","naptan:AtcoCode":"940GZZLUHWY","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","website":"https://tfl.gov.uk/gettingaround/stations/1000114.aspx","wheelchair":"no","wikidata":"Q1624885","wikipedia":"en:Holloway Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.009359,51.5457077]},"properties":{"light_rail":"yes","name":"Stratford International DLR","naptan:AtcoCode":"940GZZDLSIT","network":"Docklands Light Railway","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:Stratford International station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.174982,51.543722]},"properties":{"fare_zone":"2","line":"Jubilee","name":"Swiss Cottage","name:ru":"Свисс-коттедж","naptan:AtcoCode":"940GZZLUSWC","network":"London Underground","note":"FIXME witha proper tube enterance","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q962261","wikipedia":"en:Swiss Cottage tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2839348,51.5264341]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"Park Royal","naptan:AtcoCode":"940GZZLUPKR","network":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1663773","wikipedia":"en:Park Royal tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.781845,50.8318805]},"properties":{"name":"Chichester","naptan:AtcoCode":"9100CHCHSTR","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"CCH","train":"yes","wheelchair":"yes","wikidata":"Q2187759","wikipedia":"en:Chichester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2237557,51.5101068]},"properties":{"fare_zone":"2","line":"Hammersmith & City;Circle","name":"Wood Lane","name:ru":"Вуд-лейн","naptan:AtcoCode":"940GZZLUWLA","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikipedia":"en:Wood Lane tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1027442,51.5901482]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"Turnpike Lane","name:ru":"Тернпайк-лейн","naptan:AtcoCode":"940GZZLUTPN","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1757107","wikipedia":"en:Turnpike Lane tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6517687,55.3072171]},"properties":{"name":"Acklington","naptan:AtcoCode":"9100ACKLNGT","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"ACK","source":"NPE","wikidata":"Q3517520","wikipedia":"en:Acklington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5353535,52.987708]},"properties":{"name":"Ancaster","naptan:AtcoCode":"9100ANCASTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ANC","source":"NPE","wikidata":"Q2861300","wikipedia":"en:Ancaster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4629888,51.732365]},"properties":{"name":"Apsley","naptan:AtcoCode":"9100APSLEY","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"APS","wikidata":"Q19950","wikipedia":"en:Apsley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1087299,51.9990255]},"properties":{"name":"Ashchurch","naptan:AtcoCode":"9100ASHCHRC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ASC","source":"NPE","wikipedia":"en:Ashchurch for Tewkesbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1761376,51.6686291]},"properties":{"name":"Hadley Wood","naptan:AtcoCode":"9100HADLYWD","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"HDW","ref:tiploc":"HADLYWD","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to/from platform 4 only (Northbound) via a moderate slope. Customers travelling towards London who require step-free access may use your ticket to travel north to Potters Bar station before catching a train towards London.","wikidata":"Q5637997","wikipedia":"en:Hadley Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3261163,53.7887921]},"properties":{"name":"Micklefield","naptan:AtcoCode":"9100MCKLFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MIK","source":"NPE","wikidata":"Q3169687","wikipedia":"en:Micklefield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2105454,51.736419]},"properties":{"name":"Welham Green","naptan:AtcoCode":"9100WELHAMG","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"WMG","ref:tiploc":"WELHAMG","wikidata":"Q2509071","wikipedia":"en:Welham Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3732622,54.2286468]},"properties":{"name":"Thirsk","naptan:AtcoCode":"9100THIRSK","network":"National Rail","operator":"TransPennine Express","public_transport":"station","railway":"station","ref:crs":"THI","source":"landsat and local knowledge","wikidata":"Q2424788","wikipedia":"en:Thirsk railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8824136,51.5111653]},"properties":{"name":"Shiplake","naptan:AtcoCode":"9100SHPLAKE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SHI","train":"yes","wheelchair":"yes","wikidata":"Q2313479","wikipedia":"en:Shiplake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8631386,51.47539]},"properties":{"name":"Twyford","naptan:AtcoCode":"9100TWYFORD","network":"National Rail;Elizabeth Line","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"TWY","source":"local_knowledge","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q512845","wikipedia":"en:Twyford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1586983,51.5704082]},"properties":{"name":"Cholsey","naptan:AtcoCode":"9100CHOLSEY","network":"National Rail;Cholsey & Wallingford Railway","operator":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHO","usage":"preserved_railway","wikidata":"Q4693813","wikipedia":"en:Cholsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.154872,51.4073954]},"properties":{"name":"Mitcham Eastfields","naptan:AtcoCode":"9100ESTFLDS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"MTC","wheelchair":"yes","wikidata":"Q6881038","wikipedia":"en:Mitcham Eastfields railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5064919,54.8653223]},"properties":{"name":"Slaggyford","naptan:AtcoCode":"940GZZTYSGY","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1947552,51.4027615]},"properties":{"fare_zone":"4","line":"Northern","name":"Morden","naptan:AtcoCode":"940GZZLUMDN","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q1947443","wikipedia":"en:Morden tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1992399,51.395678]},"properties":{"name":"Morden South","naptan:AtcoCode":"9100MORDENS","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"MDS","source":"wikipedia,local knowledge","train":"yes","wheelchair":"no","wikidata":"Q3921420","wikipedia":"en:Morden South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0089218,51.4657989]},"properties":{"name":"Blackheath","naptan:AtcoCode":"9100BLKHTH","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BKH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access to platform 1 for services towards London via lift. Step free access to platform 2 for services away from London via ramp from side entrance. Step free interchange via front of station. Step access to both platforms via booking hall.","wikidata":"Q4923002","wikipedia":"en:Blackheath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0266353,51.4789824]},"properties":{"name":"Deptford","naptan:AtcoCode":"9100DEPTFD","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"DEP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wikidata":"Q2170868","wikipedia":"en:Deptford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.008298699999999999,51.5139887]},"properties":{"fare_zone":"2;3","light_rail":"yes","line":"Jubilee","name":"Canning Town","naptan:AtcoCode":"940GZZDLCGT","network":"London Underground;Docklands Light Railway","platforms":"6","public_transport":"station","railway":"station","source":"yahoo + gpx + walk","station":"light_rail;subway","subway":"yes","wheelchair":"yes","wikidata":"Q1033431","wikipedia":"en:Canning Town station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3004067,51.5149803]},"properties":{"addr:city":"London","addr:postcode":"W5 2NU","addr:street":"The Broadway","fare_zone":"3","line":"Central;District","name":"Ealing Broadway","naptan:AtcoCode":"9100EALINGB","network":"National Rail;London Underground;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"EAL","source":"Yahoo","station":"subway","subway":"yes","train":"yes","wheelchair":"limited","wheelchair:description":"National Rail access from platform to train by manual boarding ramp.","wikidata":"Q800705","wikipedia":"en:Ealing Broadway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1242529,51.5230529]},"properties":{"fare_zone":"1","line":"Piccadilly","name":"Russell Square","naptan:AtcoCode":"940GZZLURSQ","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1377634","wikipedia":"en:Russell Square tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1183585,51.548482]},"properties":{"fare_zone":"2","line":"Piccadilly","name":"Caledonian Road","naptan:AtcoCode":"940GZZLUCAR","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free since 1906.","wikidata":"Q1026585","wikipedia":"en:Caledonian Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1791837,51.6307163]},"properties":{"addr:city":"London","addr:postcode":"N20 9QP","addr:street":"Totteridge Lane","addr:suburb":"Whetstone","fare_zone":"4","line":"Northern","name":"Totteridge & Whetstone","naptan:AtcoCode":"940GZZLUTAW","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q2028165","wikipedia":"en:Totteridge & Whetstone tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1534811,51.5441141]},"properties":{"fare_zone":"2","line":"Northern","name":"Chalk Farm","naptan:AtcoCode":"940GZZLUCFM","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"Bing","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q599135","wikipedia":"en:Chalk Farm tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8857875,52.7610228]},"properties":{"name":"Melton Mowbray","naptan:AtcoCode":"9100MLTNSDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MMO","wikidata":"Q3296233","wikimedia_commons":"Category:Melton Mowbray railway station","wikipedia":"en:Melton Mowbray railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2002363,53.2799663]},"properties":{"name":"Whitwell","naptan:AtcoCode":"9100WHWLL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WWL","source":"NPE","train":"yes","wikidata":"Q1945536","wikipedia":"en:Whitwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6521354,53.3259212]},"properties":{"name":"Hathersage","naptan:AtcoCode":"9100HATHRSG","network":"National Rail","railway":"station","ref:crs":"HSG","wheelchair":"yes","wikidata":"Q2375578","wikipedia":"en:Hathersage railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.137032,51.0555957]},"properties":{"addr:city":"Haywards Heath","addr:postcode":"RH17 6JQ","addr:street":"London Road","addr:village":"Balcombe","name":"Balcombe","naptan:AtcoCode":"9100BALCOMB","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BAB","source":"NPE","source:addr:postcode":"code-point_open","wheelchair":"limited","wikidata":"Q2864622","wikipedia":"en:Balcombe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1410118,51.5151808]},"properties":{"fare_zone":"1","line":"Central;Bakerloo;Victoria","name":"Oxford Circus","name:da":"Oxford Circus Station","name:ru":"Оксфорд-Серкус","naptan:AtcoCode":"940GZZLUOXC","network":"London Underground","operator":"Transport for London","platforms":"6","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"Cross-platform interchange between Bakerloo and Victoria lines in same direction only. No entry or exit.","wikidata":"Q678791","wikipedia":"en:Oxford Circus tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.943542,51.0909357]},"properties":{"internet_access":"no","name":"Westonzoyland","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1067584,55.6391023]},"properties":{"name":"Heatherslaw Railway Station","railway":"station","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4540783,50.8238061]},"properties":{"name":"North Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8770041,51.2998497]},"properties":{"description":"Faversham Miniature Railway","name":"Brogdale Central Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0947934,54.9735335]},"properties":{"name":"Hexham","naptan:AtcoCode":"9100HEXHAM","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HEX","train":"yes","wikidata":"Q2462338","wikipedia":"en:Hexham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0043201,51.500574]},"properties":{"fare_zone":"2;3","line":"Jubilee","name":"North Greenwich","naptan:AtcoCode":"940GZZLUNGW","network":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1757132","wikipedia":"en:North Greenwich tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0498405,51.4979299]},"properties":{"fare_zone":"2","line":"Jubilee","name":"Canada Water","naptan:AtcoCode":"9100CNDAW","network":"London Underground;London Overground","platforms":"station","public_transport":"station","public_transport:version":"2","railway":"station","ref:crs":"ZCW","station":"subway","subway":"yes","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Overground platforms Step-free to train. Jubilee: Step-free access street to train.","wikidata":"Q800610","wikipedia":"en:Canada Water station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9212569,53.5166544]},"properties":{"name":"Maghull North","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"MNS","train":"yes","wikidata":"Q6730453","wikipedia":"en:Maghull North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0890625,51.5182516]},"properties":{"fare_zone":"1","line":"Metropolitan;Northern;Circle;Hammersmith & City","name":"Moorgate","name:da":"Moorgate Station","name:ru":"Мургейт","naptan:AtcoCode":"9100MRGT","network":"National Rail;London Underground","network:subway":"London Underground","network:train":"National Rail","operator":"London Underground","public_transport":"station","public_transport:version":"2","railway":"station","ref:crs":"MOG","station":"subway","subway":"yes","train":"yes","wheelchair":"limited","wheelchair:description":"Circle, Hammersmith & City and Metropolitan lines only.","wikidata":"Q801210","wikipedia":"en:Moorgate station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0860534,52.2944171]},"properties":{"name":"Long Buckby","naptan:AtcoCode":"9100LNGBKBY","network":"National Rail","operator":"London Northwestern / Southern","public_transport":"station","railway":"station","ref:crs":"LBK","train":"yes","wikidata":"Q2213582","wikipedia":"en:Long Buckby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1705184,51.4644589]},"properties":{"name":"Clapham Junction","naptan:AtcoCode":"9100CLPHMJC","network":"National Rail;London Overground","network:train":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"CLJ","wheelchair":"yes","wheelchair:description":"London Overground access from platform to train by manual boarding ramp.","wikidata":"Q719530","wikipedia":"en:Clapham Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0937301,53.9577037]},"properties":{"addr:city":"York","addr:housename":"York Railway Station","addr:postcode":"YO24 1AB","addr:street":"Station Road","internet_access":"wlan","internet_access:fee":"no","listed_status":"Grade II*","name":"York","naptan:AtcoCode":"9100YORK","network":"National Rail","operator":"Virgin Trains East Coast","passenger":"yes","platforms":"11","public_transport":"station","railway":"station","ref:crs":"YRK","source":"Bing","wheelchair":"yes","wikidata":"Q2269429","wikipedia":"en:York railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.77289,51.1822944]},"properties":{"name":"Reeds Road","operator":"OKLR","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7746116,51.1836582]},"properties":{"name":"Old Kiln Halt","operator":"OKLR","railway":"station","usage":"tourism","wheelchair":"no","wikidata":"Q12064739"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7739411,51.1843885]},"properties":{"name":"Oatlands","note":"Repositioned beside entrance to platform","operator":"OKLR","public_transport":"station","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1634083,51.52427]},"properties":{"addr:city":"London","addr:postcode":"NW1 6JJ","alt_name":"Marylebone","name":"London Marylebone","name:da":"Marylebone Station","naptan:AtcoCode":"9100MARYLBN","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"MYB","source":"Bing","wheelchair":"yes","wikipedia":"en:Marylebone station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8085573,51.7523306]},"properties":{"name":"Little Kimble","naptan:AtcoCode":"9100LTLKMBL","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"LTK","wikidata":"Q2116125","wikipedia":"en:Little Kimble railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2419808,51.6118363]},"properties":{"name":"Main Line Platform","naptan:AtcoCode":"910GDIDCOTP","operator":"Didcot Railway Centre","public_transport":"station","railway":"station","railway:preserved":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2458686,51.6143946]},"properties":{"name":"Didcot Halt","operator":"Didcot Railway Centre","public_transport":"station","railway":"station","service":"preserved","usage":"tourism","wheelchair":"limited"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2384792,52.3843587]},"properties":{"name":"Kidderminster","naptan:AtcoCode":"9100KDRMNST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KID","wheelchair":"limited","wikipedia":"en:Kidderminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4621381,53.3783713]},"properties":{"listed_status":"Grade II","name":"Sheffield","naptan:AtcoCode":"9100SHEFFLD","network":"National Rail","operator":"East Midlands Railway","operator:wikidata":"Q65090907","public_transport":"station","railway":"station","railway:ref:DB":"XKSH","ref":"SHF","ref:crs":"SHF","train":"yes","wheelchair":"yes","wikidata":"Q1862179","wikipedia":"en:Sheffield station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0712666,51.4176595]},"properties":{"alt_name:ru":"Хрустальный дворец","name":"Crystal Palace","name:en":"Crystal Palace","name:fr":"Gare de Crystal Palace","name:ru":"Кристал-Пэлас","naptan:AtcoCode":"9100CRYSTLP","network":"National Rail;London Overground","old_name":"Crystal Palace (Low Level)","platforms":"6","public_transport":"station","railway":"station","ref:crs":"CYP","source:ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","toilets":"yes","toilets:access":"customers","wheelchair":"limited","wheelchair:description":"London Overground access from platform to train by manual boarding ramp.","wikidata":"Q676281","wikipedia":"en:Crystal Palace railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.335201,53.1783215]},"properties":{"name":"Walls Lane","operator":"Lincolnshire Coast Light Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5539294,54.5357302]},"properties":{"name":"North Road","naptan:AtcoCode":"9100NTRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NRD","source":"OS_OpenData_StreetView","train":"yes","wikidata":"Q2432748","wikipedia":"en:North Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3838753,51.2888353]},"properties":{"name":"Bookham","naptan:AtcoCode":"9100BOOKHAM","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BKA","source":"Landsat","wheelchair":"limited","wikidata":"Q2833951","wikipedia":"en:Bookham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9614163,51.2798793]},"properties":{"name":"Hook","naptan:AtcoCode":"9100HOOK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HOK","wikidata":"Q2717068","wikipedia":"en:Hook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9070163,51.2847339]},"properties":{"name":"Winchfield","naptan:AtcoCode":"9100WNCFILD","network":"National Rail","operator":"South West Trains","railway":"station","ref:crs":"WNF","wikidata":"Q2206274","wikipedia":"en:Winchfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8313789,51.2906158]},"properties":{"name":"Fleet","naptan:AtcoCode":"9100FLEET","network":"National Rail","operator":"South West Trains","railway":"station","ref:crs":"FLE","source":"NPE","wheelchair":"yes","wikidata":"Q2626406","wikipedia":"en:Fleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6359925,51.3035819]},"properties":{"name":"Brookwood","naptan:AtcoCode":"9100BRKWOOD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BKO","wheelchair":"limited","wikidata":"Q2184630","wikipedia":"en:Brookwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3895797,51.3769063]},"properties":{"name":"Hersham","naptan:AtcoCode":"9100HERSHAM","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HER","wheelchair":"no","wikidata":"Q13528629","wikipedia":"en:Hersham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.23054,51.408966]},"properties":{"name":"Raynes Park","naptan:AtcoCode":"9100RAYNSPK","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"RAY","ref:stanox":"87271","wheelchair":"limited","wheelchair:description":"This station has step-free access to Platforms 1 and 2 (for trains towards London Waterloo) via long and steep ramps at up to 1:10 gradient. There is no step-free access to Platforms 3 and 4 (for trains towards Chessington South/ Kingston/ Surbiton).","wikidata":"Q2804062","wikipedia":"en:Raynes Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.244985,51.3814192]},"properties":{"addr:city":"Worcester Park","name":"Worcester Park","naptan:AtcoCode":"9100WRCSTRP","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WCP","ref:stanox":"87302","source":"NPE","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q2234958","wikipedia":"en:Worcester Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2479641,51.3638988]},"properties":{"addr:city":"Epsom and Ewell","addr:postcode":"KT17 2HU","addr:street":"Station Approach","name":"Stoneleigh","naptan:AtcoCode":"9100STLEIGH","network":"National Rail","operator":"Southern Western Railway","postal_code":"KT17 2JA","public_transport":"station","railway":"station","ref:crs":"SNL","ref:stanox":"87303","train":"yes","wheelchair":"no","wikidata":"Q4596714","wikipedia":"en:Stoneleigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3330413,51.2991137]},"properties":{"addr:city":"Leatherhead","name":"Leatherhead","naptan:AtcoCode":"9100LETHRHD","network":"National Rail","operator":"Southern","postal_code":"KT22 7SQ","public_transport":"station","railway":"station","ref:crs":"LHD","ref:stanox":"87685","toilets:wheelchair":"yes","wheelchair":"limited","wheelchair:description":"Ramp to Booking Office entrance west side, for London, manual doors. Accessible toilet (key). Long roadside ramps to east side platform. Hearing Loop.","wikidata":"Q2309556","wikipedia":"en:Leatherhead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4352969,51.2795154]},"properties":{"name":"Horsley","naptan:AtcoCode":"9100HRSLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HSY","source":"Landsat","wikidata":"Q2069708","wikipedia":"en:Horsley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5028629,51.2640346]},"properties":{"name":"Clandon","naptan:AtcoCode":"9100CLANDON","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CLA","source:name":"OS_OpenData_VectorMapDistrict","wikidata":"Q2930928","wikipedia":"en:Clandon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.565161,51.2407385]},"properties":{"name":"London Road (Guildford)","naptan:AtcoCode":"9100LRDGFD","network":"National Rail","operator":"South Western Railway","platforms":"2","postal_code":"GU1 4DQ","public_transport":"station","railway":"station","ref:crs":"LRD","wheelchair":"no","wikidata":"Q1831712","wikipedia":"en:London Road (Guildford) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5811391,51.2372003]},"properties":{"addr:city":"Guildford","addr:postcode":"GU1 4UT","addr:street":"Station Approach","alt_name":"Guildford Station","name":"Guildford","name:lt":"Gilfordas","naptan:AtcoCode":"9100GUILDFD","network":"National Rail","network:wikidata":"Q26334","old_name":"Guildford Rail Station","operator":"Network Rail","platforms":"8","public_transport":"station","railway":"station","ref:crs":"GLD","source:name":"Local knowledge","toilets:wheelchair":"yes","train":"yes","website":"http://www.nationalrail.co.uk/stations-and-destinations/stations-made-easy/guildford-station-plan","wheelchair":"yes","wheelchair:description":"NOT Step-free from west side. One low counter at booking office, but seen shut on several visits. Ramped route to all platforms. Accessible toilet on platform 2B, near ramp.","wikidata":"Q604078","wikipedia":"en:Guildford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1663814,51.3685771]},"properties":{"name":"Carshalton","naptan:AtcoCode":"9100CRSHLTN","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"CSH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q3317733","wikipedia":"en:Carshalton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2412882,51.3452926]},"properties":{"name":"Ewell East","naptan:AtcoCode":"9100EWELLE","network":"National Rail","postal_code":"KT17 1QR","public_transport":"station","railway":"station","ref:crs":"EWE","ref:stanox":"87679","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wikidata":"Q2618113","wikipedia":"en:Ewell East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.320874,51.1811282]},"properties":{"name":"Holmwood","naptan:AtcoCode":"9100HLMW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HLM","source":"Landsat photo","wheelchair":"limited","wikidata":"Q2049680","wikipedia":"en:Holmwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3361686,51.1515691]},"properties":{"name":"Ockley","naptan:AtcoCode":"9100OCKLYAC","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"OLY","wikidata":"Q4490156","wikipedia":"en:Ockley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3296073,51.0930387]},"properties":{"name":"Warnham","naptan:AtcoCode":"9100WARNHAM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WNH","source":"NPE","wikidata":"Q2699878","wikipedia":"en:Warnham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3189321,51.0659781]},"properties":{"name":"Horsham","naptan:AtcoCode":"9100HORSHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HRH","wheelchair":"yes","wikidata":"Q2431903","wikipedia":"en:Horsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5462831,50.8480149]},"properties":{"name":"Arundel","naptan:AtcoCode":"9100ARUNDEL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ARU","source":"NPE","wikidata":"Q2052983","wikipedia":"en:Arundel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5419326,50.8966534]},"properties":{"name":"Amberley","naptan:AtcoCode":"9100AMLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AMY","source":"Landsat","train":"yes","wheelchair":"limited","wikidata":"Q2173107","wikipedia":"en:Amberley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5164713,50.9575905]},"properties":{"name":"Pulborough","naptan:AtcoCode":"9100PULBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PUL","source":"NPE","wikidata":"Q4759900","wikipedia":"en:Pulborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3638616,51.0508094]},"properties":{"name":"Christ's Hospital","naptan:AtcoCode":"9100CHRSTSH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHH","source":"Landsat photo","wikidata":"Q3401794","wikipedia":"en:Christ's Hospital railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.578301,50.8293642]},"properties":{"name":"Ford","naptan:AtcoCode":"9100FORD","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"FOD","wikidata":"Q921886","wikipedia":"en:Ford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6402044,50.8307449]},"properties":{"name":"Barnham","naptan:AtcoCode":"9100BRHM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BAA","wheelchair":"yes","wikidata":"Q2059728","wikipedia":"en:Barnham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1610653,51.1174709]},"properties":{"addr:postcode":"RH10 1LY","name":"Three Bridges","naptan:AtcoCode":"9100THBDGS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"TBD","wikidata":"Q2699563","wikipedia":"en:Three Bridges railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1865249,51.1120247]},"properties":{"name":"Crawley","naptan:AtcoCode":"9100CRAWLEY","network":"National Rail","note":"As at June 2018 the waiting room on Platform 1 no longer has books.","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"CRW","wikidata":"Q3405380","wikipedia":"en:Crawley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0542215,51.427742]},"properties":{"name":"Sydenham","naptan:AtcoCode":"9100SYDENHM","network":"National Rail;London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SYD","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wikidata":"Q2064910","wikipedia":"en:Sydenham railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0530903,51.4392419]},"properties":{"name":"Forest Hill","name:ru":"Форест-Хилл","naptan:AtcoCode":"9100FORESTH","network":"London Overground","public_transport":"station","railway":"station","ref:crs":"FOH","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"limited","wheelchair:description":"Use the Devonshire Road entrance for both platforms. Access from platform to train by manual boarding ramp.","wikidata":"Q2342584","wikipedia":"en:Forest Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0450199,51.4504605]},"properties":{"name":"Honor Oak Park","naptan:AtcoCode":"9100HONROPK","network":"National Rail;London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"HPA","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q5896843","wikipedia":"en:Honor Oak Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0404289,51.4752983]},"properties":{"name":"New Cross Gate","naptan:AtcoCode":"9100NEWXGTE","network":"National Rail;London Overground","platforms":"5","public_transport":"station","railway":"station","ref:crs":"NXG","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step down from train to platform","wikidata":"Q648558","wikipedia":"en:New Cross Gate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0326237,51.4763706]},"properties":{"name":"New Cross","naptan:AtcoCode":"9100NWCROSS","network":"National Rail;London Overground","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"NWX","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q801253","wikipedia":"en:New Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0221846,51.4690905]},"properties":{"name":"St Johns","naptan:AtcoCode":"9100STJOHNS","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SAJ","train":"yes","wheelchair":"no","wikidata":"Q7593815","wikipedia":"en:St Johns railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0186204,51.4842403]},"properties":{"addr:street":"Station Crescent","name":"Westcombe Park","naptan:AtcoCode":"9100WCOMBEP","network":"National Rail","opening_hours":"Mo-Fr 09:00-18:00; Sa 09:00-14:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"WCB","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2522084","wikipedia":"en:Westcombe Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0548824,51.4910924]},"properties":{"name":"Woolwich Dockyard","naptan:AtcoCode":"9100WOLWCDY","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"WWD","wheelchair":"limited","wheelchair:description":"Step free access to platform for services away from London. There is no step free access to Platform 1. No step free interchange between platforms.","wikidata":"Q2201803","wikipedia":"en:Woolwich Dockyard railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0703782,51.4896184]},"properties":{"name":"Woolwich Arsenal","naptan:AtcoCode":"9100WOLWCHA","network":"National Rail","operator":"Southeastern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WWA","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q801639","wikipedia":"en:Woolwich Arsenal station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0840176,51.4897681]},"properties":{"name":"Plumstead","naptan:AtcoCode":"9100PLMS","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"PLU","source":"NPE","wheelchair":"no","wikidata":"Q4403657","wikipedia":"en:Plumstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1202208,51.4909519]},"properties":{"name":"Abbey Wood","naptan:AtcoCode":"9100ABWD","network":"National Rail","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"ABW","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2087079","wikipedia":"en:Abbey Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1903098,51.4676731]},"properties":{"electrified":"rail","frequency":"0","gauge":"1435","name":"Slade Green","naptan:AtcoCode":"9100SLADEGN","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SGR","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2155070","wikipedia":"en:Slade Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2191164,51.4474203]},"properties":{"name":"Dartford","name:lt":"Dartfordas","naptan:AtcoCode":"9100DARTFD","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"DFD","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Lifts to all platforms","wikidata":"Q2380329","wikipedia":"en:Dartford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4626517,52.9162127]},"properties":{"name":"Derby","naptan:AtcoCode":"9100DRBY","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"DBY","train":"yes","wheelchair":"yes","wikidata":"Q3398679","wikipedia":"en:Derby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0220245,51.4307645]},"properties":{"name":"Grove Park","naptan:AtcoCode":"9100GRVPK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GRP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2252599","wikipedia":"en:Grove Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0006473,51.4515872]},"properties":{"name":"Hither Green","naptan:AtcoCode":"9100HTHRGRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HGR","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2182758","wikipedia":"en:Hither Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0446574,51.4167981]},"properties":{"name":"Elmstead Woods","naptan:AtcoCode":"9100ELMW","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"ESD","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access to platform 4 for services away from London from Station Approach. There is no step free access to Platform 1, 2 or 3. No step free interchange between platforms.","wikidata":"Q2261123","wikipedia":"en:Elmstead Woods railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0578673,51.4051626]},"properties":{"name":"Chislehurst","naptan:AtcoCode":"9100CHSLHRS","network":"National Rail","opening_hours":"Mo-Sa 06:00-20:30; Su 08:15-15:40","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"CIT","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"5","url":"https://www.nationalrail.co.uk/stations/cit/","wheelchair":"limited","wheelchair:description":"Step free access to platform 4 for services away from London. There is no step free access to Platform 1 2 or 3.","wikidata":"Q2273007","wikipedia":"en:Chislehurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0745614,51.388626]},"properties":{"name":"Petts Wood","naptan:AtcoCode":"9100PETSWD","network":"National Rail","opening_hours":"Mo-Fr 05:45-20:00; Sa 07:00-20:00; Su 07:45-19:15","operator":"South Eastern","public_transport":"station","railway":"station","ref:crs":"PET","source":"NPE","url":"http://www.nationalrail.co.uk/stations/pet/details.html","wheelchair":"no","wikidata":"Q2381365","wikipedia":"en:Petts Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1083284,51.3566115]},"properties":{"name":"Chelsfield","naptan:AtcoCode":"9100CHLSFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLD","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to platform 1 from Station Approach Rd. Steep ramp to access Platform 2 from Warren Road. Step free interchange via road and steep paths is in excess of 400metres.","wikidata":"Q1846494","wikipedia":"en:Chelsfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1713301,51.2966115]},"properties":{"addr:postcode":"TN13 2XD","name":"Dunton Green","naptan:AtcoCode":"9100DTNG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DNG","source":"NPE","website":"http://www.nationalrail.co.uk/stations/dng/details.html","wikidata":"Q2090452","wikipedia":"en:Dunton Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0966299,50.9687382]},"properties":{"addr:postcode":"TN22 1HS","name":"Uckfield","naptan:AtcoCode":"9100UCKFILD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"UCK","source":"Landsat photo","train":"yes","wheelchair":"yes","wikidata":"Q2209876","wikipedia":"en:Uckfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2009551,51.0892394]},"properties":{"addr:postcode":"TN3 9LE","name":"Eridge","naptan:AtcoCode":"9100ERIDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ERI","source":"bing","train":"yes","wikidata":"Q2564605","wikipedia":"en:Eridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0042319,51.2442817]},"properties":{"name":"Hurst Green","naptan:AtcoCode":"9100HRSTGRN","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"RH8 0LL","public_transport":"station","railway":"station","ref:crs":"HUR","wheelchair":"limited","wikidata":"Q2798051","wikipedia":"en:Hurst Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.067215,51.2001369]},"properties":{"addr:postcode":"TN8 5LP","name":"Edenbridge Town","naptan:AtcoCode":"9100EDNT","network":"National Rail","railway":"station","ref:crs":"EBT","source":"NPE","wikipedia":"en:Edenbridge Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0948105,51.1813846]},"properties":{"addr:postcode":"TN8 7ER","name":"Hever","naptan:AtcoCode":"9100HEVER","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HEV","source":"NPE","wikipedia":"en:Hever railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1098981,51.1556295]},"properties":{"addr:postcode":"TN8 7DS","name":"Cowden","naptan:AtcoCode":"9100COWDEN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CWN","source":"landsat photo","wikidata":"Q2374789","wikipedia":"en:Cowden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1880389,51.0462372]},"properties":{"addr:postcode":"TN6 2JR","addr:street":"Farningham Road","name":"Crowborough","naptan:AtcoCode":"9100CBGH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"COH","wikidata":"Q2537407","wikipedia":"en:Crowborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1313783,50.9901183]},"properties":{"addr:postcode":"TN22 4LA","building":"yes","name":"Buxted","naptan:AtcoCode":"9100BXTD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BXD","source":"Landsat photo","train":"yes","wikidata":"Q1997262","wikipedia":"en:Buxted railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0045745,51.2578327]},"properties":{"name":"Oxted","naptan:AtcoCode":"9100OXTED","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"RH8 9EU","public_transport":"station","railway":"station","ref:crs":"OXT","wheelchair":"yes","wikidata":"Q2601068","wikipedia":"en:Oxted railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0746988,51.3971695]},"properties":{"name":"Norwood Junction","naptan:AtcoCode":"9100NORWDJ","network":"National Rail;London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"NWD","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","toilets:wheelchair":"no","wheelchair":"no","wheelchair:description":"To access any platforms except platform 1 there is only stair access. There are about 15 stairs to access the platforms.","wikidata":"Q2835440","wikipedia":"en:Norwood Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0042265,51.1558675]},"properties":{"addr:postcode":"RH7 6NL","name":"Dormans","naptan:AtcoCode":"9100DORMANS","network":"National Rail","network:train":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"DMS","wikidata":"Q2626558","wikipedia":"en:Dormans railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0178578,51.1264031]},"properties":{"addr:city":"East Grinstead","addr:postcode":"RH19 1EB","addr:street":"Railway Approach","name":"East Grinstead","naptan:AtcoCode":"9100EGRNSTD","network":"National Rail","network:train":"National Rail","operator":"Southern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"EGR","station":"train","train":"yes","wheelchair":"limited","wikidata":"Q1912304","wikipedia":"en:East Grinstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0933556,51.3629173]},"properties":{"name":"South Croydon","naptan:AtcoCode":"9100SCROYDN","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"CR2 7PA","public_transport":"station","railway":"station","ref:crs":"SCY","website":"http://www.nationalrail.co.uk/stations/scy/details.html","wheelchair":"no","wikidata":"Q7566932","wikipedia":"en:South Croydon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0934589,51.348394]},"properties":{"addr:city":"South Croydon","addr:postcode":"CR2 0PL","addr:street":"Station Approach","name":"Sanderstead","naptan:AtcoCode":"9100SDSD","network":"National Rail","network:train":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"SNR","wheelchair":"yes","wheelchair:description":"Level access to both platforms via separate entrances. Long access route between platforms via street, steep in places (over 400m and gradient above 1:10).","wikidata":"Q1816144","wikipedia":"en:Sanderstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0997037,51.3329352]},"properties":{"name":"Riddlesdown","naptan:AtcoCode":"9100RDLSDWN","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"CR8 1HN","public_transport":"station","railway":"station","ref:crs":"RDD","wheelchair":"yes","wheelchair:description":"Step-free access to platforms via long and steep ramps (over 1:10 gradient).","wikidata":"Q5004660","wikipedia":"en:Riddlesdown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0191917,51.4560257]},"properties":{"name":"Ladywell","naptan:AtcoCode":"9100LDYW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAD","wheelchair":"yes","wikidata":"Q2703794","wikipedia":"en:Ladywell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0249226,51.4445909]},"properties":{"air_conditioning":"no","baby_feeding":"no","level":"0","name":"Catford Bridge","naptan:AtcoCode":"9100CATFBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CFB","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q2624460","wikipedia":"en:Catford Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0332998,51.4247446]},"properties":{"name":"Lower Sydenham","naptan:AtcoCode":"9100LSYDNHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LSY","wheelchair":"limited","wheelchair:description":"Step Free to both platforms, No step free interchange between platforms.","wikidata":"Q2444364","wikipedia":"en:Lower Sydenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0352069,51.4169395]},"properties":{"name":"New Beckenham","naptan:AtcoCode":"9100NBCKNHM","network":"National Rail","opening_hours":"Mo-Fr 06:30-13:00; Sa 07:30-14:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"NBC","source":"NPE","wheelchair":"limited","wheelchair:description":"Step free access to both platforms. No step free interchange between platforms.","wikidata":"Q2173160","wikipedia":"en:New Beckenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0403022,51.4087604]},"properties":{"name":"Clock House","naptan:AtcoCode":"9100CLOCKHS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CLK","source":"survey","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to platform 2 for services away from London via Clock House Road. There is no step free access to Platform 1.","wikidata":"Q1978582","wikipedia":"en:Clock House railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0145081,51.3813743]},"properties":{"name":"West Wickham","naptan:AtcoCode":"9100WWICKHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WWI","wheelchair":"yes","wikidata":"Q2253171","wikipedia":"en:West Wickham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0263691,51.3901801]},"properties":{"name":"Eden Park","naptan:AtcoCode":"9100EDPK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EDN","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to platform 1 for services to London. There is no step free access to Platform 2.Only step access to platform 2 for services away from London. No step free interchange between platforms.","wikidata":"Q2323478","wikipedia":"en:Eden Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0497025,51.398012]},"properties":{"gauge":"1435","name":"Elmers End","naptan:AtcoCode":"9100ELMERSE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"ELE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","voltage":"750","wheelchair":"yes","wikidata":"Q2420368","wikipedia":"en:Elmers End station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2601274,51.8902434]},"properties":{"level":"1","light_rail":"yes","name":"Main Terminal Building (Departures)","network":"Stansted Airport Terminal Link","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2541483,51.8892206]},"properties":{"light_rail":"yes","name":"Terminal C","network":"Stansted Airport Terminal Link","public_transport":"station","railway":"station","station":"light_rail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2569959,51.8911228]},"properties":{"light_rail":"yes","name":"Terminal B","network":"Stansted Airport Terminal Link","public_transport":"station","railway":"station","station":"light_rail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8720459,52.5044169]},"properties":{"name":"Aston","naptan:AtcoCode":"9100ASTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AST","west_midlands_fare_zone":"2","wikidata":"Q1978485","wikipedia":"en:Aston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5942104,53.1603271]},"properties":{"name":"Darley Dale","naptan:AtcoCode":"940GZZPRDDL","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q5223871","wikipedia":"en:Darley Dale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.760113,51.2462388]},"properties":{"name":"Aldershot","naptan:AtcoCode":"9100ALDRSHT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AHT","wheelchair":"yes","wikidata":"Q4502625","wikipedia":"en:Aldershot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7216468,51.2723368]},"properties":{"name":"Ash Vale","naptan:AtcoCode":"9100ASHVALE","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"AHV","wikidata":"Q4774283","wikipedia":"en:Ash Vale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7438865,51.3363364]},"properties":{"name":"Camberley","naptan:AtcoCode":"9100CMBLEY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CAM","wikidata":"Q5025046","wikipedia":"en:Camberley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6885039,51.3643336]},"properties":{"name":"Bagshot","naptan:AtcoCode":"9100BAGSHOT","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BAG","wikidata":"Q2480873","wikipedia":"en:Bagshot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4780506,54.9977941]},"properties":{"internet_access":"no","internet_access:fee":"no","name":"Percy Main","operator":"NTSR","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6128853,53.4531451]},"properties":{"name":"Newton-le-Willows","naptan:AtcoCode":"9100NWTNLW","network":"National Rail","old_name":"Newton Bridge","public_transport":"station","railway":"station","ref:crs":"NLW","ref:tiploc":"NWTNLW","wheelchair":"yes","wikipedia":"en:Newton-le-Willows railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6376153,53.4512184]},"properties":{"name":"Earlestown","naptan:AtcoCode":"9100ERLSTWN","network":"National Rail","old_name":"Newton Junction","public_transport":"station","railway":"station","ref:crs":"ERL","ref:tiploc":"ERLSTWN","wikipedia":"en:Earlestown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7393871,53.3385599]},"properties":{"name":"Runcorn","naptan:AtcoCode":"9100RUNCORN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RUN","wikidata":"Q4455872","wikipedia":"en:Runcorn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4326364,53.0889629]},"properties":{"name":"Crewe","name:cy":"Cryw","name:en":"Crewe","naptan:AtcoCode":"9100CREWE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CRE","wheelchair":"yes","wikipedia":"en:Crewe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1087807,50.7967035]},"properties":{"name":"Portsmouth Harbour","naptan:AtcoCode":"9100PHBR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PMH","source":"Landsat photo","wikidata":"Q2228512","wikipedia":"en:Portsmouth Harbour railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6368939,51.163179]},"properties":{"name":"Milford","naptan:AtcoCode":"9100MLFORD","network":"National Rail","official_name":"Milford (Surrey)","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MLF","wikidata":"Q4708340","wikipedia":"en:Milford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6459792,51.1331013]},"properties":{"name":"Witley","naptan:AtcoCode":"9100WITLEY","network":"National Rail","operator":"South West Trains","railway":"station","ref:crs":"WTY","source":"Landsat","wikidata":"Q1882728","wikipedia":"en:Witley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7194871,51.0887757]},"properties":{"name":"Haslemere","naptan:AtcoCode":"9100HASLEMR","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"HSL","wheelchair":"yes","wikidata":"Q1985461","wikipedia":"en:Haslemere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8001257,51.0712216]},"properties":{"name":"Liphook","naptan:AtcoCode":"9100LIPHOOK","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"LIP","wikidata":"Q3368717","wikipedia":"en:Liphook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8926226,51.0439274]},"properties":{"name":"Liss","naptan:AtcoCode":"9100LISS","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"LIS","wikidata":"Q1884678","wikipedia":"en:Liss railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5824209,51.2878849]},"properties":{"name":"Worplesdon","naptan:AtcoCode":"9100WRPLSDN","network":"National Rail","operator":"South Western Railway","postal_code":"GU22 0RN","public_transport":"station","railway":"station","ref:crs":"WPL","source":"NPE","wikidata":"Q2232031","wikipedia":"en:Worplesdon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9417209,51.0065237]},"properties":{"name":"Petersfield","naptan:AtcoCode":"9100PTRSFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PTR","wikidata":"Q2322998","wikipedia":"en:Petersfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9572878,50.8924725]},"properties":{"addr:city":"Rowland's Castle","addr:postcode":"PO9 6BP","addr:street":"Bowes Hill","internet_access":"no","name":"Rowlands Castle","naptan:AtcoCode":"9100RWLNDSC","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"RLN","source":"Landsat photo","wikidata":"Q2213503","wikipedia":"en:Rowlands Castle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9962717,50.8539846]},"properties":{"name":"Bedhampton","naptan:AtcoCode":"9100BDHMPTN","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"BDH","source":"Bing","wikidata":"Q1816808","wikipedia":"en:Bedhampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9815624,50.8544413]},"properties":{"alt_name":"Havant Railway Station","name":"Havant","naptan:AtcoCode":"9100HAVANT","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"HAV","website":"https://en.wikipedia.org/wiki/Havant_railway_station","wikidata":"Q2136408","wikipedia":"en:Havant railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0906787,50.7982014]},"properties":{"name":"Portsmouth and Southsea","naptan:AtcoCode":"9100PSEA","network":"National Rail","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"PMS","source":"survey","wikidata":"Q3305372","wikipedia":"en:Portsmouth & Southsea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0787884,51.061005]},"properties":{"name":"Tisbury","naptan:AtcoCode":"9100TISBURY","network":"National Rail","railway":"station","ref:crs":"TIS","wikipedia":"en:Tisbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4927767,51.211559]},"properties":{"name":"Andover","naptan:AtcoCode":"9100ANDOVER","network":"National Rail","network:wikidata":"Q26334","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"ADV","train":"yes","wikidata":"Q2003702","wikipedia":"en:Andover railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4172852,51.001594]},"properties":{"name":"Templecombe","naptan:AtcoCode":"9100TMPCMB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TMC","wikidata":"Q1901020","wikipedia":"en:Templecombe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8064141,51.0705706]},"properties":{"name":"Salisbury","naptan:AtcoCode":"9100SLSBRY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SAL","wikidata":"Q1976733","wikipedia":"en:Salisbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2720765,51.0340876]},"properties":{"name":"Gillingham","naptan:AtcoCode":"9100GLHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GIL","wheelchair":"yes","wikidata":"Q2731470","wikipedia":"en:Gillingham railway station (Dorset)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3715945,53.7922376]},"properties":{"name":"East Garforth","naptan:AtcoCode":"9100EGRFRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EGF","wikidata":"Q2537875","wikipedia":"en:East Garforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0634228,53.7829146]},"properties":{"addr:city":"Selby","addr:postcode":"YO8 4NW","addr:street":"Station Road","length":"200.3","name":"Selby","naptan:AtcoCode":"9100SELBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SBY","ref:tiploc":"SELBY","wikidata":"Q2253957","wikipedia":"en:Selby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9236723,53.7728263]},"properties":{"name":"Wressle","naptan:AtcoCode":"9100WRESSLE","network":"National Rail","railway":"station","ref:crs":"WRS","ref:tiploc":"WRESSLE","source":"NPE","wikidata":"Q2057572","wikipedia":"en:Wressle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8606411,53.7647567]},"properties":{"name":"Howden","naptan:AtcoCode":"9100HOWDEN","network":"National Rail","railway":"station","ref:crs":"HOW","wikidata":"Q978543","wikipedia":"en:Howden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6730092,53.7403673]},"properties":{"name":"Broomfleet","naptan:AtcoCode":"9100BRFT","network":"National Rail","railway":"station","ref:crs":"BMF","ref:tiploc":"BRFT","source":"NPE","wikidata":"Q2675002","wikipedia":"en:Broomfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5077294,53.7170509]},"properties":{"length":"110","name":"Ferriby","naptan:AtcoCode":"9100FERRIBY","network":"National Rail","operator":"Northern Rail","railway":"station","ref:crs":"FRY","ref:tiploc":"FERRIBY","wheelchair":"limited","wikipedia":"en:Ferriby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4421011,53.7173688]},"properties":{"name":"Hessle","naptan:AtcoCode":"9100HESSLE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HES","ref:tiploc":"HESSLE","wikidata":"Q2498524","wikipedia":"en:Hessle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.450353,53.8050605]},"properties":{"alt_name":"Crossgates","name":"Cross Gates","naptan:AtcoCode":"9100CSGT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CRG","source":"NPE","train":"yes","wikidata":"Q1857460","wikipedia":"en:Cross Gates railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7870775,53.755235]},"properties":{"length":"90","name":"Eastrington","naptan:AtcoCode":"9100ESTRNGT","network":"National Rail","railway":"station","ref:crs":"EGN","ref:tiploc":"ESTRNGT","source":"NPE","wikidata":"Q2094123","wikipedia":"en:Eastrington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3475977,53.7438351]},"properties":{"addr:city":"Hull","addr:postcode":"HU1 3QX","addr:street":"Ferensway","internet_access":"no","name":"Hull Paragon Interchange","naptan:AtcoCode":"9100HULL","network":"National Rail","operator":"TransPennine Express","passenger":"yes","public_transport":"station","railway":"station","ref:crs":"HUL","ref:tiploc":"HULL","train":"yes","wheelchair":"yes","wikidata":"Q9294886","wikipedia":"en:Hull Paragon Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0642227,53.4841386]},"properties":{"name":"Stalybridge","naptan:AtcoCode":"9100SBYD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SYB","source":"NPE","wheelchair":"yes","wikidata":"Q2078930","wikipedia":"en:Stalybridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8806027,53.6241585]},"properties":{"name":"Slaithwaite","naptan:AtcoCode":"9100SLTHWTE","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SWT","source":"NPE","train":"yes","wikipedia":"en:Slaithwaite railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7847509,53.64849]},"properties":{"name":"Huddersfield","naptan:AtcoCode":"9100HDRSFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HUD","wheelchair":"yes","wikipedia":"en:Huddersfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6332735,53.692016]},"properties":{"name":"Dewsbury","naptan:AtcoCode":"9100DWBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DEW","wikipedia":"en:Dewsbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6230114,53.7102081]},"properties":{"name":"Batley","naptan:AtcoCode":"9100BATLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BTL","source":"gpx","wikipedia":"en:Batley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5435703,50.7292155]},"properties":{"addr:city":"Exeter","addr:postcode":"EX4 4NT","addr:street":"Bonhay Road","electrified":"no","name":"Exeter St Davids","naptan:AtcoCode":"9100EXETRSD","network":"National Rail","network:wikidata":"Q26334","opening_hours":"This railway station is not open 24 hours and closes for part of the night.","platforms":"6","public_transport":"station","railway":"station","ref:crs":"EXD","source":"NPE + GPX","train":"yes","wikidata":"Q3244559","wikipedia":"en:Exeter St Davids railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5321297,50.7270161]},"properties":{"addr:city":"Exeter","addr:housename":"Exeter Central","addr:postcode":"EX4 3SB","addr:street":"Queen Street","electrified":"no","name":"Exeter Central","naptan:AtcoCode":"9100EXETERC","network":"National Rail","network:wikidata":"Q26334","old_name":"Exeter Queen Street","operator":"First Great Western","platforms":"3","public_transport":"station","railway":"station","ref:crs":"EXC","served_by":"South West Trains, First Great Western","train":"yes","wheelchair":"yes","wikidata":"Q3189858","wikipedia":"en:Exeter Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4700849,50.7377934]},"properties":{"name":"Pinhoe","naptan:AtcoCode":"9100PINHOE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PIN","source":"NPE","train":"yes","wikidata":"Q7195885","wikipedia":"en:Pinhoe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4209803,50.7500196]},"properties":{"name":"Cranbrook","naptan:AtcoCode":"9100CBRK","network":"National Rail","operator":"South Western Railway","railway":"station","ref:crs":"CBK","start_date":"2015-12-13","website":"https://www.southwesternrailway.com/","wikidata":"Q16988214","wikipedia":"en:Cranbrook railway station (Devon)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3542794,50.7679282]},"properties":{"name":"Whimple","naptan:AtcoCode":"9100WHIMPLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WHM","wikidata":"Q666548","wikipedia":"en:Whimple railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.285205,50.7865525]},"properties":{"name":"Feniton","naptan:AtcoCode":"9100FENITON","network":"National Rail","railway":"station","ref:crs":"FNT","wikidata":"Q2596435","wikipedia":"en:Feniton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1868994,50.7967239]},"properties":{"name":"Honiton","naptan:AtcoCode":"9100HONITON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HON","wheelchair":"limited","wikidata":"Q924899","wikipedia":"en:Honiton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0049453,50.7790074]},"properties":{"name":"Axminster","naptan:AtcoCode":"9100AXMNSTR","network":"National Rail","railway":"station","ref:crs":"AXM","wikidata":"Q3431382","wikipedia":"en:Axminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5129696,50.943979]},"properties":{"name":"Sherborne","naptan:AtcoCode":"9100SHERBRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SHE","source":"gps_survey","wikidata":"Q2407888","wikipedia":"en:Sherborne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6122447,50.9248143]},"properties":{"name":"Yeovil Junction","naptan:AtcoCode":"9100YOVILJN","network":"National Rail","railway":"station","ref:crs":"YVJ","wikidata":"Q801650","wikipedia":"en:Yeovil Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7784344,50.8735853]},"properties":{"name":"Crewkerne","naptan:AtcoCode":"9100CRKRN","network":"National Rail","railway":"station","ref:crs":"CKN","source":"NPE","wikidata":"Q2260029","wikipedia":"en:Crewkerne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6332427,51.3921459]},"properties":{"name":"Sunningdale","naptan:AtcoCode":"9100SUNNGDL","network":"National Rail","note":"On this railway station customers have to show their rail ticket at the ticket office to get the code for using the toilets.","public_transport":"station","railway":"station","ref:crs":"SNG","wikidata":"Q2537626","wikipedia":"en:Sunningdale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8918298,51.4367674]},"properties":{"name":"Winnersh Triangle","naptan:AtcoCode":"9100WINETGL","network":"National Rail","operator":"South West Trains","railway":"station","ref:crs":"WTI","wheelchair":"no","wikidata":"Q2506711","wikipedia":"en:Winnersh Triangle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8779199,51.4307527]},"properties":{"name":"Winnersh","naptan:AtcoCode":"9100WINERSH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WNS","wikidata":"Q3543567","wikipedia":"en:Winnersh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5465778,51.4294065]},"properties":{"name":"Egham","naptan:AtcoCode":"9100EGHAM","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"EGH","wheelchair":"yes","wikidata":"Q5347948","wikipedia":"en:Egham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5029086,51.432328]},"properties":{"name":"Staines","naptan:AtcoCode":"9100STAINES","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SNS","source:name":"npe","start_date":"1848-08-22","wikidata":"Q2106145","wikipedia":"en:Staines railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3288402,51.4505786]},"properties":{"name":"Twickenham","naptan:AtcoCode":"9100TWCKNHM","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"TWI","source":"NPE","wheelchair":"yes","wikidata":"Q2286388","wikipedia":"en:Twickenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5793863,51.4828971]},"properties":{"name":"Datchet","naptan:AtcoCode":"9100DATCHET","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"DAT","source":"NPE","wikidata":"Q2796746","wikipedia":"en:Datchet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.558857,51.4699493]},"properties":{"name":"Sunnymeads","naptan:AtcoCode":"9100SUNYMDS","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SNY","source":"NPE","wikidata":"Q2406647","wikipedia":"en:Sunnymeads railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.541994,51.4579278]},"properties":{"name":"Wraysbury","naptan:AtcoCode":"9100WRYSBRY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WRY","source":"NPE","wikidata":"Q2308555","wikipedia":"en:Wraysbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3577822,51.4494981]},"properties":{"level":"-1-0","name":"Whitton","naptan:AtcoCode":"9100WHTTON","network":"National Rail","network:wikidata":"Q26334","note":"This station has 2 Stannah lifts","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WTN","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q3198886","wikipedia":"en:Whitton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2526332,51.4720123]},"properties":{"addr:city":"London","addr:street":"The Terrace","level":"2","name":"Barnes Bridge","naptan:AtcoCode":"9100BNSBDGE","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BNI","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","website":"http://www.nationalrail.co.uk/stations/BNI/details.html","wheelchair":"no","wikidata":"Q1834855","wikipedia":"en:Barnes Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2681753,51.4811465]},"properties":{"name":"Chiswick","name:ru":"Чизик","naptan:AtcoCode":"9100CHISWCK","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CHK","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"no","wheelchair":"limited","wheelchair:description":"Level access to Platform 1 (for trains towards London Waterloo). Short ramp at approx 1:7 gradient to Platform 2 (for trains towards Hounslow) via separate entrance. No reasonable step-free access between platforms.","wikidata":"Q2135035","wikipedia":"en:Chiswick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.287225,51.4895024]},"properties":{"name":"Kew Bridge","naptan:AtcoCode":"9100KEWBDGE","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"KWB","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2851105","wikipedia":"en:Kew Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3096825,51.4876569]},"properties":{"alt_name":"Brentford Station","name":"Brentford","naptan:AtcoCode":"9100BNTFORD","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"BFD","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikipedia":"en:Brentford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.32478,51.4818147]},"properties":{"name":"Syon Lane","naptan:AtcoCode":"9100SYONLA","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SYL","wheelchair":"no","wikidata":"Q3226814","wikipedia":"en:Syon Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3368946,51.4748823]},"properties":{"name":"Isleworth","naptan:AtcoCode":"9100ISLEWTH","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"ISL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2485750","wikipedia":"en:Isleworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3617294,51.4620974]},"properties":{"name":"Hounslow","naptan:AtcoCode":"9100HOUNSLW","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"HOU","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"limited","wheelchair:description":"Steps or ramp (approx. gradient 1:15) to Platform 1 (trains towards Chiswick). Level access to Platform 2 from separate entrance. Access between platforms via footbridge with steps, or step-free route via street approximately 150m.","wikidata":"Q2131128","wikipedia":"en:Hounslow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5094641,51.3871309]},"properties":{"name":"Chertsey","naptan:AtcoCode":"9100CHTSEY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"CHY","source":"OS_OpenData_VectorMapDistrict","wikidata":"Q3538832","wikipedia":"en:Chertsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4845082,51.3731128]},"properties":{"addr:city":"Addlestone","addr:street":"Station Road","name":"Addlestone","naptan:AtcoCode":"9100ADLESTN","network":"National Rail","operator":"Southwestern Railway","public_transport":"station","railway":"station","ref:crs":"ASN","source":"OS_OpenData_VectorMapDistrict","toilets:wheelchair":"no","uic_ref":"7000039","wheelchair":"yes","wheelchair:description":"Both platforms accessible by ramps from street. Only automatic ticket sales. Access to opposite platform via level crossing.","wikidata":"Q2064098","wikipedia":"en:Addlestone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2840976,51.4123032]},"properties":{"name":"Norbiton","naptan:AtcoCode":"9100NRBITON","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"NBT","ref:stanox":"87163","source:name":"local knowledge","wheelchair":"limited","wheelchair:description":"There is step free access via ramps to both platforms. Interchange via a stepped subway.","wikidata":"Q2360178","wikipedia":"en:Norbiton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3325731,51.4244662]},"properties":{"name":"Teddington","naptan:AtcoCode":"9100TEDNGTN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"TED","source:name":"local knowledge","wheelchair":"limited","wheelchair:description":"Level access to both platforms from street but bridge between platforms not wheelchair accessible.","wikidata":"Q2130623","wikipedia":"en:Teddington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4644482,50.5806101]},"properties":{"name":"Dawlish","naptan:AtcoCode":"9100DAWLISH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DWL","wheelchair":"no","wikipedia":"en:Dawlish railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1923427,50.8534057]},"properties":{"addr:city":"Fareham","addr:housename":"Fareham Railway Station","addr:postcode":"PO16 0UT","addr:street":"Station Approach","name":"Fareham","naptan:AtcoCode":"9100FAREHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FRM","wikidata":"Q3126481","wikipedia":"en:Fareham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3878591,50.9222702]},"properties":{"name":"St Denys","naptan:AtcoCode":"9100STDENYS","network":"National Rail","network:wikidata":"Q26334","platforms":"4","public_transport":"station","railway":"station","ref:crs":"SDN","train":"yes","wikidata":"Q3372457","wikipedia":"en:St Denys railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4336981,50.9114285]},"properties":{"name":"Millbrook","naptan:AtcoCode":"9100MBRK","network":"National Rail","operator":"South Western Railway","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MBK","source:ref":"NRE","wikipedia":"en:Millbrook railway station (Hampshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5734094,50.816746]},"properties":{"addr:city":"New Forest","addr:housename":"Brockenhurst Railway Station","addr:postcode":"SO42 7TW","addr:street":"Station Approach","name":"Brockenhurst","naptan:AtcoCode":"9100BKNHRST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BCU","wheelchair":"yes","wikidata":"Q3057561","wikipedia":"en:Brockenhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1274304,50.9536081]},"properties":{"name":"Burgess Hill","naptan:AtcoCode":"9100BURGESH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BUG","wikidata":"Q2690165","wikipedia":"en:Burgess Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2045609,54.1891252]},"properties":{"name":"Askam","naptan:AtcoCode":"9100ASKAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ASK","wheelchair":"yes","wikidata":"Q2501136","wikipedia":"en:Askam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2453885,54.2444234]},"properties":{"name":"Green Road","naptan:AtcoCode":"9100GREENRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GNR","request_stop":"yes","train":"yes","wikidata":"Q4825330","wikipedia":"en:Green Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.2706093,54.2110036]},"properties":{"name":"Millom","naptan:AtcoCode":"9100MLLM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MLM","train":"yes","wikidata":"Q2250935","wikipedia":"en:Millom railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3938356,54.2911815]},"properties":{"name":"Bootle","naptan:AtcoCode":"9100BOOTLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BOC","request_stop":"yes","train":"yes","wikidata":"Q1975978","wikipedia":"en:Bootle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5104538,54.4166451]},"properties":{"name":"Sellafield","naptan:AtcoCode":"9100SELAFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SEL","train":"yes","wikidata":"Q5371765","wikipedia":"en:Sellafield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.4435811,54.3768581]},"properties":{"name":"Drigg","naptan:AtcoCode":"9100DRIGG","network":"National Rail","railway":"station","ref:crs":"DRI","request_stop":"yes","wikidata":"Q2345937","wikipedia":"en:Drigg railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5419705,54.4395084]},"properties":{"name":"Braystones","naptan:AtcoCode":"9100BRYSTNS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BYS","request_stop":"yes","train":"yes","wikidata":"Q2299653","wikipedia":"en:Braystones railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9854823,52.2172391]},"properties":{"name":"Titley Junction","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8001308,52.6869627]},"properties":{"addr:postcode":"WS13 6HE","addr:street":"Trent Valley Road","name":"Lichfield Trent Valley","naptan:AtcoCode":"9100LCHTTVL","network":"National Rail","old_name":"Litchfield Trent Valley Junction","operator":"London Midland","platforms":"3","public_transport":"station","railway":"station","ref:crs":"LTV","wikidata":"Q2633539","wikipedia":"en:Lichfield Trent Valley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5724185,52.3428168]},"properties":{"addr:city":"Kenilworth","addr:postcode":"CV8 1JJ","addr:street":"Waverley Road","name":"Kenilworth","naptan:AtcoCode":"9100KENLSTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KNW","train":"yes","wheelchair":"yes","wikidata":"Q6389304","wikipedia":"en:Kenilworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7052992,51.569686]},"properties":{"name":"Southend Airport","naptan:AtcoCode":"9100STHEAIR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SIA","wikidata":"Q7569535","wikipedia":"en:Southend Airport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3171057,51.3291668]},"properties":{"name":"Minster","naptan:AtcoCode":"9100MINSTER","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"MSR","train":"yes","wheelchair":"limited","wikidata":"Q2451565","wikipedia":"en:Minster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3382306,51.3812842]},"properties":{"name":"Westgate-on-Sea","naptan:AtcoCode":"9100WESGTOS","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"WGA","train":"yes","wheelchair":"yes","wikidata":"Q2515203","wikipedia":"en:Westgate-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.048373,53.8229372]},"properties":{"name":"Blackpool North","naptan:AtcoCode":"9100BLCKPLN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BPN","wikidata":"Q2351722","wikipedia":"en:Blackpool North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1537197,51.3780278]},"properties":{"name":"Hackbridge","naptan:AtcoCode":"9100HKBG","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"HCB","source":"en:Hackbridge railway station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2409962","wikipedia":"en:Hackbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2094954,51.497437]},"properties":{"addr:city":"London","addr:postcode":"W14 0NE","addr:street":"Olympia Way","fare_zone":"2","line":"District","name":"Kensington (Olympia)","naptan:AtcoCode":"9100KENOLYM","network":"National Rail;London Underground;London Overground","old_name":"Kensington Addison Road","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"KPA","station":"subway","wheelchair":"yes","wikipedia":"en:Kensington (Olympia) station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3990635,51.5569909]},"properties":{"addr:city":"Ruislip","addr:postcode":"HA4 6TP","addr:street":"Station Road","fare_zone":"5","internet_access":"wlan","line":"Central","name":"South Ruislip","naptan:AtcoCode":"9100SRUISLP","network":"National Rail;London Underground","operator":"London Underground;Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"SRU","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q801459","wikipedia":"en:South Ruislip station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7213426,51.5164752]},"properties":{"layer":"1","name":"Pier Head","public_transport":"station","railway":"station","tourism":"light_railway","train":"yes","usage":"tourism","wheelchair":"yes","wikidata":"Q30623765","wikipedia":"en:Pier Head railway station (Essex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7997104,52.6865803]},"properties":{"addr:postcode":"WS13 6HE","addr:street":"Trent Valley Road","name":"Lichfield Trent Valley High Level","naptan:AtcoCode":"9100LCHTTVH","network":"National Rail","operator":"London Midland","platforms":"1","public_transport":"station","railway":"station","ref:crs":"LIF","wikidata":"Q2633539","wikipedia":"en:Lichfield Trent Valley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9481044,53.3151982]},"properties":{"name":"Retford","naptan:AtcoCode":"9100RTFD","network":"National Rail","network:wikidata":"Q26334","operator":"East Coast","public_transport":"station","railway":"station","ref:crs":"RET","source":"wikipedia","train":"yes","wikidata":"Q5259666","wikipedia":"en:Retford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6122733,52.2860143]},"properties":{"addr:city":"Warwick","addr:postcode":"CV35 8RH","addr:street":"Old Budbrooke Road","name":"Warwick Parkway","naptan:AtcoCode":"9100WARWPWY","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"WRP","wikidata":"Q372014","wikipedia":"en:Warwick Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9529961,52.66269]},"properties":{"name":"Brownhills West","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q4976519"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.932615,52.4142407]},"properties":{"name":"Kings Norton","naptan:AtcoCode":"9100KNORTON","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"KNN","train":"yes","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2192189","wikipedia":"en:Kings Norton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0707508,51.6045787]},"properties":{"name":"White Hart Lane","naptan:AtcoCode":"9100WHHRTLA","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"WHL","wheelchair":"yes","wikidata":"Q2775608","wikipedia":"en:White Hart Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.047176,51.6727331]},"properties":{"name":"Turkey Street","naptan:AtcoCode":"9100TURKYST","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"TUR","wheelchair":"no","wikidata":"Q2632197","wikipedia":"en:Turkey Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0356103,51.6919835]},"properties":{"name":"Theobalds Grove","naptan:AtcoCode":"9100THBLDSG","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"TEO","wheelchair":"no","wikidata":"Q2104388","wikipedia":"en:Theobalds Grove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0762903,51.5748867]},"properties":{"name":"Stamford Hill","naptan:AtcoCode":"9100STMFDHL","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SMH","source:network":"Sign","wheelchair":"no","wikidata":"Q2179250","wikipedia":"en:Stamford Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0727844,51.5651868]},"properties":{"name":"Stoke Newington","naptan:AtcoCode":"9100STKNWNG","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SKW","source:network":"Sign","wheelchair":"no","wikidata":"Q2041054","wikipedia":"en:Stoke Newington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.070011,51.5937122]},"properties":{"name":"Bruce Grove","naptan:AtcoCode":"9100BRUCGRV","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"BCV","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q1867544","wikipedia":"en:Bruce Grove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0686408,51.5591049]},"properties":{"name":"Rectory Road","naptan:AtcoCode":"9100RCTRYRD","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"REC","source:network":"Sign","wheelchair":"no","wikidata":"Q3246655","wikipedia":"en:Rectory Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0538985,51.6019134]},"properties":{"name":"Northumberland Park","naptan:AtcoCode":"9100NMBRLPK","network":"National Rail","operator":"Abellio Greater Anglia","public_transport":"station","railway":"station","ref:crs":"NUM","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q2424431","wikipedia":"en:Northumberland Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0568709,51.5616555]},"properties":{"name":"Clapton","naptan:AtcoCode":"9100CLAPTON","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CPT","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2639486","wikipedia":"en:Clapton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0308093,51.6555713]},"properties":{"name":"Brimsdown","naptan:AtcoCode":"9100BRIMSDN","network":"National Rail","operator":"Abellio Greater Anglia","public_transport":"station","railway":"station","ref:crs":"BMD","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q2440318","wikipedia":"en:Brimsdown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0285727,51.6708872]},"properties":{"name":"Enfield Lock","naptan:AtcoCode":"9100ENFLDLK","network":"National Rail","operator":"Abellio Greater Anglia","public_transport":"station","railway":"station","ref:crs":"ENL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"no","wheelchair":"yes","wikidata":"Q3296969","wikipedia":"en:Enfield Lock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.026414,51.6852217]},"properties":{"name":"Waltham Cross","naptan:AtcoCode":"9100WALHAMX","network":"National Rail","operator":"Abellio Greater Anglia","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WLC","wikidata":"Q2948632","wikipedia":"en:Waltham Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0106626,51.7468426]},"properties":{"name":"Broxbourne","naptan:AtcoCode":"9100BROXBRN","network":"National Rail","platforms":"4","public_transport":"station","railway":"station","ref:crs":"BXB","wikidata":"Q2968226","wikipedia":"en:Broxbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0355326,51.775456]},"properties":{"name":"Roydon","naptan:AtcoCode":"9100ROYDON","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"RYN","source_ref":"GPS survey","wikidata":"Q2039157","wikipedia":"en:Roydon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0950305,51.781287]},"properties":{"name":"Harlow Town","naptan:AtcoCode":"9100HRLWTWN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HWN","wikidata":"Q1988068","wikipedia":"en:Harlow Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1321036,51.7904439]},"properties":{"image":"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Harlow_Mill_Station.jpg/330px-Harlow_Mill_Station.jpg","name":"Harlow Mill","naptan:AtcoCode":"9100HRLWMIL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HWM","source_ref":"GPS survey","wikidata":"Q2738839","wikipedia":"en:Harlow Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1604602,51.8142786]},"properties":{"name":"Sawbridgeworth","naptan:AtcoCode":"9100SBDGWTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SAW","source_ref":"GPS survey","wikidata":"Q2046252","wikipedia":"en:Sawbridgeworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1992411,51.9012727]},"properties":{"name":"Stansted Mountfitchet","naptan:AtcoCode":"9100STANMFC","network":"National Rail","operator":"National Express East Anglia","public_transport":"station","railway":"station","ref:crs":"SST","wikidata":"Q2078357","wikipedia":"en:Stansted Mountfitchet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.227718,51.9207191]},"properties":{"name":"Elsenham","naptan:AtcoCode":"9100ELSENHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ESM","wikidata":"Q2805863","wikipedia":"en:Elsenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2153128,51.9796918]},"properties":{"name":"Newport","naptan:AtcoCode":"9100NEWPRTE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NWE","wikidata":"Q2342586","wikipedia":"en:Newport railway station (Essex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2070947,52.0044805]},"properties":{"name":"Audley End","naptan:AtcoCode":"9100AUDLEYE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AUD","ref:stanox":"47321","ref:tiploc":"AUDLEYE","wikidata":"Q2574881","wikipedia":"en:Audley End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1656879,52.1035456]},"properties":{"name":"Whittlesford Parkway","naptan:AtcoCode":"9100WTLESFD","network":"National Rail","note":"Name changed in Summer 2007 timetables","public_transport":"station","railway":"station","ref:crs":"WLF","wikidata":"Q1985489","wikipedia":"en:Whittlesford Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1398403,52.1492887]},"properties":{"name":"Shelford","naptan:AtcoCode":"9100SHELFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SED","wikidata":"Q4387174","wikipedia":"en:Shelford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2621537,51.8892596]},"properties":{"name":"Stansted Airport","naptan:AtcoCode":"9100STANAIR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SSD","wikidata":"Q2652717","wikipedia":"en:Stansted Airport railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0717552,51.799402]},"properties":{"addr:city":"Hertford","addr:postcode":"SG14 1SB","addr:street":"Railway Street","air_conditioning":"no","baby_feeding":"no","internet_access":"no","name":"Hertford East","naptan:AtcoCode":"9100HERTFDE","network":"National Rail","operator":"Greater Anglia","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HFE","start_date":"1843-10-31","train":"yes","website":"https://www.greateranglia.co.uk/travel-information/station-information/hfe","wheelchair":"yes","wikidata":"Q2472778","wikipedia":"en:Hertford East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0295377,51.8080948]},"properties":{"name":"Ware","naptan:AtcoCode":"9100WARE","network":"National Rail","platforms":"1","public_transport":"station","railway":"station","ref:crs":"WAR","wikidata":"Q2084928","wikipedia":"en:Ware railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0010843,51.7879595]},"properties":{"name":"St Margarets","naptan:AtcoCode":"9100SMARGRT","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SMT","wikidata":"Q2047890","wikipedia":"en:St Margarets railway station (Hertfordshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0055296,51.7693606]},"properties":{"name":"Rye House","naptan:AtcoCode":"9100RYEHOUS","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"RYH","wikidata":"Q1976943","wikipedia":"en:Rye House railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0162072,51.4685232]},"properties":{"addr:city":"London","addr:street":"Connington Road","light_rail":"yes","name":"Elverson Road","naptan:AtcoCode":"940GZZDLELV","network":"Docklands Light Railway","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wheelchair:description":"Flat access from platform to train. Bridge to other platform has steps and long, shallow easily navegable ramp. No toilet.","wikidata":"Q1334221","wikipedia":"en:Elverson Road DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0223933,51.4741638]},"properties":{"light_rail":"yes","name":"Deptford Bridge","naptan:AtcoCode":"940GZZDLDEP","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wheelchair:description":"Level access from platform to train. Access to platform via small lift or stairs. No toilets.","wikidata":"Q1191937","wikipedia":"en:Deptford Bridge DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0144418,51.4959022]},"properties":{"light_rail":"yes","name":"Crossharbour","naptan:AtcoCode":"940GZZDLCLA","network":"Docklands Light Railway","old_name":"Crossharbour & London Arena","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1141277","wikipedia":"en:Crossharbour DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0162525,51.5000357]},"properties":{"light_rail":"yes","name":"South Quay","naptan:AtcoCode":"940GZZDLSOQ","network":"Docklands Light Railway","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1459835","wikipedia":"en:South Quay DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0623526,51.502006]},"properties":{"light_rail":"yes","name":"King George V","naptan:AtcoCode":"940GZZDLKGV","network":"Docklands Light Railway","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1742030","wikipedia":"en:King George V DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0175953,51.5091026]},"properties":{"light_rail":"yes","name":"Royal Victoria","naptan:AtcoCode":"940GZZDLRVC","network":"Docklands Light Railway","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1973338","wikipedia":"en:Royal Victoria DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0259614,51.5096341]},"properties":{"light_rail":"yes","name":"Custom House for ExCeL","naptan:AtcoCode":"940GZZDLCUS","network":"Docklands Light Railway","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","website":"https://tfl.gov.uk/","wheelchair":"yes","wheelchair:description":"Access from the platform to the trains is easily possible with a wheelchair.","wikipedia":"en:Custom House for ExCeL DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0331521,51.5094778]},"properties":{"internet_access":"no","light_rail":"yes","name":"Prince Regent","naptan:AtcoCode":"940GZZDLPRE","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1806401","wikipedia":"en:Prince Regent DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0458839,51.5083952]},"properties":{"light_rail":"yes","name":"Royal Albert","naptan:AtcoCode":"940GZZDLRAL","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1777884","wikipedia":"en:Royal Albert DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0717937,51.5089622]},"properties":{"light_rail":"yes","name":"Gallions Reach","naptan:AtcoCode":"940GZZDLGAL","network":"Docklands Light Railway","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1492485","wikipedia":"en:Gallions Reach DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.061373,51.5143713]},"properties":{"light_rail":"yes","name":"Beckton","naptan:AtcoCode":"940GZZDLBEC","network":"Docklands Light Railway","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q813750","wikipedia":"en:Beckton DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0071843,51.5079378]},"properties":{"light_rail":"yes","name":"Blackwall","naptan:AtcoCode":"940GZZDLBLA","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q880956","wikipedia":"en:Blackwall DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0021873,51.5093835]},"properties":{"light_rail":"yes","name":"East India","naptan:AtcoCode":"940GZZDLEIN","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q168557","wikipedia":"en:East India DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.048542,51.5035322]},"properties":{"light_rail":"yes","name":"London City Airport","naptan:AtcoCode":"940GZZDLLCA","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1868954","wikipedia":"en:London City Airport DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0223323,51.5028811]},"properties":{"light_rail":"yes","name":"West Silvertown","naptan:AtcoCode":"940GZZDLWSV","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1972193","wikipedia":"en:West Silvertown DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0332232,51.5022501]},"properties":{"light_rail":"yes","name":"Pontoon Dock","naptan:AtcoCode":"940GZZDLPDK","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q543140","wikipedia":"en:Pontoon Dock DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2597818,51.5235769]},"properties":{"addr:city":"London","addr:housename":"North Acton Station","addr:postcode":"W3 6UP","addr:street":"Victoria Road","fare_zone":"2;3","line":"Central","name":"North Acton","naptan:AtcoCode":"940GZZLUNAN","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"survey","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q83842","wikipedia":"en:North Acton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.523221,53.5558849]},"properties":{"name":"Westhoughton","naptan:AtcoCode":"9100WSTHOTN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WHG","source":"npe","train":"yes","wikidata":"Q2751556","wikipedia":"en:Westhoughton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2233005,51.4921398]},"properties":{"fare_zone":"2","level":"-1","line":"Piccadilly;District","name":"Hammersmith (District and Piccadilly lines)","naptan:AtcoCode":"940GZZLUHSD","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikipedia":"en:Hammersmith tube station (District and Piccadilly lines)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1577774,51.392945]},"properties":{"name":"Mitcham Junction","naptan:AtcoCode":"9100MITCHMJ","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"MIJ","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q3280024","wikipedia":"en:Mitcham Junction station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5397317,53.5779831]},"properties":{"name":"Horwich Parkway","naptan:AtcoCode":"9100HORWICH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HWI","ref:tiploc":"HORWICH","wikidata":"Q2707094","wikipedia":"en:Horwich Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0766986,51.5098481]},"properties":{"covered":"yes","fare_zone":"1","layer":"-2","line":"District;Circle","location":"underground","name":"Tower Hill","name:da":"Tower Hill","name:ru":"Тауэр Хилл","naptan:AtcoCode":"940GZZLUTWH","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1475207","wikimedia_commons":"Category:Tower Hill tube station","wikipedia":"en:Tower Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.766657,54.6763739]},"properties":{"name":"Witton-le-Wear","network":"Weardale Railway","operator":"Weardale Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4015572,53.5562667]},"properties":{"name":"Moses Gate","naptan:AtcoCode":"9100MSGT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MSS","ref:tiploc":"MSGT","train":"yes","wikidata":"Q2682095","wikipedia":"en:Moses Gate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3885326,53.5504599]},"properties":{"name":"Farnworth","naptan:AtcoCode":"9100FRNW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FNW","ref:tiploc":"FRNW","source":"NPE","train":"yes","wikidata":"Q2043682","wikipedia":"en:Farnworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0957274,51.7579011]},"properties":{"name":"Bayford","naptan:AtcoCode":"9100BAYFORD","network":"National Rail","operator":"Great Northern","railway":"station","ref:crs":"BAY","wikidata":"Q2733560","wikipedia":"en:Bayford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1097981,51.7091464]},"properties":{"name":"Cuffley","naptan:AtcoCode":"9100CUFFLEY","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"CUF","wikidata":"Q2033388","wikipedia":"en:Cuffley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1072562,51.6847476]},"properties":{"name":"Crews Hill","naptan:AtcoCode":"9100CRHL","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"CWH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2514883","wikipedia":"en:Crews Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0946375,51.663247]},"properties":{"layer":"1","name":"Gordon Hill","naptan:AtcoCode":"9100GORDONH","network":"National Rail","opening_hours":"Mo-Fr 06:30-18:00; Sa 07:00-14:00; Su 08:00-18:00","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"GDH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q1871311","wikipedia":"en:Gordon Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0969391,51.6433292]},"properties":{"name":"Grange Park","naptan:AtcoCode":"9100GRPK","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"GPK","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q3125716","wikipedia":"en:Grange Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1101687,51.6186609]},"properties":{"name":"Palmers Green","naptan:AtcoCode":"9100PALMRSG","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"PAL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q7128305","wikipedia":"en:Palmers Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1116832,51.5863215]},"properties":{"name":"Hornsey","naptan:AtcoCode":"9100HRNSY","network":"National Rail","opening_hours":"Mo-Fr 07:00-14:30; Sa 07:00-15:00; Su off","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"HRN","ref:tiploc":"HRNSY","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q600848","wikipedia":"en:Hornsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0922384,51.7986797]},"properties":{"addr:city":"Hertford","addr:postcode":"SG14 1NB","addr:street":"North Road","air_conditioning":"no","name":"Hertford North","naptan:AtcoCode":"9100HFDN","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"HFN","train":"yes","website":"https://www.greatnorthernrail.com/travel-information/plan-your-journey/station-information/stations/hertford-north","wheelchair":"yes","wikidata":"Q2203044","wikipedia":"en:Hertford North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1204848,51.6071861]},"properties":{"name":"Bowes Park","naptan:AtcoCode":"9100BOWESPK","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"BOP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2600064","wikipedia":"en:Bowes Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2499296,51.5954091]},"properties":{"fare_zone":"4","line":"Northern","name":"Colindale","naptan:AtcoCode":"940GZZLUCND","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1108796","wikipedia":"en:Colindale tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.194027,51.5723003]},"properties":{"fare_zone":"3","line":"Northern","name":"Golders Green","naptan:AtcoCode":"940GZZLUGGN","network":"London Underground","operator":"TFL","public_transport":"station","railway":"station","source":"OS","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q2167448","wikipedia":"en:Golders Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4213375,51.5714026]},"properties":{"fare_zone":"6","line":"Metropolitan;Piccadilly","name":"Ruislip","naptan:AtcoCode":"940GZZLURSP","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wikidata":"Q1287877","wikipedia":"en:Ruislip tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3714658,51.5752109]},"properties":{"fare_zone":"5","line":"Metropolitan;Piccadilly","name":"Rayners Lane","naptan:AtcoCode":"940GZZLURYL","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can change between the Metropolitan line and Piccadilly line eastbound. You can change between the Metropolitan line and Piccadilly line westbound. Access from platform to train by manual boarding ramp.","wikidata":"Q7299331","wikipedia":"en:Rayners Lane"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.250749,51.5543358]},"properties":{"fare_zone":"3","line":"Jubilee","name":"Neasden","naptan:AtcoCode":"940GZZLUNDN","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1857076","wikipedia":"en:Neasden tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9372088,52.1172969]},"properties":{"addr:city":"Evesham","addr:postcode":"WR11 4TP","addr:street":"Evesham Country Park","name":"Evesham Vale Light Railway","public_transport":"station","railway":"station","source":"Bing","usage":"tourism","website":"http://www.evlr.co.uk/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4239942,51.4665357]},"properties":{"fare_zone":"5;6","level":"-1","line":"Piccadilly","name":"Hatton Cross","naptan:AtcoCode":"940GZZLUHNX","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1197072","wikipedia":"en:Hatton Cross tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3518348,51.4815507]},"properties":{"fare_zone":"4","line":"Piccadilly","name":"Osterley","naptan:AtcoCode":"940GZZLUOSY","network":"London Underground","operator":"TfL","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q651554","wikipedia":"en:Osterley tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2458881,51.4949692]},"properties":{"fare_zone":"2","line":"District","name":"Stamford Brook","naptan:AtcoCode":"940GZZLUSFB","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1342356","wikipedia":"en:Stamford Brook tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2546948,51.4951314]},"properties":{"fare_zone":"2;3","line":"District;Piccadilly","name":"Turnham Green","naptan:AtcoCode":"940GZZLUTNG","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q519434","wikipedia":"en:Turnham Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2678739,51.4945622]},"properties":{"fare_zone":"3","line":"District","name":"Chiswick Park","naptan:AtcoCode":"940GZZLUCWP","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1074875","wikipedia":"en:Chiswick Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0893199,53.4140086]},"properties":{"name":"Romiley","naptan:AtcoCode":"9100ROMILEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RML","source":"NPE","wikipedia":"en:Romiley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1104918,53.4230377]},"properties":{"name":"Bredbury","naptan:AtcoCode":"9100BREDBRY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"BDY","source":"NPE","wikipedia":"en:Bredbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1952305,53.4718438]},"properties":{"name":"Ashburys","naptan:AtcoCode":"9100ASHBRYS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ABY","source":"NPE","wheelchair":"no","wikidata":"Q1940660","wikipedia":"en:Ashburys railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1800733,53.4614732]},"properties":{"name":"Belle Vue","naptan:AtcoCode":"9100BLLVUE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLV","source":"Bing+OSSV","train":"yes","wikidata":"Q4367472","wikipedia":"en:Belle Vue railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6260289,53.3055623]},"properties":{"name":"Grindleford","naptan:AtcoCode":"9100GRNDLFD","network":"National Rail","railway":"station","ref:crs":"GRN","source":"NPE","wheelchair":"yes","wikidata":"Q4994209","wikipedia":"en:Grindleford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6894024,53.3391287]},"properties":{"name":"Bamford","naptan:AtcoCode":"9100BAMFORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BAM","wheelchair":"yes","wikidata":"Q3955872","wikipedia":"en:Bamford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8172462,53.3648176]},"properties":{"name":"Edale","naptan:AtcoCode":"9100EDALE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EDL","source":"npe","wikidata":"Q2859134","wikipedia":"en:Edale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0055693,53.3648638]},"properties":{"name":"New Mills Central","naptan:AtcoCode":"9100NWMILSC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NMC","source":"NPE","train":"yes","wikidata":"Q2022018","wikipedia":"en:New Mills Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0333062,53.374569]},"properties":{"name":"Strines","naptan:AtcoCode":"9100STRINES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SRN","source":"NPE","wikidata":"Q2551282","wikipedia":"en:Strines railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0572003,53.4006474]},"properties":{"name":"Marple","naptan:AtcoCode":"9100MARPLE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MPL","source":"NPE","train":"yes","wikipedia":"en:Marple railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7322101,53.2318152]},"properties":{"addr:postcode":"WA6 9EG","addr:street":"Station Road","name":"Mouldsworth","naptan:AtcoCode":"9100MLDSWTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MLD","wikidata":"Q4499800","wikipedia":"en:Mouldsworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6665302,53.2288345]},"properties":{"name":"Delamere","naptan:AtcoCode":"9100DELAMER","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DLM","website":"http://www.nationalrail.co.uk/stations/DLM/details.html","wikidata":"Q1931482","wikipedia":"en:Delamere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5995386,53.2399223]},"properties":{"name":"Cuddington","naptan:AtcoCode":"9100CUDNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CUD","wikidata":"Q2832836","wikipedia":"en:Cuddington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5344589,53.2514201]},"properties":{"addr:city":"Northwich","addr:street":"Chester Road","name":"Greenbank","naptan:AtcoCode":"9100GBNK","network":"National Rail","not:addr:postcode":"CW9 7NJ","phone":"+44 845 00 00 125","public_transport":"station","railway":"station","ref:crs":"GBK","source":"http://www.nationalrail.co.uk/stations/GBK/details.aspx","website":"https://www.northernrailway.co.uk/stations/GBK","wikipedia":"en:Greenbank railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4968484,53.2613648]},"properties":{"name":"Northwich","naptan:AtcoCode":"9100NTHWICH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NWI","wikipedia":"en:Northwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4196724,53.2748823]},"properties":{"name":"Plumley","naptan:AtcoCode":"9100PLUMLEY","network":"National Rail","railway":"station","ref:crs":"PLM","wikipedia":"en:Plumley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3721765,53.3015965]},"properties":{"name":"Knutsford","naptan:AtcoCode":"9100KNUTSFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KNF","wikipedia":"en:Knutsford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3470824,53.3876561]},"properties":{"name":"Altrincham","naptan:AtcoCode":"9100ALTRNHM","network":"National Rail","old_name":"Altrincham and Bowdon","public_transport":"station","railway":"station","ref:crs":"ALT","ref:tiploc":"ALTRNHM","wikidata":"Q1921455","wikipedia":"en:Altrincham Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3474975,53.3785218]},"properties":{"name":"Hale","naptan:AtcoCode":"9100HALE","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"HAL","wheelchair":"yes","wikipedia":"en:Hale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.193903,51.4916123]},"properties":{"fare_zone":"1;2","line":"District;Piccadilly","name":"Earl's Court","naptan:AtcoCode":"940GZZLUECT","network":"London Underground","platforms":"6","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1869-04-12","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1277562","wikimedia_commons":"Category:Earl's Court tube station","wikipedia":"en:Earl's Court tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1265241,51.5403111]},"properties":{"addr:city":"Dagenham","addr:country":"GB","addr:housename":"Becontree station","addr:postcode":"RM9 4TP","addr:street":"Gale Street","fare_zone":"5","line":"District","name":"Becontree","naptan:AtcoCode":"940GZZLUBEC","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-09-01","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q813772","wikipedia":"en:Becontree tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4117997,51.5733973]},"properties":{"addr:country":"GB","addr:postcode":"HA4 9AA","addr:street":"Victoria Road","fare_zone":"6","line":"Metropolitan;Piccadilly","name":"Ruislip Manor","naptan:AtcoCode":"940GZZLURSM","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q477733","wikipedia":"en:Ruislip Manor tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3695247,51.5484582]},"properties":{"addr:city":"Middlesex","addr:country":"GB","addr:housename":"Northolt Station","addr:postcode":"UB5 4AA","addr:street":"Mandeville Road","fare_zone":"5","line":"Central","name":"Northolt","naptan:AtcoCode":"940GZZLUNHT","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1317971","wikipedia":"en:Northolt tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3225887,51.5364952]},"properties":{"fare_zone":"4","line":"Central","name":"Perivale","naptan:AtcoCode":"940GZZLUPVL","network":"London Underground","public_transport":"station","railway":"station","source":"NPE","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1650871","wikipedia":"en:Perivale tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1033213,51.6717759]},"properties":{"fare_zone":"6","line":"Central","name":"Theydon Bois","naptan:AtcoCode":"940GZZLUTHB","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit the eastbound platform. Access from platform to train by manual boarding ramp.","wikipedia":"en:Theydon Bois tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0553002,51.6412212]},"properties":{"fare_zone":"6","line":"Central","name":"Loughton","naptan:AtcoCode":"940GZZLULGN","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikipedia":"en:Loughton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0340272,51.6068063]},"properties":{"fare_zone":"4","line":"Central","name":"Woodford","naptan:AtcoCode":"940GZZLUWOF","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikipedia":"en:Woodford tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2936453,51.5303098]},"properties":{"fare_zone":"3","line":"Central","name":"Hanger Lane","naptan:AtcoCode":"940GZZLUHGR","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1305890","wikipedia":"en:Hanger Lane tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2347689,51.5582655]},"properties":{"addr:city":"Hornchurch","addr:country":"GB","addr:housename":"Upminster Bridge Station","addr:postcode":"RM12 6PL","addr:street":"Upminster Road","fare_zone":"6","line":"District","name":"Upminster Bridge","naptan:AtcoCode":"940GZZLUUPB","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-09-05","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1489665","wikipedia":"en:Upminster Bridge tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2181092,51.5538747]},"properties":{"addr:city":"Hornchurch","addr:country":"GB","addr:housename":"Hornchurch Station","addr:postcode":"RM12 6LS","addr:street":"Station Lane","fare_zone":"6","layer":"1","line":"District","name":"Hornchurch","naptan:AtcoCode":"940GZZLUHCH","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-08-31","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1628404","wikipedia":"en:Hornchurch tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1649496,51.544018]},"properties":{"addr:country":"GB","addr:housename":"Dagenham East station","addr:street":"Rainham Road South","fare_zone":"5","layer":"1","line":"District","name":"Dagenham East","naptan:AtcoCode":"940GZZLUDGE","network":"London Underground","operator":"Transport for London","platforms":"3","public_transport":"station","railway":"station","source":"Survey of 2014-08-31","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1157204","wikipedia":"en:Dagenham East tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1456377,51.5415534]},"properties":{"addr:city":"Dagenham","addr:country":"GB","addr:housename":"Dagenham Heathway Station","addr:postcode":"RM9 5AN","addr:street":"Heathway","fare_zone":"5","layer":"1","line":"District","name":"Dagenham Heathway","naptan:AtcoCode":"940GZZLUDGY","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-09-01","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1157207","wikipedia":"en:Dagenham Heathway tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3026271,51.6188526]},"properties":{"addr:city":"Middlesex","addr:country":"GB","addr:postcode":"HA7 4PD","addr:street":"London Road","description":"The station has Wheelchair Access to the ticket office & platforms, although stairs connect the two. To get between them, the accessible route involves a footpath through the car park.","fare_zone":"5","line":"Jubilee","name":"Stanmore","naptan:AtcoCode":"940GZZLUSTM","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1757110","wikipedia":"en:Stanmore tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2947453,51.6080065]},"properties":{"building:levels":"1","fare_zone":"5","line":"Jubilee","name":"Canons Park","naptan:AtcoCode":"940GZZLUCPK","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1033599","wikipedia":"en:Canons Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1974303,51.549579]},"properties":{"addr:city":"Hornchurch","addr:housename":"Elm Park Station","addr:postcode":"RM12 4RW","addr:street":"The Broadway","fare_zone":"6","line":"District","name":"Elm Park","naptan:AtcoCode":"940GZZLUEPK","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-08-31","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1332680","wikipedia":"en:Elm Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0051322,51.5568183]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Leyton Station","addr:postcode":"E10 5PS","addr:street":"High Road Leyton","check_date:wheelchair":"2023-01-08","fare_zone":"3","line":"Central","name":"Leyton","naptan:AtcoCode":"940GZZLULYN","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"Survey of 2014-09-13","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1734740","wikipedia":"en:Leyton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2112429,51.4586138]},"properties":{"addr:housename":"East Putney Station","addr:street":"Station Approach","fare_zone":"2;3","line":"District","name":"East Putney","name:ru":"Ист-Путни","naptan:AtcoCode":"940GZZLUEPY","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1277984","wikipedia":"en:East Putney tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9302115,53.6032403]},"properties":{"name":"Marsden","naptan:AtcoCode":"9100MRSN","network":"National Rail","railway":"station","ref:crs":"MSN","wikidata":"Q1915469","wikipedia":"en:Marsden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1677485,53.4689321]},"properties":{"name":"Gorton","naptan:AtcoCode":"9100GORTON","network":"National Rail","old_name":"Gorton and Openshaw","public_transport":"station","railway":"station","ref:crs":"GTO","source":"NPE","wikipedia":"en:Gorton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1449235,53.4713232]},"properties":{"name":"Fairfield","naptan:AtcoCode":"9100FRFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FRF","source":"NPE","wikidata":"Q3190561","wikipedia":"en:Fairfield railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0142364,53.5387491]},"properties":{"addr:city":"Greenfield","addr:housename":"Greenfield Station","addr:postcode":"OL3 7JZ","addr:street":"Chew Valley Road","name":"Greenfield","naptan:AtcoCode":"9100GFLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GNF","source":"NPE","wheelchair":"limited","wikidata":"Q1954239","wikipedia":"en:Greenfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1143345,51.5109659]},"properties":{"addr:city":"London","fare_zone":"1","line":"District;Circle","name":"Temple","name:ru":"Темпль","naptan:AtcoCode":"940GZZLUTMP","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","start_date":"1870-05-30","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1431071","wikimedia_commons":"Category:Temple tube station","wikipedia":"en:Temple tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0199941,51.582893]},"properties":{"fare_zone":"3","line":"Victoria","name":"Walthamstow Central","name:ru":"Уолтемстоу Сентрал","naptan:AtcoCode":"9100WLTWCEN","network":"London Underground;London Overground","old_name":"4","platforms":"4","public_transport":"station","railway":"station","ref:crs":"WHC","source":"local knowledge","station":"subway","wheelchair":"limited","wheelchair:description":"London Overground access from platform to train by manual boarding ramp. Step-free platform interchange requires a 200m journey via street. Use the Station Approach entrance for southbound platform. Use the Selborne Road entrance for northbound platform.","wikidata":"Q801582","wikipedia":"en:Walthamstow Central station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0655796,51.4125891]},"properties":{"name":"Anerley","naptan:AtcoCode":"9100ANERLEY","network":"London Overground","network:wikidata":"Q746021","old_name":"Anerley Bridge","operator":"Transport for London","operator:wikidata":"Q682520","public_transport":"station","railway":"station","ref:crs":"ANZ","source:network":"sign","tfl_travelzone":"4","train":"yes","wheelchair":"limited","wheelchair:description":"Step-free from streets to platforms on both sides. Steps and footbridge between platforms.","wikidata":"Q2012789","wikipedia":"en:Anerley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0041243,52.8486248]},"properties":{"addr:city":"Stowe-by-Chartley","addr:housename":"Chartley Halt, Amerton Railway","addr:postcode":"ST18 0LA","addr:street":"A518","internet_access":"no","name":"Chartley Halt","network":"Amerton Railway","operator":"Amerton Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0104669,52.8478506]},"properties":{"addr:city":"Stowe-by-Chartley","addr:housename":"Amerton Railway","addr:postcode":"ST18 0LA","addr:street":"A518","email":"enquiries@amertonrailway.co.uk","internet_access":"no","name":"Amerton Station","network":"Amerton Railway","operator":"Amerton Railway","phone":"+44 1889271337","public_transport":"station","railway":"station","train":"yes","usage":"tourism","website":"https://www.amertonrailway.co.uk","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3000963,51.5408036]},"properties":{"addr:housename":"Alperton Station","addr:postcode":"HA0 4LL","addr:street":"Ealing Road","fare_zone":"4","line":"Piccadilly","name":"Alperton","naptan:AtcoCode":"940GZZLUALP","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1488320","wikipedia":"en:Alperton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1242695,51.5130942]},"properties":{"fare_zone":"1","line":"Piccadilly","name":"Covent Garden","name:en":"Covent Garden","name:ru":"Ковент-Гарден","naptan:AtcoCode":"940GZZLUCGN","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q38879","wikipedia":"en:Covent Garden tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1742097,51.5353523]},"properties":{"addr:housename":"St. John's Wood Station","fare_zone":"2","internet_access":"wlan","internet_access:access":"customers;Virgin Media;EE;Vodafone;O2","internet_access:operator":"Virgin Media","internet_access:ssid":"Virgin Media WiFi","line":"Jubilee","name":"St. John's Wood","naptan:AtcoCode":"940GZZLUSJW","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"OS","station":"subway","subway":"yes","website":"https://tfl.gov.uk/tube/stop/940GZZLUSJW/st-johns-wood-underground-station","wheelchair":"no","wikidata":"Q1549556","wikipedia":"en:St. John's Wood tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0526042,51.5394005]},"properties":{"fare_zone":"3;4","line":"District;Hammersmith & City","name":"East Ham","naptan:AtcoCode":"940GZZLUEHM","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1269975","wikipedia":"en:East Ham tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0123189,51.5246287]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Bromley-by-Bow Station","addr:postcode":"E3 3JJ","addr:street":"Blackwall Tunnel Northern Approach","fare_zone":"2;3","line":"District;Hammersmith & City","name":"Bromley-by-Bow","naptan:AtcoCode":"940GZZLUBBB","network":"London Underground","operator":"Transport for London","public_transport":"station","public_transport:version":"2","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q926679","wikipedia":"en:Bromley-by-Bow tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0186272,51.5035036]},"properties":{"fare_zone":"2","internet_access":"wlan","internet_access:fee":"no","line":"Jubilee","name":"Canary Wharf (Jubilee line)","name:zh":"金丝雀码头","naptan:AtcoCode":"940GZZLUCYF","network":"London Underground","noaddress":"yes","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1032842","wikipedia":"en:Canary Wharf tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2244449,51.5306063]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"NW10 5JT","addr:street":"College Road","fare_zone":"2","line":"Bakerloo","name":"Kensal Green","naptan:AtcoCode":"9100KENSLG","network":"National Rail;London Underground;London Overground","not:addr:postcode":"HA10 5JT","public_transport":"station","railway":"station","ref:crs":"KNL","ref:stanox":"72272","ref:tiploc":"KENSLG","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q800999","wikipedia":"en:Kensal Green station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.257833,51.5363567]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Harlesden Station","addr:postcode":"NW10 7AA","addr:street":"Acton Lane","fare_zone":"3","line":"Bakerloo","name":"Harlesden","naptan:AtcoCode":"9100HARLSDN","network":"London Underground;London Overground","public_transport":"station","railway":"station","ref:crs":"HDN","ref:stanox":"72033","ref:tiploc":"HARLSDN","source":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/List_of_London_Underground_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q800892","wikipedia":"en:Harlesden station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1899646,51.5468194]},"properties":{"colour":"silver","fare_zone":"2","layer":"1","line":"Jubilee","name":"West Hampstead","naptan:AtcoCode":"940GZZLUWHP","network":"London Underground","operator":"London Transport","public_transport":"station","railway":"station","source:building":"survey","source:name":"survey","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1857089","wikipedia":"en:West Hampstead tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0643453,51.4977004]},"properties":{"fare_zone":"2","line":"Jubilee","name":"Bermondsey","naptan:AtcoCode":"940GZZLUBMY","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q822041","wikipedia":"en:Bermondsey tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1429113,51.5066192]},"properties":{"fare_zone":"1","line":"Piccadilly;Victoria;Jubilee","name":"Green Park","name:ru":"Грин-парк","naptan:AtcoCode":"940GZZLUGPK","network":"London Underground","old_name":"Dover Street","operator":"London Underground","platforms":"4","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1366462","wikipedia":"en:Green Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1792895,53.4259927]},"properties":{"name":"Heaton Chapel","name:ur":"ہیٹن چیپل","naptan:AtcoCode":"9100HTCP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HTC","wikipedia":"en:Heaton Chapel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1924594,53.1577982]},"properties":{"name":"Congleton","naptan:AtcoCode":"9100CONGLTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CNG","wheelchair":"yes","wikipedia":"en:Congleton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1453161,53.2931107]},"properties":{"name":"Prestbury","naptan:AtcoCode":"9100PSBY","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"PRB","wikipedia":"en:Prestbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1336443,53.3197238]},"properties":{"name":"Adlington (Cheshire)","naptan:AtcoCode":"9100ADLC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ADC","wikidata":"Q2780857","wikipedia":"en:Adlington railway station (Cheshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4775114,51.546655]},"properties":{"fare_zone":"6","line":"Metropolitan;Piccadilly","name":"Uxbridge","naptan:AtcoCode":"940GZZLUUXB","network":"London Underground","operator":"LU ltd. on behalf of TfL","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1757126","wikipedia":"en:Uxbridge tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4504637,51.5536028]},"properties":{"addr:housename":"Hillingdon Station","addr:postcode":"UB10 9NR","addr:street":"Long Lane","alt_name":"Hillingdon (Swakeleys)","fare_zone":"6","line":"Metropolitan;Piccadilly","name":"Hillingdon","naptan:AtcoCode":"910GHLNDBUS","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q570560","wikipedia":"en:Hillingdon tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2265662,51.5017564]},"properties":{"addr:city":"London","addr:housename":"Goldhawk Road Station","addr:postcode":"W12 8EG","addr:street":"Goldhawk Road","fare_zone":"2","line":"Circle;Hammersmith & City","name":"Goldhawk Road","naptan:AtcoCode":"940GZZLUGHK","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"OS","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q301995","wikipedia":"en:Goldhawk Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2183251,51.5043576]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"W12 8ND","addr:street":"Uxbridge Road","alt_name":"Shepherd's Bush (Central line)","fare_zone":"2","line":"Central","name":"Shepherd's Bush","naptan:AtcoCode":"940GZZLUSBC","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","source":"Survey of 2014-06-13","station":"subway","subway":"yes","wheelchair":"no","wikipedia":"en:Shepherd's Bush tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2177873,51.5134749]},"properties":{"addr:city":"London","addr:postcode":"W10 6SZ","addr:street":"Bramley Road","fare_zone":"2","line":"Hammersmith & City;Circle","name":"Latimer Road","naptan:AtcoCode":"940GZZLULRD","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q736375","wikipedia":"en:Latimer Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1943721,51.5350704]},"properties":{"fare_zone":"2","line":"Bakerloo","name":"Kilburn Park","naptan:AtcoCode":"940GZZLUKPK","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q949382","wikipedia":"en:Kilburn Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1874439,51.5190222]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"W2 6ET","addr:street":"Lord Hills Bridge","fare_zone":"2","line":"Circle;Hammersmith & City","name":"Royal Oak","naptan:AtcoCode":"940GZZLURYO","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1757115","wikipedia":"en:Royal Oak tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1883854,51.5122764]},"properties":{"fare_zone":"1","line":"Circle;District","name":"Bayswater","name:ru":"Бейсуотер","naptan:AtcoCode":"940GZZLUBWT","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","start_date":"1868-10-01","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q812631","wikimedia_commons":"Category:Bayswater tube station","wikipedia":"en:Bayswater tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1921096,51.5002995]},"properties":{"fare_zone":"1","line":"Circle;District","name":"High Street Kensington","name:ru":"Хай Стрит Кенсингтон","naptan:AtcoCode":"940GZZLUHSK","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","ref":"ZHS","source":"Bing","start_date":"1868-10-01","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Step access only to all platforms from booking office and gateline.","wikidata":"Q634345","wikimedia_commons":"Category:High Street Kensington tube station","wikipedia":"en:High Street Kensington tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1837696,51.4945266]},"properties":{"fare_zone":"1","line":"Circle;District;Piccadilly","name":"Gloucester Road","name:da":"Gloucester Road Station","name:ru":"Глостер Роуд","naptan:AtcoCode":"940GZZLUGTR","network":"London Underground","public_transport":"station","railway":"station","source":"GPX;OS;survey for wheelmap 3/1/2020","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"Step-free from train to Circle line platforms 2 & 3 to view Mural on north retaining wall. Stairs only between platforms and to booking office and gateline.","wikidata":"Q1431088","wikipedia":"en:Gloucester Road tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1582531,51.513435]},"properties":{"alt_name:ru":"Мраморная арка","fare_zone":"1","line":"Central","name":"Marble Arch","name:da":"Marble Arch Station","name:ru":"Марбл-Арч","naptan:AtcoCode":"940GZZLUMBA","network":"London Underground","public_transport":"station","railway":"station","source":"OS","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q786259","wikipedia":"en:Marble Arch tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1437048,51.5238146]},"properties":{"fare_zone":"1","line":"Circle;Metropolitan;Hammersmith & City","name":"Great Portland Street","name:da":"Great Portland Street","naptan:AtcoCode":"940GZZLUGPS","network":"London Underground","old_name":"Portland Road","platforms":"2","public_transport":"station","railway":"station","source":"OS","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q946924","wikipedia":"en:Great Portland Street tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1385303,51.5247178]},"properties":{"fare_zone":"1","line":"Northern;Victoria","name":"Warren Street","naptan:AtcoCode":"940GZZLUWRR","network":"London Underground","old_name":"Euston Road","public_transport":"station","railway":"station","source":"survey","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1366438","wikipedia":"en:Warren Street tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1343573,51.5205978]},"properties":{"addr:city":"London","addr:postcode":"W1T 2HF","addr:street":"Tottenham Court Road","fare_zone":"1","line":"Northern","name":"Goodge Street","name:ru":"Гудж-стрит","naptan:AtcoCode":"940GZZLUGDG","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","start_date":"1907-06-22","station":"subway","subway":"yes","wheelchair":"no","wheelchair:description":"No level access","wikidata":"Q746880","wikipedia":"en:Goodge Street tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1036544,51.5463679]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Highbury & Islington Station","addr:postcode":"N5 1RA","addr:street":"Holloway Road","alt_name":"Highbury and Islington ELL","fare_zone":"2","internet_access":"wlan","internet_access:fee":"partial","line":"Overground;Victoria","name":"Highbury & Islington","name:el":"Χίβυρή & Ίσλινγκτον","naptan:AtcoCode":"9100HIGHBYA","network":"National Rail;London Underground;London Overground","operator":"London Underground","platforms":"8","public_transport":"station","railway":"station","ref:crs":"HHY","source":"survey","station":"subway","subway":"yes","website":"http://www.nationalrail.co.uk/stations_destinations/HHY.aspx","website:overground":"https://tfl.gov.uk/overground/stop/910GHGHI/highbury-islington-rail-station","website:tube":"https://tfl.gov.uk/tube/stop/940GZZLUHAI/highbury-islington-underground-station","wheelchair":"limited","wheelchair:description":"Level street access. Lifts from concourse to Overground platforms (1,2,7,8) + portable ramps. Escalators, then stairs to Victoria and GN platforms (3,4,5,6) No interchange underground.","wikidata":"Q800922","wikipedia":"en:Highbury & Islington station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9466548,53.4024926]},"properties":{"name":"Edge Hill","naptan:AtcoCode":"9100EDGH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EDG","wikidata":"Q1814188","wikipedia":"en:Edge Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.914829,53.3785566]},"properties":{"name":"Mossley Hill","naptan:AtcoCode":"9100MSLH","network":"National Rail","postal_code":"L18 8AG","public_transport":"station","railway":"station","ref:crs":"MSH","wheelchair":"yes","wikidata":"Q1998870","wikipedia":"en:Mossley Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9071937,53.3693253]},"properties":{"name":"West Allerton","naptan:AtcoCode":"9100WALERTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WSA","wheelchair":"no","wikidata":"Q2787611","wikipedia":"en:West Allerton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.830106,53.364495]},"properties":{"name":"Halewood","naptan:AtcoCode":"9100HALW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HED","wikidata":"Q2395635","wikipedia":"en:Halewood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7752696,53.3725786]},"properties":{"name":"Hough Green","naptan:AtcoCode":"9100HOUGHGR","network":"National Rail","operator":"Northern Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HGN","source":"NPE","wheelchair":"limited","wheelchair:description":"Platform for trains to Liverpool has step-free access through ticket office, and all trains that call here carry a wheelchair boarding ramp as a matter of course. However, the platform for trains to Warrington and Manchester is only accessible via steps.","wikidata":"Q2048141","wikipedia":"en:Hough Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6369293,53.3937436]},"properties":{"name":"Warrington West","naptan:AtcoCode":"910GWRGTWST","network":"National Rail","public_transport":"station","railway":"station","ref:STANOX":"36713","ref:crs":"WAW","ref:nalco":"658300","ref:tiploc":"WRGTWST","train":"yes","wikipedia":"en:Warrington West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6505871,53.3923448]},"properties":{"name":"Sankey for Penketh","naptan:AtcoCode":"9100SANKEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SNK","wikidata":"Q2489669","wikipedia":"en:Sankey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3116958,53.4547767]},"properties":{"name":"Trafford Park","naptan:AtcoCode":"9100TRFDPK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TRA","train":"yes","wikidata":"Q3932222","wikipedia":"en:Trafford Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3272609,53.4523337]},"properties":{"internet_access":"no","name":"Humphrey Park","naptan:AtcoCode":"9100HMPHRYP","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HUP","train":"yes","wikidata":"Q1957035","wikipedia":"en:Humphrey Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3839554,53.4437085]},"properties":{"name":"Flixton","naptan:AtcoCode":"9100FLIXTON","network":"National Rail","opening_hours":"Mo-Fr 06:25-13:45","operator":"Northern Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"FLI","train":"yes","wheelchair":"limited","wikidata":"Q2623299","wikipedia":"en:Flixton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3678327,53.4461647]},"properties":{"name":"Chassen Road","naptan:AtcoCode":"9100CHASNRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSR","train":"yes","wheelchair":"yes","wikidata":"Q2312347","wikipedia":"en:Chassen Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3536565,53.4483208]},"properties":{"name":"Urmston","name:lt":"Ermstonas","naptan:AtcoCode":"9100URMSTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"URM","train":"yes","wheelchair":"limited","wikidata":"Q2753494","wikipedia":"en:Urmston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4328454,53.4342044]},"properties":{"name":"Irlam","naptan:AtcoCode":"9100IRLAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"IRL","source":"NPE","train":"yes","wheelchair":"no","wikidata":"Q2539964","wikipedia":"en:Irlam railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5251395,53.4127822]},"properties":{"name":"Birchwood","naptan:AtcoCode":"9100BIRCHWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BWD","wikidata":"Q1846262","wikipedia":"en:Birchwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5569297,53.4056193]},"properties":{"name":"Padgate","naptan:AtcoCode":"9100PADGATE","network":"National Rail","railway":"station","ref:crs":"PDG","source":"NPE","wikidata":"Q7123720","wikipedia":"en:Padgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5924167,53.3919402]},"properties":{"addr:postcode":"WA2 7TT","addr:street":"Winwick Street","name":"Warrington Central","naptan:AtcoCode":"9100WRGT","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WAC","source":"NPE","wikidata":"Q2746238","wikipedia":"en:Warrington Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6430066,52.9065217]},"properties":{"name":"Grantham","naptan:AtcoCode":"9100GTHM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"GRA","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q4496900","wikipedia":"en:Grantham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0793598,52.9614057]},"properties":{"name":"Netherfield","naptan:AtcoCode":"9100NTHRFLD","network":"National Rail","operator":"East Midlands Railway","postal_code":"NG4 2JB","public_transport":"station","railway":"station","ref:crs":"NET","train":"yes","wikidata":"Q3308001","wikipedia":"en:Netherfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2664989,52.3906885]},"properties":{"addr:city":"Ely","addr:housename":"Ely Station","addr:postcode":"CB7 4BS","addr:street":"Station Road","internet_access":"no","name":"Ely","naptan:AtcoCode":"9100ELYY","network":"National Rail","network:wikidata":"Q26334","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"ELY","train":"yes","wheelchair":"yes","wikidata":"Q2324504","wikipedia":"en:Ely railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1454909,52.7494311]},"properties":{"name":"Barrow-upon-Soar","naptan:AtcoCode":"9100BAROWOS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BWS","wheelchair":"no","wikidata":"Q2146431","wikipedia":"en:Barrow-upon-Soar railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0825247,52.6940888]},"properties":{"name":"Syston","naptan:AtcoCode":"9100SYSTON","network":"National Rail","postal_code":"LE7 2HA","public_transport":"station","railway":"station","ref:crs":"SYS","wheelchair":"yes","wikidata":"Q2466439","wikipedia":"en:Syston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9001231,53.0651443]},"properties":{"name":"Rolleston","naptan:AtcoCode":"9100ROLSTN","network":"National Rail","old_name":"Rolleston Junction","public_transport":"station","railway":"station","ref:crs":"ROL","source":"NPE","wikidata":"Q2704279","wikipedia":"en:Rolleston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8131753,53.0802549]},"properties":{"name":"Newark Castle","naptan:AtcoCode":"9100NWRKCAS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"NCT","source":"NPE","train":"yes","wikidata":"Q4800289","wikipedia":"en:Newark Castle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9118374,53.0606002]},"properties":{"name":"Fiskerton","naptan:AtcoCode":"9100FISKRTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FSK","source":"NPE","wikidata":"Q606903","wikipedia":"en:Fiskerton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9435609,53.0414796]},"properties":{"name":"Bleasby","naptan:AtcoCode":"9100BLEASBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BSB","source":"NPE","wikidata":"Q2460860","wikipedia":"en:Bleasby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9622591,53.0289716]},"properties":{"name":"Thurgarton","naptan:AtcoCode":"9100THRGRTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"THU","source":"NPE","wikidata":"Q2333610","wikipedia":"en:Thurgarton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9982248,53.0064332]},"properties":{"name":"Lowdham","naptan:AtcoCode":"9100LOWDHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LOW","source":"NPE","wikidata":"Q6693095","wikipedia":"en:Lowdham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0787671,52.9650524]},"properties":{"name":"Carlton","naptan:AtcoCode":"9100CRTN","network":"National Rail","operator":"East Midlands Railway","postal_code":"NG4 2FD","public_transport":"station","railway":"station","ref:crs":"CTO","train":"yes","wikidata":"Q2051170","wikipedia":"en:Carlton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0412134,52.9832944]},"properties":{"name":"Burton Joyce","naptan:AtcoCode":"9100BRTJYC","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"BUJ","train":"yes","wikidata":"Q2608297","wikipedia":"en:Burton Joyce railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2311523,52.9064132]},"properties":{"name":"Attenborough","naptan:AtcoCode":"9100ATNBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ATB","wikidata":"Q2098552","wikipedia":"en:Attenborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4858584,52.9882284]},"properties":{"name":"Duffield","naptan:AtcoCode":"9100DUFIELD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DFI","source":"NPE","wikidata":"Q4027193","wikipedia":"en:Duffield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4825631,53.0242729]},"properties":{"name":"Belper","naptan:AtcoCode":"9100BELPER","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLP","source":"NPE","train":"yes","wikidata":"Q3148981","wikipedia":"en:Belper railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5042939,53.0834695]},"properties":{"name":"Whatstandwell","naptan:AtcoCode":"9100WATSTND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTS","source":"NPE","wikidata":"Q2313025","wikipedia":"en:Whatstandwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5490661,53.1129115]},"properties":{"name":"Cromford","naptan:AtcoCode":"9100CROMFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CMF","source":"NPE","wikidata":"Q2079568","wikipedia":"en:Cromford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5585511,53.1381136]},"properties":{"name":"Matlock","naptan:AtcoCode":"9100MATLOCK","network":"National Rail","network:wikidata":"Q26334","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"MAT","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q4591297","wikipedia":"en:Matlock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5568716,53.1225529]},"properties":{"name":"Matlock Bath","naptan:AtcoCode":"9100MATLCKB","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"MTB","source":"NPE","train":"yes","wikidata":"Q2537583","wikipedia":"en:Matlock Bath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1929575,53.4449044]},"properties":{"name":"Levenshulme","naptan:AtcoCode":"9100LVHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LVM","wheelchair":"no","wikipedia":"en:Levenshulme railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2136737,53.346446]},"properties":{"name":"Handforth","naptan:AtcoCode":"9100HNDFRTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HTH","wikipedia":"en:Handforth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2804386,53.2704221]},"properties":{"name":"Chelford","naptan:AtcoCode":"9100CHELFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CEL","source":"NPE","wheelchair":"yes","wikipedia":"en:Chelford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3511004,53.1992752]},"properties":{"name":"Holmes Chapel","naptan:AtcoCode":"9100HCHP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HCH","wheelchair":"yes","wikipedia":"en:Holmes Chapel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3937143,53.1502448]},"properties":{"name":"Sandbach","naptan:AtcoCode":"9100SBCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SDB","source":"NPE","wheelchair":"limited","wikipedia":"en:Sandbach railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1057696,51.5531063]},"properties":{"addr:city":"London","addr:housename":"Drayton Park Station","addr:postcode":"N5 1NT","addr:street":"Drayton Park","name":"Drayton Park","naptan:AtcoCode":"9100DRYP","network":"National Rail","network:wikidata":"Q26334","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"DYP","source":"Local knowledge","train":"yes","wheelchair":"no","wikidata":"Q682110","wikipedia":"en:Drayton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2615497,51.8911955]},"properties":{"building:levels":"1","level":"1","light_rail":"yes","name":"Main Terminal Building (Arrivals)","network":"Stansted Airport Terminal Link","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.222223,51.5493524]},"properties":{"fare_zone":"2;3","levels":"2","line":"Jubilee","name":"Willesden Green","naptan:AtcoCode":"940GZZLUWIG","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1857104","wikipedia":"en:Willesden Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2053385,51.5469889]},"properties":{"fare_zone":"2","layer":"1","line":"Jubilee","name":"Kilburn","naptan:AtcoCode":"940GZZLUKBN","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations#cite_note-usage-6","station":"subway","subway":"yes","wheelchair":"limited","wikidata":"Q1741248","wikipedia":"en:Kilburn tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.280413,51.5183524]},"properties":{"fare_zone":"3","line":"Central","name":"West Acton","naptan:AtcoCode":"940GZZLUWTA","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1363805","wikipedia":"en:West Acton tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3004127,51.4632072]},"properties":{"fare_zone":"4","line":"District","name":"Richmond","naptan:AtcoCode":"940GZZLURMD","network":"National Rail;London Underground;London Overground","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"RMD","source_ref":"https://en.wikipedia.org/wiki/Richmond_station_(London)","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q801366","wikipedia":"en:Richmond station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2755244,51.4913757]},"properties":{"fare_zone":"3","line":"District","name":"Gunnersbury","naptan:AtcoCode":"9100GNRSBRY","network":"London Underground;London Overground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"GUN","source":"NPE","source:network":"Sign","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"limited","wheelchair:description":"You can change between the District line and London Overground services. Access from platform to train by manual boarding ramp.","wikidata":"Q800858","wikipedia":"en:Gunnersbury station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2762285,51.5441099]},"properties":{"fare_zone":"3","layer":"1","line":"Bakerloo","name":"Stonebridge Park","naptan:AtcoCode":"9100STNBGPK","network":"London Underground;London Overground","network:subway":"London Overground","network:train":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"SBP","ref:stanox":"72098","ref:tiploc":"STNBGPK","source:network":"Sign","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q801474","wikipedia":"en:Stonebridge Park station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2435041,51.5321956]},"properties":{"addr:city":"London","addr:postcode":"NW10 4UY","addr:street":"Station Approach","fare_zone":"2;3","line":"Bakerloo","name":"Willesden Junction","naptan:AtcoCode":"9100WLSDNJL","network":"London Underground;London Overground","network:subway":"London Underground","network:train":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"WIJ","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q801623","wikipedia":"en:Willesden Junction station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1521585,53.390734]},"properties":{"name":"Davenport","naptan:AtcoCode":"9100DAVNPRT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DVN","source":"NPE","wikipedia":"en:Davenport railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1412433,53.3861409]},"properties":{"name":"Woodsmoor","naptan:AtcoCode":"9100WMOR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WSR","wikipedia":"en:Woodsmoor railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1221506,53.3774667]},"properties":{"name":"Hazel Grove","naptan:AtcoCode":"9100HAZL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HAZ","source":"NPE","wikipedia":"en:Hazel Grove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0426188,53.3582435]},"properties":{"name":"Disley","naptan:AtcoCode":"9100DISLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DSL","wikipedia":"en:Disley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0082028,53.3594641]},"properties":{"name":"New Mills Newtown","naptan:AtcoCode":"9100NWMILSN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NMN","train":"yes","wikidata":"Q2144777","wikipedia":"en:New Mills Newtown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9888665,53.348808]},"properties":{"name":"Furness Vale","naptan:AtcoCode":"9100FURNESV","network":"National Rail","railway":"station","ref:crs":"FNV","wikidata":"Q3182275","wikipedia":"en:Furness Vale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9183726,53.3120572]},"properties":{"name":"Chapel-en-le-Frith","naptan:AtcoCode":"9100CHEF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CEF","wikidata":"Q1839026","wikipedia":"en:Chapel-en-le-Frith railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8897118,53.3001375]},"properties":{"name":"Dove Holes","naptan:AtcoCode":"9100DVHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DVH","wikidata":"Q2280131","wikipedia":"en:Dove Holes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2390214,51.5519625]},"properties":{"fare_zone":"3","line":"Jubilee","name":"Dollis Hill","naptan:AtcoCode":"940GZZLUDOH","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1235761","wikipedia":"en:Dollis Hill tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2014098,51.5209265]},"properties":{"fare_zone":"2","line":"Hammersmith & City;Circle","name":"Westbourne Park","name:ru":"Уэстбурн-парк","naptan:AtcoCode":"940GZZLUWSP","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1857925","wikipedia":"en:Westbourne Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2698979,51.4997225]},"properties":{"name":"South Acton","naptan:AtcoCode":"9100SACTON","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SAT","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 1300m journey via street. Use the Kingswood Terrace entrance for westbound platform. Use the Palmerston Road entrance for eastbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q451653","wikipedia":"en:South Acton railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.284962,51.4771341]},"properties":{"fare_zone":"3;4","line":"District","name":"Kew Gardens","naptan:AtcoCode":"9100KEWGRDN","network":"London Underground;London Overground","platforms":"station","public_transport":"station","railway":"station","ref:crs":"KWG","source":"http://www.tfl.gov.uk/gettingaround/stations/1000125.aspx","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations;http://en.wikipedia.org/wiki/Kew_Gardens_station_(London)","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q801000","wikipedia":"en:Kew Gardens station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.686555,53.6985644]},"properties":{"name":"Leyland","naptan:AtcoCode":"9100LEYLAND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LEY","source":"NPE","wikipedia":"en:Leyland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7586794,54.661886]},"properties":{"addr:street":"Ullswater Road","alt_name":"Penrith","historic:name":"Penrith for Ullswater","name":"Penrith North Lakes","naptan:AtcoCode":"9100PNTH","network":"National Rail","platforms":"3","public_transport":"station","railway":"station","ref:crs":"PNR","train":"yes","wikidata":"Q2362780","wikipedia":"en:Penrith railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0793235,51.5402677]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"IG11 8TU","addr:street":"Station Parade","fare_zone":"4","line":"District;Hammersmith & City","name":"Barking","naptan:AtcoCode":"9100BARKING","network":"National Rail;London Underground;London Overground","operator":"c2c","platforms":"8","public_transport":"station","railway":"station","ref:crs":"BKG","source":"Survey of 2014-08-08","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q800451","wikipedia":"en:Barking station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2111019,51.5172639]},"properties":{"fare_zone":"2","line":"Circle;Hammersmith & City","name":"Ladbroke Grove","name:ru":"Лэдброк-Гроув","naptan:AtcoCode":"940GZZLULAD","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source_ref":"https//en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1411854","wikipedia":"en:Ladbroke Grove tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.099626,51.538266]},"properties":{"addr:city":"Barking","addr:country":"GB","addr:housename":"Upney station","addr:postcode":"IG11 9LS","addr:street":"Upney Lane","fare_zone":"4","layer":"1","line":"District","name":"Upney","naptan:AtcoCode":"940GZZLUUPY","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Survey of 2014-09-04","station":"subway","subway":"yes","wheelchair":"yes","wikidata":"Q1761206","wikipedia":"en:Upney tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2054958,51.533873]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Queen's Park Station","addr:postcode":"NW6 6NL","addr:street":"Salusbury Road","fare_zone":"2","line":"Bakerloo","name":"Queen's Park","naptan:AtcoCode":"9100QPRK","network":"London Underground;London Overground","network:subway":"London Underground","network:train":"London Overground","note:wheelchair":"No entry/exit","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"QPW","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","station":"subway","subway":"yes","train":"yes","wheelchair":"no","wikidata":"Q801347","wikipedia":"en:Queen's Park station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0599366,51.5881223]},"properties":{"fare_zone":"3","line":"Victoria","name":"Tottenham Hale","naptan:AtcoCode":"9100TTNHMHL","network":"National Rail;London Underground","old_name":"Tottenham","operator":"Abellio Greater Anglia","platforms":"2","public_transport":"station","railway":"station","ref:crs":"TOM","source":"local knowledge","source_ref":"https//en.wikipedia.org/wiki/List_of_London_railway_stations","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wikidata":"Q801529","wikipedia":"en:Tottenham Hale station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2055243,51.5071908]},"properties":{"description":"reopened","fare_zone":"2","line":"Central","name":"Holland Park","name:ru":"Холланд-парк","naptan:AtcoCode":"940GZZLUHPK","network":"London Underground","operator":"Transport for London","public_transport":"station","railway":"station","source":"Survey of 2015-12-20","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q615430","wikipedia":"en:Holland Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1355703,51.5256866]},"properties":{"fare_zone":"1","indoor":"area","layer":"-2","level":"-2","line":"Metropolitan;Circle;Hammersmith & City","name":"Euston Square","name:ru":"Юстон-сквер","naptan:AtcoCode":"940GZZLUESQ","network":"London Underground","old_name":"Gower Street","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","source":"Local knowledge","start_date":"1863-01-10","station":"subway","subway":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit the westbound Hammersmith & City, Circle and Metropolitan lines platform.","wikidata":"Q1366453","wikimedia_commons":"Category:Euston Square tube station","wikipedia":"en:Euston Square tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1395276,51.5419498]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"NW1 9LS","addr:street":"Camden Road","name":"Camden Road","naptan:AtcoCode":"9100CMDNRD","network":"National Rail;London Overground","old_name":"Camden Town","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"CMD","source:network":"sign","wheelchair":"yes","wikidata":"Q3146235","wikipedia":"en:Camden Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0501962,51.6100345]},"properties":{"name":"Meridian Water","naptan:AtcoCode":"910GMWRWSTN","network":"National Rail","opening_date":"2019-06-03","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:STANOX":"51925","ref:crs":"MRW","ref:nalco":"659900","ref:tiploc":"MWRWSTN","start_date":"2019-06-03","train":"yes","wheelchair":"yes","wikidata":"Q56273891","wikipedia":"en:Meridian Water railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0544564,51.4879512]},"properties":{"name":"South Bermondsey","naptan:AtcoCode":"9100SBRMNDS","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"SBM","wheelchair":"no","wikidata":"Q2470635","wikipedia":"en:South Bermondsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2699542,51.7534512]},"properties":{"name":"Oxford","name:cy":"Rhydychen","naptan:AtcoCode":"9100OXFD","network":"National Rail","platforms":"3","public_transport":"station","railway":"station","ref:crs":"OXF","wheelchair":"yes","wikidata":"Q1880536","wikipedia":"en:Oxford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0286373,51.575646]},"properties":{"fare_zone":"4","line":"Central","name":"Wanstead","naptan:AtcoCode":"940GZZLUWSD","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q663938","wikipedia":"en:Wanstead tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1872329,51.5104729]},"properties":{"fare_zone":"1","line":"Central","name":"Queensway","name:ru":"Квинсвей","naptan:AtcoCode":"940GZZLUQWY","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q649184","wikipedia":"en:Queensway tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0106896,51.481775]},"properties":{"light_rail":"yes","name":"Cutty Sark for Maritime Greenwich","naptan:AtcoCode":"940GZZDLCUT","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1146606","wikipedia":"en:Cutty Sark for Maritime Greenwich DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6394272,51.8059244]},"properties":{"name":"Witham","naptan:AtcoCode":"9100WITHAME","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTM","start_date":"1843 - 03 - 29","wheelchair":"yes","wikidata":"Q2369354","wikipedia":"en:Witham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7945675,51.531446]},"properties":{"name":"Shoeburyness","naptan:AtcoCode":"9100SHBRYNS","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"SRY","train":"yes","wikidata":"Q2267686","wikipedia":"en:Shoeburyness railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0059223,51.5460532]},"properties":{"fare_zone":"3","name":"Maryland","naptan:AtcoCode":"910GMRYLAND","network":"National Rail;Elizabeth Line","old_name":"Maryland Point","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"MYL","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2208884","wikipedia":"en:Maryland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1920126,51.5473011]},"properties":{"name":"West Hampstead","naptan:AtcoCode":"9100WHMDSTD","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"WHD","wheelchair":"limited","wheelchair:description":"London Overground access from platform to train by manual boarding ramp.","wikipedia":"en:West Hampstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0739505,51.5106288]},"properties":{"light_rail":"yes","name":"Tower Gateway","naptan:AtcoCode":"940GZZDLTWG","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1702680","wikimedia_commons":"Category:Tower Gateway DLR station","wikipedia":"en:Tower Gateway DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0139562,51.4656437]},"properties":{"addr:city":"London","addr:postcode":"SE13 7RY","addr:street":"Loampit Vale","internet_access":"no","name":"Lewisham","naptan:AtcoCode":"9100LEWISHM","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"LEW","train":"yes","wheelchair":"limited","wikidata":"Q801096","wikipedia":"en:Lewisham station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.192322,51.5484242]},"properties":{"name":"West Hampstead Thameslink","naptan:AtcoCode":"National Rail","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"WHP","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikipedia":"en:West Hampstead Thameslink railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0886537,51.3922136]},"properties":{"addr:city":"London","addr:postcode":"SE25 5QB","addr:street":"Selhurst Road","name":"Selhurst","naptan:AtcoCode":"9100SELHRST","network":"National Rail","network:train":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"SRS","source":"NPE","wheelchair":"yes","wikidata":"Q2365023","wikipedia":"en:Selhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4877251,51.4722216]},"properties":{"fare_zone":"6","name":"Heathrow Terminal 5","network":"National Rail;Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"HWV","train":"yes","wikipedia":"en:Heathrow Terminal 5 station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0016791,51.587041]},"properties":{"name":"Wood Street","naptan:AtcoCode":"9100WDST","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WST","ref:stanox":"52729","ref:tiploc":"WDST","wheelchair":"no","wikidata":"Q2457986","wikipedia":"en:Wood Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3569524,51.6025533]},"properties":{"name":"Headstone Lane","naptan:AtcoCode":"9100HEDSTNL","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"HDL","ref:stanox":"72006","ref:tiploc":"HEDSTNL","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"limited","wheelchair:description":"You can only enter and exit the northbound platform using the Headstone Lane side entrance. Access from platform to train by manual boarding ramp.","wikidata":"Q1824003","wikipedia":"en:Headstone Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3687836,51.6095781]},"properties":{"name":"Hatch End","naptan:AtcoCode":"9100HTCHEND","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"HTE","ref:stanox":"72005","ref:tiploc":"HTCHEND","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"You can only enter and exit the northbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q2676712","wikipedia":"en:Hatch End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5151778,53.539359]},"properties":{"name":"Daisy Hill","naptan:AtcoCode":"9100DAISYH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DSY","train":"yes","uic_ref":"7000641","wheelchair":"no","wikidata":"Q1822126","wikipedia":"en:Daisy Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3527491,53.5163626]},"properties":{"name":"Moorside","naptan:AtcoCode":"9100MRSD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MSD","source":"npe","train":"yes","wikidata":"Q3466304","wikipedia":"en:Moorside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.395748,53.5197861]},"properties":{"internet_access":"no","name":"Walkden","naptan:AtcoCode":"9100WALKDEN","network":"National Rail","old_name":"Walkden High Level","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"WKD","source":"npe","train":"yes","wikidata":"Q2491736","wikipedia":"en:Walkden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4778339,53.5290757]},"properties":{"name":"Atherton","naptan:AtcoCode":"9100ATHERTN","network":"National Rail","old_name":"Atherton Central","public_transport":"station","railway":"station","ref:crs":"ATN","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2474672","wikipedia":"en:Atherton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0375523,51.4646211]},"properties":{"name":"Brockley","naptan:AtcoCode":"9100BROCKLY","network":"London Overground","operator":"Transport for London","public_transport":"station","railway":"station","ref:crs":"BCY","source":"NPE+survey","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 50m journey via street. Access from platform to train by manual boarding ramp.","wikidata":"Q2736276","wikipedia":"en:Brockley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0450354,51.5521996]},"properties":{"fare_zone":"4","fixme":"Is this in zone 3 or 4","name":"Manor Park","naptan:AtcoCode":"9100MANRPK","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"MNP","train":"yes","wheelchair":"yes","wikidata":"Q1848488","wikipedia":"en:Manor Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0232808,51.549251]},"properties":{"fare_zone":"3","name":"Forest Gate","naptan:AtcoCode":"9100FRSTGT","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"FOG","source":"Survey of 2015-05-22","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2439437","wikipedia":"en:Forest Gate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.24295,51.6109222]},"properties":{"addr:city":"Didcot","addr:postcode":"OX11 7NR","addr:street":"Station Road","name":"Didcot Parkway","naptan:AtcoCode":"9100DIDCOTP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DID","uic_ref":"7000651","wikipedia":"en:Didcot Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9723236,51.4591971]},"properties":{"name":"Reading","naptan:AtcoCode":"9100RDNG4AB","network":"National Rail;Elizabeth Line","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"RDG","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q801355","wikipedia":"en:Reading railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.542979,51.5138815]},"properties":{"addr:city":"Bristol","addr:postcode":"BS34 8PU","addr:street":"Station Approach Road","name":"Bristol Parkway","naptan:AtcoCode":"9100BRSTPWY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BPW","wheelchair":"yes","wikidata":"Q800574","wikipedia":"en:Bristol Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3567189,51.3776019]},"properties":{"addr:city":"Bath","addr:postcode":"BA1 1SU","addr:street":"Dorchester Street","alt_name":"Bath Station","name":"Bath Spa","naptan:AtcoCode":"9100BATHSPA","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BTH","toilets:wheelchair":"yes","uic_ref":"7000353","website":"http://www.nationalrail.co.uk/stations_destinations/disabled_passengers.aspx","wheelchair":"yes","wheelchair:description":"Station has lifts available, book assistance ahead of time for boarding ramp. Radar toilet available, key available from staff.","wikidata":"Q637185","wikipedia":"en:Bath Spa railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.074364,51.4333628]},"properties":{"name":"Theale","naptan:AtcoCode":"9100THEALE","network":"National Rail","railway":"station","ref:crs":"THE","source":"NPE","wikidata":"Q2338556","wikipedia":"en:Theale railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5114295,51.4147137]},"properties":{"addr:city":"Hungerford","addr:street":"Station Road","internet_access":"no","name":"Hungerford","naptan:AtcoCode":"9100HUNGRFD","network":"National Rail","operator":"Great Western","public_transport":"station","railway":"station","ref:crs":"HGD","source":"NPE","wheelchair":"yes","wikidata":"Q2180574","wikipedia":"en:Hungerford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5988756,51.3795602]},"properties":{"addr:city":"Great Bedwyn","addr:street":"The Knapp","internet_access":"no","name":"Bedwyn","naptan:AtcoCode":"9100BEDYN","network":"National Rail","operator":"Great Western","public_transport":"station","railway":"station","ref:crs":"BDW","source":"NPE","wheelchair":"yes","wheelchair:description":"Wheelchair ramps available. Step-free between platforms via steep ramp from platform 1 (terminating trains) and narrow bridge. Platform 2 (towards Reading & Paddington) has level access from car park and bus stop.","wikidata":"Q2453952","wikipedia":"en:Bedwyn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.4439212,50.1705718]},"properties":{"name":"St Erth","naptan:AtcoCode":"9100STERTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SER","train":"yes","wheelchair":"limited","wikidata":"Q3301786","wikipedia":"en:St Erth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2977246,50.2102433]},"properties":{"name":"Camborne","naptan:AtcoCode":"9100CBORNE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CBN","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2018211","wikipedia":"en:Camborne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2258998,50.2331289]},"properties":{"name":"Redruth","naptan:AtcoCode":"9100REDRUTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"RED","source":"NPE","train":"yes","wikidata":"Q2708874","wikipedia":"en:Redruth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7893307,50.3395984]},"properties":{"name":"St Austell","naptan:AtcoCode":"9100STAUSTL","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAU","train":"yes","wikidata":"Q2743990","wikipedia":"en:St Austell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.7046126,50.3557151]},"properties":{"name":"Par","naptan:AtcoCode":"9100PARR","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PAR","source":"NPE","train":"yes","wikipedia":"en:Par railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.6660608,50.4071311]},"properties":{"name":"Lostwithiel","naptan:AtcoCode":"9100LSTWTHL","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"LOS","train":"yes","wikidata":"Q2268341","wikipedia":"en:Lostwithiel railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.6627595,50.4460054]},"properties":{"name":"Bodmin Parkway","naptan:AtcoCode":"9100BODMNPW","network":"National Rail","old_name":"Bodmin Road","public_transport":"station","railway":"station","ref:crs":"BOD","source":"NPE;OSM Contributor","wheelchair":"no","wikidata":"Q2838818","wikipedia":"en:Bodmin Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4695293,50.4468194]},"properties":{"name":"Liskeard","naptan:AtcoCode":"9100LISKARD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"LSK","source":"npe","train":"yes","wikidata":"Q2501606","wikipedia":"en:Liskeard railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6887478,50.4359143]},"properties":{"name":"Totnes","naptan:AtcoCode":"9100TOTNES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TOT","wheelchair":"yes","wikipedia":"en:Totnes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5992265,50.5301513]},"properties":{"electrified":"no","name":"Newton Abbot","naptan:AtcoCode":"9100NABT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NTA","wheelchair":"yes","wikipedia":"en:Newton Abbot railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3597427,50.9170751]},"properties":{"name":"Tiverton Parkway","naptan:AtcoCode":"9100TIVIPW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TVP","wikidata":"Q2463093","wikipedia":"en:Tiverton Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3099995,51.2274459]},"properties":{"name":"Frome","naptan:AtcoCode":"9100FROME","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"FRO","source":"NPE","train":"yes","wikidata":"Q1982991","wikipedia":"en:Frome railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7706724,51.3422381]},"properties":{"name":"Pewsey","naptan:AtcoCode":"9100PEWSEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PEW","source":"NPE","wikidata":"Q2028949","wikipedia":"en:Pewsey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1997296,51.2663283]},"properties":{"name":"Westbury","naptan:AtcoCode":"9100WSTBRYW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WSB","wheelchair":"yes","wikidata":"Q1980683","wikipedia":"en:Westbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9907169,51.4546483]},"properties":{"name":"Reading West","naptan:AtcoCode":"9100REDGWST","network":"National Rail","railway":"station","ref:crs":"RDW","source":"NPE","wheelchair":"limited","wikidata":"Q2474528","wikipedia":"en:Reading West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2427417,51.3938591]},"properties":{"name":"Thatcham","naptan:AtcoCode":"9100THATCHM","network":"National Rail","railway":"station","ref:crs":"THA","source":"NPE","wikidata":"Q2605037","wikipedia":"en:Thatcham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4459175,51.4026136]},"properties":{"name":"Kintbury","naptan:AtcoCode":"9100KNTBRY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KIT","source":"NPE","train":"yes","wheelchair":"yes","wikidata":"Q2474287","wikipedia":"en:Kintbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3567991,52.0798427]},"properties":{"addr:postcode":"WR13 6RN","name":"Colwall","naptan:AtcoCode":"9100CLWALL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CWL","wikidata":"Q2647190","wikipedia":"en:Colwall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4256108,52.0452528]},"properties":{"name":"Ledbury","naptan:AtcoCode":"9100LDBURY","network":"National Rail","postal_code":"HR8 1AR","public_transport":"station","railway":"station","ref:crs":"LED","source":"survey","wheelchair":"no","wikipedia":"en:Ledbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0723991,52.1307399]},"properties":{"name":"Pershore","naptan:AtcoCode":"9100PERSHOR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PSH","source":"NPE","wikidata":"Q2185064","wikipedia":"en:Pershore railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4897686,51.8723271]},"properties":{"name":"Charlbury","naptan:AtcoCode":"9100CHBURY","network":"National Rail","operator":"Great Western Railway","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CBY","wheelchair":"yes","wikidata":"Q2779541","wikipedia":"en:Charlbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3181313,52.1093038]},"properties":{"addr:postcode":"WR14 3AL","addr:street":"Avenue Road","name":"Great Malvern","name:lt":"Didysis Molvernas","naptan:AtcoCode":"9100GTMLVRN","network":"National Rail","operator":"London Midland","public_transport":"station","railway":"station","ref:crs":"GMV","source":"NPE","wheelchair":"yes","wikidata":"Q2959698","wikipedia":"en:Great Malvern railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2093282,52.1950309]},"properties":{"name":"Worcester Shrub Hill","naptan:AtcoCode":"9100WORCSSH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WOS","train":"yes","wikidata":"Q1974749","wikipedia":"en:Worcester Shrub Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7002657,51.9921819]},"properties":{"name":"Moreton-in-Marsh","naptan:AtcoCode":"9100MINMARS","network":"National Rail","network:wikidata":"Q26334","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"MiM","train":"yes","wikidata":"Q2369749","wikipedia":"en:Moreton-in-Marsh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9472858,52.0984969]},"properties":{"name":"Evesham","naptan:AtcoCode":"9100EVESHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EVE","source":"NPE","wikidata":"Q2416634","wikipedia":"en:Evesham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8336821,52.1016406]},"properties":{"name":"Honeybourne","naptan:AtcoCode":"9100HONYBRN","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"HYB","source":"NPE;local knowledge","wikidata":"Q5373459","wikipedia":"en:Honeybourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.628532,51.9024116]},"properties":{"name":"Kingham","naptan:AtcoCode":"9100KINGHAM","network":"National Rail","operator":"GWR","public_transport":"station","railway":"station","ref:crs":"KGM","wikidata":"Q2183686","wikipedia":"en:Kingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3726319,51.8247081]},"properties":{"name":"Hanborough","naptan:AtcoCode":"9100HANDBRO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HND","toilets:wheelchair":"no","website":"http://www.nationalrail.co.uk/stations-and-destinations/stations-made-easy/hanborough-station-plan","wheelchair":"yes","wheelchair:description":"Single platform for Both directions. 2x3 Dedicated Blue Badge spaces and drop-off zone near entrances to platform, others nearby. Step-free to museum and bus stops.","wikidata":"Q2582643","wikipedia":"en:Hanborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2695495,51.3343527]},"properties":{"name":"Epsom","naptan:AtcoCode":"910GEPSM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"EPS","train":"yes","wikidata":"Q1907314","wikipedia":"en:Epsom railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3277563,52.0605712]},"properties":{"name":"Banbury","naptan:AtcoCode":"9100BNBR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BAN","source":"NPE","wheelchair":"yes","wikidata":"Q2092204","wikipedia":"en:Banbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5358026,52.28461]},"properties":{"alt_name":"Leamington Spa railway station","name":"Leamington Spa","naptan:AtcoCode":"9100LMNGTNS","network":"National Rail","operator":"West Midlands Railway","public_transport":"station","railway":"station","ref:crs":"LMS","wheelchair":"yes","wikidata":"Q1971430","wikipedia":"en:Leamington Spa railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3200089,51.0672545]},"properties":{"addr:city":"Winchester","addr:country":"GB","addr:postcode":"SO23 8TJ","name":"Winchester","naptan:AtcoCode":"9100WNCHSTR","network":"National Rail","network:wikidata":"Q26334","operator":"South West Trains","public_transport":"station","railway":"station","ref:crs":"WIN","train":"yes","wikidata":"Q2698494","wikipedia":"en:Winchester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3629471,50.9506997]},"properties":{"name":"Southampton Airport Parkway","naptan:AtcoCode":"9100SOTPKWY","network":"National Rail","postal_code":"SO18 2HW","public_transport":"station","railway":"station","ref:crs":"SOA","wikidata":"Q4047567","wikipedia":"en:Southampton Airport Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8641943,50.7272094]},"properties":{"name":"Bournemouth","name:en":"Bournemouth","name:lt":"Bornmutas","naptan:AtcoCode":"9100BOMO","network":"National Rail","old_name":"Bournemouth Central","public_transport":"station","railway":"station","ref:crs":"BMH","wheelchair":"yes","wikidata":"Q4950306","wikipedia":"en:Bournemouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.120242,52.5879884]},"properties":{"name":"Wolverhampton","naptan:AtcoCode":"9100WVRMPTN","network":"National Rail","old_name":"Wolverhampton High Level","public_transport":"station","railway":"station","ref:crs":"WVH","west_midlands_fare_zone":"5","wheelchair":"yes","wikidata":"Q2361188","wikipedia":"en:Wolverhampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7077717,52.5165155]},"properties":{"former_name":"Forge Mills","name":"Coleshill Parkway","naptan:AtcoCode":"9100COLESHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CEH","wikidata":"Q5144669","wikipedia":"en:Coleshill Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7343447,52.6722903]},"properties":{"name":"Oakham","naptan:AtcoCode":"9100OAKHAM","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"OKM","train":"yes","wikidata":"Q580151","wikipedia":"en:Oakham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5641036,52.8533792]},"properties":{"layer":"1","name":"Willington","naptan:AtcoCode":"9100WLNTNON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WIL","source":"memory","wikidata":"Q746608","wikipedia":"en:Willington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9366269,52.4512673]},"properties":{"alt_name":"University Station","name":"University","naptan:AtcoCode":"9100UNVRSYB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"UNI","source":"knowledge","west_midlands_fare_zone":"2","wheelchair":"yes","wikidata":"Q2158861","wikipedia":"en:University railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2382438,51.8655109]},"properties":{"name":"Gloucester","naptan:AtcoCode":"9100GLOSTER","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway","postal_code":"GL1 1DE","public_transport":"station","railway":"station","ref:crs":"GCR","train":"yes","wheelchair":"yes","wikipedia":"en:Gloucester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6424988,52.8058728]},"properties":{"layer":"2","level":"0","name":"Burton-on-Trent","name:lt":"Bertonas prie Trento","naptan:AtcoCode":"9100BURTNOT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BUT","train":"yes","wikidata":"Q2011595","wikipedia":"en:Burton-on-Trent railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4543118,51.4719282]},"properties":{"alt_name":"Heathrow Central","fare_zone":"6","name":"Heathrow Terminals 2 & 3","naptan:AtcoCode":"9100HTRWAPT","network":"National Rail;Elizabeth Line","network:train":"National Rail","old_name":"Heathrow Terminals 1, 2, 3","operator":"Heathrow Airport Holdings","owner":"Heathrow Airport Holdings","public_transport":"station","railway":"station","ref:crs":"HXX","source:alt_name":"Sign","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikipedia":"en:Heathrow Terminals 2 & 3 railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2421857,51.308624]},"properties":{"internet_access":"no","name":"Tattenham Corner","naptan:AtcoCode":"910GTATNHMC","network":"National Rail","operator":"Southern Rail","public_transport":"station","railway":"station","ref:crs":"TAT","wheelchair":"yes","wikipedia":"en:Tattenham Corner railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.257131,51.3501115]},"properties":{"name":"Ewell West","naptan:AtcoCode":"910GEWELW","network":"National Rail","network:train":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"EWW","wheelchair":"limited","wikipedia":"en:Ewell West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2345092,54.5791464]},"properties":{"name":"Middlesbrough","name:ur":"مڈلزبرو","naptan:AtcoCode":"9100MDLSBRO","network":"National Rail","operator":"First TransPennine Express","public_transport":"station","railway":"station","ref:crs":"MBR","toilets:wheelchair":"limited","uic_ref":"7001502","wheelchair":"limited","wikidata":"Q2102917","wikipedia":"en:Middlesbrough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.207832,54.6868261]},"properties":{"addr:city":"Hartlepool","addr:housename":"Station Approach","addr:postcode":"TS24 7ED","addr:street":"Station Road","alt_name:ur":"ہارٹلیپول","name":"Hartlepool","name:ur":"ہارٹلے پول","naptan:AtcoCode":"9100HRTLEPL","network":"National Rail","old_name":"West Hartlepool","operator":"Northern Rail","phone":"+44 333 222 0125","public_transport":"station","railway":"station","ref:crs":"HPL","source":"http://www.nationalrail.co.uk/stations_destinations/HPL.aspx","website":"http://www.nationalrail.co.uk/stations_destinations/HPL.aspx","wheelchair":"yes","wikidata":"Q4046880","wikipedia":"en:Hartlepool railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2720385,53.365183]},"properties":{"addr:postcode":"M90 3RR","name":"Manchester Airport","naptan:AtcoCode":"9100MNCRIAP","network":"National Rail","operator":"First TransPennine Express","public_transport":"station","railway":"station","ref:crs":"MIA","train":"yes","wheelchair":"yes","wikidata":"Q2453867","wikipedia":"en:Manchester Airport station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3855109,51.6279135]},"properties":{"addr:postcode":"WD19 7DT","addr:street":"Prestwick Road","name":"Carpenders Park","naptan:AtcoCode":"9100CRPNDPK","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"CPK","ref:stanox":"72004","ref:tiploc":"CRPNDPK","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wikipedia":"en:Carpenders Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6773449,51.9161989]},"properties":{"addr:city":"Leighton Buzzard","addr:postcode":"LU7 2LY","addr:street":"Station Approach","internet_access":"no","name":"Leighton Buzzard","naptan:AtcoCode":"9100LTNBZRD","network":"National Rail","network:wikidata":"Q26334","operator":"West Midlands Trains","operator:wikidata":"Q39052868","platforms":"4","public_transport":"station","railway":"station","ref:crs":"LBZ","ref:tiploc":"LTNBZRD","source":"bing","tiploc":"LTNBZRD","wheelchair":"yes","wikidata":"Q658331","wikipedia":"en:Leighton Buzzard railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9651246,52.4082951]},"properties":{"name":"Northfield","naptan:AtcoCode":"9100NRTF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NFD","west_midlands_fare_zone":"4","wheelchair":"yes","wikidata":"Q2297133","wikipedia":"en:Northfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5135474,52.400739]},"properties":{"addr:city":"Coventry","addr:postcode":"CV1 2GT","addr:street":"Station Square","name":"Coventry","naptan:AtcoCode":"9100COVNTRY","network":"National Rail","operator":"Virgin Trains","platforms":"4","public_transport":"station","railway":"station","ref:crs":"COV","start_date":"1962","west_midlands_fare_zone":"5","wheelchair":"5","wikidata":"Q2058701","wikipedia":"en:Coventry railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3848946,50.9834549]},"properties":{"name":"Chandler's Ford","naptan:AtcoCode":"9100CSFD","network":"National Rail","railway":"station","ref:crs":"CFR","source":"Bing","wikidata":"Q3167842","wikipedia":"en:Chandler's Ford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.321223,51.4423531]},"properties":{"layer":"2","name":"Ebbsfleet International","naptan:AtcoCode":"9100EBSFLTI","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EBD","source":"Bing","train":"yes","wikidata":"Q800703","wikipedia":"en:Ebbsfleet International railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7071573,53.7552898]},"properties":{"addr:postcode":"PR1 8AP","addr:street":"Fishergate","name":"Preston","naptan:AtcoCode":"9100PRST","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PRE","train":"yes","wikidata":"Q2441793","wikipedia":"en:Preston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5498339,51.3865507]},"properties":{"addr:city":"Gillingham","addr:postcode":"ME7 1XE","addr:street":"Railway Street","name":"Gillingham","naptan:AtcoCode":"9100GLNGHMK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GLM","train":"yes","website":"http://www.nationalrail.co.uk/stations_destinations/GLM.aspx","wheelchair":"yes","wikidata":"Q2086117","wikipedia":"en:Gillingham railway station (Kent)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.553519,53.241569]},"properties":{"addr:city":"Northwich","addr:street":"Chester Road","name":"Hartford","naptan:AtcoCode":"9100HARTFD","network":"National Rail","phone":"+44 845 604 0500","public_transport":"station","railway":"station","ref:crs":"HTF","source":"http://www.nationalrail.co.uk/stations/HTF/details.aspx","website":"http://www.nationalrail.co.uk/stations/HTF/details.aspx","wheelchair":"limited","wikipedia":"en:Hartford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0021679,51.4059051]},"properties":{"name":"Shortlands","naptan:AtcoCode":"9100SHRTLND","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SRT","train":"yes","wheelchair":"no","wikidata":"Q1819241","wikipedia":"en:Shortlands railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4033747,51.2045463]},"properties":{"name":"Beltring","naptan:AtcoCode":"9100BLTRNAB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEG","source":"NPE","train":"yes","wikidata":"Q2680767","wikipedia":"en:Beltring railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4121616,51.2266654]},"properties":{"name":"Yalding","naptan:AtcoCode":"9100YALDING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"YAL","source":"Bing","wikidata":"Q2109915","wikipedia":"en:Yalding railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4222989,51.2496596]},"properties":{"name":"Wateringbury","naptan:AtcoCode":"9100WTRNGBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTR","source":"NPE","train":"yes","wikipedia":"en:Wateringbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4844783,51.2552513]},"properties":{"name":"East Farleigh","naptan:AtcoCode":"9100EFARLGH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"EFL","source":"NPE","train":"yes","wikidata":"Q3065808","wikipedia":"en:East Farleigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5157564,51.2703088]},"properties":{"name":"Maidstone West","naptan:AtcoCode":"9100MSTONEW","network":"National Rail","network:wikidata":"Q26334","postal_code":"ME16 8RJ","public_transport":"station","railway":"station","ref:crs":"MDW","source":"NPE","train":"yes","wikipedia":"en:Maidstone West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5141731,51.2770433]},"properties":{"name":"Maidstone Barracks","naptan:AtcoCode":"9100MSTONEB","network":"National Rail","network:wikidata":"Q26334","postal_code":"ME16 0SQ","public_transport":"station","railway":"station","ref:crs":"MDB","train":"yes","wikidata":"Q2913119","wikipedia":"en:Maidstone Barracks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4657666,51.3015328]},"properties":{"name":"Aylesford","naptan:AtcoCode":"9100AYLESFD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"AYL","source":"NPE","train":"yes","wikidata":"Q2578339","wikipedia":"en:Aylesford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4551387,51.3128389]},"properties":{"name":"New Hythe","naptan:AtcoCode":"9100NWHYTHE","network":"National Rail","network:wikidata":"Q26334","postal_code":"ME20 6XJ","public_transport":"station","railway":"station","ref:crs":"NHE","train":"yes","wikidata":"Q2244436","wikipedia":"en:New Hythe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4484399,51.3302228]},"properties":{"name":"Snodland","naptan:AtcoCode":"9100SNODLND","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SDA","train":"yes","wikipedia":"en:Snodland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4451218,51.3523741]},"properties":{"name":"Halling","naptan:AtcoCode":"9100HALG","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"HAI","train":"yes","wikidata":"Q2122913","wikipedia":"en:Halling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.461982,51.373911]},"properties":{"name":"Cuxton","naptan:AtcoCode":"9100CXTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CUX","train":"yes","wheelchair":"yes","wikidata":"Q2456141","wikipedia":"en:Cuxton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5002689,51.3965972]},"properties":{"name":"Strood","naptan:AtcoCode":"9100STROOD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOO","wheelchair":"yes","wikipedia":"en:Strood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3048692,51.1259357]},"properties":{"addr:postcode":"CT17 9SB","name":"Dover Priory","naptan:AtcoCode":"9100DOVERP","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DVP","source":"survey","toilets:wheelchair":"yes","train":"yes","uic_ref":"7000004","wheelchair":"limited","wikidata":"Q2666521","wikipedia":"en:Dover Priory railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1222644,51.300986]},"properties":{"name":"Sturry","naptan:AtcoCode":"9100STURRY","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"STU","wikidata":"Q2519465","wikipedia":"en:Sturry railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0179051,51.2571747]},"properties":{"name":"Chartham","naptan:AtcoCode":"9100CHARTHM","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CRT","wheelchair":"yes","wikidata":"Q2774125","wikipedia":"en:Chartham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9760562,51.2444245]},"properties":{"name":"Chilham","naptan:AtcoCode":"9100CLMN","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CIL","wikidata":"Q3333628","wikipedia":"en:Chilham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0382037,51.0949221]},"properties":{"name":"Westenhanger","naptan:AtcoCode":"9100WENHNGR","network":"National Rail","railway":"station","ref:crs":"WHA","wikidata":"Q2548598","wikipedia":"en:Westenhanger railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0660027,51.0904998]},"properties":{"name":"Sandling","naptan:AtcoCode":"9100SDLG","network":"National Rail","railway":"station","ref:crs":"SDG","wikidata":"Q1863660","wikipedia":"en:Sandling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1683853,51.0828121]},"properties":{"name":"Folkestone Central","naptan:AtcoCode":"9100FLKSTNC","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"FKC","source":"naptan_import;survey","train":"yes","uic_ref":"7000005","wikidata":"Q2081146","wikipedia":"en:Folkestone Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1537821,51.0847184]},"properties":{"name":"Folkestone West","naptan:AtcoCode":"9100FLKSTNW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FKW","wikidata":"Q2313864","wikipedia":"en:Folkestone West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3894941,51.1823581]},"properties":{"name":"Paddock Wood","naptan:AtcoCode":"9100PKWD","network":"National Rail","railway":"station","ref:crs":"PDW","wikidata":"Q2063096","wikipedia":"en:Paddock Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7472664,51.1564283]},"properties":{"name":"Pluckley","naptan:AtcoCode":"9100PLUCKLY","network":"National Rail","railway":"station","ref:crs":"PLC","wikidata":"Q2346536","wikipedia":"en:Pluckley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6273669,51.1656292]},"properties":{"name":"Headcorn","naptan:AtcoCode":"9100HEADCRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HCN","wikidata":"Q2482799","wikipedia":"en:Headcorn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5504987,51.1715258]},"properties":{"name":"Staplehurst","naptan:AtcoCode":"9100SPHS","network":"National Rail","railway":"station","ref:crs":"SPU","wikidata":"Q2076171","wikipedia":"en:Staplehurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4929884,51.1754411]},"properties":{"name":"Marden","naptan:AtcoCode":"9100MARDEN","network":"National Rail","railway":"station","ref:crs":"MRN","wikidata":"Q2666551","wikipedia":"en:Marden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2707171,51.1914337]},"properties":{"addr:postcode":"TN9 1TT","addr:street":"Barden Road","name":"Tonbridge","naptan:AtcoCode":"9100TONBDG","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TON","train":"yes","wheelchair":"yes","wikidata":"Q2127426","wikipedia":"en:Tonbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1678721,51.3930961]},"properties":{"name":"Swanley","naptan:AtcoCode":"9100SWLY","network":"National Rail","platforms":"4","public_transport":"station","railway":"station","ref:crs":"SAY","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q946238","wikipedia":"en:Swanley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1987288,51.2413424]},"properties":{"name":"Adisham","naptan:AtcoCode":"9100ADISHAM","network":"National Rail","railway":"station","ref:crs":"ADM","source":"NPE","uic_ref":"7000036","wikidata":"Q1996073","wikipedia":"en:Adisham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1372301,51.2614031]},"properties":{"name":"Bekesbourne","naptan:AtcoCode":"9100BEKSBRN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BKS","source":"survey;local knowledge","train":"yes","wheelchair":"limited","wikidata":"Q4881599","wikipedia":"en:Bekesbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.07582,51.274185]},"properties":{"name":"Canterbury East","naptan:AtcoCode":"9100CNTBE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CBE","wheelchair":"limited","wikidata":"Q4381574","wikipedia":"en:Canterbury East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3781687,51.383247]},"properties":{"baby_feeding":"no","name":"Sole Street","naptan:AtcoCode":"9100SOLEST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOR","source":"NPE","wikidata":"Q2434718","wikipedia":"en:Sole Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3566218,51.3864534]},"properties":{"name":"Meopham","naptan:AtcoCode":"9100MEOPHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MEP","source":"NPE","wheelchair":"no","wikidata":"Q2119853","wikipedia":"en:Meopham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.300103,51.3962097]},"properties":{"name":"Longfield","naptan:AtcoCode":"9100LGFD","network":"National Rail","old_name":"Fawkham","public_transport":"station","railway":"station","ref:crs":"LGF","source":"NPE","wikipedia":"en:Longfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0908906,51.4402849]},"properties":{"name":"West Dulwich","name:ru":"Уэст-Далвич","naptan:AtcoCode":"9100WDULWCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDU","wheelchair":"no","wikidata":"Q2242126","wikipedia":"en:West Dulwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0801504,51.4326101]},"properties":{"name":"Sydenham Hill","naptan:AtcoCode":"9100SYDNHMH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SYH","wheelchair":"no","wikidata":"Q3090498","wikipedia":"en:Sydenham Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0541364,51.4193151]},"properties":{"name":"Penge East","naptan:AtcoCode":"9100PNGEE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PNE","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access to platform 1 from main entrance. Step free access to platform 2 via Lindon Grove - No step free interchange between platforms but stepped access via station footbridge is available.","wikidata":"Q2483411","wikipedia":"en:Penge East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.045213,51.4122745]},"properties":{"name":"Kent House","naptan:AtcoCode":"9100KENTHOS","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"KTH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"4","wheelchair":"no","wikidata":"Q2054189","wikipedia":"en:Kent House railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0259866,51.4110623]},"properties":{"name":"Beckenham Junction","naptan:AtcoCode":"9100BCKNHMJ","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BKJ","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"4","train":"yes","wheelchair":"limited","wikidata":"Q2189753","wikipedia":"en:Beckenham Junction station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0443369,51.4000641]},"properties":{"name":"Bickley","naptan:AtcoCode":"9100BICKLEY","network":"National Rail","opening_hours":"Mo-Fr 06:00-20:00; Sa 07:00-14:00; Su 08:00-14:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BKL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"5","wheelchair":"no","wikidata":"Q2245384","wikipedia":"en:Bickley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0182769,51.4000405]},"properties":{"name":"Bromley South","naptan:AtcoCode":"9100BROMLYS","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BMS","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"5","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2200768","wikipedia":"en:Bromley South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9411453,51.2772848]},"properties":{"name":"Selling","naptan:AtcoCode":"9100SELLING","network":"National Rail","railway":"station","ref:crs":"SEG","wikidata":"Q509141","wikipedia":"en:Selling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8077033,51.3334333]},"properties":{"name":"Teynham","naptan:AtcoCode":"9100TEYNHAM","network":"National Rail","platforms":"2","railway":"station","ref:crs":"TEY","wikidata":"Q1865163","wikipedia":"en:Teynham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6667851,51.3535668]},"properties":{"name":"Newington","naptan:AtcoCode":"9100NEWNGTN","network":"National Rail","railway":"station","ref:crs":"NGT","wikidata":"Q7018278","wikipedia":"en:Newington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6110362,51.3666656]},"properties":{"name":"Rainham","naptan:AtcoCode":"9100RAINHMK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RAI","train":"yes","wikidata":"Q1865266","wikipedia":"en:Rainham railway station (Kent)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5212081,51.3803092]},"properties":{"name":"Chatham","naptan:AtcoCode":"9100CHATHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CTM","source":"NPE","wheelchair":"yes","wikidata":"Q2636404","wikipedia":"en:Chatham railway station (Kent)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5072941,51.3892066]},"properties":{"name":"Rochester","naptan:AtcoCode":"9100RCHT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RTR","wikidata":"Q2106217","wikipedia":"en:Rochester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3479881,51.1706421]},"properties":{"name":"Martin Mill","naptan:AtcoCode":"9100MMIL","network":"National Rail","railway":"station","ref:crs":"MTM","source":"survey","wikidata":"Q2900908","wikipedia":"en:Martin Mill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3986457,51.2231068]},"properties":{"name":"Deal","naptan:AtcoCode":"9100DEAL","network":"National Rail","network:wikidata":"Q26334","operator":"SouthEastern","public_transport":"station","railway":"station","ref:crs":"DEA","train":"yes","wikidata":"Q2281278","wikipedia":"en:Deal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3422666,51.2699629]},"properties":{"name":"Sandwich","naptan:AtcoCode":"9100SWCH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SDW","source":"NPE","train":"yes","wikidata":"Q1977660","wikipedia":"en:Sandwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3226384,51.4432708]},"properties":{"fixme":"Does this station have a unique CRS ref","name":"Ebbsfleet International (domestic)","naptan:AtcoCode":"9100EBSFDOM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EBD","wikipedia":"en:Ebbsfleet International railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3668306,51.4413627]},"properties":{"name":"Gravesend","naptan:AtcoCode":"9100GRVSEND","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GRV","wikidata":"Q2615632","wikipedia":"en:Gravesend railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.577672,51.2759153]},"properties":{"addr:postcode":"ME14 4PH","addr:street":"Ware Street","name":"Bearsted","naptan:AtcoCode":"9100BSTD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BSD","wikidata":"Q2513832","wikipedia":"en:Bearsted railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6278176,51.2653803]},"properties":{"addr:city":"Hollingbourne","addr:postcode":"ME17 1TX","addr:street":"Station Approach","name":"Hollingbourne","naptan:AtcoCode":"9100HBRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HBN","wikidata":"Q1815605","wikipedia":"en:Hollingbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6726551,51.2449353]},"properties":{"name":"Harrietsham","naptan:AtcoCode":"9100HRSM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HRM","wikidata":"Q2683079","wikipedia":"en:Harrietsham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7072408,51.2344619]},"properties":{"name":"Lenham","naptan:AtcoCode":"9100LENHAM","network":"National Rail","railway":"station","ref:crs":"LEN","wikidata":"Q1825914","wikipedia":"en:Lenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7898686,51.2082021]},"properties":{"name":"Charing","naptan:AtcoCode":"9100CRNG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHG","wikidata":"Q2199062","wikipedia":"en:Charing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1887766,51.3321241]},"properties":{"name":"Shoreham","naptan:AtcoCode":"9100SHRMKT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SEH","wikipedia":"en:Shoreham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2474224,51.2972539]},"properties":{"name":"Kemsing","naptan:AtcoCode":"9100KEMSING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KMS","source":"NPE","wikidata":"Q2870503","wikipedia":"en:Kemsing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3061936,51.2931422]},"properties":{"name":"Borough Green & Wrotham","naptan:AtcoCode":"9100BORWGAW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BRG","wikidata":"Q4946312","wikipedia":"en:Borough Green & Wrotham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4403595,51.2856713]},"properties":{"name":"East Malling","naptan:AtcoCode":"9100EMALING","network":"National Rail","postal_code":"ME19 6AJ","public_transport":"station","railway":"station","ref:crs":"EML","wikidata":"Q2184113","wikipedia":"en:East Malling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4792926,51.2848536]},"properties":{"name":"Barming","naptan:AtcoCode":"9100BARMING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BMG","source":"NPE","wikidata":"Q4861272","wikipedia":"en:Barming railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5199007,51.2776262]},"properties":{"name":"Maidstone East","naptan:AtcoCode":"9100MSTONEE","network":"National Rail","network:wikidata":"Q26334","postal_code":"ME14 1QN","public_transport":"station","railway":"station","ref:crs":"MDE","train":"yes","wikidata":"Q952299","wikipedia":"en:Maidstone East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.235341,51.4016801]},"properties":{"name":"Farningham Road","naptan:AtcoCode":"9100FRNNGRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FNR","source":"NPE","wikidata":"Q2599575","wikipedia":"en:Farningham Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0523755,51.4668348]},"properties":{"name":"Nunhead","naptan:AtcoCode":"9100NUNHEAD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NHD","train":"yes","wheelchair":"no","wikidata":"Q1907609","wikipedia":"en:Nunhead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0366376,51.4552107]},"properties":{"name":"Crofton Park","naptan:AtcoCode":"9100CFPK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CFT","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 400m+ journey via street. Access from platform to train by manual boarding ramp.","wikidata":"Q2122032","wikipedia":"en:Crofton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0195194,51.4328307]},"properties":{"name":"Bellingham","naptan:AtcoCode":"9100BELNGHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BGM","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2796094","wikipedia":"en:Bellingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0159101,51.4245222]},"properties":{"name":"Beckenham Hill","naptan:AtcoCode":"9100BCKNHMH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BEC","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free platform interchange requires a 400m+ journey via street. Access from platform to train by manual boarding ramp.","wikidata":"Q2278948","wikipedia":"en:Beckenham Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7081221,52.0611986]},"properties":{"addr:city":"Hereford","addr:postcode":"HR1 1BB","addr:street":"Station Approach","name":"Hereford","naptan:AtcoCode":"9100HEREFRD","network":"National Rail","network:wikidata":"Q26334","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"HFD","train":"yes","wikipedia":"en:Hereford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0076295,51.4143132]},"properties":{"name":"Ravensbourne","naptan:AtcoCode":"9100RBRN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RVB","wheelchair":"limited","wheelchair:description":"Step-free southbound only. Access from platform to train by manual boarding ramp.","wikidata":"Q1861913","wikipedia":"en:Ravensbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1021612,51.4662551]},"properties":{"name":"Loughborough Junction","name:ru":"Лафборо-Джанкшен","naptan:AtcoCode":"9100LBGHJN","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"LGJ","source:network":"Sign","wheelchair":"no","wikidata":"Q2099753","wikipedia":"en:Loughborough Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.368703,54.4549076]},"properties":{"name":"Kirkby Stephen","naptan:AtcoCode":"9100KSTP","network":"National Rail","old_name":"Kirkby Stephen West","railway":"station","ref:crs":"KSW","source":"NPE","wikidata":"Q2238374","wikipedia":"en:Kirkby Stephen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.4381346,50.6381388]},"properties":{"name":"Mansion House Station","operator":"Hidden Valley Discovery Park","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.0418479,50.3623643]},"properties":{"name":"East Wheal Rose","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7253357,52.4508239]},"properties":{"name":"Birmingham International","naptan:AtcoCode":"9100BHAMINT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BHI","train":"yes","wheelchair":"yes","wikidata":"Q579308","wikipedia":"en:Birmingham International railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.624439,52.4538785]},"properties":{"name":"Brandon","naptan:AtcoCode":"9100BNDON","network":"National Rail","railway":"station","ref:crs":"BND","source":"NPE","wikidata":"Q2501282","wikipedia":"en:Brandon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7452832,52.4191556]},"properties":{"name":"Thetford","naptan:AtcoCode":"9100THETFD","network":"National Rail","network:wikidata":"Q26334","operator":"Greater Anglia","public_transport":"station","railway":"station","ref:crs":"TTF","train":"yes","url":"http://www.nationalrail.co.uk/stations/TTF/details.html","wheelchair":"yes","wikidata":"Q2691707","wikipedia":"en:Thetford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.9699936,52.4712952]},"properties":{"name":"Eccles Road","naptan:AtcoCode":"9100ECLR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ECS","source":"NPE","train":"yes","wikidata":"Q2037638","wikipedia":"en:Eccles Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0222088,52.5144202]},"properties":{"name":"Attleborough","naptan:AtcoCode":"9100ATTLBON","network":"National Rail","railway":"station","ref:crs":"ATL","source":"NPE","wheelchair":"yes","wikidata":"Q2093675","wikipedia":"en:Attleborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1181355,52.5653515]},"properties":{"name":"Wymondham","naptan:AtcoCode":"9100WYMNDHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WMD","source":"NPE","wikidata":"Q2411114","wikipedia":"en:Wymondham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1296473,51.563474]},"properties":{"name":"Upper Holloway","naptan:AtcoCode":"9100UPRHLWY","network":"London Overground","operator":"London Overground","platforms":"2","railway":"station","ref:crs":"UHL","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations;OS","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 40m journey via street. Access from platform to train by manual boarding ramp.","wikidata":"Q2362457","wikipedia":"en:Upper Holloway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1168739,51.571431]},"properties":{"name":"Crouch Hill","naptan:AtcoCode":"910GCROUCHH","network":"London Overground","operator":"London Overground","platforms":"2","railway":"station","ref:crs":"CRH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q2683950","wikipedia":"en:Crouch Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4237157,51.5675954]},"properties":{"name":"Laindon","naptan:AtcoCode":"9100LAINDON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LAI","source":"NPE","wheelchair":"yes","wikidata":"Q2801845","wikipedia":"en:Laindon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5616239,51.5441005]},"properties":{"name":"Benfleet","name:lt":"Benflitas","naptan:AtcoCode":"9100BENFLET","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEF","source":"NPE","wikidata":"Q2561112","wikipedia":"en:Benfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.73149,51.5389057]},"properties":{"name":"Southend East","naptan:AtcoCode":"9100STHNDE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOE","train":"yes","wikidata":"Q2311959","wikipedia":"en:Southend East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7619363,51.5376596]},"properties":{"name":"Thorpe Bay","naptan:AtcoCode":"9100THOPBAY","network":"National Rail","operator":"C2C","public_transport":"station","railway":"station","ref:crs":"TPB","wikidata":"Q7796686","wikipedia":"en:Thorpe Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7116503,51.5373587]},"properties":{"name":"Southend Central","naptan:AtcoCode":"9100STHCENT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOC","wikidata":"Q593051","wikipedia":"en:Southend Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6698419,51.5386117]},"properties":{"name":"Chalkwell","naptan:AtcoCode":"9100CHLKWEL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CHW","source":"NPE","wikidata":"Q744484","wikipedia":"en:Chalkwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6394573,51.5412111]},"properties":{"name":"Leigh-on-Sea","naptan:AtcoCode":"9100LHONSEA","network":"National Rail","railway":"station","ref:crs":"LES","source":"NPE","wikidata":"Q2396445","wikipedia":"en:Leigh-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5079761,51.5602396]},"properties":{"name":"Pitsea","naptan:AtcoCode":"9100PITSEA","network":"National Rail","operator":"c2c","platforms":"4","public_transport":"station","railway":"station","ref:crs":"PSE","source":"NPE","wikidata":"Q2982936","wikipedia":"en:Pitsea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3219051,51.4763786]},"properties":{"name":"Grays","naptan:AtcoCode":"9100GRAYS","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"GRY","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wikidata":"Q4844809","wikipedia":"en:Grays railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4229093,51.5141935]},"properties":{"name":"Stanford-le-Hope","naptan:AtcoCode":"9100SLEHOPE","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"SFO","wikidata":"Q2062756","wikipedia":"en:Stanford-le-Hope railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4127175,51.4845202]},"properties":{"name":"East Tilbury","naptan:AtcoCode":"9100ETILBRY","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"ETL","wikidata":"Q2487544","wikipedia":"en:East Tilbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1464225,51.5261414]},"properties":{"addr:city":"Dagenham","addr:postcode":"RM9 6PF","addr:street":"Chequers Lane","internet_access":"yes","name":"Dagenham Dock","naptan:AtcoCode":"9100DGNHMDC","network":"National Rail","operator":"C2C","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DDK","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wikidata":"Q800643","wikipedia":"en:Dagenham Dock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1906219,51.5167202]},"properties":{"name":"Rainham","naptan:AtcoCode":"9100RNHAME","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RNM","wheelchair":"yes","wikidata":"Q2221209","wikipedia":"en:Rainham railway station (London)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2874684,51.4855963]},"properties":{"alt_name":"Chafford Hundred","name":"Chafford Hundred","naptan:AtcoCode":"9100CHADHDD","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"CFH","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wikidata":"Q2385653","wikipedia":"en:Chafford Hundred Lakeside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2902103,51.5216626]},"properties":{"name":"Ockendon","naptan:AtcoCode":"9100OCKENDN","network":"National Rail","operator":"C2C","public_transport":"station","railway":"station","ref:crs":"OCK","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wikidata":"Q2099828","wikipedia":"en:Ockendon railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0908639,51.6526384]},"properties":{"name":"Enfield Chase","naptan:AtcoCode":"9100ENFC","network":"National Rail","old_name":"Enfield","operator":"Great Northern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"ENC","wheelchair":"no","wikidata":"Q3056996","wikipedia":"en:Enfield Chase railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6437205,55.1783232]},"properties":{"name":"Pegswood","naptan:AtcoCode":"9100PEGSWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PEG","source":"NPE","train":"yes","wikidata":"Q2495528","wikipedia":"en:Pegswood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4252755,51.3458538]},"properties":{"addr:city":"Ramsgate","addr:street":"Sycamore Grange","internet_access":"no","name":"Dumpton Park","naptan:AtcoCode":"9100DUMPTNP","network":"National Rail","operator":"Southeastern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DMP","train":"yes","wheelchair":"no","wikidata":"Q5313984","wikipedia":"en:Dumpton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4334122,51.360737]},"properties":{"name":"Broadstairs","naptan:AtcoCode":"9100BRSR","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BSR","source":"survey","train":"yes","wheelchair":"limited","wikidata":"Q2912867","wikipedia":"en:Broadstairs railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3009038,51.3775024]},"properties":{"name":"Birchington-on-Sea","naptan:AtcoCode":"9100BCNGNOS","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BCH","wikidata":"Q1892812","wikipedia":"en:Birchington-on-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1183071,51.3644375]},"properties":{"name":"Herne Bay","naptan:AtcoCode":"9100HRNEBAY","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HNB","wheelchair":"yes","wikidata":"Q2294609","wikipedia":"en:Herne Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2095904,51.2274229]},"properties":{"name":"Aylesham","naptan:AtcoCode":"9100ALSHAM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"AYH","source":"survey","wikidata":"Q4831400","wikipedia":"en:Aylesham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2137143,51.2151407]},"properties":{"name":"Snowdown","naptan:AtcoCode":"9100SNWDNAN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SWO","source":"survey","train":"yes","wikidata":"Q2605621","wikipedia":"en:Snowdown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2297861,51.1880383]},"properties":{"addr:city":"Shepherdswell","addr:street":"Station Road","name":"Shepherdswell","naptan:AtcoCode":"9100SWELL","network":"National Rail","note":"Although noted on timetables as Shepherds Well, the signs at the station actually say Shepherdswell.","official_name":"Shepherds Well","operator":"Southeastern Railway","public_transport":"station","railway":"station","ref:crs":"SPH","source":"NPE","wikipedia":"en:Shepherds Well railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2724936,51.1489301]},"properties":{"name":"Kearsney","naptan:AtcoCode":"9100KSNY","network":"National Rail","railway":"station","ref:crs":"KSN","source":"NPE","wikidata":"Q2358908","wikipedia":"en:Kearsney railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8165763,51.0332869]},"properties":{"name":"Appledore","naptan:AtcoCode":"9100APDR","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"APD","source":"survey","train":"yes","wikidata":"Q2414753","wikipedia":"en:Appledore railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7025193,50.9339128]},"properties":{"name":"Winchelsea","naptan:AtcoCode":"9100WINCHLS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WSE","train":"yes","wheelchair":"yes","wikidata":"Q2692300","wikipedia":"en:Winchelsea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6133315,50.9009344]},"properties":{"name":"Three Oaks","naptan:AtcoCode":"9100THOK","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"TOK","train":"yes","wheelchair":"yes","wikidata":"Q2798366","wikimedia_commons":"Category:Three Oaks railway station","wikipedia":"en:Three Oaks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5919722,50.8669622]},"properties":{"name":"Ore","naptan:AtcoCode":"9100OREE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ORE","source":"NPE","wikidata":"Q1818015","wikimedia_commons":"Category:Ore railway station","wikipedia":"en:Ore railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5605979,50.8557579]},"properties":{"name":"St Leonards Warrior Square","naptan:AtcoCode":"9100STLNRWS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SLQ","train":"yes","wheelchair":"limited","wikidata":"Q3047264","wikipedia":"en:St Leonards Warrior Square railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4757302,50.840942]},"properties":{"name":"Bexhill","name:en":"Bexhill","name:lt":"Bekshilis","naptan:AtcoCode":"9100BEXHILL","network":"National Rail","network:wikidata":"Q26334","old_name":"Bexhill Central","operator":"Southern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BEX","source":"NPE","start_date":"1902","train":"yes","wheelchair":"yes","wikimedia_commons":"File:'When Shall We Two Meet Again', Bexhill-on-Sea - geograph.org.uk - 703323.jpg","wikipedia":"en:Bexhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4571842,50.8392876]},"properties":{"name":"Collington","naptan:AtcoCode":"9100CTNG","network":"National Rail","network:wikidata":"Q26334","old_name":"West Bexhill Halt","operator":"Southern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CLL","source":"NPE","start_date":"1905-09-11","train":"yes","wikidata":"Q5147285","wikimedia_commons":"File:Collington Railway Station.jpg","wikipedia":"en:Collington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4267026,50.8333713]},"properties":{"name":"Cooden Beach","naptan:AtcoCode":"9100CODNBCH","network":"National Rail","network:wikidata":"Q26334","old_name":"Cooden Golf Halt","operator":"Southern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"COB","source":"NPE","start_date":"1905-09-11","train":"yes","wikidata":"Q5166835","wikimedia_commons":"File:Cooden Beach station geograph-3317832-by-Ben-Brooksbank.jpg","wikipedia":"en:Cooden Beach railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3895764,50.8260497]},"properties":{"name":"Normans Bay","naptan:AtcoCode":"9100NRMNSBY","network":"National Rail","network:wikidata":"Q26334","old_name":"Normans Bay Halt","public_transport":"station","railway":"station","ref:GB:uprn":"10090509059","ref:crs":"NSB","source":"NPE","start_date":"1905-09-11","train":"yes","wikidata":"Q2324161","wikimedia_commons":"File:Normans Bay Railway Station, Normans Bay (aerial).jpg","wikimedia_commons_1":"File:Norman's Bay, Railway Station - geograph.org.uk - 1174747.jpg","wikipedia":"en:Normans Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3431985,50.8176698]},"properties":{"name":"Pevensey Bay","naptan:AtcoCode":"9100PVNSYBY","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PEB","train":"yes","wikidata":"Q2721185","wikipedia":"en:Pevensey Bay railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3253781,50.8157704]},"properties":{"name":"Pevensey and Westham","naptan:AtcoCode":"9100PVNSYAW","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PEV","wikidata":"Q2280818","wikipedia":"en:Pevensey & Westham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0306729,50.83111]},"properties":{"name":"Southease","naptan:AtcoCode":"9100SESARDM","network":"National Rail","old_name":"Southease and Rodmell Halt","public_transport":"station","railway":"station","ref:crs":"SEE","wikidata":"Q5830819","wikipedia":"en:Southease railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0826201,50.7799859]},"properties":{"name":"Bishopstone","naptan:AtcoCode":"9100BSSN","network":"National Rail","note":"approximate position","public_transport":"station","railway":"station","ref:crs":"BIP","wikidata":"Q2330749","wikipedia":"en:Bishopstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0551622,50.7898002]},"properties":{"name":"Newhaven Harbour","naptan:AtcoCode":"9100NEWHVNH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NVH","wikidata":"Q2413496","wikipedia":"en:Newhaven Harbour railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0551243,50.7949162]},"properties":{"name":"Newhaven Town","naptan:AtcoCode":"9100NEWHVNT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NVN","source":"NPE","wheelchair":"yes","wikidata":"Q2293851","wikipedia":"en:Newhaven Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1363804,50.836813]},"properties":{"addr:postcode":"BN1 4QS","name":"London Road (Brighton)","naptan:AtcoCode":"9100BRGHLRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LRB","train":"yes","wikidata":"Q1820227","wikipedia":"en:London Road (Brighton) railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1190654,50.8465383]},"properties":{"name":"Moulsecoomb","naptan:AtcoCode":"9100MLSECMB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MCB","toilets:wheelchair":"no","train":"yes","wheelchair":"no","wikidata":"Q2437531","wikipedia":"en:Moulsecoomb railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0872899,50.8619409]},"properties":{"name":"Falmer","naptan:AtcoCode":"9100FAMR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FMR","train":"yes","wheelchair":"yes","wikidata":"Q2435208","wikipedia":"en:Falmer railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0703481,50.8591176]},"properties":{"name":"Glynde","naptan:AtcoCode":"9100GLYNDE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GLY","wikidata":"Q2540646","wikipedia":"en:Glynde railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1657244,50.8404862]},"properties":{"name":"Berwick","naptan:AtcoCode":"9100BERWICK","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BRK","source":"NPE","train":"yes","wikidata":"Q4895976","wikipedia":"en:Berwick railway station (East Sussex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2467483,50.8211277]},"properties":{"name":"Polegate","naptan:AtcoCode":"9100POLGATE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PLG","train":"yes","wikidata":"Q1928088","wikipedia":"en:Polegate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2815355,50.7696435]},"properties":{"name":"Eastbourne","naptan:AtcoCode":"9100EBOURNE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"EBN","train":"yes","wikidata":"Q800700","wikimedia_commons":"Category:Eastbourne railway station","wikipedia":"en:Eastbourne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2796796,50.7959254]},"properties":{"name":"Hampden Park","naptan:AtcoCode":"9100HMPDNPK","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HMD","source":"NPE","wheelchair":"no","wikidata":"Q2163730","wikipedia":"en:Hampden Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0598099,50.9284626]},"properties":{"name":"Plumpton","naptan:AtcoCode":"9100PLMPTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PMP","source":"NPE","wikidata":"Q7205476","wikipedia":"en:Plumpton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0093086,50.9037132]},"properties":{"name":"Cooksbridge","naptan:AtcoCode":"9100COKSBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CBR","wikidata":"Q3341575","wikipedia":"en:Cooksbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1207209,50.9643606]},"properties":{"addr:city":"Burgess Hill","addr:postcode":"RH15 0QF","addr:street":"Leylands Road","name":"Wivelsfield","naptan:AtcoCode":"9100WVLSFLD","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WVF","wikidata":"Q517098","wikipedia":"en:Wivelsfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1053994,51.0049043]},"properties":{"addr:city":"Haywards Heath","addr:postcode":"RH16 1DJ","addr:street":"Commercial Square","name":"Haywards Heath","naptan:AtcoCode":"9100HYWRDSH","network":"National Rail","network:wikidata":"Q26334","operator":"Southern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HHE","train":"yes","wikidata":"Q5687410","wikipedia":"en:Haywards Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3961244,51.872845]},"properties":{"name":"Luton Airport Parkway","naptan:AtcoCode":"9100LUTOAPY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LTN","train":"yes","wheelchair":"yes","wheelchair:description":"Lifts from booking office to footbridge with lifts to all platforms. Step-free exit from platform 1 to Kimpton Road. Step-free from main entrance to shuttle bus to Airport. Toilets not checked on this visit. 10 blue badge spaces.","wikidata":"Q801135","wikipedia":"en:Luton Airport Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3276687,51.7504966]},"properties":{"name":"St Albans City","naptan:AtcoCode":"9100STALBCY","network":"National Rail","operator":"Govia Thameslink","platforms":"4","public_transport":"station","railway":"station","ref:crs":"SAC","wikidata":"Q19986","wikipedia":"en:St Albans City railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.192134,51.8237723]},"properties":{"name":"Welwyn North","naptan:AtcoCode":"9100WLWYNN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WLW","ref:tiploc":"WLWYNN","train":"yes","wikidata":"Q2345556","wikipedia":"en:Welwyn North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.151577,51.5554865]},"properties":{"layer":"1","name":"Gospel Oak","naptan:AtcoCode":"9100GOSPLOK","network":"London Overground","operator":"London Overground","platforms":"3","public_transport":"station","railway":"station","ref:crs":"GPO","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","website":"https://tfl.gov.uk/overground/stop/910GGOSPLOK/gospel-oak-rail-station","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q800829","wikipedia":"en:Gospel Oak railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0447283,51.549168]},"properties":{"name":"Woodgrange Park","naptan:AtcoCode":"9100WDGRNPK","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WGR","source":"Yahoo!","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q2733963","wikipedia":"en:Woodgrange Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1466357,51.5236277]},"properties":{"description":"This station has Wadsworth lifts modernised by Otis.","fare_zone":"1","line":"Bakerloo","name":"Regent's Park","name:da":"Regent's Park Station","name:ru":"Риджентс-парк","naptan:AtcoCode":"940GZZLURGP","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1259474","wikipedia":"en:Regent's Park tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1857906,51.5297928]},"properties":{"fare_zone":"2","line":"Bakerloo","name":"Maida Vale","name:ru":"Мейда-вейл","naptan:AtcoCode":"940GZZLUMVL","network":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1885195","wikipedia":"en:Maida Vale tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9299278,52.7696788]},"properties":{"name":"Rugeley Trent Valley","naptan:AtcoCode":"9100RUGL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RGL","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2066965","wikipedia":"en:Rugeley Trent Valley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4641837,52.5267605]},"properties":{"name":"Nuneaton","naptan:AtcoCode":"9100NNTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NUN","wikidata":"Q2018434","wikipedia":"en:Nuneaton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0087494,51.5447954]},"properties":{"name":"Stratford International","naptan:AtcoCode":"9100STFODOM","network":"National Rail","platforms":"6","public_transport":"station","railway":"station","ref:crs":"SFA","wheelchair":"yes","wikidata":"Q801472","wikipedia":"en:Stratford International station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.441378,54.3324731]},"properties":{"name":"Northallerton","naptan:AtcoCode":"9100NLRTN","network":"National Rail","network:wikidata":"Q26334","operator":"TransPennine Express","public_transport":"station","railway":"station","ref:crs":"NTR","source":"Bing","train":"yes","wikidata":"Q2537832","wikipedia":"en:Northallerton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1097795,51.597416]},"properties":{"fare_zone":"3","line":"Piccadilly","name":"Wood Green","name:ru":"Вуд-грин","naptan:AtcoCode":"940GZZLUWOG","network":"London Underground","operator":"London Underground","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q945882","wikipedia":"en:Wood Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0963971,51.5703208]},"properties":{"fare_zone":"2;3","line":"Piccadilly","name":"Manor House","name:ru":"Мэнор-хаус","naptan:AtcoCode":"940GZZLUMRH","network":"London Underground","operator":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q1549573","wikipedia":"en:Manor House tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.898694,52.4776459]},"properties":{"alt_name":"Birmingham New Street railway station;Birmingham New Street train station","name":"Birmingham New Street","naptan:AtcoCode":"9100BHAMNWS","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"BHM","train":"yes","west_midlands_fare_zone":"1","wheelchair":"yes","wikidata":"Q683063","wikipedia":"en:Birmingham New Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1693507,51.3571959]},"properties":{"name":"Carshalton Beeches","naptan:AtcoCode":"9100CRSHLTB","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"CSB","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2372214","wikipedia":"en:Carshalton Beeches railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1505899,51.3602348]},"properties":{"name":"Wallington","naptan:AtcoCode":"9100WALNGTN","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"WLT","wheelchair":"yes","wikidata":"Q2447377","wikipedia":"en:Wallington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0987108,51.3470347]},"properties":{"name":"Purley Oaks","naptan:AtcoCode":"9100PURLEYO","network":"National Rail","postal_code":"CR2 0ND","public_transport":"station","railway":"station","ref:crs":"PUO","website":"https://www.southernrailway.com/your-journey/station-information/PUO/","wheelchair":"no","wikidata":"Q2001741","wikipedia":"en:Purley Oaks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2112588,51.1939929]},"properties":{"addr:postcode":"TN11 8RU","name":"Leigh","naptan:AtcoCode":"9100LEIGHK","network":"National Rail","railway":"station","ref:crs":"LIH","wikidata":"Q2218963","wikipedia":"en:Leigh railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0598637,51.2083661]},"properties":{"addr:postcode":"TN8 6HR","name":"Edenbridge","naptan:AtcoCode":"9100EDNB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EBR","source":"survey","wikidata":"Q3117816","wikipedia":"en:Edenbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0514363,51.2181855]},"properties":{"name":"Godstone","naptan:AtcoCode":"9100GODSTON","network":"National Rail","postal_code":"RH9 8EU","public_transport":"station","railway":"station","ref:crs":"GDN","source":"NPE","wheelchair":"no","wikidata":"Q2744322","wikipedia":"en:Godstone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1322636,51.2267445]},"properties":{"addr:postcode":"RH1 5RR","name":"Nutfield","naptan:AtcoCode":"9100NUTFILD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NUF","wikidata":"Q2671420","wikipedia":"en:Nutfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1987852,51.3438964]},"properties":{"name":"Belmont","naptan:AtcoCode":"9100BELM","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BLM","wheelchair":"yes","wikidata":"Q2799373","wikipedia":"en:Belmont railway station (Sutton)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1359263,51.4185662]},"properties":{"name":"Streatham Common","name:ru":"Стретем-Коммон","naptan:AtcoCode":"9100STRHCOM","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"SW16 5NT","public_transport":"station","railway":"station","ref:crs":"SRC","wheelchair":"yes","wikidata":"Q7622732","wikipedia":"en:Streatham Common railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1218018,51.4113697]},"properties":{"name":"Norbury","name:ru":"Норбери","naptan:AtcoCode":"9100NORBURY","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"SW16 3RW","public_transport":"station","railway":"station","ref:crs":"NRB","source":"NPE","wheelchair":"yes","wheelchair:description":"Step-free access to all platforms via long and steep ramps (over 400m long and above 1:10 gradient).","wikidata":"Q1932430","wikipedia":"en:Norbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1005158,51.3989438]},"properties":{"name":"Thornton Heath","naptan:AtcoCode":"9100THTH","network":"National Rail","network:train":"National Rail","operator":"Southern","postal_code":"CR7 8RX","public_transport":"station","railway":"station","ref:crs":"TTH","source":"NPE","wheelchair":"yes","wikidata":"Q2187219","wikipedia":"en:Thornton Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0146411,51.4496733]},"properties":{"name":"Lee","naptan:AtcoCode":"9100LEEE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LEE","wheelchair":"yes","wikidata":"Q2681604","wikipedia":"en:Lee railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0499618,51.4402515]},"properties":{"name":"Mottingham","naptan:AtcoCode":"9100MOTNGHM","network":"National Rail","opening_hours":"Mo-Sa 06:00-20:00; Su 08:00-16:00","operator":"Southeastern","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MTG","wheelchair":"limited","wheelchair:description":"Step free access to Platform 1 for services to London via main station entrance. Step free access to platform 2 for services away from London via side entrance. No step free interchange between platforms.","wikidata":"Q2433460","wikipedia":"en:Mottingham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0709469,51.4380136]},"properties":{"name":"New Eltham","naptan:AtcoCode":"9100NWELTHM","network":"National Rail","opening_hours":"Mo-Fr 06:00-20:00; Sa 08:00-16:00; Su 10:00-17:00","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"NEH","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q2019025","wikipedia":"en:New Eltham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1034297,51.4340208]},"properties":{"addr:city":"Sidcup","addr:street":"Station Road","name":"Sidcup","naptan:AtcoCode":"9100SIDCUP","network":"National Rail","network:wikidata":"Q26334","not:network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SID","toilets:wheelchair":"yes","train":"yes","wheelchair:description":"Entrance depends on which platform you need to access, only the London bound platform is accessible from the station building itself, the other platform is accessed via a separate entrance on the far side","wikidata":"Q2068572","wikipedia":"en:Sidcup railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1783894,51.448177]},"properties":{"name":"Crayford","naptan:AtcoCode":"9100CRFD","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"CRY","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wikidata":"Q2755666","wikipedia":"en:Crayford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1259653,51.4353837]},"properties":{"name":"Albany Park","naptan:AtcoCode":"9100ALBNYPK","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"AYP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2656573","wikipedia":"en:Albany Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3239669,51.4459453]},"properties":{"image":"https://archive.org/details/northfleet-2021-05-30/PXL_20210530_190146672.jpg","name":"Northfleet","naptan:AtcoCode":"9100NRTHFLT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NFL","wikidata":"Q2545395","wikipedia":"en:Northfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.311584,51.4489829]},"properties":{"name":"Swanscombe","naptan:AtcoCode":"9100SWNSCMB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SWM","source":"NPE","wikidata":"Q2298428","wikipedia":"en:Swanscombe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2798724,51.4504764]},"properties":{"name":"Greenhithe","naptan:AtcoCode":"9100GNHT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GNH","train":"yes","wheelchair":"yes","wikidata":"Q3087636","wikipedia":"en:Greenhithe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2634425,51.4514164]},"properties":{"name":"Stone Crossing","naptan:AtcoCode":"9100STCR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SCG","source":"NPE","wikidata":"Q3341228","wikipedia":"en:Stone Crossing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0935834,51.5012094]},"properties":{"fare_zone":"1","line":"Northern","name":"Borough","name:da":"Borough Station","name:ru":"Боро","naptan:AtcoCode":"940GZZLUBOR","network":"London Underground","public_transport":"station","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","station":"subway","subway":"yes","toilets:wheelchair":"no","wheelchair":"yes","wikidata":"Q894073","wikipedia":"en:Borough tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0097159,53.9629636]},"properties":{"name":"Murton Park","operator":"Derwent Valley Light Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3515572,51.8148177]},"properties":{"name":"Harpenden","naptan:AtcoCode":"9100HRPNDN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HPD","source":"NPE","train":"yes","wheelchair":"yes","wheelchair:description":"Lifts from platform to footbridge. Step-free exit from platform 1 to car park on east side.","wikidata":"Q2278802","wikipedia":"en:Harpenden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.059592,51.5238872]},"properties":{"name":"Bethnal Green","naptan:AtcoCode":"9100BTHNLGR","network":"London Overground","old_name":"Bethnal Green Junction","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BET","source:network":"Sign","wheelchair":"no","wikidata":"Q2700931","wikipedia":"en:Bethnal Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0786839,51.6517156]},"properties":{"name":"Enfield Town","naptan:AtcoCode":"9100ENFLDTN","network":"London Overground","old_name":"Enfield","operator":"Arriva Rail London","platforms":"3","public_transport":"station","railway":"station","ref:crs":"ENF","toilets:wheelchair":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2385571","wikipedia":"en:Enfield Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4186871,51.2920962]},"properties":{"alt_name":"West Malling for Kings Hill","name":"West Malling","naptan:AtcoCode":"9100WMALING","network":"National Rail","postal_code":"ME19 6HJ","public_transport":"station","railway":"station","ref:crs":"WMA","source:name":"survey","train":"yes","wheelchair":"limited","wikidata":"Q2053919","wikipedia":"en:West Malling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1835754,51.5501046]},"properties":{"name":"Finchley Road & Frognal","naptan:AtcoCode":"9100FNCHLYR","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"FNY","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q5449845","wikipedia":"en:Finchley Road & Frognal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0913188,52.5600848]},"properties":{"addr:postcode":"PE15 8SJ","addr:street":"Station Approach","name":"March","naptan:AtcoCode":"9100MRCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MCH","train":"yes","wheelchair":"yes","wikidata":"Q2023178","wikipedia":"en:March railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.5320276,50.1224396]},"properties":{"name":"Penzance","naptan:AtcoCode":"9100PENZNCE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"PNZ","source":"survey","train":"yes","wheelchair":"yes","wikidata":"Q2100103","wikipedia":"en:Penzance railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.0632151,51.0737586]},"properties":{"addr:city":"Barnstaple","addr:postcode":"EX31 2AU","addr:street":"Station Road","internet_access":"yes","internet_access:fee":"yes","name":"Barnstaple","name:lt":"Barnstaplas","naptan:AtcoCode":"9100BRNSTPL","network":"National Rail","network:wikidata":"Q26334","old_name":"Barnstaple Junction","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"BNP","train":"yes","wheelchair":"yes","wikidata":"Q800448","wikipedia":"en:Barnstaple railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2057283,51.581785000000007]},"properties":{"fare_zone":"6","name":"Gidea Park","naptan:AtcoCode":"9100GIDEAPK","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"GDP","train":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit using the Crossways entrance. Access from platform to train by manual boarding ramp.","wikidata":"Q4997460","wikipedia":"en:Gidea Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2202375,51.5686007]},"properties":{"addr:city":"London","addr:housename":"Emerson Park Station","addr:street":"Butts Green Road","name":"Emerson Park","naptan:AtcoCode":"9100EMRSPKH","network":"London Overground","not:addr:postcode":"RM11 2JP","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"EMP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","website":"https://tfl.gov.uk/hub/stop/910GEMRSPKH/emerson-park-rail-station/","wheelchair":"yes","wikidata":"Q2177253","wikipedia":"en:Emerson Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2369945,51.4810858]},"properties":{"name":"Purfleet","naptan:AtcoCode":"9100PURFLET","network":"National Rail","operator":"c2c","public_transport":"station","railway":"station","ref:crs":"PFL","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wikidata":"Q2506816","wikipedia":"en:Purfleet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0135365,51.5338301]},"properties":{"light_rail":"yes","name":"Pudding Mill Lane","naptan:AtcoCode":"940GZZDLPUD","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","public_transport":"station","railway":"station","ref":"PML","start_date":"2014-04-28","station":"light_rail","wheelchair":"yes","wikidata":"Q733229","wikipedia":"en:Pudding Mill Lane DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8844821,52.4231523]},"properties":{"name":"Broome","name:cy":"Brŵm","naptan:AtcoCode":"9100BROOME","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"BME","request_stop":"yes","wikidata":"Q1965763","wikipedia":"en:Broome railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9120277,52.391361]},"properties":{"name":"Hopton Heath","naptan:AtcoCode":"9100HOPTONH","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"HPT","request_stop":"yes","wikidata":"Q2858875","wikipedia":"en:Hopton Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.947694,52.3572768]},"properties":{"name":"Bucknell","naptan:AtcoCode":"9100BKNELL","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"BUK","request_stop":"yes","wikidata":"Q1936871","wikipedia":"en:Bucknell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8375532,52.442192]},"properties":{"designation":"Unstaffed","name":"Craven Arms","naptan:AtcoCode":"9100CRAVENA","network":"National Rail","old_name":"Craven Arms and Stokesay","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"CRV","wikidata":"Q2209474","wikipedia":"en:Craven Arms railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.054752,51.5272449]},"properties":{"fare_zone":"2","layer":"-2","line":"Central","location":"underground","name":"Bethnal Green","name:ru":"Бэтнал-грин","naptan:AtcoCode":"940GZZLUBLG","network":"London Underground","operator":"Transport for London","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_London_Underground_stations","start_date":"1946-12-04","station":"subway","subway":"yes","wheelchair":"no","wikidata":"Q831397","wikimedia_commons":"Category:Bethnal Green tube station","wikipedia":"en:Bethnal Green tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9775854,53.4076085]},"properties":{"addr:city":"Liverpool","addr:postcode":"L1 1JD","addr:street":"Lime Street","alt_name":"LIVERPOOL LIME STREET LL","name":"Liverpool Lime Street","name:ko":"리버풀 라임 스트리트 역","naptan:AtcoCode":"9100LVRPLSH","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:alt_crs":"LVL","ref:crs":"LIV","wheelchair":"yes","wikidata":"Q801113","wikipedia":"en:Liverpool Lime Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3831294,52.6728741]},"properties":{"name":"Watlington","naptan:AtcoCode":"9100WATLGTN","network":"National Rail","old_name":"Magdalen Road","operator":"First Capital Connect","platforms":"2","public_transport":"station","railway":"station","ref:crs":"WTG","wikidata":"Q1839322","wikipedia":"en:Watlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.4040158,52.7538147]},"properties":{"name":"King's Lynn","naptan:AtcoCode":"9100KLYNN","network":"National Rail","network:wikidata":"Q26334","operator":"First Capital Connect","platforms":"2","public_transport":"station","railway":"station","ref:crs":"KLN","train":"yes","wikidata":"Q285604","wikipedia":"en:King's Lynn railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1653912,51.5552396]},"properties":{"name":"Hampstead Heath","naptan:AtcoCode":"9100HMPSTDH","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"HDH","source":"NPE","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2829947","wikipedia":"en:Hampstead Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0760535,51.5481908]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Dalston Kingsland Station","addr:postcode":"E8 2JS","addr:street":"Kingsland High Street","check_date:wheelchair":"2023-03-02","name":"Dalston Kingsland","naptan:AtcoCode":"9100DALSKLD","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DLK","source":"survey","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q1924477","wikipedia":"en:Dalston Kingsland railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0694125,51.4700059]},"properties":{"name":"Peckham Rye","naptan:AtcoCode":"9100PCKHMRY","network":"National Rail;London Overground","note":"Original location was in the middle of Brick Brewery's beer \"garden\"","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"PMR","source":"Bing;OS StreetView","source:network":"Sign","tfl_travelzone":"2","train":"yes","wheelchair":"no","wikidata":"Q2154508","wikipedia":"en:Peckham Rye railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2179221,51.5057781]},"properties":{"name":"Shepherd's Bush","naptan:AtcoCode":"9100SHPDSB","network":"National Rail;London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SPB","train":"yes","wheelchair":"limited","wheelchair:description":"London Overground only. Access from platform to train by manual boarding ramp. Use the ticket hall entrance for both platforms.","wikipedia":"en:Shepherd's Bush railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0744674,51.5232534]},"properties":{"electrified":"rail","layer":"1","name":"Shoreditch High Street","name:ru":"Шордич-Хай-стрит","naptan:AtcoCode":"9100SHRDHST","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SDC","source":"local knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Step-free from platform to train. (TfL map shows fully Step-free)","wikidata":"Q801441","wikipedia":"en:Shoreditch High Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1913533,51.5377475]},"properties":{"name":"Kilburn High Road","naptan:AtcoCode":"9100KLBRNHR","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"KBN","source:network":"sign","source_ref":"http://en.wikipedia.org/wiki/Kilburn_High_Road_station","wheelchair":"no","wikidata":"Q1800430","wikipedia":"en:Kilburn High Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.097888,51.5772398]},"properties":{"name":"Harringay Green Lanes","naptan:AtcoCode":"9100HRGYGL","network":"London Overground","old_name":"Harringay Park, Harringay Stadium","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HRY","source":"local knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"limited","wikidata":"Q9286575","wikipedia":"en:Harringay Green Lanes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1467554,51.5469937]},"properties":{"addr:city":"London","addr:housename":"Kentish Town West Station","addr:postcode":"NW5 3LR","addr:street":"Prince of Wales Road","name":"Kentish Town West","naptan:AtcoCode":"9100KNTSHTW","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"KTW","source":"survey","source:network":"Sign","wheelchair":"no","wikidata":"Q928181","wikipedia":"en:Kentish Town West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0668979,51.6152771]},"properties":{"addr:city":"London","addr:housename":"Silver Street Station","addr:postcode":"N18 2UE","addr:street":"Sterling Way","name":"Silver Street","naptan:AtcoCode":"9100SIVRST","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SLV","wheelchair":"no","wikidata":"Q1953734","wikipedia":"en:Silver Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1148864,51.5435462]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"N1 1DF","addr:street":"Caledonian Road","line":"Overground","name":"Caledonian Road & Barnsbury","naptan:AtcoCode":"9100CLDNNRB","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"CIR","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q5019457","wikipedia":"en:Caledonian Road & Barnsbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0070762,51.5694492]},"properties":{"addr:city":"London","addr:country":"GB","addr:housename":"Leyton Midland Road Station","addr:postcode":"E10 6JT","addr:street":"Midland Road","name":"Leyton Midland Road","naptan:AtcoCode":"9100LEYTNMR","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LEM","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q2217020","wikipedia":"en:Leyton Midland Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.009471,51.6325345]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"E4 6AL","addr:street":"Station Road","name":"Chingford","naptan:AtcoCode":"9100CHINGFD","network":"London Overground","operator":"London Overground","platforms":"3","public_transport":"station","railway":"station","ref:crs":"CHI","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","train":"yes","wheelchair":"yes","wikidata":"Q2250130","wikipedia":"en:Chingford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0001301,51.6088927]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"E4 9LA","addr:street":"The Avenue","name":"Highams Park","naptan:AtcoCode":"9100HGHMSPK","network":"London Overground","operator":"Transport for London","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HIP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 350m journey via street. Use the Wilton Place entrance for northbound platform. Use the Station Approach entrance for southbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q2040725","wikipedia":"en:Highams Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0574215,51.5319544]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"E2 9EG","addr:street":"Hackney Road","name":"Cambridge Heath","naptan:AtcoCode":"9100CAMHTH","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CBH","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2428591","wikipedia":"en:Cambridge Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0568749,51.5470605]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"E8 1LL","addr:street":"Amhurst Road","line":"Overground","name":"Hackney Central","naptan:AtcoCode":"9100HACKNYC","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"HKC","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","website":"https://tfl.gov.uk/overground/stop/910GHACKNYC/hackney-central-rail-station","wheelchair":"yes","wikidata":"Q2220302","wikipedia":"en:Hackney Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0369716,52.9487898]},"properties":{"alt_name":"Radcliffe-on-Trent","name":"Radcliffe","naptan:AtcoCode":"9100RADNOT","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"RDF","source":"NPE","wikidata":"Q1882427","wikipedia":"en:Radcliffe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.591276,51.512103]},"properties":{"addr:city":"Slough","addr:postcode":"SL2 5BY","name":"Slough","naptan:AtcoCode":"9100SLOUGH","network":"National Rail;Elizabeth Line","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"SLO","wheelchair":"yes","wikidata":"Q71950","wikipedia":"en:Slough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5104273,53.7152957]},"properties":{"name":"Outwood","naptan:AtcoCode":"9100OUTWOOD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OUT","wikidata":"Q2482077","wikipedia":"en:Outwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3006105,51.6135231]},"properties":{"addr:postcode":"CM14 4EW","addr:street":"Kings Road","fare_zone":"9","name":"Brentwood","name:lt":"Brentvudas","naptan:AtcoCode":"9100BRTWOOD","network":"National Rail;Elizabeth Line","old_name":"Brentwood and Warley","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"BRE","train":"yes","wheelchair":"limited","wheelchair:description":"You can only enter and exit using the Warley Hill entrance. Access from platform to train by manual boarding ramp.","wikidata":"Q2322282","wikipedia":"en:Brentwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0214699,51.5030491]},"properties":{"layer":"1","light_rail":"yes","name":"Heron Quays","naptan:AtcoCode":"940GZZDLHEQ","network":"Docklands Light Railway","noaddress":"yes","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q1459844","wikipedia":"en:Heron Quays DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.2341995,51.5932171]},"properties":{"fare_zone":"6","name":"Harold Wood","naptan:AtcoCode":"9100HRLDWOD","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"HRO","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q4787233","wikipedia":"en:Harold Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0695827,51.4901052]},"properties":{"light_rail":"yes","name":"Woolwich Arsenal DLR","naptan:AtcoCode":"940GZZDLWLA","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","start_date":"2009-01-10","station":"light_rail","wheelchair":"yes","wikidata":"Q104771243","wikipedia":"en:Woolwich Arsenal station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.026644,51.5094025]},"properties":{"air_conditioning":"no","light_rail":"yes","name":"Westferry","naptan:AtcoCode":"940GZZDLWFE","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q513260","wikipedia":"en:Westferry DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0105052,51.4880683]},"properties":{"light_rail":"yes","name":"Island Gardens","naptan:AtcoCode":"940GZZDLISL","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1363912","wikipedia":"en:Island Gardens DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1775422,51.5170856]},"properties":{"addr:city":"London","addr:postcode":"W2 1HQ","addr:street":"Praed Street","alt_name":"Paddington","layer":"1","name":"London Paddington","name:ru":"Паддингтон","naptan:AtcoCode":"9100PADTON","network":"National Rail;TfL Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"PAD","train":"yes","wheelchair":"yes","wikipedia":"en:London Paddington station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7363694,52.8090881]},"properties":{"name":"Yorton","naptan:AtcoCode":"9100YORTON","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","railway":"station","ref:crs":"YRT","request_stop":"yes","source":"NPE","wikidata":"Q2709911","wikipedia":"en:Yorton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7363,51.9954534]},"properties":{"addr:postcode":"MK3 6DZ","addr:street":"Sherwood Drive","name":"Bletchley","name:it":"Blečlis","naptan:AtcoCode":"9100BLTCHLY","network":"National Rail","platforms":"8","public_transport":"station","railway":"station","ref:crs":"BLY","wikidata":"Q4869827","wikipedia":"en:Bletchley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1236888,51.5074975]},"properties":{"addr:city":"London","addr:postcode":"WC2N 5HS","addr:street":"Strand","alt_name":"London Charing Cross","name":"Charing Cross","name:he":"תחנת צ'רינג קרוס","name:ru":"Чаринг-Кросс","naptan:AtcoCode":"9100CHRX","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","railway:ref:DB":"XKLC","ref:crs":"CHX","train":"yes","uic_ref":"7000007","wheelchair":"no","wikidata":"Q801128","wikipedia":"en:Charing Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.207144,51.9018356]},"properties":{"name":"Stevenage","naptan:AtcoCode":"9100STEVNGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SVG","ref:tiploc":"STEVNGE","wheelchair":"yes","wikidata":"Q19970","wikipedia":"en:Stevenage railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1799202,50.6338793]},"properties":{"addr:city":"Shanklin","addr:country":"GB","addr:street":"Station Approach","image":"File:Shanklin station, Isle of Wight.jpg","name":"Shanklin","naptan:AtcoCode":"9100SHANKLN","network":"National Rail","network:wikidata":"Q26334","operator":"Island Line","public_transport":"station","railway":"station","ref:crs":"SHN","train":"yes","wheelchair":"yes","wikidata":"Q2680445","wikipedia":"en:Shanklin railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8892004,53.3576179]},"properties":{"name":"Liverpool South Parkway","naptan:AtcoCode":"9100ALERTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LPY","train":"yes","wikidata":"Q2653302","wikipedia":"en:Liverpool South Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1622454,50.6571102]},"properties":{"image":"File:Sandown Railway Station, Isle of Wight, UK.jpg","name":"Sandown","naptan:AtcoCode":"9100SNDOWN","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SAN","train":"yes","wikidata":"Q2685831","wikipedia":"en:Sandown railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.116144,51.4622697]},"properties":{"addr:city":"Chippenham","addr:postcode":"SN15 3QE","addr:street":"Cocklebury Road","name":"Chippenham","name:it":"Čipnamas","naptan:AtcoCode":"9100CHIPNHM","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CPM","wheelchair":"yes","wikidata":"Q2178517","wikipedia":"en:Chippenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1226262,52.8035815]},"properties":{"name":"Stafford","naptan:AtcoCode":"9100STAFFRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"STA","wheelchair":"yes","wikidata":"Q2393603","wikipedia":"en:Stafford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.193118,51.6975545]},"properties":{"name":"Potters Bar","naptan:AtcoCode":"9100POTRSBR","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"PBR","ref:tiploc":"POTRSBR","train":"yes","wheelchair":"yes","wikidata":"Q19960","wikipedia":"en:Potters Bar railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7114814,51.5429361]},"properties":{"addr:postcode":"SS2 6AZ","name":"Southend Victoria","naptan:AtcoCode":"9100STHVIC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SOV","website":"http://www.nationalrail.co.uk/stations/sov/details.html","wikidata":"Q3254036","wikipedia":"en:Southend Victoria railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6915156,51.5374449]},"properties":{"name":"Westcliff","naptan:AtcoCode":"9100WCLIFF","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WCF","wikidata":"Q2319277","wikipedia":"en:Westcliff railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9922097,53.4050028]},"properties":{"alt_name":"James Street","name":"Liverpool James Street","naptan:AtcoCode":"9100JAMESST","network":"National Rail","note:platforms":"platforms 1 and 3 in normal use, platform 2 generally disused","platforms":"3","public_transport":"station","railway":"station","ref:crs":"LVJ","wikidata":"Q1928945","wikipedia":"en:Liverpool James Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1985012,53.142079]},"properties":{"name":"Mansfield","naptan:AtcoCode":"9100MFLDTWN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MFT","train":"yes","wikidata":"Q13528239","wikipedia":"en:Mansfield railway station, Nottinghamshire"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3698401,53.1010582]},"properties":{"name":"Alfreton","naptan:AtcoCode":"9100ALFRETN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ALF","train":"yes","wheelchair":"no","wikidata":"Q1872948","wikipedia":"en:Alfreton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1009414,51.6340675]},"properties":{"name":"Winchmore Hill","naptan:AtcoCode":"9100WNMHILL","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"WIH","train":"yes","wheelchair":"no","wikidata":"Q1923168","wikipedia":"en:Winchmore Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.127994,51.5679857]},"properties":{"addr:city":"Romford","addr:postcode":"RM6 4BU","addr:street":"Station Road","fare_zone":"5","name":"Chadwell Heath","naptan:AtcoCode":"9100CHDWLHT","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"CTH","source":"Survey of 2015-05-27","train":"yes","wheelchair":"yes","wikidata":"Q2468519","wikipedia":"en:Chadwell Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3206893,51.5135365]},"properties":{"fare_zone":"3","name":"West Ealing","naptan:AtcoCode":"9100WEALING","network":"National Rail;Elizabeth Line","old_name":"Castle Hill","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"WEA","source":"NPE","toilets:wheelchair":"no","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q7985007","wikipedia":"en:West Ealing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4191564,51.5029246]},"properties":{"fare_zone":"5","name":"Hayes and Harlington","naptan:AtcoCode":"9100HAYESAH","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"HAY","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q1622594","wikipedia":"en:Hayes & Harlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3775015,51.5060205]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"UB2 4AA","addr:street":"South Road","fare_zone":"4","layer":"1","name":"Southall","name:pa":"ਸਾਊਥਹਾਲ","name:pnb":"ساؤتھ ہال","name:ur":"ساؤتھ ہال","naptan:AtcoCode":"9100STHALL","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"STL","wheelchair":"limited","wheelchair:description":"Board the train using a staff-operated ramp.","wikidata":"Q5283892","wikipedia":"en:Southall railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3386659,51.5117871]},"properties":{"fare_zone":"4","name":"Hanwell","naptan:AtcoCode":"9100HANWELL","network":"National Rail;Elizabeth Line","old_name":"Hanwell and Elthorne","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"HAN","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wikidata":"Q2784392","wikipedia":"en:Hanwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1119305,51.565803]},"properties":{"addr:city":"Ilford","addr:postcode":"IG3 9UH","addr:street":"Goodmayes Road","fare_zone":"4","name":"Goodmayes","naptan:AtcoCode":"9100GODMAYS","network":"National Rail;Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"GMY","source":"Survey of 2015-06-01","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2975461","wikipedia":"en:Goodmayes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2679825,51.5169789]},"properties":{"fare_zone":"3","name":"Acton Main Line","naptan:AtcoCode":"9100ACTONML","network":"National Rail;Elizabeth Line","old_name":"Acton Horn Lane","operator":"TfL Rail","platforms":"3","public_transport":"station","railway":"station","ref:crs":"AML","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q1858427","wikipedia":"en:Acton Main Line railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2025961,51.5450493]},"properties":{"name":"Brondesbury","naptan:AtcoCode":"9100BRBY","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"BSY","source":"survey;local_knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q4973856","wikipedia":"en:Brondesbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0043357,51.5205083]},"properties":{"addr:city":"London","addr:postcode":"E16 4BL","light_rail":"yes","name":"Star Lane","naptan:AtcoCode":"940GZZDLSTL","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","operator:wikidata":"Q89212210","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","ref:GB:uprn":"10090325953","station":"light_rail","wheelchair":"yes","wikidata":"Q2288582","wikipedia":"en:Star Lane DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0554867,51.5117593]},"properties":{"light_rail":"yes","name":"Shadwell DLR","naptan:AtcoCode":"9100SHADWEL","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q801431","wikipedia":"en:Shadwell DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2200978,51.5344634]},"properties":{"name":"Kensal Rise","naptan:AtcoCode":"9100KENR","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"KNR","ref:stanox":"72413","ref:tiploc":"KENR","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"limited","wheelchair:description":"Step-free platform interchange requires a 200m journey via street. Use the Station Terrace entrance for westbound platform. Use the Chamberlayne Road entrance for eastbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q2473076","wikipedia":"en:Kensal Rise railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.060686,51.5486455]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"E8 1LA","addr:street":"Dalston Lane","name":"Hackney Downs","naptan:AtcoCode":"9100HAKNYNM","network":"National Rail;London Overground","operator":"London Overground","platforms":"4","public_transport":"station","railway":"station","ref:crs":"HAC","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","website":"https://tfl.gov.uk/overground/stop/910GHAKNYNM/hackney-downs-rail-station","wheelchair":"limited","wheelchair:note":"Step-free access to Platform 1 from Hackney Central only.","wikidata":"Q2572236","wikipedia":"en:Hackney Downs railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.043121,51.5470789]},"properties":{"line":"Overground","name":"Homerton","naptan:AtcoCode":"9100HOMRTON","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"HMN","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","train":"yes","website":"https://tfl.gov.uk/overground/stop/910GHOMRTON/homerton-rail-station","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2451415","wikipedia":"en:Homerton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0930239,51.5485632]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"N1 2PG","addr:street":"Wallace Road","alt_name":"Canonbury ELL","landuse":"railway","line":"Overground","name":"Canonbury","name:fr":"Gare de Canonbury","naptan:AtcoCode":"9100CNNB","network":"London Overground","operator":"London Overground","platforms":"4","public_transport":"station","railway":"station","ref:crs":"CNN","source":"Survey of 2015-09-23","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"limited","wheelchair:description":"Board the train using a staff-operated ramp.","wikidata":"Q800611","wikipedia":"en:Canonbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0526302,51.6480314]},"properties":{"name":"Southbury","naptan:AtcoCode":"9100SBURY","network":"London Overground","old_name":"Churchbury Station","operator":"Arriva Rail London","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SBU","wheelchair":"no","wikidata":"Q301987","wikipedia":"en:Southbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2103359,51.5405138]},"properties":{"name":"Brondesbury Park","naptan:AtcoCode":"9100BRBYPK","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"BSP","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2691877","wikipedia":"en:Brondesbury Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0717169,51.5804433]},"properties":{"name":"South Tottenham","naptan:AtcoCode":"9100STOTNHM","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"STO","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q686458","wikipedia":"en:South Tottenham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0322047,51.5811716]},"properties":{"name":"St James Street","naptan:AtcoCode":"9100STJMSST","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"SJS","wheelchair":"no","wikidata":"Q2084371","wikipedia":"en:St. James Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0241533,51.5434259]},"properties":{"name":"Hackney Wick","naptan:AtcoCode":"9100HACKNYW","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"HKW","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations;http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q2003534","wikipedia":"en:Hackney Wick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0694005,51.6417042]},"properties":{"name":"Bush Hill Park","naptan:AtcoCode":"9100BHILLPK","network":"London Overground","operator":"Arriva Rail London","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BHK","wheelchair":"limited","wheelchair:description":"You can change between the northbound platform toward High Barnet and the northbound platform towards Edgeware.","wikidata":"Q962907","wikipedia":"en:Bush Hill Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0577737,51.5410518]},"properties":{"man_made":"bridge","name":"London Fields","naptan:AtcoCode":"9100LONFLDS","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"LOF","source:network":"Sign","train":"yes","website":"https://tfl.gov.uk/overground/stop/910GLONFLDS/london-fields-rail-station","wheelchair":"no","wikidata":"Q2434508","wikipedia":"en:London Fields railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1788007,51.5414337]},"properties":{"name":"South Hampstead","naptan:AtcoCode":"9100SHMPSTD","network":"London Overground","operator":"London Overground","public_transport":"station","railway":"station","ref:crs":"SOH","ref:stanox":"72314","ref:tiploc":"SHMPSTD","source:network":"Sign","source_ref":"http://en.wikipedia.org/wiki/London_Overground#Stations","wheelchair":"no","wikidata":"Q2587081","wikipedia":"en:South Hampstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0172729,51.5222078]},"properties":{"light_rail":"yes","name":"Devons Road","naptan:AtcoCode":"940GZZDLDEV","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1207006","wikipedia":"en:Devons Road DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0169979,51.5076791]},"properties":{"light_rail":"yes","name":"Poplar","naptan:AtcoCode":"940GZZDLPOP","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"4","railway":"station","source_ref":"http://en.wikipedia.org/wiki/List_of_Docklands_Light_Railway_stations","station":"light_rail","wheelchair":"yes","wikidata":"Q1526395","wikipedia":"en:Poplar DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0141164,51.5152051]},"properties":{"light_rail":"yes","name":"Langdon Park","naptan:AtcoCode":"940GZZDLLDP","network":"Docklands Light Railway","operator":"KeolisAmey Docklands Ltd","platforms":"2","public_transport":"station","public_transport:version":"2","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q677453","wikipedia":"en:Langdon Park DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5466911,54.5206617]},"properties":{"name":"Darlington","name:lt":"Darlingtonas","naptan:AtcoCode":"9100DLTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DAR","source":"OS_OpenData_SteetView","wikidata":"Q2286393","wikipedia":"en:Darlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4138361,53.4168529]},"properties":{"name":"Meadowhall Interchange","naptan:AtcoCode":"9100MEADWHL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"MHS","wikidata":"Q2467647","wikipedia":"en:Meadowhall Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8810819,53.5694489]},"properties":{"name":"Ormskirk","naptan:AtcoCode":"9100ORMSKRK","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"OMS","train":"yes","wheelchair":"yes","wikipedia":"en:Ormskirk railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9892356,53.4085494]},"properties":{"addr:city":"Liverpool","addr:postcode":"L2 2BS","addr:street":"Moorfields","name":"Moorfields","naptan:AtcoCode":"9100MORFLDS","network":"National Rail","operator":"Merseytravel","platforms":"3","public_transport":"station","railway":"station","ref:crs":"MRF","wikidata":"Q2261745","wikipedia":"en:Moorfields railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9091337,52.4802412]},"properties":{"name":"Market Harborough","naptan:AtcoCode":"9100MRKTHRB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MHR","wikidata":"Q2682713","wikimedia_commons":"Category:Market Harborough railway station","wikipedia":"en:Market Harborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9177114,51.4410298]},"properties":{"addr:city":"Reading","name":"Earley","naptan:AtcoCode":"9100ERLY","network":"National Rail","railway":"station","ref:crs":"EAR","wheelchair":"limited","wikidata":"Q2345955","wikipedia":"en:Earley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.244923,53.0864206]},"properties":{"addr:postcode":"ST7 1BX","addr:street":"Station Road","name":"Kidsgrove","naptan:AtcoCode":"9100KIDSGRV","network":"National Rail","old_name":"Harecastle","public_transport":"station","railway":"station","ref:crs":"KDG","source":"Bing","wikidata":"Q2539760","wikipedia":"en:Kidsgrove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6870818,52.6375245]},"properties":{"addr:postcode":"B79 7JT","addr:street":"Victoria Road","name":"Tamworth","name:ur":"ٹیم ورتھ","naptan:AtcoCode":"9100TMWTHHL","network":"National Rail","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"TAM","train":"yes","wikidata":"Q768018","wikipedia":"en:Tamworth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8440858,51.7180454]},"properties":{"name":"Princes Risborough","naptan:AtcoCode":"9100PRINRIS","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"PRR","wikidata":"Q2000163","wikipedia":"en:Princes Risborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8143149,51.8134286]},"properties":{"name":"Aylesbury","naptan:AtcoCode":"9100AYLSBRY","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"AYS","website":"http://www.nationalrail.co.uk/stations_destinations/AYS.aspx","wikidata":"Q2338815","wikipedia":"en:Aylesbury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.134793,53.3505513]},"properties":{"name":"Poynton","naptan:AtcoCode":"9100POYNTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PYT","wheelchair":"limited","wikipedia":"en:Poynton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1810781,53.0079887]},"properties":{"addr:city":"Stoke-on-Trent","addr:postcode":"ST4 2AA","addr:street":"Station Road","name":"Stoke-on-Trent","naptan:AtcoCode":"9100STOKEOT","network":"National Rail","network:wikidata":"Q26334","operator":"First Trenitalia (Avanti West Coast)","platforms":"3","public_transport":"station","railway":"station","ref:crs":"SOT","source":"Bing","train":"yes","wheelchair":"yes","wikidata":"Q2686932","wikipedia":"en:Stoke-on-Trent railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1219368,53.2593665]},"properties":{"addr:postcode":"SK11 6JP","addr:street":"Watersgreen","name":"Macclesfield","naptan:AtcoCode":"9100MACLSFD","network":"National Rail","old_name":"Macclesfield Central","public_transport":"station","railway":"station","ref:crs":"MAC","wikipedia":"en:Macclesfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1769016,51.2069721]},"properties":{"name":"Warminster","naptan:AtcoCode":"9100WRMNSTR","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"WMN","source":"Bing","train":"yes","wikidata":"Q2383286","wikipedia":"en:Warminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1001222,51.8969882]},"properties":{"addr:city":"Cheltenham","addr:postcode":"GL51 8NP","addr:street":"Queens Road","name":"Cheltenham Spa","naptan:AtcoCode":"9100CHLTNHM","network":"National Rail","network:wikidata":"Q26334","old_name":"Cheltenham Spa (Lansdown)","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"CNM","source":"Bing","train":"yes","wheelchair":"yes","wikipedia":"en:Cheltenham Spa railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7304447,52.2258095]},"properties":{"addr:postcode":"HR6 8AR","addr:street":"Worcester Road","internet_access":"no","name":"Leominster","name:cy":"Llanllieni","naptan:AtcoCode":"9100LEOMNST","network":"National Rail","operator":"Trafnidiaeth Cymru","operator:cy":"Trafnidiaeth Cymru","operator:en":"Transport for Wales","public_transport":"station","railway":"station","ref:crs":"LEO","wikipedia":"en:Leominster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8047602,52.065978]},"properties":{"name":"Wolverton","naptan:AtcoCode":"9100WLVR","network":"National Rail","platforms":"4","public_transport":"station","railway":"station","ref:crs":"WOL","wikidata":"Q1824147","wikipedia":"en:Wolverton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9982505,53.3484812]},"properties":{"addr:city":"Port Sunlight","addr:postcode":"CH62 4XB","addr:street":"Greendale Road","name":"Port Sunlight","naptan:AtcoCode":"9100PSLT","network":"National Rail","operator":"Merseyrail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"PSL","wikidata":"Q2421117","wikipedia":"en:Port Sunlight railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4197283,53.2382236]},"properties":{"name":"Chesterfield","naptan:AtcoCode":"9100CHFD","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"CHD","train":"yes","wikidata":"Q2645921","wikipedia":"en:Chesterfield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4599923,53.4282913]},"properties":{"addr:postcode":"WA3 5BA","addr:street":"Glazebrook Lane","name":"Glazebrook","naptan:AtcoCode":"9100GLAZBRK","network":"National Rail","operator":"Northern Rail","railway":"station","ref:crs":"GLZ","source":"OS_OpenData_StreetView","wikidata":"Q1888823","wikipedia":"en:Glazebrook railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.899422,51.5338451]},"properties":{"name":"Henley-on-Thames","naptan:AtcoCode":"9100HNLYOT","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"HOT","train":"yes","wikidata":"Q5714576","wikipedia":"en:Henley-on-Thames railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9847378,53.3302649]},"properties":{"addr:postcode":"SK23 7AA","addr:street":"Market Street","name":"Whaley Bridge","naptan:AtcoCode":"9100WHALYBG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WBR","start_date":"1857","train":"yes","wikidata":"Q2111822","wikipedia":"en:Whaley Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9795092,53.4042207]},"properties":{"name":"Liverpool Central","naptan:AtcoCode":"9100LVRPLCH","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"LVC","wikidata":"Q2519286","wikipedia":"en:Liverpool Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9920015,53.4295369]},"properties":{"name":"Sandhills","naptan:AtcoCode":"9100SANDH","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"SDL","wikidata":"Q2463350","wikipedia":"en:Sandhills railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6883829,52.4888488]},"properties":{"name":"Corby","naptan:AtcoCode":"9100CORBY","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"COR","train":"yes","wikidata":"Q5169828","wikimedia_commons":"Category:Corby railway station","wikipedia":"en:Corby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9033054,54.3794896]},"properties":{"addr:city":"Windermere","addr:postcode":"LA23 1AH","addr:street":"Station Precinct","name":"Windermere","naptan:AtcoCode":"9100WMER","network":"National Rail","network:wikidata":"Q26334","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"WDM","train":"yes","website":"https://www.northernrailway.co.uk/stations/WDM","wheelchair":"yes","wikidata":"Q2530403","wikipedia":"en:Windermere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1867064,52.9697297]},"properties":{"name":"Swineshead","naptan:AtcoCode":"9100SWSHEAD","network":"National Rail","railway":"station","ref:crs":"SWE","source":"Bing","wikidata":"Q1834818","wikipedia":"en:Swineshead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0300034,53.5629155]},"properties":{"name":"Cleethorpes","naptan:AtcoCode":"9100CLTHRPS","network":"National Rail","operator":"First TransPennine Express","public_transport":"station","railway":"station","ref:crs":"CLE","source":"npe","wikidata":"Q1959432","wikipedia":"en:Cleethorpes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1399149,53.5219538]},"properties":{"name":"Doncaster","name:lt":"Donkasteris","naptan:AtcoCode":"9100DONC","network":"National Rail","postal_code":"DN1 1PE","public_transport":"station","railway":"station","ref:crs":"DON","wheelchair":"yes","wikidata":"Q2565782","wikipedia":"en:Doncaster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0868507,53.5634567]},"properties":{"name":"Grimsby Town","naptan:AtcoCode":"9100GRMSBYT","network":"National Rail","operator":"First TransPennine Express","platforms":"3","public_transport":"station","railway":"station","ref:crs":"GMB","source":"npe","toilets:wheelchair":"yes","wheelchair":"yes","wikidata":"Q5609334","wikipedia":"en:Grimsby Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.558903,54.6449643]},"properties":{"name":"Workington","naptan:AtcoCode":"9100WKNT","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"WKG","wikidata":"Q2345398","wikipedia":"en:Workington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1571731,52.7887647]},"properties":{"addr:postcode":"PE11 1EA","addr:street":"Winsover Road","name":"Spalding","naptan:AtcoCode":"9100SPALDNG","network":"National Rail","network:wikidata":"Q26334","old_name":"Spalding Town","public_transport":"station","railway":"station","ref:crs":"SPA","train":"yes","wikidata":"Q2097124","wikipedia":"en:Spalding railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3368448,53.3840114]},"properties":{"name":"Market Rasen","naptan:AtcoCode":"9100MKTR","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"MKR","source":"Bing","wikidata":"Q4422790","wikipedia":"en:Market Rasen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6645836,53.267314]},"properties":{"name":"Saxilby","naptan:AtcoCode":"9100SAXILBY","network":"National Rail","operator":"East Midlands Railway","public_transport":"station","railway":"station","ref:crs":"SXY","train":"yes","wikidata":"Q2732092","wikipedia":"en:Saxilby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.275711,53.4862309]},"properties":{"name":"Salford Crescent","naptan:AtcoCode":"9100SLFDCT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SLD","ref:tiploc":"SLFDCT","train":"yes","wheelchair":"yes","wikidata":"Q2084487","wikipedia":"en:Salford Crescent railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.548621,53.794414]},"properties":{"alt_name":"Leeds City","name":"Leeds","naptan:AtcoCode":"9100LEEDS","network":"National Rail","operator":"Network Rail","platforms":"17","public_transport":"station","railway":"station","ref:crs":"LDS","train":"yes","wheelchair":"yes","wikidata":"Q1466941","wikipedia":"en:Leeds railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6515681,53.5861008]},"properties":{"addr:city":"Scunthorpe","addr:street":"Station Road","name":"Scunthorpe","naptan:AtcoCode":"9100SCNTHRP","network":"National Rail","operator":"First TransPennine Express","public_transport":"station","railway":"station","ref:crs":"SCU","source":"NPE","wheelchair":"yes","wikidata":"Q7439507","wikipedia":"en:Scunthorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5055805,53.6822118]},"properties":{"name":"Wakefield Westgate","naptan:AtcoCode":"9100WKFLDWG","network":"National Rail","operator":"LNER","public_transport":"station","railway":"station","ref:crs":"WKF","train":"yes","wikidata":"Q3907323","wikipedia":"en:Wakefield Westgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3076876,52.626307]},"properties":{"addr:city":"Norwich","addr:country":"GB","addr:postcode":"NR1 1EF","addr:street":"Station Approach","air_conditioning":"no","description":"Customer help points on concourse. Entire station is step free.","hearing_impaired:induction_loop":"yes","internet_access":"yes","internet_access:fee":"no","name":"Norwich","naptan:AtcoCode":"9100NRCH","network":"National Rail","operator":"Abellio Greater Anglia","platforms":"6","public_transport":"station","railway":"station","ref:crs":"NRW","start_date":"1844 - 05 - 01","train":"yes","uic_ref":"7001635","website":"https://www.greateranglia.co.uk/destination/norwich","wheelchair":"yes","wheelchair:description":"Ramp for train access available. Accessible booking office counter available. Accessible ticket machines located in the ticket hall and on the station concourse. Assistance is only available during the station staffed hours (see above), unless pre-booked.","wikidata":"Q389902","wikipedia":"en:Norwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7445773,51.6293727]},"properties":{"addr:postcode":"HP13 6NN","addr:street":"Amersham Hill","name":"High Wycombe","naptan:AtcoCode":"9100HWYCOMB","network":"National Rail","operator":"Chiltern Railways","platforms":"3","public_transport":"station","railway":"station","ref:crs":"HWY","wikidata":"Q1851135","wikipedia":"en:High Wycombe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7468871,51.3116516]},"properties":{"name":"Frimley","naptan:AtcoCode":"9100FRIMLEY","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"FML","wheelchair":"limited","wikidata":"Q2593341","wikipedia":"en:Frimley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2153478,51.4609339]},"properties":{"name":"Putney","name:ru":"Путни","naptan:AtcoCode":"9100PUTNEY","network":"National Rail","network:wikidata":"Q26334","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"PUT","train":"yes","wheelchair":"yes","wikidata":"Q2494925","wikipedia":"en:Putney railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0961859,51.5407328]},"properties":{"name":"Essex Road","naptan:AtcoCode":"9100ESSEXRD","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"EXR","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","toilets:wheelchair":"no","train":"yes","wheelchair":"no","wikidata":"Q682124","wikipedia":"en:Essex Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7310208,50.952632]},"properties":{"name":"Rye","naptan:AtcoCode":"9100RYEE","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"RYE","train":"yes","wheelchair":"yes","wikidata":"Q7384993","wikipedia":"en:Rye railway station (East Sussex)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6767778,51.4062463]},"properties":{"addr:postcode":"SL5 9EG","addr:street":"Station Hill","name":"Ascot","naptan:AtcoCode":"9100ASCOT","network":"National Rail","old_name":"Ascot and Sunninghill","operator":"South West Trains","railway":"station","ref:crs":"ACT","wikidata":"Q2750890","wikipedia":"en:Ascot_railway_station_(Berkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6053949,51.4866279]},"properties":{"name":"Windsor and Eton Riverside","naptan:AtcoCode":"9100WSORAER","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"WNR","train":"yes","wikidata":"Q6547636","wikipedia":"en:Windsor & Eton Riverside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8545851,51.0681986]},"properties":{"name":"Ham Street","naptan:AtcoCode":"9100HMST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HMT","wikidata":"Q2453414","wikipedia":"en:Ham Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.3842646,51.6670001]},"properties":{"addr:housename":"Ingatestone Railway Station","addr:postcode":"CM4 0BW","addr:street":"Station Lane","name":"Ingatestone","naptan:AtcoCode":"9100INGTSTN","network":"National Rail","operator":"National Express East Anglia","platforms":"2","public_transport":"station","railway":"station","ref:crs":"INT","start_date":"1844","wikidata":"Q2651495","wikipedia":"en:Ingatestone railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2130289,51.558717]},"properties":{"name":"Cricklewood","naptan:AtcoCode":"9100CRKLWD","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"CRI","source":"Bing;survey","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"You can only enter and exit southbound platform. Access from platform to train by manual boarding ramp.","wikidata":"Q2794823","wikipedia":"en:Cricklewood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4911208,51.7422715]},"properties":{"addr:city":"Hemel Hempstead","addr:postcode":"HP3 9BQ","addr:street":"London Road","name":"Hemel Hempstead","naptan:AtcoCode":"9100HEMLHMP","network":"National Rail","operator":"London Midland","public_transport":"station","railway":"station","ref:crs":"HML","wheelchair":"yes","wikidata":"Q19965","wikipedia":"en:Hemel Hempstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3719521,51.3851637]},"properties":{"addr:city":"Margate","addr:street":"Station Approach","name":"Margate","naptan:AtcoCode":"9100MARGATE","network":"National Rail","network:wikidata":"Q26334","old_name":"Margate West","platforms":"4","public_transport":"station","railway":"station","ref:crs":"MAR","source":"survey","train":"yes","wheelchair":"yes","wikidata":"Q4296894","wikipedia":"en:Margate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7307328,51.2753951]},"properties":{"addr:postcode":"GU12 5QA","addr:street":"Lynchford Road","name":"North Camp","naptan:AtcoCode":"9100NTHCAMP","network":"National Rail","operator":"First Great Western","public_transport":"station","railway":"station","ref:crs":"NCM","wheelchair":"yes","wikidata":"Q2297819","wikipedia":"en:North Camp railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1082027,51.5042171]},"properties":{"addr:city":"London","addr:postcode":"SE1 8SW","addr:street":"Sandell Street","name":"Waterloo East","naptan:AtcoCode":"9100WLOE","network":"National Rail","old_name":"Waterloo Eastern","operator":"Southeastern","platforms":"4","public_transport":"station","railway":"station","ref:crs":"WAE","source":"Bing","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access to Waterloo East is only through use of lift at Waterloo Main. Ramps access to the platforms is steep.","wikidata":"Q685952","wikimedia_commons":"Category:Waterloo_East_railway_station","wikipedia":"en:Waterloo East railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1230224,51.5323954]},"properties":{"addr:city":"London","addr:postcode":"N1C 4AP","addr:street":"Euston Road","alt_name":"King's Cross","name":"London King's Cross","name:ru":"Лондон - Королевский","naptan:AtcoCode":"9100KNGX","network":"National Rail","operator":"Network Rail","platforms":"12","public_transport":"station","railway":"station","ref:crs":"KGX","wheelchair":"yes","wikidata":"Q219867","wikipedia":"en:London King's Cross railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0095073,51.3765959]},"properties":{"name":"Hayes","naptan:AtcoCode":"9100HAYS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HYS","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Short ramp access from car park to station entrance. Step free access to these terminal platform from station entrance via short steep ramp.","wikidata":"Q2479740","wikipedia":"en:Hayes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0038458,51.482607]},"properties":{"name":"Maze Hill","naptan:AtcoCode":"9100MAZEH","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"MZH","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp.","wikidata":"Q6798399","wikipedia":"en:Maze Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1329448,51.4635649]},"properties":{"addr:city":"Bexleyheath","addr:housename":"Bexleyheath Station","addr:postcode":"DA7 4AA","addr:street":"Station Road","image":"https://archive.org/details/bexleyheath-2019-03-28/Bexleyheath-2019-03-28/DSCN9279.JPG","name":"Bexleyheath","naptan:AtcoCode":"9100BXLYHTH","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BXH","wheelchair":"yes","wikidata":"Q3262067","wikipedia":"en:Bexleyheath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1533667,51.4922273]},"properties":{"name":"Belvedere","naptan:AtcoCode":"9100BELVEDR","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"BVD","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"limited","wheelchair:description":"Step free access to both platforms. No step free interchange between platforms which is via a footbridge.","wikidata":"Q2095782","wikipedia":"en:Belvedere railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.137974,51.315543]},"properties":{"name":"Coulsdon South","naptan:AtcoCode":"9100COLSDNS","network":"National Rail","postal_code":"CR5 3EA","public_transport":"station","railway":"station","ref:crs":"CDS","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2514119","wikipedia":"en:Coulsdon South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4683126,51.436496]},"properties":{"addr:city":"Ashford","addr:country":"GB","addr:housename":"Ashford Station","addr:postcode":"TW15 2QN","addr:street":"Station Approach","name":"Ashford","naptan:AtcoCode":"9100ASFDMSX","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"AFS","source:name":"npe","wheelchair":"yes","wikidata":"Q681232","wikipedia":"en:Ashford railway station (Surrey)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0793044,51.4592305]},"properties":{"name":"Falconwood","naptan:AtcoCode":"9100FALCNWD","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"FCN","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2569749","wikipedia":"en:Falconwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7664026,51.571086]},"properties":{"name":"Marlow","naptan:AtcoCode":"9100MARLOW","network":"National Rail","noaddress":"yes","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"MLW","website":"http://www.nationalrail.co.uk/stations/MLW/details.aspx","wheelchair":"yes","wikidata":"Q2171438","wikipedia":"en:Marlow railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.030809,51.4867602]},"properties":{"addr:street":"Charlton Church Lane","name":"Charlton","naptan:AtcoCode":"9100CRLN","naptan:CommonName":"Charlton","network":"National Rail","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"CTN","train":"yes","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q2216265","wikipedia":"en:Charlton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7748261,52.0342006]},"properties":{"addr:city":"Milton Keynes","addr:housename":"Station House","addr:housenumber":"302","addr:postcode":"MK9 1LA","addr:street":"Elder Gate","name":"Milton Keynes Central","naptan:AtcoCode":"9100MKNSCEN","network":"National Rail","network:wikidata":"Q26334","operator":"London Northwestern Railway","platforms":"7","public_transport":"station","railway":"station","ref:crs":"MKC","train":"yes","wheelchair":"limited","wheelchair:description":"Refurbishment of station forecourt in Spring 2012 created several difficulties for disabled visitors. Rounded drop off, 1 (unmarked) dropped kerb","wikidata":"Q2747135","wikipedia":"en:Milton Keynes Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1032417,51.5104871]},"properties":{"addr:city":"London","addr:postcode":"EC4V 4DY","addr:street":"Queen Victoria Street","name":"London Blackfriars","name:da":"Blackfriars Station","name:ja":"ブラクフライヤズ (黒修道士) 駅","name:ru":"Блэкфрайерс","naptan:AtcoCode":"9100BLFR","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"BFR","train":"yes","wheelchair":"yes","wikidata":"Q284195","wikimedia_commons":"Category:Blackfriars_station","wikipedia":"en:Blackfriars station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6988623,51.4997221]},"properties":{"name":"Avonmouth","naptan:AtcoCode":"9100AVONMTH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"AVN","source":"NPE","train":"yes","wikidata":"Q2198007","wikipedia":"en:Avonmouth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6496514,51.4795006]},"properties":{"name":"Sea Mills","naptan:AtcoCode":"9100SEMILLS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SML","toilets:wheelchair":"no","wheelchair":"yes","wikidata":"Q2672919","wikipedia":"en:Sea Mills railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0347837,51.6428463]},"properties":{"addr:city":"London","addr:country":"GB","addr:postcode":"EN3 4QB","addr:street":"South Street","name":"Ponders End","naptan:AtcoCode":"9100PNDRSEN","network":"National Rail","operator":"Abellio Greater Anglia","public_transport":"station","railway":"station","ref:crs":"PON","source":"Survey of 2015-09-08","wheelchair":"yes","wikidata":"Q2469907","wikipedia":"en:Ponders End railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0371218,51.5667512]},"properties":{"name":"Lea Bridge","naptan:AtcoCode":"9100LEABDGE","network":"National Rail","operator":"Abellio Greater Anglia","public_transport":"station","railway":"station","ref:crs":"LEB","source":"Survey of 2016-05-13","start_date":"2016-05-15","wheelchair":"yes","wikidata":"Q6508178","wikipedia":"en:Lea Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5804029,51.4490991]},"properties":{"addr:city":"Bristol","addr:postcode":"BS1 6QF","alt_name":"Temple Meads","name":"Bristol Temple Meads","name:cy":"Temple Meads Bryste","name:en":"Bristol Temple Meads","naptan:AtcoCode":"9100BRSTLTM","network":"National Rail","operator":"Network Rail","public_transport":"station","railway":"station","ref:crs":"BRI","ref:stanox":"81700","ref:tiploc":"BRSTLTM","wheelchair":"yes","wikidata":"Q800579","wikipedia":"en:Bristol Temple Meads railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5782541,54.8545355]},"properties":{"name":"Chester-le-Street","naptan:AtcoCode":"9100CLST","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"CLS","train":"yes","wikidata":"Q2642125","wikipedia":"en:Chester-le-Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5815122,54.7797488]},"properties":{"name":"Durham","naptan:AtcoCode":"9100DRHM","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"DHM","train":"yes","wheelchair":"yes","wikidata":"Q2407800","wikipedia":"en:Durham railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7401448,54.3322466]},"properties":{"addr:city":"Kendal","addr:postcode":"LA9 6BT","addr:street":"Station Road","name":"Kendal","naptan:AtcoCode":"9100KENDAL","network":"National Rail","operator":"Northern","platforms":"1","public_transport":"station","railway":"station","ref:crs":"KEN","train":"yes","wheelchair":"yes","wikidata":"Q1916006","wikipedia":"en:Kendal railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.807799,54.0488361]},"properties":{"name":"Lancaster","naptan:AtcoCode":"9100LANCSTR","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"LAN","train":"yes","wheelchair":"yes","wikidata":"Q763073","wikipedia":"en:Lancaster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.02895,53.7531813]},"properties":{"addr:city":"Lytham St Annes","addr:postcode":"FY8 2JE","addr:street":"Station Yard","addr:suburb":"St Annes","bin":"yes","name":"St Annes-on-the-Sea","naptan:AtcoCode":"9100STAS","network":"National Rail","old_name":"Cross Slack","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"SAS","source:name":"local knowledge","start_date":"1873","wikipedia":"en:St Annes-on-the-Sea railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2798815,51.652819]},"properties":{"name":"Elstree & Borehamwood","naptan:AtcoCode":"9100ELTR","network":"National Rail","operator":"Thameslink","public_transport":"station","railway":"station","ref:crs":"ELS","source":"Bing","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Access from platform to train by manual boarding ramp","wikidata":"Q5367763","wikipedia":"en:Elstree & Borehamwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2395678,53.3367636]},"properties":{"name":"Kiveton Park","naptan:AtcoCode":"9100KVTNPK","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"KVP","source":"NPE","wikidata":"Q2323319","wikipedia":"en:Kiveton Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3018577,51.4129277]},"properties":{"addr:city":"Kingston","addr:country":"GB","addr:postcode":"KT1 1UJ","addr:street":"Wood Street","alt_name":"Kingston-upon-Thames","name":"Kingston","naptan:AtcoCode":"9100KGSTON","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"KNG","ref:stanox":"87161","wheelchair":"yes","wikidata":"Q1916904","wikipedia":"en:Kingston railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.469603,50.9195374]},"properties":{"line":"central","name":"Redbridge","naptan:AtcoCode":"9100REDBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RDB","source":"NRE","wikidata":"Q7305512","wikipedia":"en:Redbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1094383,52.7311264]},"properties":{"name":"Sileby","naptan:AtcoCode":"9100SILEBY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SIL","source":"survey","wheelchair":"no","wikidata":"Q3023682","wikipedia":"en:Sileby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4426484,50.7109324]},"properties":{"name":"Dorchester West","naptan:AtcoCode":"9100DRCHW","network":"National Rail","network:wikidata":"Q26334","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"DCW","train":"yes","wheelchair":"yes","wikidata":"Q5297625","wikipedia":"en:Dorchester West railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3016958,54.5591886]},"properties":{"addr:postcode":"TS17 6AW","name":"Thornaby","name:ur":"تھورنبی","naptan:AtcoCode":"9100TABY","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"TBY","wikidata":"Q2795880","wikipedia":"en:Thornaby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4943089,53.1904159]},"properties":{"addr:city":"Winsford","addr:postcode":"CW7 3NF","addr:street":"Station Road","name":"Winsford","naptan:AtcoCode":"9100WNSFD","network":"National Rail","phone":"+44 845 604 0500","public_transport":"station","railway":"station","ref:crs":"WSF","source":"http://www.nationalrail.co.uk/stations/WSF/details.aspx","website":"http://www.nationalrail.co.uk/stations/WSF/details.aspx","wheelchair":"limited","wikipedia":"en:Winsford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2137196,51.3294324]},"properties":{"addr:city":"Banstead","addr:postcode":"SM7 1PZ","addr:street":"Banstead Road","name":"Banstead","naptan:AtcoCode":"9100BANSTED","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"BAD","source":"NPE","wikidata":"Q4857160","wikipedia":"en:Banstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4374501,50.7091366]},"properties":{"name":"Dorchester South","naptan:AtcoCode":"9100DRCHS","network":"National Rail","network:wikidata":"Q26334","operator":"South West Trains","postal_code":"DT1 1QX","public_transport":"station","railway":"station","ref:crs":"DCH","source":"NPE tracing","train":"yes","wikidata":"Q5297623","wikipedia":"en:Dorchester South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7217774,54.3050597]},"properties":{"name":"Oxenholme Lake District","naptan:AtcoCode":"9100OXENHLM","network":"National Rail","operator":"Virgin Trains","platforms":"3","public_transport":"station","railway":"station","ref:crs":"OXN","short_name":"Oxenholme","train":"yes","wikidata":"Q2104076","wikipedia":"en:Oxenholme Lake District railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6417904,52.3960838]},"properties":{"name":"Berkswell","naptan:AtcoCode":"9100BKSWELL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BKW","wikipedia":"en:Berkswell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2847664,51.5542489]},"properties":{"name":"Wembley Stadium","naptan:AtcoCode":"9100WEMBLSM","network":"National Rail","operator":"Chiltern Railways","postal_code":"HA9 8BQ","public_transport":"station","railway":"station","ref:crs":"WCX","source":"NPE","wheelchair":"yes","wikidata":"Q2587124","wikipedia":"en:Wembley Stadium railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3161206,51.5543503]},"properties":{"description":"This station is served every 2 hours, Monday-Friday in the peak direction only.","name":"Sudbury & Harrow Road","naptan:AtcoCode":"9100SDBRYHR","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"SUD","shelter":"light materials","wheelchair":"no","wikidata":"Q7633492","wikipedia":"en:Sudbury & Harrow Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2950397,52.9790983]},"properties":{"name":"Ilkeston","naptan:AtcoCode":"9100ILKES","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ILN","wikidata":"Q15228309","wikipedia":"en:Ilkeston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9807611,52.3970107]},"properties":{"addr:city":"Birmingham","addr:street":"Longbridge Lane","name":"Longbridge","naptan:AtcoCode":"9100LONB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LOB","train":"yes","west_midlands_fare_zone":"4","wikidata":"Q2257761","wikipedia":"en:Longbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8280672,54.202601]},"properties":{"name":"Arnside","naptan:AtcoCode":"9100ARNSIDE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ARN","train":"yes","wikidata":"Q4776543","wikipedia":"en:Arnside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.364194,50.8964487]},"properties":{"internet_access":"no","name":"Sholing","naptan:AtcoCode":"9100SHOLING","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SHO","wikidata":"Q7500232","wikipedia":"en:Sholing railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.4052264,51.3410764]},"properties":{"name":"Ramsgate","naptan:AtcoCode":"9100RAMSGTE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RAM","source":"Bing","train":"yes","wheelchair":"yes","wikidata":"Q1897319","wikipedia":"en:Ramsgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3766466,50.8990424]},"properties":{"addr:city":"Southampton","addr:postcode":"SO19 2DJ","addr:street":"Garton Road","name":"Woolston","naptan:AtcoCode":"9100WOLSTON","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WLS","train":"yes","wikidata":"Q2632304","wikipedia":"en:Woolston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3764672,50.9411238]},"properties":{"addr:postcode":"SO18 2LB","internet_access":"wlan","name":"Swaythling","naptan:AtcoCode":"9100SWYTHLN","network":"National Rail","operator":"South Western Railway","public_transport":"station","railway":"station","ref:crs":"SWG","wheelchair":"limited","wikidata":"Q12070392","wikipedia":"en:Swaythling railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.376866,50.9180834]},"properties":{"name":"Bitterne","naptan:AtcoCode":"9100BITERNE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BTE","wikidata":"Q4919061","wikipedia":"en:Bitterne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1953957,52.9993437]},"properties":{"name":"Bulwell","naptan:AtcoCode":"9100BULWELL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLW","train":"yes","wikidata":"Q1828548","wikipedia":"en:Bulwell station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2269493,54.0104821]},"properties":{"addr:city":"Skipton","addr:postcode":"BD23 4HN","addr:street":"Station Road","addr:suburb":"Hellifield","name":"Hellifield","naptan:AtcoCode":"9100HELIFLD","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"HLD","source":"npe","train":"yes","wikidata":"Q1859183","wikipedia":"en:Hellifield railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2966751,51.5523278]},"properties":{"fare_zone":"4","line":"Bakerloo","name":"Wembley Central","naptan:AtcoCode":"9100WMBY","network":"National Rail;London Underground;London Overground","network:subway":"London Underground","network:train":"London Overground","operator":"London Underground","public_transport":"station","railway":"station","ref:crs":"WMB","ref:tiploc":"WMBY","source:network":"Sign","station":"subway","subway":"yes","train":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to platform","wikidata":"Q801594","wikipedia":"en:Wembley Central station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1099212,52.0306258]},"properties":{"addr:city":"Baldock","addr:postcode":"SG7 5RT","addr:suburb":"Odsey","name":"Ashwell & Morden","naptan:AtcoCode":"9100ASHWELC","network":"National Rail","operator":"First Capital Connect","railway":"station","ref:crs":"AWM","wikidata":"Q2361700","wikipedia":"en:Ashwell & Morden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1983615,54.544225]},"properties":{"name":"Marton","name:ur":"مارٹن","naptan:AtcoCode":"9100MARTON","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"MTO","uic_ref":"7001474","wikidata":"Q6777308","wikipedia":"en:Marton railway station (North Yorkshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9896795,53.8482922]},"properties":{"addr:city":"Poulton-le-Fylde","addr:postcode":"FY6 7AA","name":"Poulton-le-Fylde","naptan:AtcoCode":"9100PLTNLFY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"PFY","source":"npe","website":"https://www.nationalrail.co.uk/stations_destinations/PFY.aspx","wikidata":"Q7235582","wikipedia":"en:Poulton-le-Fylde railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7977286,54.1318572]},"properties":{"name":"Malton","naptan:AtcoCode":"9100MALTON","network":"National Rail","platforms":"1","public_transport":"station","railway":"station","ref:crs":"MLT","source":"npe","wikidata":"Q2065298","wikipedia":"en:Malton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0569774,52.1193575]},"properties":{"name":"Foxton","naptan:AtcoCode":"9100FOXTON","network":"National Rail","operator":"First Capital Connect","platforms":"2","public_transport":"station","railway":"station","ref:crs":"FXN","source:ref":"ATOC","wikidata":"Q2951467","wikipedia":"en:Foxton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2866273,51.9441577]},"properties":{"name":"Harwich Town","naptan:AtcoCode":"9100HARWICH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HWC","start_date":"1865","wikidata":"Q4654950","wikipedia":"en:Harwich Town railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8136583,51.6336033]},"properties":{"name":"Burnham-on-Crouch","naptan:AtcoCode":"9100BRNMONC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BUU","source":"NPE","wikidata":"Q2376429","wikipedia":"en:Burnham-on-Crouch railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5817112,52.28662]},"properties":{"addr:city":"Warwick","addr:postcode":"CV34 4LA","addr:street":"Station Approach","alt_name":"Warwick Rail Station","name":"Warwick","naptan:AtcoCode":"9100WARWICK","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"WRW","wikidata":"Q2693935","wikipedia":"en:Warwick railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8353716,51.6606424]},"properties":{"name":"Southminster","naptan:AtcoCode":"9100SMINSTR","network":"National Rail","railway":"station","ref:crs":"SMN","source":"NPE","wikidata":"Q2501276","wikipedia":"en:Southminster railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0316482,52.114457]},"properties":{"name":"Shepreth","naptan:AtcoCode":"910GSHPRTH","network":"National Rail","railway":"station","ref:crs":"STH","source:ref":"ATOC","wikipedia":"en:Shepreth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5656286,51.6249307]},"properties":{"addr:postcode":"SS11 7RG","addr:street":"Hawk Hill","name":"Battlesbridge","naptan:AtcoCode":"9100BTLSBDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BLB","source":"NPE","wikidata":"Q4873219","wikipedia":"en:Battlesbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5972825,52.3951906]},"properties":{"name":"Tile Hill","naptan:AtcoCode":"9100TILEH","network":"National Rail","note":"NPE says the station is to the East of the bridge. It isn't.","public_transport":"station","railway":"station","ref:crs":"THL","source":"survey","west_midlands_fare_zone":"5","wikidata":"Q5493001","wikipedia":"en:Tile Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7518235,51.6477371]},"properties":{"name":"Althorne","naptan:AtcoCode":"9100ALTHORN","network":"National Rail","railway":"station","ref:crs":"ALN","source":"NPE","wikidata":"Q3384051","wikipedia":"en:Althorne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6589846,53.6729554]},"properties":{"name":"Buckshaw Parkway","naptan:AtcoCode":"9100CHORBUK","network":"National Rail","railway":"station","ref:crs":"BSV","ref:tiploc":"CHORBUK","wikidata":"Q4983494","wikipedia":"en:Buckshaw Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1803117,54.5333293]},"properties":{"name":"Gypsy Lane","name:ur":"جپسی لین","naptan:AtcoCode":"9100GYPSYLA","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GYP","uic_ref":"7000998","wikidata":"Q2431199","wikipedia":"en:Gypsy Lane railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2207959,52.1953289]},"properties":{"name":"Worcester Foregate Street","naptan:AtcoCode":"9100WORCSFS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"WOF","train":"yes","wikidata":"Q1873465","wikipedia":"en:Worcester Foregate Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2210855,52.3344413]},"properties":{"name":"Hartlebury","naptan:AtcoCode":"9100HBRY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HBY","source":"NPE","wikidata":"Q3403532","wikipedia":"en:Hartlebury railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8079516,53.6343744]},"properties":{"name":"Rufford","naptan:AtcoCode":"9100RUFDORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RUF","source":"NPE","wikipedia":"en:Rufford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2809477,52.1249106]},"properties":{"name":"Sandy","naptan:AtcoCode":"9100SNDY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SDY","ref:tiploc":"SNDY","wikidata":"Q3151015","wikipedia":"en:Sandy railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6831484,55.1623623]},"properties":{"name":"Morpeth","naptan:AtcoCode":"9100MRPTHRP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MPT","wikidata":"Q2534198","wikipedia":"en:Morpeth railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7491251,53.790494]},"properties":{"name":"Bradford Interchange","naptan:AtcoCode":"9100BRADIN","network":"National Rail","note":"need to check where the station is, i.e. how far from the junction","public_transport":"station","railway":"station","ref:crs":"BDI","toilets:wheelchair":"yes","wheelchair":"yes","wikipedia":"en:Bradford Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.6060545,51.6494076]},"properties":{"name":"South Woodham Ferrers","naptan:AtcoCode":"9100WDHAMFR","network":"National Rail","old_name":"Woodham Ferrers","public_transport":"station","railway":"station","ref:crs":"SOF","source":"NPE","wikidata":"Q7568963","wikipedia":"en:South Woodham Ferrers railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1600339,52.1561771]},"properties":{"name":"Worcestershire Parkway","naptan:AtcoCode":"910GWORCPWY","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"WOP","train":"yes","wheelchair":"yes","wikipedia":"en:Worcestershire Parkway railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2658011,53.0364237]},"properties":{"name":"Apedale Road","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0311433,53.4451119]},"properties":{"addr:city":"Grimsby","addr:housename":"Ludborough Station","addr:postcode":"DN36 5SQ","addr:street":"Station Road","addr:suburb":"Ludborough","fhrs:authority":"East Lindsey","fhrs:id":"157589","fhrs:local_authority_id":"EHFDI/26603/09","name":"Ludborough","network":"Lincolnshire Wolds Railway","operator":"Lincolnshire Wolds Railway","railway":"station","usage":"tourism","website":"https://www.lincolnshirewoldsrailway.co.uk/","wikipedia":"en:Ludborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9804372,52.5021195]},"properties":{"name":"Smethwick Galton Bridge","naptan:AtcoCode":"9100GALTILL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SGB","source":"NPE","west_midlands_fare_zone":"2","wikidata":"Q2450549","wikipedia":"en:Smethwick Galton Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4163018,53.5174468]},"properties":{"name":"Wombwell","naptan:AtcoCode":"9100WOMBWEL","network":"National Rail","note":"Name is from nearby town","railway":"station","ref:crs":"WOM","source":"NPE","wheelchair":"yes","wikidata":"Q2701036","wikipedia":"en:Wombwell railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9355913,52.4418625]},"properties":{"name":"Selly Oak","naptan:AtcoCode":"9100SELYOAK","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SLY","source":"NPE","train":"yes","west_midlands_fare_zone":"2","wikidata":"Q2655588","wikipedia":"en:Selly Oak railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9266683,52.4273889]},"properties":{"name":"Bournville","naptan:AtcoCode":"9100BOURNVL","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"BRV","source":"NPE","train":"yes","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2072620","wikipedia":"en:Bournville railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9130708,52.4710941]},"properties":{"name":"Five Ways","naptan:AtcoCode":"9100FIVEWYS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"FWY","train":"yes","west_midlands_fare_zone":"1","wheelchair":"yes","wikidata":"Q2209211","wikipedia":"en:Five Ways railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8593194,52.4636809]},"properties":{"name":"Small Heath","naptan:AtcoCode":"9100SMLHTH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SMA","source":"survey 2013","west_midlands_fare_zone":"2","wheelchair":"no","wikidata":"Q1986238","wikipedia":"en:Small Heath railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8385604,52.4539238]},"properties":{"name":"Tyseley","naptan:AtcoCode":"9100TYSL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TYS","west_midlands_fare_zone":"2","wikidata":"Q7861740","wikipedia":"en:Tyseley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8192378,52.4495299]},"properties":{"name":"Acocks Green","naptan:AtcoCode":"9100ACOCKSG","network":"National Rail","not:name":"Acock's Green","public_transport":"station","railway":"station","ref:crs":"ACG","uic_ref":"7000027","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2136949","wikipedia":"en:Acocks Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9288687,52.5309945]},"properties":{"name":"Hamstead","naptan:AtcoCode":"9100HAMSTED","network":"National Rail","old_name":"Great Barr Railway Station","public_transport":"station","railway":"station","ref:crs":"HSD","source":"NPE","west_midlands_fare_zone":"3","wheelchair":"yes","wikidata":"Q2382124","wikimedia_commons":"File:Hamstead_Railway_Station_2023.jpg","wikipedia":"en:Hamstead railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0488911,53.7983538]},"properties":{"name":"Blackpool South","naptan:AtcoCode":"9100BLCKS","network":"National Rail","platforms":"1","public_transport":"station","railway":"station","ref:crs":"BPS","source":"npe","wheelchair":"yes","wikidata":"Q4923280","wikipedia":"en:Blackpool South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8712807,52.4884888]},"properties":{"name":"Duddeston","naptan:AtcoCode":"9100DUDESTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"DUD","source":"NPE","west_midlands_fare_zone":"2","wikidata":"Q3100763","wikipedia":"en:Duddeston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.442273,55.0397265]},"properties":{"internet_access":"no","light_rail":"yes","name":"Whitley Bay","naptan:AtcoCode":"940GZZTWWHB","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7996558","wikipedia":"en:Whitley Bay Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4288662,55.0170464]},"properties":{"internet_access":"no","light_rail":"yes","name":"Tynemouth","naptan:AtcoCode":"940GZZTWTYM","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","source":"Bing","station":"light_rail","wikidata":"Q7860525","wikipedia":"en:Tynemouth Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4320588,54.986499]},"properties":{"internet_access":"no","name":"Chichester","naptan:AtcoCode":"940GZZTWCHT","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","train":"yes","wikidata":"Q5096006","wikipedia":"en:Chichester Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4363669,55.034999]},"properties":{"internet_access":"no","light_rail":"yes","name":"Cullercoats","naptan:AtcoCode":"940GZZTWCCS","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","source":"Bing","station":"light_rail","wheelchair":"limited","wikipedia":"en:Cullercoats Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4584698,55.042298]},"properties":{"light_rail":"yes","local_ref":"SE;NW","name":"Monkseaton","naptan:AtcoCode":"9400ZZTWMST","naptan:verified":"no","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","source":"naptan_import","station":"light_rail","wheelchair":"yes","wikidata":"Q6900966","wikipedia":"en:Monkseaton Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4759796,55.0405469]},"properties":{"internet_access":"no","light_rail":"yes","name":"West Monkseaton","naptan:AtcoCode":"940GZZTWWMS","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q7986013","wikipedia":"en:West Monkseaton Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4489628,55.0081382]},"properties":{"internet_access":"no","light_rail":"yes","name":"North Shields","naptan:AtcoCode":"940GZZTWNSH","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","source":"Bing","station":"light_rail","wikidata":"Q7056635","wikipedia":"en:North Shields Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4329872,54.9973681]},"properties":{"light_rail":"yes","name":"South Shields","naptan:AtcoCode":"940GZZTWSSH","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikipedia":"en:South Shields Interchange"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4416187,54.9761432]},"properties":{"internet_access":"no","name":"Tyne Dock","naptan:AtcoCode":"940GZZTWTYD","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wikidata":"Q7860483","wikipedia":"en:Tyne Dock Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4554849,54.971707]},"properties":{"internet_access":"no","name":"Simonside","naptan:AtcoCode":"940GZZTWSIM","network":"Tyne and Wear Metro","operator":"Nexus","public_transport":"station","railway":"station","station":"light_rail","wheelchair":"yes","wikidata":"Q7520496","wikipedia":"en:Simonside Metro station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4857886,51.4798719]},"properties":{"light_rail":"yes","name":"Station B","network":"Heathrow Airport","public_transport":"station","railway":"station","station":"light_rail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4882479,51.4797899]},"properties":{"light_rail":"yes","name":"Station A","network":"Heathrow Airport","public_transport":"station","railway":"station","station":"light_rail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5723937,50.34888]},"properties":{"addr:city":"Dartmouth","addr:postcode":"TQ6 0AE","name":"Kingswear","naptan:AtcoCode":"940GZZPDKGW","public_transport":"station","railway":"station","source":"OS_OpenData_StreetView","source:postcode":"ons_opendata_postcodes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7536559,53.7586586]},"properties":{"name":"Preston Riversway","railway":"station","usage":"tourism","wikidata":"Q7338663"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9707315,54.5861191]},"properties":{"name":"Pier","opening_hours:covid19":"closed","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.401268,53.0633087]},"properties":{"addr:city":"Ripley","addr:postcode":"DE5 3QZ","addr:street":"Butterley Hill","name":"Butterley","public_transport":"station","railway":"station","train":"yes","usage":"tourism","website":"https://www.midlandrailway-butterley.co.uk/","wikidata":"Q5002997","wikipedia":"en:Butterley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0003133,53.5399951]},"properties":{"name":"Humberston North Sea Lane","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6645247,50.5579041]},"properties":{"name":"Riverside Station","network":"Bickington Steam Railway","operator":"Bickington Steam Railway","phone":"+44 1626 82 11 11","platforms":"2","railway":"station","usage":"tourism","website":"https://www.trago.co.uk/","wikipedia":"en:Bickington Steam Railway"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0168282,53.5506632]},"properties":{"name":"Kingsway Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0095532,53.5437348]},"properties":{"name":"Lakeside Central","public_transport":"station","railway":"station","source":"wikipedia","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6096489,53.1745377]},"properties":{"name":"Rowsley South","naptan:AtcoCode":"940GZZPRRWS","network":"Peak Rail","railway":"station","usage":"tourism","wikidata":"Q7372289","wikipedia":"en:Rowsley South railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4518349,50.8214669]},"properties":{"name":"South Station","public_transport":"station","railway":"station","source":"Bing","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2658653,53.0329455]},"properties":{"name":"Silverdale","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.1235411,52.3736162]},"properties":{"name":"Diss","naptan:AtcoCode":"9100DISS","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"DIS","train":"yes","wikidata":"Q2716714","wikipedia":"en:Diss railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8208401,52.3247544]},"properties":{"name":"Danzey","naptan:AtcoCode":"9100DANZEY","network":"National Rail","old_name":"Danzey for Tanworth","public_transport":"station","railway":"station","ref:crs":"DZY","request_stop":"yes","source":"NPE","wikidata":"Q941715","wikipedia":"en:Danzey railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3114857,53.5188149]},"properties":{"name":"Bolton-upon-Dearne","naptan:AtcoCode":"9100BLTNODR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BTD","source":"NPE","wikidata":"Q2001245","wikipedia":"en:Bolton-upon-Dearne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3128969,53.5338284]},"properties":{"name":"Goldthorpe","naptan:AtcoCode":"9100GLDTHRP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"GOE","wikidata":"Q2537483","wikipedia":"en:Goldthorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3083856,53.5455375]},"properties":{"name":"Thurnscoe","naptan:AtcoCode":"9100TRNO","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"THC","wikidata":"Q2012147","wikipedia":"en:Thurnscoe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3048115,53.5948943]},"properties":{"name":"Moorthorpe","naptan:AtcoCode":"9100MORTHRP","network":"National Rail","railway":"station","ref:crs":"MRP","wikipedia":"en:Moorthorpe railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4235073,53.7004001]},"properties":{"name":"Normanton","naptan:AtcoCode":"9100NORMNTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"NOR","wikidata":"Q2384576","wikipedia":"en:Normanton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0279398,53.6931673]},"properties":{"name":"Snaith","naptan:AtcoCode":"9100SNAITH","network":"National Rail","network:wikidata":"Q26334","public_transport":"station","railway":"station","ref:crs":"SNI","source":"NPE","train":"yes","wikidata":"Q2522426","wikipedia":"en:Snaith railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1588897,53.6991292]},"properties":{"name":"Whitley Bridge","naptan:AtcoCode":"9100WHTBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WBD","source":"NPE","wikidata":"Q2379493","wikipedia":"en:Whitley Bridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.2592535,53.7064452]},"properties":{"name":"Knottingley","naptan:AtcoCode":"9100KNTNGLY","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"KNO","source":"NPE","train":"yes","wikidata":"Q2426364","wikipedia":"en:Knottingley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3420479,53.7090568]},"properties":{"addr:city":"Castleford","addr:postcode":"WF10 4TA","addr:street":"Colorado Way","internet_access":"no","name":"Glasshoughton","naptan:AtcoCode":"9100GLASHTN","network":"National Rail","operator":"Metro","public_transport":"station","railway":"station","ref:crs":"GLH","train":"yes","wikidata":"Q4318900","wikipedia":"en:Glasshoughton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3041376,53.6988004]},"properties":{"addr:city":"Pontefract","addr:postcode":"WF8 1JA","name":"Pontefract Monkhill","naptan:AtcoCode":"9100PTFTMHL","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"PFM","source":"NPE","train":"yes","wheelchair":"no","wikidata":"Q2212501","wikipedia":"en:Pontefract Monkhill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3551009,53.7240751]},"properties":{"addr:city":"Castleford","addr:postcode":"WF10 1EL","addr:street":"Powell Street","name":"Castleford","naptan:AtcoCode":"9100CASTLFD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CFD","source":"NPE","source:addr:postcode":"ons_uprn_directory","wikidata":"Q2482490","wikipedia":"en:Castleford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.874258,53.7049682]},"properties":{"name":"Goole","naptan:AtcoCode":"9100GOOLE","network":"National Rail","railway":"station","ref:crs":"GOO","wheelchair":"yes","wikidata":"Q2354168","wikipedia":"en:Goole railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9724456,53.6161857]},"properties":{"name":"Thorne North","naptan:AtcoCode":"9100THORNEN","network":"National Rail","railway":"station","ref:crs":"TNN","wikidata":"Q3069257","wikipedia":"en:Thorne North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3072209,54.7637615]},"properties":{"alt_name":"Horden Peterlee","name":"Horden","naptan:AtcoCode":"910GHORD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HRE","ref:tiploc":"HORD","train":"yes","wikidata":"Q38250965","wikipedia":"en:Horden railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1922072,50.9958916]},"properties":{"name":"Hadlow Down","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0654981,53.1083163]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7243279,51.5693654]},"properties":{"name":"Sutton Hall Railway Station","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0356438,51.3720595]},"properties":{"name":"Mortimer","naptan:AtcoCode":"9100MTIMER","network":"National Rail","railway":"station","ref:crs":"MOR","source":"NPE","wikidata":"Q2105261","wikipedia":"en:Mortimer railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0608367,51.3299792]},"properties":{"name":"Bramley","naptan:AtcoCode":"9100BMLY","network":"National Rail","railway":"station","ref:crs":"BMY","wheelchair":"yes","wikidata":"Q2550329","wikipedia":"en:Bramley railway station (Hampshire)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6866887,55.4025681]},"properties":{"name":"Lionheart","public_transport":"station","railway":"station","usage":"tourism","website":"https://www.alnvalleyrailway.co.uk/","wikidata":"Q60466730","wikipedia":"en:Alnwick Lionheart railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9647209,50.7203394]},"properties":{"name":"Poole Park","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4455866,50.6258855]},"properties":{"addr:postcode":"DT4 7SX","name":"Weymouth Bay Miniature Railway","phone":"+44 7971 450108","public_transport":"station","railway":"station","type":"miniature station","usage":"tourism","website":"http://www.vizzitdorset.co.uk/directory/attractions/miniature-railway.html","wheelchair":"no"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.6660642,50.5555299]},"properties":{"name":"Trago Central","network":"Bickington Steam Railway","operator":"Bickington Steam Railway","platforms":"2","railway":"station","usage":"tourism","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1007729,50.6976224]},"properties":{"name":"Much Natter","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6047757,53.5689612]},"properties":{"internet_access":"no","name":"Hall Drive","network":"Haigh Woodland Park Miniature Railway","operator":"Wigan District Model Engineering Society","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7084561,52.0106337]},"properties":{"addr:city":"Milton Keynes","addr:postcode":"MK7 8HP","addr:street":"Lakeside Grove","name":"Caldecotte Miniature Railway","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7720564,51.1838357]},"properties":{"name":"Mills Wood","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0040989,51.036039]},"properties":{"name":"Burmarsh Road","naptan:AtcoCode":"940GZZRHBMR","network":"Romney, Hythe & Dymchurch Railway","network:wikidata":"Q2090360","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikipedia":"en:Burmarsh Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9069769,52.2373719]},"properties":{"baby_feeding":"yes","bus":"yes","internet_access":"yes","name":"Northampton","naptan:AtcoCode":"9100NMPTN","network":"National Rail","old_name":"Northampton Castle","operator":"London Northwestern Railway","public_transport":"station","railway":"station","ref:crs":"NMP","source":"NPE","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q2055618","wikipedia":"en:Northampton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3640883,50.9553976]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0223507,52.6860971]},"properties":{"name":"Cannock","naptan:AtcoCode":"9100CNCK","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CAO","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q4016379","wikipedia":"en:Cannock railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6111685,51.7825235]},"properties":{"name":"Perrygrove","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7169991","wikipedia":"en:Perrygrove railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6102566,51.7824969]},"properties":{"name":"Oakiron","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q7073925","wikipedia":"en:Oakiron railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8222392,54.308109]},"properties":{"image":"https://www.geograph.org.uk/photo/6375689","name":"Leyburn","naptan:AtcoCode":"940GZZWDLEY","public_transport":"station","railway":"station","train":"yes","usage":"tourism","wikidata":"Q6537980"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9518419,51.3584485]},"properties":{"public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.843698,52.4544518]},"properties":{"name":"Shakespeare Line Warwick Road","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9292816,51.985948]},"properties":{"name":"California Crossing","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8839327,52.512194]},"properties":{"name":"Witton","naptan:AtcoCode":"9100WITTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WTT","source":"NPE","west_midlands_fare_zone":"2","wheelchair":"yes","wikidata":"Q2791793","wikipedia":"en:Witton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8614034,52.3665989]},"properties":{"name":"Earlswood","naptan:AtcoCode":"9100ELWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EWD","source":"NPE","west_midlands_fare_zone":"5","wikidata":"Q2243841","wikipedia":"en:Earlswood railway station (West Midlands)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8446544,52.3590972]},"properties":{"name":"The Lakes","naptan:AtcoCode":"9100THELAKS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"TLK","request_stop":"yes","source":"NPE","wikidata":"Q2683977","wikipedia":"en:The Lakes railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7745489,50.2804378]},"properties":{"name":"Kingsbridge Park Side","operator":"Kingsbridge and District Light Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.7755403,50.2822448]},"properties":{"name":"Kingsbridge Ria End","operator":"Kingsbridge and District Light Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3986272,52.1510336]},"properties":{"name":"Wickham Market","naptan:AtcoCode":"9100WCKHMMR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WCM","wikidata":"Q3043489","wikipedia":"en:Wickham Market railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1206625,51.5982024]},"properties":{"name":"Alexandra Palace","naptan:AtcoCode":"9100ALEXNDP","network":"National Rail","old_name":"Wood Green","operator":"Great Northern","platforms":"4","public_transport":"station","railway":"station","ref:crs":"AAP","ref:tiploc":"ALEXNDP","source":"local knowledge","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2300483","wikipedia":"en:Alexandra Palace railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1428091,51.613804]},"properties":{"name":"New Southgate","naptan:AtcoCode":"9100NEWSGAT","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"NSG","ref:tiploc":"NEWSGAT","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q2526904","wikipedia":"en:New Southgate railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1662251,51.6376675]},"properties":{"name":"Oakleigh Park","naptan:AtcoCode":"9100OKLGHPK","network":"National Rail","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"OKL","ref:tiploc":"OKLGHPK","wheelchair":"no","wikidata":"Q1222897","wikipedia":"en:Oakleigh Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1726236,51.6482779]},"properties":{"name":"New Barnet","naptan:AtcoCode":"9100NBARNET","network":"National Rail","old_name":"Barnet","operator":"Great Northern","public_transport":"station","railway":"station","ref:crs":"NBA","ref:tiploc":"NBARNET","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q1217434","wikipedia":"en:New Barnet railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.021475,51.4139567]},"properties":{"name":"Sundridge Park","naptan:AtcoCode":"9100SNDP","network":"National Rail","network:wikidata":"Q26334","operator":"Southeastern","public_transport":"station","railway":"station","ref:crs":"SUP","train":"yes","wheelchair":"limited","wheelchair:description":"Step free access available to platform 2 for services to Bromley North via gate from side path. There is no step free access to Platform 1.","wikidata":"Q3070740","wikipedia":"en:Sundridge Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1034911,51.4316272]},"properties":{"name":"West Norwood","name:ru":"Уэст-Норвуд","naptan:AtcoCode":"9100WNORWOD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WNW","source":"NPE","wheelchair":"yes","wikidata":"Q2958963","wikipedia":"en:West Norwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0840424,51.4245334]},"properties":{"name":"Gipsy Hill","name:ru":"Джипси-Хилл","naptan:AtcoCode":"9100GIPSYH","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"GIP","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wikidata":"Q2206539","wikipedia":"en:Gipsy Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0565394,51.4034563]},"properties":{"name":"Birkbeck","naptan:AtcoCode":"9100BIRKBCK","network":"National Rail","network:wikidata":"Q26334","platforms":"1","public_transport":"station","railway":"station","ref:crs":"BIK","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","tfl_travelzone":"4","train":"yes","wheelchair":"yes","wikidata":"Q2207882","wikipedia":"en:Birkbeck station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0807982,51.4610374]},"properties":{"name":"East Dulwich","naptan:AtcoCode":"9100EDULWCH","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"EDW","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"yes","wheelchair:description":"Steep ramp to platform 1 (to London Bridge). Steep ramp to platform 2 (to Tulse Hill). Ramps are longer than 400m/above 1:10 gradient).","wikidata":"Q5328256","wikipedia":"en:East Dulwich railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3364379,51.5332032]},"properties":{"name":"South Greenford","naptan:AtcoCode":"9100SGFORD","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"SGN","source":"NPE","wheelchair":"limited","wheelchair:description":"This station has a degree of step free access to both platforms however this is via Long ramps to both palforms (approx 1:10).","wikidata":"Q2612956","wikipedia":"en:South Greenford railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3315024,51.5228669]},"properties":{"name":"Castle Bar Park","naptan:AtcoCode":"9100CBARPAR","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"CBP","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q5049994","wikipedia":"en:Castle Bar Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3301943,51.5163854]},"properties":{"name":"Drayton Green","naptan:AtcoCode":"9100DRAYGRN","network":"National Rail","network:train":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"DRG","source":"NPE","source_ref":"http://en.wikipedia.org/wiki/List_of_London_railway_stations","wheelchair":"no","wikidata":"Q4947698","wikipedia":"en:Drayton Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6105638,51.4832744]},"properties":{"name":"Windsor and Eton Central","naptan:AtcoCode":"9100WINDSEC","network":"National Rail","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"WNC","wheelchair":"yes","wikidata":"Q3098091","wikipedia":"en:Windsor & Eton Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1914099,50.9952313]},"properties":{"name":"Tinkers Lane","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8446597,52.6043776]},"properties":{"name":"Blake Street","naptan:AtcoCode":"9100BLKST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BKT","west_midlands_fare_zone":"5","wikidata":"Q2454578","wikipedia":"en:Blake Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2807018,51.5042491]},"properties":{"internet_access":"no","name":"Depot Approach","network":"London Transport Miniature Railway","operator":"London Transport Miniature Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2817182,51.5054114]},"properties":{"internet_access":"no","name":"Ealing End","network":"London Transport Miniature Railway","operator":"London Transport Miniature Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.9036851,51.1967627]},"properties":{"name":"Killington Lane","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.8874256,51.2017482]},"properties":{"name":"Woody Bay","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8752323,51.143379]},"properties":{"name":"Ashford International","naptan:AtcoCode":"9100ASHFKY","network":"National Rail","network:wikidata":"Q26334","platforms":"6","postal_code":"TN23 1EZ","public_transport":"station","railway":"station","ref:crs":"AFK","ref:crs_Eurostar":"ASI","toilets:wheelchair":"yes","train":"yes","wheelchair":"yes","wikidata":"Q800406","wikipedia":"en:Ashford International railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.8924554,51.9005793]},"properties":{"name":"Colchester","naptan:AtcoCode":"9100CLCHSTR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"COL","start_date":"1843-03-29","train":"yes","wikidata":"Q2750618","wikipedia":"en:Colchester railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5986832,55.0877627]},"properties":{"name":"Cramlington","naptan:AtcoCode":"9100CRMLNGT","network":"National Rail","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"CRM","wikidata":"Q2007937","wikipedia":"en:Cramlington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.3178856,52.0902961]},"properties":{"name":"Woodbridge","naptan:AtcoCode":"9100WODBDGE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WDB","wikidata":"Q3246749","wikipedia":"en:Woodbridge railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5876955,50.8556592]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8151829,53.4369651]},"properties":{"name":"Knowsley Safari Park Train Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3951825,51.8726445]},"properties":{"monorail":"yes","name":"Luton DART Parkway","network":"DART","operator":"DART","public_transport":"station","railway":"station","ref:crs":"LPD","train":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.3737972,51.8785942]},"properties":{"name":"Central Terminal","network":"DART","public_transport":"station","railway":"station","ref:crs":"LUA","train":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8068088,54.2111863]},"properties":{"name":"Kumali","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8036184,54.2087968]},"properties":{"name":"Zoo","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8078347,54.2094998]},"properties":{"name":"Plaza","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0561814,52.4707939]},"properties":{"name":"Old Hill","naptan:AtcoCode":"9100OLHL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"OHL","source":"NPE","west_midlands_fare_zone":"4","wikidata":"Q280399","wikipedia":"en:Old Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0858098,52.5453191]},"properties":{"name":"Coseley","naptan:AtcoCode":"9100COSELEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CSY","west_midlands_fare_zone":"5","wikidata":"Q2239840","wikipedia":"en:Coseley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8362585,52.444262]},"properties":{"name":"Spring Road","naptan:AtcoCode":"9100SPRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SRI","source":"NPE; survey 2013","west_midlands_fare_zone":"3","wikidata":"Q2358217","wikipedia":"en:Spring Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.7609321,51.9250992]},"properties":{"name":"Thompson Green station (MR2)","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4938302,53.5335276]},"properties":{"name":"Hag Fold","naptan:AtcoCode":"9100HAGFOLD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HGF","wikidata":"Q2022284","wikipedia":"en:Hag Fold railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.9228506,51.8625389]},"properties":{"name":"Golding Spring Central","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8551418,52.4830865]},"properties":{"name":"Adderley Park","naptan:AtcoCode":"9100ADERLYP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ADD","source":"NPE","uic_ref":"7000038","west_midlands_fare_zone":"2","wheelchair":"no","wikidata":"Q2914146","wikipedia":"en:Adderley Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.521486,50.7043896]},"properties":{"name":"Marsh Barton","network":"National Rail","network:wikidata":"Q26334","note":"https://www.devonlive.com/news/devon-news/marsh-barton-railway-station-construction-4883936 Station opened to the public 04 July 2023","operator":"Great Western Railway","public_transport":"station","railway":"station","ref:crs":"MBT","train":"yes","wikidata":"Q16977866"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.0369415,52.9984067]},"properties":{"name":"Foxfield Colliery","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7845997,52.2658372]},"properties":{"name":"Wootton Wawen","naptan:AtcoCode":"9100WOTONWN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WWW","request_stop":"yes","source":"NPE","wikidata":"Q4350946","wikipedia":"en:Wootton Wawen railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8455704,52.4369843]},"properties":{"name":"Hall Green","naptan:AtcoCode":"9100HLGN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HLG","source":"NPE; survey 2013","west_midlands_fare_zone":"3","wikidata":"Q3543527","wikipedia":"en:Hall Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.804385,52.4384167]},"properties":{"name":"Olton","naptan:AtcoCode":"9100OLTON","network":"National Rail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"OLT","west_midlands_fare_zone":"4","wikidata":"Q4314461","wikipedia":"en:Olton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5607643,53.7300054]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.8080105,54.2071578]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8919518,52.4789357]},"properties":{"name":"Birmingham Moor Street","naptan:AtcoCode":"9100BHAMMRS","network":"National Rail","operator":"Chiltern Railways","public_transport":"station","railway":"station","ref:crs":"BMO","source":"knowledge;survey 2013","start_date":"1909","west_midlands_fare_zone":"1","wheelchair":"yes","wikidata":"Q800533","wikipedia":"en:Birmingham Moor Street railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7550948,52.4668809]},"properties":{"name":"Marston Green","naptan:AtcoCode":"9100MRSTNGR","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MGN","source":"NPE","train":"yes","west_midlands_fare_zone":"4","wikidata":"Q2856492","wikipedia":"en:Marston Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.4140848,51.8825271]},"properties":{"alt_name":"Luton railway station","name":"Luton","naptan:AtcoCode":"9100LUTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LUT","wikidata":"Q1809595","wikipedia":"en:Luton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0428622,52.8415842]},"properties":{"name":"Weston Wharf","railway":"station","usage":"tourism","wikipedia":"en:Weston_Wharf_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8280314,52.5795454]},"properties":{"name":"Four Oaks","naptan:AtcoCode":"9100FOUROKS","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"FOK","west_midlands_fare_zone":"5","wikidata":"Q2230176","wikipedia":"en:Four Oaks railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1943835,54.1150592]},"properties":{"name":"Roose","naptan:AtcoCode":"9100ROOSE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ROO","source":"npe","wikidata":"Q3394586","wikipedia":"en:Roose railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1989333,52.9607275]},"properties":{"operator":"Trentham Leisure","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.1973282,52.956173]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9752779,53.6460131]},"properties":{"name":"Meols Cop","naptan:AtcoCode":"9100MEOLSCP","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MEC","source":"npe","wheelchair":"no","wikidata":"Q3247481","wikipedia":"en:Meols Cop railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8451962,52.4035742]},"properties":{"name":"Shirley","naptan:AtcoCode":"9100SHIRLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SRL","source":"survey","west_midlands_fare_zone":"4","wikidata":"Q1815915","wikipedia":"en:Shirley railway station (England)"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.2299591,51.1891733]},"properties":{"name":"Shepherdswell (EKMR)","naptan:AtcoCode":"910GSWELL","network":"East Kent Miniature Railway","operator":"East Kent Railway","public_transport":"station","railway":"station","tourism":"attraction","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.924377,54.7259874]},"properties":{"addr:postcode":"DL13 2SJ","fixme":"Add platform when imagery updates","name":"Kingfisher Halt","parking":"no_parking","railway":"station","request_stop":"yes","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6127976,51.7850193]},"properties":{"name":"Rookwood","public_transport":"station","railway":"station","usage":"tourism","wikidata":"Q7366236","wikipedia":"en:Rookwood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1048466,51.4399271]},"properties":{"name":"Tulse Hill","name:ru":"Талс-Хилл","naptan:AtcoCode":"9100TULSEH","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"TUH","wheelchair":"no","wikidata":"Q2851519","wikipedia":"en:Tulse Hill railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.0013637,51.4265936]},"properties":{"name":"Reading Green Park","note":"Opened 27 May 2023","public_transport":"station","railway":"station","ref:crs":"RGP","wheelchair":"yes","wikidata":"Q7300513","wikipedia":"en:Reading Green Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2052986,50.8357626]},"properties":{"name":"Portslade","naptan:AtcoCode":"9100PSLDAWH","network":"National Rail","operator":"Southern","public_transport":"station","railway":"station","ref:crs":"PLD","wikidata":"Q2795710","wikipedia":"en:Portslade railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.5432862,52.7388088]},"properties":{"name":"Waterside Station","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6603872,55.396437]},"properties":{"name":"Greenrigg Halt","operator":"Aln Valley Railway","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.7504915,54.2379744]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6224048,53.5866845]},"properties":{"internet_access":"no","name":"Appleby","network":"British Steel","operator":"Appleby Frodingham Railway Preservation Society","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1780541,51.5163921]},"properties":{"fare_zone":"1","name":"Paddington","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"PDX","wikipedia":"en:London Paddington station#Crossrail station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4435015,53.4945115]},"properties":{"name":"Whitehead Lane","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4458362,53.4954145]},"properties":{"name":"Trencherbone Platform","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8673149000000004,51.3618222]},"properties":{"name":"Puxton Park","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-4.0042878,51.1886258]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0176241,51.5061102]},"properties":{"fare_zone":"2","level":"-3","name":"Canary Wharf (Elizabeth line)","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"CWX","ref:tiploc":"CANWHRF","train":"yes","wikidata":"Q5031204","wikipedia":"en:Canary Wharf railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1296937,51.4801837]},"properties":{"fare_zone":"1","line":"Northern","name":"Nine Elms","naptan:AtcoCode":"940GZZNEUGST","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q18619284","wikipedia":"en:Nine Elms tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1429709,51.4796154]},"properties":{"fare_zone":"1","line":"Northern","name":"Battersea Power Station","naptan:AtcoCode":"940GZZBPSUST","network":"London Underground","platforms":"2","public_transport":"station","railway":"station","station":"subway","subway":"yes","wheelchair":"yes","wheelchair:description":"Step-free access street to train","wikidata":"Q18619174","wikipedia":"en:Battersea Power Station tube station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2360818,52.860256]},"properties":{"public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.7557915,52.2225644]},"properties":{"name":"Wilmcote","naptan:AtcoCode":"9100WILMCOT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"WMC","wikidata":"Q1966621","wikipedia":"en:Wilmcote railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1160126,51.5195582]},"properties":{"fare_zone":"4","name":"Barking Riverside","network":"London Overground","operator":"London Overground","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BGV","wikidata":"Q22329619","wikipedia":"en:Barking Riverside railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.9679877,52.3468339]},"properties":{"name":"Alvechurch","naptan:AtcoCode":"9100ALVCHRC","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"ALV","source":"NPE","wikidata":"Q4355883","wikipedia":"en:Alvechurch railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0439443,54.6085896]},"properties":{"name":"Threlkeld Quarry","public_transport":"station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0440881,54.6110501]},"properties":{"name":"Threlkeld Quarry Station","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3318813,54.7589539]},"properties":{"name":"Aspatria","naptan:AtcoCode":"9100ASPTRIA","network":"National Rail","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"ASP","source":"NPE","train":"yes","wikidata":"Q3364830","wikipedia":"en:Aspatria railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5821304,54.5416692]},"properties":{"name":"Corkickle","naptan:AtcoCode":"9100CRCK","network":"National Rail","network:wikidata":"Q26334","operator":"Northern Trains","public_transport":"station","railway":"station","ref:crs":"CKL","source":"OS OpenData StreetView","train":"yes","wikidata":"Q4394993","wikipedia":"en:Corkickle railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.5807799,54.5704232]},"properties":{"name":"Parton","naptan:AtcoCode":"9100PARTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PRN","request_stop":"yes","source":"npe","wikidata":"Q5086006","wikipedia":"en:Parton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8545598,52.421023]},"properties":{"name":"Yardley Wood","naptan:AtcoCode":"9100YRDLYWD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"YRD","source":"NPE","west_midlands_fare_zone":"3","wikidata":"Q2248035","wikipedia":"en:Yardley Wood railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.5415762,51.8461109]},"properties":{"name":"Whipsnade Central","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1040013,51.519696]},"properties":{"fare_zone":"1","name":"Farringdon","naptan:AtcoCode":"940GZZLUFCN","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"FDX","wikipedia":"en:Farringdon station#Crossrail project"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0861507,51.5175704]},"properties":{"fare_zone":"1","name":"Liverpool Street","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"LSX","wikipedia":"en:Liverpool Street station#Crossrail"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0578614,51.5203109]},"properties":{"fare_zone":"2","name":"Whitechapel","network":"Elizabeth Line","railway":"station","ref:crs":"WHX","wheelchair":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.0272279,51.5098025]},"properties":{"fare_zone":"3","name":"Custom House","naptan:AtcoCode":"910GCUSTMHS","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"CUS","wheelchair":"yes","wikipedia":"en:Custom House for ExCeL DLR station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1484288,51.5134379]},"properties":{"fare_zone":"1","name":"Bond Street","network":"Elizabeth Line","railway":"station","ref:crs":"BDS","wikidata":"Q115300899","wikipedia":"it:Stazione di Bond Street"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.1305917,51.515401]},"properties":{"fare_zone":"1","name":"Tottenham Court Road","network":"Elizabeth Line","public_transport":"station","railway":"station","ref:crs":"TCR","wheelchair":"yes","wikidata":"Q115257168","wikipedia":"it:Stazione di Tottenham Court Road"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.1201967,51.491102]},"properties":{"fare_zone":"4","name":"Abbey Wood","naptan:AtcoCode":"910GABWD","network":"Elizabeth Line","operator":"TfL Rail","public_transport":"station","railway":"station","ref:crs":"ABX","wheelchair":"yes","wikipedia":"en:Abbey Wood railway station#Elizabeth Line"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.642275,51.4527313]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3751628,53.5443635]},"properties":{"name":"Kearsley","naptan:AtcoCode":"9100KEARSLY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"KSL","ref:tiploc":"KEARSLY","source":"npe","train":"yes","wikidata":"Q3464698","wikipedia":"en:Kearsley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.09355,53.4911925]},"properties":{"loc_name":"Ashton","name":"Ashton-under-Lyne","name:ur":"ایشٹن انڈر لائن","naptan:AtcoCode":"9100ASHONUL","network":"National Rail","operator":"Northern Rail","public_transport":"station","railway":"station","ref:crs":"AHN","source":"OS OpenData StreetView","source:ref:crs":"Assoc. of TOCs","wikidata":"Q2093891","wikipedia":"en:Ashton-under-Lyne railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.6127432,53.539096]},"properties":{"name":"Ince","naptan:AtcoCode":"9100INCE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"INC","source":"npe","wikidata":"Q3342847","wikipedia":"en:Ince railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.5748804,53.542391]},"properties":{"name":"Hindley","naptan:AtcoCode":"9100HINDLEY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HIN","source":"npe","train":"yes","wikidata":"Q2147566","wikipedia":"en:Hindley railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.3573446,53.4848233]},"properties":{"addr:postcode":"M30 0GX","addr:street":"Green Lane","name":"Patricroft","naptan:AtcoCode":"9100PTRCRFT","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"PAT","ref:tiploc":"PTRCRFT","source":"npe","wheelchair":"no","wikidata":"Q2317165","wikipedia":"en:Patricroft railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.2366797,53.3694132]},"properties":{"name":"Heald Green","naptan:AtcoCode":"9100HLDG","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HDG","wikidata":"Q2194508","wikipedia":"en:Heald Green railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.208947,53.4336613]},"properties":{"name":"Mauldeth Road","naptan:AtcoCode":"9100MLDTHRD","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"MAU","wikidata":"Q5133815","wikipedia":"en:Mauldeth Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.040372,53.4675548]},"properties":{"name":"North Thoresby","network":"Lincolnshire Wolds Railway","operator":"Lincolnshire Wolds Railway","railway":"station","usage":"tourism","website":"https://www.lincolnshirewoldsrailway.co.uk/","wikipedia":"en:North_Thoresby_railway_station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.013182,51.6995763]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.0119197,51.6941293]},"properties":{"name":"Royal Gunpowder Mills Railway","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2468577,50.2397196]},"properties":{"internet_access":"no","name":"Moseley Junction (High Level)","operator":"Moseley Heritage Museum","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.2470171,50.2397034]},"properties":{"internet_access":"no","name":"Moseley Junction (Low Level)","operator":"Moseley Heritage Museum","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-5.246274,50.2402266]},"properties":{"name":"Paul's Loop","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4024297,50.9949551]},"properties":{"name":"Common Lane","network":"Gartell Light Railway","operator":"Gartell Light Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.4036374,50.9936437]},"properties":{"name":"Pinesway Junction","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.171652,51.4056227]},"properties":{"name":"Swanley New Barn Miniature Railway","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0140763,53.3943237]},"properties":{"addr:city":"Birkenhead","addr:postcode":"CH41 1AL","addr:street":"Hamilton Street","alt_name":"Birkenhead Hamilton Square","electrified":"rail","internet_access":"yes","name":"Hamilton Square","naptan:AtcoCode":"9100HAMTSQ","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BKQ","wikidata":"Q305403","wikipedia":"en:Birkenhead Hamilton Square railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0230881,53.3935254]},"properties":{"addr:city":"Birkenhead","addr:postcode":"CH41 4PP","addr:street":"Europa Boulevard","electrified":"rail","internet_access":"no","name":"Conway Park","naptan:AtcoCode":"9100BRKNCPK","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"CNP","wheelchair":"yes","wikidata":"Q2881512","wikipedia":"en:Conway Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0398169,53.3975951]},"properties":{"addr:city":"Birkenhead","addr:postcode":"CH41 8BT","addr:street":"Duke Street","electrified":"rail","internet_access":"no","name":"Birkenhead Park","naptan:AtcoCode":"9100BRKNHDP","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BKP","wikidata":"Q2592796","wikipedia":"en:Birkenhead Park railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0579268,53.404707]},"properties":{"addr:city":"Birkenhead","addr:postcode":"CH41 7AZ","addr:street":"Station Road","electrified":"rail","internet_access":"no","name":"Birkenhead North","naptan:AtcoCode":"9100BRKNHDN","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"BKN","source":"npe","wikidata":"Q2583306","wikipedia":"en:Birkenhead North railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.078782,53.4093577]},"properties":{"addr:city":"Bidston","addr:postcode":"CH43 7RF","addr:street":"Bidston Station Approach","electrified":"rail","internet_access":"no","name":"Bidston","naptan:AtcoCode":"9100BDSTON","network":"National Rail","operator":"Merseyrail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"BID","source":"npe","wikidata":"Q2592219","wikipedia":"en:Bidston railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1539246,53.3994382]},"properties":{"electrified":"rail","internet_access":"no","name":"Meols","naptan:AtcoCode":"9100MELS","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"MEO","source":"npe","website":"https://www.merseyrail.org/plan-your-journey/stations/meols.aspx","wikidata":"Q2574955","wikipedia":"en:Meols railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1700493,53.3949574]},"properties":{"electrified":"rail","name":"Manor Road","naptan:AtcoCode":"9100MNRD","network":"National Rail","operator":"Merseyrail","platforms":"2","public_transport":"station","railway":"station","ref:crs":"MNR","source":"npe","wikidata":"Q2216543","wikipedia":"en:Manor Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1788231,53.3899025]},"properties":{"electrified":"rail","name":"Hoylake","naptan:AtcoCode":"9100HOYLAKE","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"HYK","source":"npe","wheelchair":"yes","wikidata":"Q2196603","wikipedia":"en:Hoylake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.1837893,53.3734193]},"properties":{"electrified":"rail","name":"West Kirby","naptan:AtcoCode":"9100WKIRBY","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"WKI","wheelchair":"yes","wikipedia":"en:West Kirby railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0691606,53.4229804]},"properties":{"name":"Wallasey Village","naptan:AtcoCode":"9100WALASYV","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"WLV","source":"npe","wikidata":"Q508070","wikipedia":"en:Wallasey Village railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0697346,53.4284435]},"properties":{"name":"Wallasey Grove Road","naptan:AtcoCode":"9100WALAGRD","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"WLG","source":"npe","wikidata":"Q2633126","wikipedia":"en:Wallasey Grove Road railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0108212,53.3728002]},"properties":{"name":"Rock Ferry","naptan:AtcoCode":"9100ROCKFRY","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"RFY","wikidata":"Q1812654","wikipedia":"en:Rock Ferry railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.0030663,53.3576614]},"properties":{"name":"Bebington","name:lt":"Bibingtonas","naptan:AtcoCode":"9100BEBNGTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BEB","wheelchair":"yes","wikidata":"Q2192728","wikipedia":"en:Bebington railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9940923,53.3400511]},"properties":{"name":"Spital","naptan:AtcoCode":"9100SPITAL","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"SPI","wikidata":"Q2089422","wikipedia":"en:Spital railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9868878,53.3218579]},"properties":{"name":"Bromborough","naptan:AtcoCode":"9100BRMB","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BOM","wheelchair":"no","wikidata":"Q2223694","wikipedia":"en:Bromborough railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.981272,53.3075725]},"properties":{"internet_access":"no","name":"Eastham Rake","naptan:AtcoCode":"9100ESTHRAK","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"ERA","train":"yes","wheelchair":"limited","wikidata":"Q2043331","wikipedia":"en:Eastham Rake railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9773177,53.2969936]},"properties":{"name":"Hooton","naptan:AtcoCode":"9100HOOTON","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"HOO","wikipedia":"en:Hooton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9431269,53.2853509]},"properties":{"name":"Little Sutton","naptan:AtcoCode":"9100LTLSUTN","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"LTT","wikipedia":"en:Little Sutton railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9249263,53.2840873]},"properties":{"name":"Overpool","naptan:AtcoCode":"9100OPOL","network":"National Rail","operator":"Merseyrail","public_transport":"station","railway":"station","ref:crs":"OVE","wikidata":"Q603781","wikipedia":"en:Overpool railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.9426005,53.260233]},"properties":{"name":"Capenhurst","naptan:AtcoCode":"9100CPNHRST","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"CPU","wikidata":"Q137076","wikipedia":"en:Capenhurst railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.8913945,53.2082623]},"properties":{"name":"Bache","naptan:AtcoCode":"9100BACHE","network":"National Rail","public_transport":"station","railway":"station","ref:crs":"BAC","wikipedia":"en:Bache railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4624777,52.4000212]},"properties":{"addr:city":"Coventry","addr:housename":"Copsewood Miniature Railway","addr:housenumber":"Copsewood Sports Ground","addr:postcode":"CV3 1JP","addr:street":"Allard Way","name":"Copsewood Miniature Railway","note":"The club was formed as the GEC Society of Model and Experimental Engineers in February 1959 by members of the GEC Railway Society. They had already started to build a 5” track in the spinney at the GEC Sports Ground. This 250ft long 5” gauge raised track","opening_hours":"Su-We,Fr off; Th 19:30-21:30; Sa 14:00-17:00","operator":"GEC (Coventry) Model Engineering Society","public_transport":"station","railway":"station","source":"local knowledge;aerial imagery;Website","station":"light_rail","train":"yes","website":"https://www.copsewood-railway.com/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.4553489,52.3493154]},"properties":{"addr:city":"Coventry","addr:housename":"Ryton Pools Miniature Railway","addr:housenumber":"Ryton-on-Dunsmore,","addr:postcode":"CV8 3BG","light_rail":"yes","name":"Ryton Pools Miniature Railway","opening_hours":"Mo-Sa off; Su 13:00-16:00","operator":"Coventry Model Engineering Society","public_transport":"station","railway":"station","station":"light_rail","train":"yes","website":"http://www.rytonpoolsrailway.co.uk/"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-3.3619494,54.3806285]},"properties":{"name":"Murthwaite Halt","naptan:AtcoCode":"940GZZREHTH","operator":"Ravenglass and Eskdale Railway","public_transport":"station","railway":"station","train":"yes","usage":"tourism","website":"https://ravenglass-railway.co.uk/","wheelchair":"no","wikidata":"Q6939739","wikipedia":"en:Murthwaite Halt railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7351338,52.0491983]},"properties":{"name":"Broomy Hill","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.3838589,53.0639519]},"properties":{"name":"Swanwick Junction","public_transport":"station","railway":"station","tourism":"preserved_railway","usage":"tourism","wikidata":"Q7653771","wikipedia":"en:Swanwick Junction railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-2.7299776,53.4526608]},"properties":{"addr:city":"St Helens","addr:housename":"St Helens Central Station","addr:postcode":"WA10 1DQ","addr:street":"Shaw Street","name":"St Helens Central","naptan:AtcoCode":"9100STHLNSC","network":"National Rail","old_name":"St Helens Shaw Street","operator":"Northern","public_transport":"station","railway":"station","ref:crs":"SNH","source":"npe","wikipedia":"en:St Helens Central railway station"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[0.5670252,50.8671948]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2433067,51.5320376]},"properties":{"name":"Willesden Junction High Level","public_transport":"station","railway":"station","ref:crs":"WJH","train":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.2443729,51.5323881]},"properties":{"name":"Willesden Junction Low Level","public_transport":"station","railway":"station","ref:crs":"WJL","train":"yes"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6457952,52.65534]},"properties":{"name":"Statfold Junction","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6422322,52.6515328]},"properties":{"name":"Oak Tree Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.6362501,52.6528103]},"properties":{"name":"Cogan Halt","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.645068,52.6497777]},"properties":{"name":"Mallard Halt","public_transport":"station","railway":"station","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.1487445,52.885603]},"properties":{"name":"Little Ruddington","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8509193,50.8508845]},"properties":{"name":"Lakeside","network":"Moors Valley Railway","operator":"Moors Valley Railway","public_transport":"station","railway":"station","station":"miniature","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[-1.8536555,50.8536434]},"properties":{"name":"Kingsmere","operator":"Moors Valley Railway","public_transport":"station","railway":"station","station":"miniature","train":"yes","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.744004,52.5071639]},"properties":{"name":"Pleasurewood Hills","railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7468986,52.5083631]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7453857,52.5085173]},"properties":{"railway":"station","usage":"tourism"}}, -{"type":"Feature","geometry":{"type":"Point","coordinates":[1.7478716,52.5075288]},"properties":{"railway":"station","usage":"tourism"}} -]} diff --git a/more-trip-generators/assets/schemas-7562f92e.js b/more-trip-generators/assets/schemas-d03b3d63.js similarity index 99% rename from more-trip-generators/assets/schemas-7562f92e.js rename to more-trip-generators/assets/schemas-d03b3d63.js index 2a6bebad9..75e936468 100644 --- a/more-trip-generators/assets/schemas-7562f92e.js +++ b/more-trip-generators/assets/schemas-d03b3d63.js @@ -1 +1 @@ -import{S as L,i as $,s as B,H as O,e as p,h as _,j as S,k as h,L as E,M,N as z,t as k,l as w,p as C,f as j,X as F,w as R,aL as fe,Q as de,aZ as ve,F as ke,g as I,m as H,q as G,V as N,ad as we,aM as ye,a_ as X,W as _e,a$ as Se,v as W,u as A,U,b as Q,c as me,o as ge,x as J,R as Ce,aH as pe,b0 as K,y as he,n as be,b1 as Le,r as $e,B as Z,C as V,ag as Be,a as Oe,_ as T,D as Ee,a2 as Me,a0 as ze,a8 as Y,a7 as x,a1 as je,ac as De,ab as Pe,aa as ee,az as te}from"./data_getter-0c8a0d3b.js";function Re(l){let e,n,t;const s=l[3].default,o=O(s,l,l[2],null);return{c(){e=p("fieldset"),n=p("div"),o&&o.c(),_(n,"class",l[0]),_(n,"data-module","govuk-checkboxes"),_(e,"class","govuk-fieldset")},m(a,i){S(a,e,i),h(e,n),o&&o.m(n,null),t=!0},p(a,[i]){o&&o.p&&(!t||i&4)&&E(o,s,a,a[2],t?z(s,a[2],i,null):M(a[2]),null)},i(a){t||(k(o,a),t=!0)},o(a){w(o,a),t=!1},d(a){a&&C(e),o&&o.d(a)}}}function Ie(l,e,n){let{$$slots:t={},$$scope:s}=e,{small:o=!1}=e,a=o?"govuk-checkboxes--small":"govuk-checkboxes";return l.$$set=i=>{"small"in i&&n(1,o=i.small),"$$scope"in i&&n(2,s=i.$$scope)},[a,o,s,t]}class bt extends L{constructor(e){super(),$(this,e,Ie,Re,B,{small:1})}}const He=l=>({}),ne=l=>({});function Ge(l){let e,n,t,s,o,a,i,r,u;const c=l[5].default,f=O(c,l,l[4],null),m=l[5].right,d=O(m,l,l[4],ne);return{c(){e=p("div"),n=p("input"),t=j(),s=p("label"),f&&f.c(),o=j(),a=p("span"),d&&d.c(),_(n,"type","checkbox"),_(n,"class","govuk-checkboxes__input"),_(n,"id",l[1]),_(s,"class","govuk-label govuk-checkboxes__label"),_(s,"for",l[1]),_(s,"title",l[2]),F(a,"float","right"),_(e,"class","govuk-checkboxes__item"),_(e,"style",l[3])},m(g,b){S(g,e,b),h(e,n),n.checked=l[0],h(e,t),h(e,s),f&&f.m(s,null),h(e,o),h(e,a),d&&d.m(a,null),i=!0,r||(u=[R(n,"change",l[7]),R(n,"change",l[6])],r=!0)},p(g,[b]){(!i||b&2)&&_(n,"id",g[1]),b&1&&(n.checked=g[0]),f&&f.p&&(!i||b&16)&&E(f,c,g,g[4],i?z(c,g[4],b,null):M(g[4]),null),(!i||b&2)&&_(s,"for",g[1]),(!i||b&4)&&_(s,"title",g[2]),d&&d.p&&(!i||b&16)&&E(d,m,g,g[4],i?z(m,g[4],b,He):M(g[4]),ne)},i(g){i||(k(f,g),k(d,g),i=!0)},o(g){w(f,g),w(d,g),i=!1},d(g){g&&C(e),f&&f.d(g),d&&d.d(g),r=!1,fe(u)}}}function Ne(l,e,n){let{$$slots:t={},$$scope:s}=e;const o=ve(t);let{id:a}=e,{checked:i}=e,{hint:r=null}=e,c=o.right!==void 0?"float: none":"";function f(d){de.call(this,l,d)}function m(){i=this.checked,n(0,i)}return l.$$set=d=>{"id"in d&&n(1,a=d.id),"checked"in d&&n(0,i=d.checked),"hint"in d&&n(2,r=d.hint),"$$scope"in d&&n(4,s=d.$$scope)},[i,a,r,c,s,t,f,m]}class vt extends L{constructor(e){super(),$(this,e,Ne,Ge,B,{id:1,checked:0,hint:2})}}function le(l,e,n){const t=l.slice();return t[8]=e[n][0],t[9]=e[n][1],t}function se(l){let e;return{c(){e=p("option"),e.__value="",W(e,e.__value)},m(n,t){S(n,e,t)},d(n){n&&C(e)}}}function oe(l){let e,n=l[9]+"",t,s;return{c(){e=p("option"),t=A(n),e.__value=s=l[8],W(e,e.__value)},m(o,a){S(o,e,a),h(e,t)},p(o,a){a&8&&n!==(n=o[9]+"")&&U(t,n),a&8&&s!==(s=o[8])&&(e.__value=s,W(e,e.__value))},d(o){o&&C(e)}}}function Ze(l){let e,n,t,s,o=l[4]&&se(),a=N(l[3]),i=[];for(let r=0;rl[7].call(e))},m(r,u){S(r,e,u),o&&o.m(e,null),h(e,n);for(let c=0;c{"label"in f&&n(1,t=f.label),"id"in f&&n(2,s=f.id),"choices"in f&&n(3,o=f.choices),"emptyOption"in f&&n(4,a=f.emptyOption),"disabled"in f&&n(5,i=f.disabled),"value"in f&&n(0,r=f.value)},[r,t,s,o,a,i,u,c]}class We extends L{constructor(e){super(),$(this,e,Fe,qe,B,{label:1,id:2,choices:3,emptyOption:4,disabled:5,value:0})}}function Je(l){let e,n,t;function s(a){l[2](a)}let o={label:"Basemap",id:"basemap",choices:[["streets","Streets"],["hybrid","Satellite"],["dataviz","Dataviz"]]};return l[0]!==void 0&&(o.value=l[0]),e=new We({props:o}),Q.push(()=>me(e,"value",s)),e.$on("change",l[1]),{c(){I(e.$$.fragment)},m(a,i){H(e,a,i),t=!0},p(a,[i]){const r={};!n&&i&1&&(n=!0,r.value=a[0],ge(()=>n=!1)),e.$set(r)},i(a){t||(k(e.$$.fragment,a),t=!0)},o(a){w(e.$$.fragment,a),t=!1},d(a){G(e,a)}}}function Te(l,e,n){let{style:t}=e;function s(){let a=new URLSearchParams(window.location.search);a.set("style",t);let i=`${window.location.pathname}?${a.toString()}${window.location.hash}`;window.location.href=i}function o(a){t=a,n(0,t)}return l.$$set=a=>{"style"in a&&n(0,t=a.style)},[t,s,o]}class kt extends L{constructor(e){super(),$(this,e,Te,Je,B,{style:0})}}function Ae(l){let e,n,t,s,o,a,i;const r=l[3].default,u=O(r,l,l[2],null);return{c(){e=p("details"),n=p("summary"),t=p("span"),s=A(l[0]),o=j(),a=p("div"),u&&u.c(),_(t,"class","govuk-details__summary-text"),_(n,"class","govuk-details__summary"),_(a,"class","govuk-details__text"),e.open=l[1],_(e,"class","govuk-details"),_(e,"data-module","govuk-details")},m(c,f){S(c,e,f),h(e,n),h(n,t),h(t,s),h(e,o),h(e,a),u&&u.m(a,null),i=!0},p(c,[f]){(!i||f&1)&&U(s,c[0]),u&&u.p&&(!i||f&4)&&E(u,r,c,c[2],i?z(r,c[2],f,null):M(c[2]),null),(!i||f&2)&&(e.open=c[1])},i(c){i||(k(u,c),i=!0)},o(c){w(u,c),i=!1},d(c){c&&C(e),u&&u.d(c)}}}function Ue(l,e,n){let{$$slots:t={},$$scope:s}=e,{label:o}=e,{open:a=!1}=e;return l.$$set=i=>{"label"in i&&n(0,o=i.label),"open"in i&&n(1,a=i.open),"$$scope"in i&&n(2,s=i.$$scope)},[o,a,s,t]}class Qe extends L{constructor(e){super(),$(this,e,Ue,Ae,B,{label:0,open:1})}}function Ve(l){let e;return{c(){e=p("span"),_(e,"class","svelte-kzgqtg"),F(e,"background",l[0])},m(n,t){S(n,e,t)},p(n,[t]){t&1&&F(e,"background",n[0])},i:J,o:J,d(n){n&&C(e)}}}function Xe(l,e,n){let{color:t}=e;return l.$$set=s=>{"color"in s&&n(0,t=s.color)},[t]}class Ke extends L{constructor(e){super(),$(this,e,Xe,Ve,B,{color:0})}}const Ye="/atip/more-trip-generators/assets/help-d011708a.svg";function xe(l){let e,n;const t=l[1].default,s=O(t,l,l[4],null);return{c(){e=p("div"),s&&s.c(),_(e,"class","govuk-prose")},m(o,a){S(o,e,a),s&&s.m(e,null),n=!0},p(o,a){s&&s.p&&(!n||a&16)&&E(s,t,o,o[4],n?z(t,o[4],a,null):M(o[4]),null)},i(o){n||(k(s,o),n=!0)},o(o){w(s,o),n=!1},d(o){o&&C(e),s&&s.d(o)}}}function et(l){let e,n,t,s,o,a,i,r,u;function c(m){l[3](m)}let f={title:"Help",$$slots:{default:[xe]},$$scope:{ctx:l}};return l[0]!==void 0&&(f.open=l[0]),o=new Ce({props:f}),Q.push(()=>me(o,"open",c)),{c(){e=p("button"),n=p("img"),s=j(),I(o.$$.fragment),pe(n.src,t=Ye)||_(n,"src",t),_(n,"title","Help"),_(n,"alt","Help"),_(e,"class","svelte-7d9d1l")},m(m,d){S(m,e,d),h(e,n),S(m,s,d),H(o,m,d),i=!0,r||(u=R(e,"click",l[2]),r=!0)},p(m,[d]){const g={};d&16&&(g.$$scope={dirty:d,ctx:m}),!a&&d&1&&(a=!0,g.open=m[0],ge(()=>a=!1)),o.$set(g)},i(m){i||(k(o.$$.fragment,m),i=!0)},o(m){w(o.$$.fragment,m),i=!1},d(m){m&&(C(e),C(s)),G(o,m),r=!1,u()}}}function tt(l,e,n){let{$$slots:t={},$$scope:s}=e,o=!1;const a=()=>n(0,o=!0);function i(r){o=r,n(0,o)}return l.$$set=r=>{"$$scope"in r&&n(4,s=r.$$scope)},[o,t,a,i,s]}class wt extends L{constructor(e){super(),$(this,e,tt,et,B,{})}}const nt=l=>({}),ae=l=>({}),lt=l=>({}),ie=l=>({});function st(l){let e,n,t,s,o,a,i,r,u,c,f;const m=l[3].sidebar,d=O(m,l,l[2],ie),g=l[3].main,b=O(g,l,l[2],ae);return{c(){e=p("div"),n=p("aside"),t=p("div"),d&&d.c(),s=j(),o=p("button"),o.textContent="→",i=j(),r=p("main"),b&&b.c(),_(t,"class","sidebar-content content-container svelte-ect12w"),_(o,"type","button"),_(o,"class","sidebar-toggle rounded-rect svelte-ect12w"),_(n,"class",a=K(l[0]?"":"collapsed")+" svelte-ect12w"),_(r,"class","svelte-ect12w"),_(e,"class","overall-layout svelte-ect12w")},m(v,D){S(v,e,D),h(e,n),h(n,t),d&&d.m(t,null),h(n,s),h(n,o),h(e,i),h(e,r),b&&b.m(r,null),u=!0,c||(f=R(o,"click",l[1]),c=!0)},p(v,[D]){d&&d.p&&(!u||D&4)&&E(d,m,v,v[2],u?z(m,v[2],D,lt):M(v[2]),ie),(!u||D&1&&a!==(a=K(v[0]?"":"collapsed")+" svelte-ect12w"))&&_(n,"class",a),b&&b.p&&(!u||D&4)&&E(b,g,v,v[2],u?z(g,v[2],D,nt):M(v[2]),ae)},i(v){u||(k(d,v),k(b,v),u=!0)},o(v){w(d,v),w(b,v),u=!1},d(v){v&&C(e),d&&d.d(v),b&&b.d(v),c=!1,f()}}}function ot(l,e,n){let{$$slots:t={},$$scope:s}=e,o=!0;function a(){n(0,o=!o)}return l.$$set=i=>{"$$scope"in i&&n(2,s=i.$$scope)},[o,a,s,t]}class yt extends L{constructor(e){super(),$(this,e,ot,st,B,{})}}function re(l,e,n){const t=l.slice();return t[1]=e[n][0],t[2]=e[n][1],t}function ce(l){let e,n,t,s=l[1]+"",o,a,i;return n=new Ke({props:{color:l[2]}}),{c(){e=p("li"),I(n.$$.fragment),t=j(),o=A(s),a=j()},m(r,u){S(r,e,u),H(n,e,null),h(e,t),h(e,o),h(e,a),i=!0},p(r,u){const c={};u&1&&(c.color=r[2]),n.$set(c),(!i||u&1)&&s!==(s=r[1]+"")&&U(o,s)},i(r){i||(k(n.$$.fragment,r),i=!0)},o(r){w(n.$$.fragment,r),i=!1},d(r){r&&C(e),G(n)}}}function at(l){let e,n,t=N(l[0]),s=[];for(let a=0;aw(s[a],1,1,()=>{s[a]=null});return{c(){e=p("ul");for(let a=0;a{"rows"in s&&n(0,t=s.rows)},[t]}class St extends L{constructor(e){super(),$(this,e,rt,it,B,{rows:0})}}function ue(l){let e;const n=l[5].default,t=O(n,l,l[4],null);return{c(){t&&t.c()},m(s,o){t&&t.m(s,o),e=!0},p(s,o){t&&t.p&&(!e||o&16)&&E(t,n,s,s[4],e?z(n,s[4],o,null):M(s[4]),null)},i(s){e||(k(t,s),e=!0)},o(s){w(t,s),e=!1},d(s){t&&t.d(s)}}}function ct(l){let e,n,t=l[1]&&ue(l);return{c(){e=p("div"),t&&t.c(),_(e,"class","map svelte-12dpf1u")},m(s,o){S(s,e,o),t&&t.m(e,null),l[6](e),n=!0},p(s,[o]){s[1]?t?(t.p(s,o),o&2&&k(t,1)):(t=ue(s),t.c(),k(t,1),t.m(e,null)):t&&(he(),w(t,1,1,()=>{t=null}),be())},i(s){n||(k(t),n=!0)},o(s){w(t),n=!1},d(s){s&&C(e),t&&t.d(),l[6](null)}}}function ut(l,e,n){let{$$slots:t={},$$scope:s}=e,{style:o}=e,{startBounds:a=null}=e,i,r,u=!1,c=!window.location.hash;Le("setCamera",c),$e(()=>{i=new Z.Map({container:r,style:`https://api.maptiler.com/maps/${o}/style.json?key=MZEJTanw3WpxRvt7qDfo`,hash:!0}),i.addControl(new Z.ScaleControl({})),i.addControl(new Z.NavigationControl({visualizePitch:!0}),"bottom-right"),i.on("load",()=>{n(1,u=!0),c&&a&&i.fitBounds(a,{animate:!1}),V.set(i)}),new ResizeObserver(()=>{i.resize()}).observe(r)}),Be(()=>{i.remove()});function f(m){Q[m?"unshift":"push"](()=>{r=m,n(0,r)})}return l.$$set=m=>{"style"in m&&n(2,o=m.style),"startBounds"in m&&n(3,a=m.startBounds),"$$scope"in m&&n(4,s=m.$$scope)},[r,u,o,a,s,t,f]}class Ct extends L{constructor(e){super(),$(this,e,ut,ct,B,{style:2,startBounds:3})}}const ft="/atip/more-trip-generators/assets/zoom_out_map-b2e1091a.svg";function dt(l){let e,n;return{c(){e=p("img"),pe(e.src,n=ft)||_(e,"src",n),_(e,"alt","Zoom to show entire boundary")},m(t,s){S(t,e,s)},p:J,d(t){t&&C(e)}}}function _t(l){let e,n;return e=new Oe({props:{title:"Zoom to show entire boundary",$$slots:{default:[dt]},$$scope:{ctx:l}}}),e.$on("click",l[0]),{c(){I(e.$$.fragment)},m(t,s){H(e,t,s),n=!0},p(t,[s]){const o={};s&8&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){n||(k(e.$$.fragment,t),n=!0)},o(t){w(e.$$.fragment,t),n=!1},d(t){G(e,t)}}}function mt(l,e,n){let t;T(l,V,a=>n(2,t=a));let{boundaryGeojson:s}=e;function o(){t.fitBounds(Ee(s),{padding:20,animate:!0,duration:500})}return l.$$set=a=>{"boundaryGeojson"in a&&n(1,s=a.boundaryGeojson)},[o,s]}class Lt extends L{constructor(e){super(),$(this,e,mt,_t,B,{boundaryGeojson:1})}}const y={area:"#D94324",route:"#555F5E",crossing:"#4daf4a",other:"#984ea3",preapp:"#e41a1c",outline:"#377eb8","reserved matters":"#4daf4a","local plan":"#984ea3",hovering:"black",lineEndpointColor:"black"},gt=10,q=10;let P="interventions";function pt(l,e,n){let t,s;T(l,V,r=>n(1,t=r)),T(l,Me,r=>n(2,s=r));let{colorInterventions:o}=e;ze(t,P,s);const a=["!=","hide_while_editing",!0];return Y(t,{id:"interventions-points",source:P,filter:["all",De,a,["!=","endpoint",!0]],color:o,radius:gt}),x(t,{id:"interventions-lines",source:P,filter:["all",Pe,a],color:o,width:q}),Y(t,{id:"interventions-lines-endpoints",source:P,filter:["==","endpoint",!0],radius:.5*q,opacity:0,strokeColor:y.lineEndpointColor,strokeWidth:2}),je(t,{id:"interventions-polygons",source:P,filter:["all",ee,a],color:o,opacity:.2}),x(t,{id:"interventions-polygon-outlines",source:P,filter:["all",ee,a],color:o,opacity:.5,width:.7*q}),l.$$set=r=>{"colorInterventions"in r&&n(0,o=r.colorInterventions)},l.$$.update=()=>{if(l.$$.dirty&6){let r=JSON.parse(JSON.stringify(s)),u=[];for(let c of r.features)if(c.geometry.type=="LineString"&&!c.properties.hide_while_editing)for(let f of[c.geometry.coordinates[0],c.geometry.coordinates[c.geometry.coordinates.length-1]])u.push({type:"Feature",properties:{endpoint:!0},geometry:{type:"Point",coordinates:f}});r.features=r.features.concat(u),t.getSource(P).setData(r)}},[o,t,s]}class $t extends L{constructor(e){super(),$(this,e,pt,null,B,{colorInterventions:0})}}function Bt(l){return{v1:"Scheme Design",v2:"Experimental Scheme Design",planning:"Development Planning",criticals:"Critical Issues",atf4:"ATF4 Scheme"}[l]}function Ot(l){return{v1:"an intervention",v2:"an intervention",planning:"a development",criticals:"a critical issue",atf4:"an intervention"}[l]}function Et(l){return{v1:"interventions",v2:"interventions",planning:"developments",criticals:"critical issues",atf4:"interventions"}[l]}function Mt(l){return l=="planning"?te(["get","reference_type",["get","planning"]],{preapp:y.preapp,outline:y.outline,"reserved matters":y["reserved matters"],"local plan":y["local plan"]},"black"):te(["get","intervention_type"],{area:y.area,route:y.route,crossing:y.crossing,other:y.other},"white")}function zt(l){return l=="planning"?[["Preapp",y.preapp],["Outline",y.outline],["Reserved matters",y["reserved matters"]],["Local plan",y["local plan"]]]:[["Areas",y.area],["Routes",y.route],["Crossings",y.crossing],["Other",y.other]]}export{kt as B,Qe as C,wt as H,$t as I,yt as L,Ct as M,We as S,Lt as Z,gt as a,bt as b,y as c,vt as d,Et as e,Bt as f,Mt as g,St as h,zt as i,Ke as j,q as l,Ot as s}; +import{S as L,i as $,s as B,H as O,e as p,h as _,j as S,k as h,L as E,M,N as z,t as k,l as w,p as C,f as j,X as F,w as R,aL as fe,Q as de,aZ as ve,F as ke,g as I,m as H,q as G,V as N,ad as we,aM as ye,a_ as X,W as _e,a$ as Se,v as W,u as A,U,b as Q,c as me,o as ge,x as J,R as Ce,aH as pe,b0 as K,y as he,n as be,b1 as Le,r as $e,B as Z,C as V,ag as Be,a as Oe,_ as T,D as Ee,a2 as Me,a0 as ze,a8 as Y,a7 as x,a1 as je,ac as De,ab as Pe,aa as ee,az as te}from"./data_getter-7f8b97a7.js";function Re(l){let e,n,t;const s=l[3].default,o=O(s,l,l[2],null);return{c(){e=p("fieldset"),n=p("div"),o&&o.c(),_(n,"class",l[0]),_(n,"data-module","govuk-checkboxes"),_(e,"class","govuk-fieldset")},m(a,i){S(a,e,i),h(e,n),o&&o.m(n,null),t=!0},p(a,[i]){o&&o.p&&(!t||i&4)&&E(o,s,a,a[2],t?z(s,a[2],i,null):M(a[2]),null)},i(a){t||(k(o,a),t=!0)},o(a){w(o,a),t=!1},d(a){a&&C(e),o&&o.d(a)}}}function Ie(l,e,n){let{$$slots:t={},$$scope:s}=e,{small:o=!1}=e,a=o?"govuk-checkboxes--small":"govuk-checkboxes";return l.$$set=i=>{"small"in i&&n(1,o=i.small),"$$scope"in i&&n(2,s=i.$$scope)},[a,o,s,t]}class bt extends L{constructor(e){super(),$(this,e,Ie,Re,B,{small:1})}}const He=l=>({}),ne=l=>({});function Ge(l){let e,n,t,s,o,a,i,r,u;const c=l[5].default,f=O(c,l,l[4],null),m=l[5].right,d=O(m,l,l[4],ne);return{c(){e=p("div"),n=p("input"),t=j(),s=p("label"),f&&f.c(),o=j(),a=p("span"),d&&d.c(),_(n,"type","checkbox"),_(n,"class","govuk-checkboxes__input"),_(n,"id",l[1]),_(s,"class","govuk-label govuk-checkboxes__label"),_(s,"for",l[1]),_(s,"title",l[2]),F(a,"float","right"),_(e,"class","govuk-checkboxes__item"),_(e,"style",l[3])},m(g,b){S(g,e,b),h(e,n),n.checked=l[0],h(e,t),h(e,s),f&&f.m(s,null),h(e,o),h(e,a),d&&d.m(a,null),i=!0,r||(u=[R(n,"change",l[7]),R(n,"change",l[6])],r=!0)},p(g,[b]){(!i||b&2)&&_(n,"id",g[1]),b&1&&(n.checked=g[0]),f&&f.p&&(!i||b&16)&&E(f,c,g,g[4],i?z(c,g[4],b,null):M(g[4]),null),(!i||b&2)&&_(s,"for",g[1]),(!i||b&4)&&_(s,"title",g[2]),d&&d.p&&(!i||b&16)&&E(d,m,g,g[4],i?z(m,g[4],b,He):M(g[4]),ne)},i(g){i||(k(f,g),k(d,g),i=!0)},o(g){w(f,g),w(d,g),i=!1},d(g){g&&C(e),f&&f.d(g),d&&d.d(g),r=!1,fe(u)}}}function Ne(l,e,n){let{$$slots:t={},$$scope:s}=e;const o=ve(t);let{id:a}=e,{checked:i}=e,{hint:r=null}=e,c=o.right!==void 0?"float: none":"";function f(d){de.call(this,l,d)}function m(){i=this.checked,n(0,i)}return l.$$set=d=>{"id"in d&&n(1,a=d.id),"checked"in d&&n(0,i=d.checked),"hint"in d&&n(2,r=d.hint),"$$scope"in d&&n(4,s=d.$$scope)},[i,a,r,c,s,t,f,m]}class vt extends L{constructor(e){super(),$(this,e,Ne,Ge,B,{id:1,checked:0,hint:2})}}function le(l,e,n){const t=l.slice();return t[8]=e[n][0],t[9]=e[n][1],t}function se(l){let e;return{c(){e=p("option"),e.__value="",W(e,e.__value)},m(n,t){S(n,e,t)},d(n){n&&C(e)}}}function oe(l){let e,n=l[9]+"",t,s;return{c(){e=p("option"),t=A(n),e.__value=s=l[8],W(e,e.__value)},m(o,a){S(o,e,a),h(e,t)},p(o,a){a&8&&n!==(n=o[9]+"")&&U(t,n),a&8&&s!==(s=o[8])&&(e.__value=s,W(e,e.__value))},d(o){o&&C(e)}}}function Ze(l){let e,n,t,s,o=l[4]&&se(),a=N(l[3]),i=[];for(let r=0;rl[7].call(e))},m(r,u){S(r,e,u),o&&o.m(e,null),h(e,n);for(let c=0;c{"label"in f&&n(1,t=f.label),"id"in f&&n(2,s=f.id),"choices"in f&&n(3,o=f.choices),"emptyOption"in f&&n(4,a=f.emptyOption),"disabled"in f&&n(5,i=f.disabled),"value"in f&&n(0,r=f.value)},[r,t,s,o,a,i,u,c]}class We extends L{constructor(e){super(),$(this,e,Fe,qe,B,{label:1,id:2,choices:3,emptyOption:4,disabled:5,value:0})}}function Je(l){let e,n,t;function s(a){l[2](a)}let o={label:"Basemap",id:"basemap",choices:[["streets","Streets"],["hybrid","Satellite"],["dataviz","Dataviz"]]};return l[0]!==void 0&&(o.value=l[0]),e=new We({props:o}),Q.push(()=>me(e,"value",s)),e.$on("change",l[1]),{c(){I(e.$$.fragment)},m(a,i){H(e,a,i),t=!0},p(a,[i]){const r={};!n&&i&1&&(n=!0,r.value=a[0],ge(()=>n=!1)),e.$set(r)},i(a){t||(k(e.$$.fragment,a),t=!0)},o(a){w(e.$$.fragment,a),t=!1},d(a){G(e,a)}}}function Te(l,e,n){let{style:t}=e;function s(){let a=new URLSearchParams(window.location.search);a.set("style",t);let i=`${window.location.pathname}?${a.toString()}${window.location.hash}`;window.location.href=i}function o(a){t=a,n(0,t)}return l.$$set=a=>{"style"in a&&n(0,t=a.style)},[t,s,o]}class kt extends L{constructor(e){super(),$(this,e,Te,Je,B,{style:0})}}function Ae(l){let e,n,t,s,o,a,i;const r=l[3].default,u=O(r,l,l[2],null);return{c(){e=p("details"),n=p("summary"),t=p("span"),s=A(l[0]),o=j(),a=p("div"),u&&u.c(),_(t,"class","govuk-details__summary-text"),_(n,"class","govuk-details__summary"),_(a,"class","govuk-details__text"),e.open=l[1],_(e,"class","govuk-details"),_(e,"data-module","govuk-details")},m(c,f){S(c,e,f),h(e,n),h(n,t),h(t,s),h(e,o),h(e,a),u&&u.m(a,null),i=!0},p(c,[f]){(!i||f&1)&&U(s,c[0]),u&&u.p&&(!i||f&4)&&E(u,r,c,c[2],i?z(r,c[2],f,null):M(c[2]),null),(!i||f&2)&&(e.open=c[1])},i(c){i||(k(u,c),i=!0)},o(c){w(u,c),i=!1},d(c){c&&C(e),u&&u.d(c)}}}function Ue(l,e,n){let{$$slots:t={},$$scope:s}=e,{label:o}=e,{open:a=!1}=e;return l.$$set=i=>{"label"in i&&n(0,o=i.label),"open"in i&&n(1,a=i.open),"$$scope"in i&&n(2,s=i.$$scope)},[o,a,s,t]}class Qe extends L{constructor(e){super(),$(this,e,Ue,Ae,B,{label:0,open:1})}}function Ve(l){let e;return{c(){e=p("span"),_(e,"class","svelte-kzgqtg"),F(e,"background",l[0])},m(n,t){S(n,e,t)},p(n,[t]){t&1&&F(e,"background",n[0])},i:J,o:J,d(n){n&&C(e)}}}function Xe(l,e,n){let{color:t}=e;return l.$$set=s=>{"color"in s&&n(0,t=s.color)},[t]}class Ke extends L{constructor(e){super(),$(this,e,Xe,Ve,B,{color:0})}}const Ye="/atip/more-trip-generators/assets/help-d011708a.svg";function xe(l){let e,n;const t=l[1].default,s=O(t,l,l[4],null);return{c(){e=p("div"),s&&s.c(),_(e,"class","govuk-prose")},m(o,a){S(o,e,a),s&&s.m(e,null),n=!0},p(o,a){s&&s.p&&(!n||a&16)&&E(s,t,o,o[4],n?z(t,o[4],a,null):M(o[4]),null)},i(o){n||(k(s,o),n=!0)},o(o){w(s,o),n=!1},d(o){o&&C(e),s&&s.d(o)}}}function et(l){let e,n,t,s,o,a,i,r,u;function c(m){l[3](m)}let f={title:"Help",$$slots:{default:[xe]},$$scope:{ctx:l}};return l[0]!==void 0&&(f.open=l[0]),o=new Ce({props:f}),Q.push(()=>me(o,"open",c)),{c(){e=p("button"),n=p("img"),s=j(),I(o.$$.fragment),pe(n.src,t=Ye)||_(n,"src",t),_(n,"title","Help"),_(n,"alt","Help"),_(e,"class","svelte-7d9d1l")},m(m,d){S(m,e,d),h(e,n),S(m,s,d),H(o,m,d),i=!0,r||(u=R(e,"click",l[2]),r=!0)},p(m,[d]){const g={};d&16&&(g.$$scope={dirty:d,ctx:m}),!a&&d&1&&(a=!0,g.open=m[0],ge(()=>a=!1)),o.$set(g)},i(m){i||(k(o.$$.fragment,m),i=!0)},o(m){w(o.$$.fragment,m),i=!1},d(m){m&&(C(e),C(s)),G(o,m),r=!1,u()}}}function tt(l,e,n){let{$$slots:t={},$$scope:s}=e,o=!1;const a=()=>n(0,o=!0);function i(r){o=r,n(0,o)}return l.$$set=r=>{"$$scope"in r&&n(4,s=r.$$scope)},[o,t,a,i,s]}class wt extends L{constructor(e){super(),$(this,e,tt,et,B,{})}}const nt=l=>({}),ae=l=>({}),lt=l=>({}),ie=l=>({});function st(l){let e,n,t,s,o,a,i,r,u,c,f;const m=l[3].sidebar,d=O(m,l,l[2],ie),g=l[3].main,b=O(g,l,l[2],ae);return{c(){e=p("div"),n=p("aside"),t=p("div"),d&&d.c(),s=j(),o=p("button"),o.textContent="→",i=j(),r=p("main"),b&&b.c(),_(t,"class","sidebar-content content-container svelte-ect12w"),_(o,"type","button"),_(o,"class","sidebar-toggle rounded-rect svelte-ect12w"),_(n,"class",a=K(l[0]?"":"collapsed")+" svelte-ect12w"),_(r,"class","svelte-ect12w"),_(e,"class","overall-layout svelte-ect12w")},m(v,D){S(v,e,D),h(e,n),h(n,t),d&&d.m(t,null),h(n,s),h(n,o),h(e,i),h(e,r),b&&b.m(r,null),u=!0,c||(f=R(o,"click",l[1]),c=!0)},p(v,[D]){d&&d.p&&(!u||D&4)&&E(d,m,v,v[2],u?z(m,v[2],D,lt):M(v[2]),ie),(!u||D&1&&a!==(a=K(v[0]?"":"collapsed")+" svelte-ect12w"))&&_(n,"class",a),b&&b.p&&(!u||D&4)&&E(b,g,v,v[2],u?z(g,v[2],D,nt):M(v[2]),ae)},i(v){u||(k(d,v),k(b,v),u=!0)},o(v){w(d,v),w(b,v),u=!1},d(v){v&&C(e),d&&d.d(v),b&&b.d(v),c=!1,f()}}}function ot(l,e,n){let{$$slots:t={},$$scope:s}=e,o=!0;function a(){n(0,o=!o)}return l.$$set=i=>{"$$scope"in i&&n(2,s=i.$$scope)},[o,a,s,t]}class yt extends L{constructor(e){super(),$(this,e,ot,st,B,{})}}function re(l,e,n){const t=l.slice();return t[1]=e[n][0],t[2]=e[n][1],t}function ce(l){let e,n,t,s=l[1]+"",o,a,i;return n=new Ke({props:{color:l[2]}}),{c(){e=p("li"),I(n.$$.fragment),t=j(),o=A(s),a=j()},m(r,u){S(r,e,u),H(n,e,null),h(e,t),h(e,o),h(e,a),i=!0},p(r,u){const c={};u&1&&(c.color=r[2]),n.$set(c),(!i||u&1)&&s!==(s=r[1]+"")&&U(o,s)},i(r){i||(k(n.$$.fragment,r),i=!0)},o(r){w(n.$$.fragment,r),i=!1},d(r){r&&C(e),G(n)}}}function at(l){let e,n,t=N(l[0]),s=[];for(let a=0;aw(s[a],1,1,()=>{s[a]=null});return{c(){e=p("ul");for(let a=0;a{"rows"in s&&n(0,t=s.rows)},[t]}class St extends L{constructor(e){super(),$(this,e,rt,it,B,{rows:0})}}function ue(l){let e;const n=l[5].default,t=O(n,l,l[4],null);return{c(){t&&t.c()},m(s,o){t&&t.m(s,o),e=!0},p(s,o){t&&t.p&&(!e||o&16)&&E(t,n,s,s[4],e?z(n,s[4],o,null):M(s[4]),null)},i(s){e||(k(t,s),e=!0)},o(s){w(t,s),e=!1},d(s){t&&t.d(s)}}}function ct(l){let e,n,t=l[1]&&ue(l);return{c(){e=p("div"),t&&t.c(),_(e,"class","map svelte-12dpf1u")},m(s,o){S(s,e,o),t&&t.m(e,null),l[6](e),n=!0},p(s,[o]){s[1]?t?(t.p(s,o),o&2&&k(t,1)):(t=ue(s),t.c(),k(t,1),t.m(e,null)):t&&(he(),w(t,1,1,()=>{t=null}),be())},i(s){n||(k(t),n=!0)},o(s){w(t),n=!1},d(s){s&&C(e),t&&t.d(),l[6](null)}}}function ut(l,e,n){let{$$slots:t={},$$scope:s}=e,{style:o}=e,{startBounds:a=null}=e,i,r,u=!1,c=!window.location.hash;Le("setCamera",c),$e(()=>{i=new Z.Map({container:r,style:`https://api.maptiler.com/maps/${o}/style.json?key=MZEJTanw3WpxRvt7qDfo`,hash:!0}),i.addControl(new Z.ScaleControl({})),i.addControl(new Z.NavigationControl({visualizePitch:!0}),"bottom-right"),i.on("load",()=>{n(1,u=!0),c&&a&&i.fitBounds(a,{animate:!1}),V.set(i)}),new ResizeObserver(()=>{i.resize()}).observe(r)}),Be(()=>{i.remove()});function f(m){Q[m?"unshift":"push"](()=>{r=m,n(0,r)})}return l.$$set=m=>{"style"in m&&n(2,o=m.style),"startBounds"in m&&n(3,a=m.startBounds),"$$scope"in m&&n(4,s=m.$$scope)},[r,u,o,a,s,t,f]}class Ct extends L{constructor(e){super(),$(this,e,ut,ct,B,{style:2,startBounds:3})}}const ft="/atip/more-trip-generators/assets/zoom_out_map-b2e1091a.svg";function dt(l){let e,n;return{c(){e=p("img"),pe(e.src,n=ft)||_(e,"src",n),_(e,"alt","Zoom to show entire boundary")},m(t,s){S(t,e,s)},p:J,d(t){t&&C(e)}}}function _t(l){let e,n;return e=new Oe({props:{title:"Zoom to show entire boundary",$$slots:{default:[dt]},$$scope:{ctx:l}}}),e.$on("click",l[0]),{c(){I(e.$$.fragment)},m(t,s){H(e,t,s),n=!0},p(t,[s]){const o={};s&8&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){n||(k(e.$$.fragment,t),n=!0)},o(t){w(e.$$.fragment,t),n=!1},d(t){G(e,t)}}}function mt(l,e,n){let t;T(l,V,a=>n(2,t=a));let{boundaryGeojson:s}=e;function o(){t.fitBounds(Ee(s),{padding:20,animate:!0,duration:500})}return l.$$set=a=>{"boundaryGeojson"in a&&n(1,s=a.boundaryGeojson)},[o,s]}class Lt extends L{constructor(e){super(),$(this,e,mt,_t,B,{boundaryGeojson:1})}}const y={area:"#D94324",route:"#555F5E",crossing:"#4daf4a",other:"#984ea3",preapp:"#e41a1c",outline:"#377eb8","reserved matters":"#4daf4a","local plan":"#984ea3",hovering:"black",lineEndpointColor:"black"},gt=10,q=10;let P="interventions";function pt(l,e,n){let t,s;T(l,V,r=>n(1,t=r)),T(l,Me,r=>n(2,s=r));let{colorInterventions:o}=e;ze(t,P,s);const a=["!=","hide_while_editing",!0];return Y(t,{id:"interventions-points",source:P,filter:["all",De,a,["!=","endpoint",!0]],color:o,radius:gt}),x(t,{id:"interventions-lines",source:P,filter:["all",Pe,a],color:o,width:q}),Y(t,{id:"interventions-lines-endpoints",source:P,filter:["==","endpoint",!0],radius:.5*q,opacity:0,strokeColor:y.lineEndpointColor,strokeWidth:2}),je(t,{id:"interventions-polygons",source:P,filter:["all",ee,a],color:o,opacity:.2}),x(t,{id:"interventions-polygon-outlines",source:P,filter:["all",ee,a],color:o,opacity:.5,width:.7*q}),l.$$set=r=>{"colorInterventions"in r&&n(0,o=r.colorInterventions)},l.$$.update=()=>{if(l.$$.dirty&6){let r=JSON.parse(JSON.stringify(s)),u=[];for(let c of r.features)if(c.geometry.type=="LineString"&&!c.properties.hide_while_editing)for(let f of[c.geometry.coordinates[0],c.geometry.coordinates[c.geometry.coordinates.length-1]])u.push({type:"Feature",properties:{endpoint:!0},geometry:{type:"Point",coordinates:f}});r.features=r.features.concat(u),t.getSource(P).setData(r)}},[o,t,s]}class $t extends L{constructor(e){super(),$(this,e,pt,null,B,{colorInterventions:0})}}function Bt(l){return{v1:"Scheme Design",v2:"Experimental Scheme Design",planning:"Development Planning",criticals:"Critical Issues",atf4:"ATF4 Scheme"}[l]}function Ot(l){return{v1:"an intervention",v2:"an intervention",planning:"a development",criticals:"a critical issue",atf4:"an intervention"}[l]}function Et(l){return{v1:"interventions",v2:"interventions",planning:"developments",criticals:"critical issues",atf4:"interventions"}[l]}function Mt(l){return l=="planning"?te(["get","reference_type",["get","planning"]],{preapp:y.preapp,outline:y.outline,"reserved matters":y["reserved matters"],"local plan":y["local plan"]},"black"):te(["get","intervention_type"],{area:y.area,route:y.route,crossing:y.crossing,other:y.other},"white")}function zt(l){return l=="planning"?[["Preapp",y.preapp],["Outline",y.outline],["Reserved matters",y["reserved matters"]],["Local plan",y["local plan"]]]:[["Areas",y.area],["Routes",y.route],["Crossings",y.crossing],["Other",y.other]]}export{kt as B,Qe as C,wt as H,$t as I,yt as L,Ct as M,We as S,Lt as Z,gt as a,bt as b,y as c,vt as d,Et as e,Bt as f,Mt as g,St as h,zt as i,Ke as j,q as l,Ot as s}; diff --git a/more-trip-generators/browse.html b/more-trip-generators/browse.html index c413391be..4a1065d63 100644 --- a/more-trip-generators/browse.html +++ b/more-trip-generators/browse.html @@ -7,9 +7,9 @@ content="initial-scale=1,maximum-scale=1,user-scalable=no" /> ATIP v2 scheme browser - - - + + + diff --git a/more-trip-generators/index.html b/more-trip-generators/index.html index 3ec54fd1e..9a0d507a4 100644 --- a/more-trip-generators/index.html +++ b/more-trip-generators/index.html @@ -7,9 +7,9 @@ content="initial-scale=1,maximum-scale=1,user-scalable=no" /> Active Travel Infrastructure Platform v2 - - - + + + diff --git a/more-trip-generators/scheme.html b/more-trip-generators/scheme.html index 493aef490..131ee2408 100644 --- a/more-trip-generators/scheme.html +++ b/more-trip-generators/scheme.html @@ -7,10 +7,10 @@ content="initial-scale=1,maximum-scale=1,user-scalable=no" /> ATIP v2 Scheme Entry - - - - + + + +