From 2d2ec4a9c3f4d5164f85648da4c9f12f5d01b4bf Mon Sep 17 00:00:00 2001 From: "Milos Brzakovic (E-Search)" Date: Fri, 2 Jul 2021 17:25:07 +0200 Subject: [PATCH 1/6] Bing imagery - Ensure freshness --- modules/renderer/background_source.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 0e3ab0412..b448ccf1e 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -103,7 +103,7 @@ export function rendererBackgroundSource(data) { source.template = function(val) { if (!arguments.length) return _template; - if (source.id === 'custom') { + if (source.id === 'custom' || source.id === 'Bing') { _template = val; } return source; @@ -266,14 +266,14 @@ export function rendererBackgroundSource(data) { rendererBackgroundSource.Bing = function(data, dispatch) { - // http://msdn.microsoft.com/en-us/library/ff701716.aspx - // http://msdn.microsoft.com/en-us/library/ff701701.aspx + // https://docs.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata + //fallback url template data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z'; var bing = rendererBackgroundSource(data); - // var key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU'; // P2, JOSM, etc - var key = 'Ak5oTE46TUbjRp08OFVcGpkARErDobfpuyNKa-W2mQ8wbt1K1KL8p1bIRwWwcF-Q'; // iD + var key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU'; // P2, JOSM, etc + //var key = 'Ak5oTE46TUbjRp08OFVcGpkARErDobfpuyNKa-W2mQ8wbt1K1KL8p1bIRwWwcF-Q'; // iD var url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' + key; @@ -283,7 +283,15 @@ rendererBackgroundSource.Bing = function(data, dispatch) { d3_json(url) .then(function(json) { - providers = json.resourceSets[0].resources[0].imageryProviders.map(function(provider) { + let imageryResource = json.resourceSets[0].resources[0]; + let template = imageryResource.imageUrl; //http://ecn.{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=10339 + let subDomains = imageryResource.imageUrlSubdomains; //["t0, t1, t2, t3"] + let subDomainNumbers = subDomains.map((subDomain) => { + return subDomain.substring(1); + } ).join(','); + template = template.replace('{subdomain}', `t{switch:${subDomainNumbers}}`).replace('{quadkey}', '{u}'); + bing.template(template); + providers = imageryResource.imageryProviders.map(function(provider) { return { attribution: provider.attribution, areas: provider.coverageAreas.map(function(area) { From 358335cf4ed20e2e7c38d3e9de9bd50448fe160e Mon Sep 17 00:00:00 2001 From: "Milos Brzakovic (E-Search)" Date: Mon, 5 Jul 2021 14:06:57 +0200 Subject: [PATCH 2/6] bingImagery strict n param. Fallback url tempalate to latest --- modules/renderer/background_source.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index b448ccf1e..8f36c9523 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -269,12 +269,12 @@ rendererBackgroundSource.Bing = function(data, dispatch) { // https://docs.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata //fallback url template - data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z'; + data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=10555&n=z'; var bing = rendererBackgroundSource(data); var key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU'; // P2, JOSM, etc //var key = 'Ak5oTE46TUbjRp08OFVcGpkARErDobfpuyNKa-W2mQ8wbt1K1KL8p1bIRwWwcF-Q'; // iD - + const strictParam = 'n'; var url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' + key; var cache = {}; @@ -289,7 +289,11 @@ rendererBackgroundSource.Bing = function(data, dispatch) { let subDomainNumbers = subDomains.map((subDomain) => { return subDomain.substring(1); } ).join(','); + template = template.replace('{subdomain}', `t{switch:${subDomainNumbers}}`).replace('{quadkey}', '{u}'); + if (!new URLSearchParams(template).has(strictParam)){ + template += `&${strictParam}=z`; + } bing.template(template); providers = imageryResource.imageryProviders.map(function(provider) { return { @@ -304,8 +308,9 @@ rendererBackgroundSource.Bing = function(data, dispatch) { }); dispatch.call('change'); }) - .catch(function() { + .catch(function(e) { /* ignore */ + console.log(e); }); From 81ce43e05586f6ccc6fdf611e08c2d7dd8fd87ad Mon Sep 17 00:00:00 2001 From: Milos Brzakovic Date: Wed, 7 Jul 2021 19:23:20 +0200 Subject: [PATCH 3/6] minor revert catch log --- modules/renderer/background_source.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 8f36c9523..6a0733412 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -308,9 +308,8 @@ rendererBackgroundSource.Bing = function(data, dispatch) { }); dispatch.call('change'); }) - .catch(function(e) { + .catch(function() { /* ignore */ - console.log(e); }); From 887938c4069ff4c7502036e7a23abdcda315c19c Mon Sep 17 00:00:00 2001 From: Milos Brzakovic Date: Wed, 7 Jul 2021 20:56:04 +0200 Subject: [PATCH 4/6] some bing imagery docs comments --- modules/renderer/background_source.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 6a0733412..131cead58 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -267,6 +267,7 @@ export function rendererBackgroundSource(data) { rendererBackgroundSource.Bing = function(data, dispatch) { // https://docs.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata + // https://docs.microsoft.com/en-us/bingmaps/rest-services/directly-accessing-the-bing-maps-tiles //fallback url template data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=10555&n=z'; @@ -274,6 +275,13 @@ rendererBackgroundSource.Bing = function(data, dispatch) { var bing = rendererBackgroundSource(data); var key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU'; // P2, JOSM, etc //var key = 'Ak5oTE46TUbjRp08OFVcGpkARErDobfpuyNKa-W2mQ8wbt1K1KL8p1bIRwWwcF-Q'; // iD + + /* + missing tile image strictness param (n=) + • n=f -> (Fail) returns a 404 + • n=z -> (Empty) returns a 200 with 0 bytes (no content) + • n=t -> (Transparant) returns a 200 with a transparent (png) tile + */ const strictParam = 'n'; var url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' + key; @@ -284,6 +292,8 @@ rendererBackgroundSource.Bing = function(data, dispatch) { d3_json(url) .then(function(json) { let imageryResource = json.resourceSets[0].resources[0]; + + //retrieve and prepare up to date imagery template let template = imageryResource.imageUrl; //http://ecn.{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=10339 let subDomains = imageryResource.imageUrlSubdomains; //["t0, t1, t2, t3"] let subDomainNumbers = subDomains.map((subDomain) => { @@ -295,6 +305,7 @@ rendererBackgroundSource.Bing = function(data, dispatch) { template += `&${strictParam}=z`; } bing.template(template); + providers = imageryResource.imageryProviders.map(function(provider) { return { attribution: provider.attribution, From c248aece7bb8cc30c5d91f16201205f06b27f75a Mon Sep 17 00:00:00 2001 From: Milos Brzakovic Date: Wed, 7 Jul 2021 20:57:54 +0200 Subject: [PATCH 5/6] typo --- modules/renderer/background_source.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 131cead58..6a9ac227b 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -280,7 +280,7 @@ rendererBackgroundSource.Bing = function(data, dispatch) { missing tile image strictness param (n=) • n=f -> (Fail) returns a 404 • n=z -> (Empty) returns a 200 with 0 bytes (no content) - • n=t -> (Transparant) returns a 200 with a transparent (png) tile + • n=t -> (Transparent) returns a 200 with a transparent (png) tile */ const strictParam = 'n'; From a64e49b064daeced899c10067122230ef07bbb4b Mon Sep 17 00:00:00 2001 From: Milos Brzakovic Date: Mon, 12 Jul 2021 18:44:22 +0200 Subject: [PATCH 6/6] small fix - whitespace --- modules/renderer/background_source.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 6a9ac227b..6723d550f 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -278,8 +278,8 @@ rendererBackgroundSource.Bing = function(data, dispatch) { /* missing tile image strictness param (n=) - • n=f -> (Fail) returns a 404 - • n=z -> (Empty) returns a 200 with 0 bytes (no content) + • n=f -> (Fail) returns a 404 + • n=z -> (Empty) returns a 200 with 0 bytes (no content) • n=t -> (Transparent) returns a 200 with a transparent (png) tile */ const strictParam = 'n';