Script för nedladdning av stort flygfoto över stockholm

Permalänk
Medlem

Script för nedladdning av stort flygfoto över stockholm

Hej! Jag undrar om nån skulle vilja hjälpa mig med att ladda hem två väldigt högupplösta flygfoton över Stockholm, ett från 1958 och ett från 2011, samma vy. Dessa två flygfoton är uppdelade i 23409 olika bilder vardera, men URLerna följer ett simpelt mönster:

url/x/y.jpg
där x och y har värdet 0-152

url är alltså två olika urler, men det kan man ju ändra manuellt och köra scriptet en andra gång:

här kan ni se flygfotona sida vid sida:
http://www.lantmateriet.se/Global/Kartor%20och%20geografisk%2...

Här är källkoden för javascriptet som sköter allt:

<script src="OpenLayers-2.12/OpenLayers.js" type="text/javascript"></script> <script type="text/javascript"> var map,map2; var isok=false, inresize1=false, inresize2=false; var mapDisplayLayout=true; var mapBounds = new OpenLayers.Bounds( 656500.0, 6575500.0, 676500.0, 6595500.0); var mapBounds2 =new OpenLayers.Bounds( 656500.0, 6575500.0, 676500.0, 6595500.0); // avoid pink tiles OpenLayers.IMAGE_RELOAD_ATTEMPTS = 2; OpenLayers.Util.onImageLoadErrorColor = "transparent"; function init(){ var options = { controls: [], maxExtent: new OpenLayers.Bounds( 656500.0, 6575500.0, 676500.0, 6595500.0), restricted:true, maxResolution: 128.000000, numZoomLevels: 9, eventListeners: {"move": myFunction, "zoomend": myFunctionEnd} }; var options2 = { controls: [], maxExtent: new OpenLayers.Bounds( 656500.0, 6575500.0, 676500.0, 6595500.0), maxResolution: 128.000000, numZoomLevels: 9, eventListeners: {"move": myFunction2, "zoomend": myFunction2} }; map = new OpenLayers.Map('maptd2', options); map2 = new OpenLayers.Map('maptd1', options2); var layer = new OpenLayers.Layer.TMS( "2011","", { url: '', serviceVersion: '.', layername: '.', alpha: false,buffer: 4, type: 'jpg', getURL: overlay_getTile1URL}); var layer2 = new OpenLayers.Layer.TMS( "1958","", { url: '', serviceVersion: '.', layername: '.', alpha: false, buffer: 4, type: 'jpg', getURL: overlay_getTile2URL}); map.addLayers([layer]); map2.addLayers([layer2]); //map.addControl(new OpenLayers.Control.LayerSwitcher()); //map.addControl(new OpenLayers.Control.CacheRead()); var nav= new OpenLayers.Control.Navigation({autoActivate: true, documentDrag: true}); map.addControl(nav); //map2.addControl(new OpenLayers.Control.LayerSwitcher()); //map2.addControl(new OpenLayers.Control.CacheRead()); var nav2= new OpenLayers.Control.Navigation({zoomBoxEnabled: true, autoActivate: true, documentDrag: true}); map2.addControl(nav2); map2.addControl(new OpenLayers.Control.PanZoomBar()); isok=true; map.setCenter(new OpenLayers.LonLat(668639,6584922), 8, false,true); } function changeDisplay() { var b= map.getExtent(); if (mapDisplayLayout == true) { mapDisplayLayout= false; map2.zoomToExtent( b, true); } else { mapDisplayLayout= true; map2.zoomToExtent( b.add(-b.getWidth(),0), true); } } function myFunction() { if (isok && !inresize2) { inresize1=true; var b=map.getExtent(); if (mapDisplayLayout) { map2.zoomToExtent( map.getExtent().add(-b.getWidth(),0), true); } else { map2.zoomToExtent( map.getExtent(), true); } inresize1=false; } } function myFunctionEnd() { if (isok && !inresize2) { inresize1=true; var b=map.getExtent(); if (mapDisplayLayout) { map2.zoomToExtent( map.getExtent().add(-b.getWidth(),0), true); if(map.getZoom() != map2.getZoom()) {map2.zoomTo( map.getZoom()); } } else { map2.zoomToExtent( map.getExtent(), true); } inresize1=false; } } function myFunction2() { if (isok && !inresize1) { inresize2=true; var b=map2.getExtent(); if (mapDisplayLayout) { map.zoomToExtent( map2.getExtent().add(b.getWidth(),0), true); } else { map.zoomToExtent( map2.getExtent(),true); } inresize2=false; } } function overlay_getTile1URL(bounds) { var res = this.map.getResolution(); var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var y = Math.round((bounds.bottom - this.maxExtent.bottom) / (res * this.tileSize.h)); var z = this.map.getZoom(); if (x >= 0 && y >= 0) { return this.url + "sthlm2011/" + z + "/" + x + "/" + y + "." + this.type; } else { return "none.png"; } } function overlay_getTile2URL(bounds) { var res = this.map.getResolution(); var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var y = Math.round((bounds.bottom - this.maxExtent.bottom) / (res * this.tileSize.h)); var z = this.map.getZoom(); if (x >= 0 && y >= 0) { return this.url + "sthlm1958/"+z + "/" + x + "/" + y + "." + this.type; } else { return "none.png"; } } onresize=function(){ }; </script> <td id="maptd1"></td><td id="maptd2"></td>

Dold text

Som ni ser är även z en variabel (0-8), men jag vill endast ha nivå 8, vilket jag fyllde i för URL:erna ovan. Om detta görs i windows, linux eller freebsd spelar mig ingen roll, jag har alla tre. Dock vore det najs om bilderna sparades i samma mappstruktur som de ligger i på servern, dvs någon_path/x/y.jpg

Det känns som om detta borde vara jättelätt att scripta, men jag kan tyvärr inget. Sidan och bilderna är publika så det borde inte heller vara något olagligt. Det som kvarstår sen är att sammanfoga alla bilderna till två jättestora högupplösta bilder, en från 1958 och en från 2011.

Som belöning får ni min eviga tacksamhet samt två väldigt högupplösta bilder över nordvästra stockholm
Kan någon vänlig själ hjälpa mig?

Visa signatur
Permalänk
Medlem

Låter mycket intressant, kan dock inte hjälpa dig med detta. Såg att man kunde köpa digitala kopior för 150kr, eller tom få dem utskriva av myndigheten.

Permalänk
Hedersmedlem

Man bör nog utreda om man får först (google tillåter till exempel inte sådant), men om så skulle vara fallet borde man till exempel kunna använda wget:

#!/bin/bash mkdir 2011_8 mkdir 1958_8 for x in {0..152} do mkdir 2011_8/$x mkdir 1958_8/$x for y in {0..152} do wget http://www.lantmateriet.se/Global/Kartor%20och%20geografisk%2... -O 2011_8/$x/$y.jpg wget http://www.lantmateriet.se/Global/Kartor%20och%20geografisk%2... -O 1958_8/$x/$y.jpg done done

Permalänk

Kastade ihop ett program lite snabbt, skapar 2 mappar och lagrar bilderna som x - y.jpg.

http://www.mediafire.com/download.php?2srh9tsv47p2w48

Permalänk
Medlem

Wow, ni är grymma. Tack alla!

Skrivet av Chawan123:

Kastade ihop ett program lite snabbt, skapar 2 mappar och lagrar bilderna som x - y.jpg.
http://www.mediafire.com/download.php?2srh9tsv47p2w48

Den här funka fint!

Skrivet av Elgot:

Man bör nog utreda om man får först (google tillåter till exempel inte sådant)

Jag tänker inte använda bilderna kommersiellt, och jag tänkte väl bara sprida dem till er som hjälpt mig. Dessutom pröjsar vi ju till lantmäteriet genom skatten. Lite oskyldigt, borde va lugnt

Nu ska jag bara komma på hur man sammanfogar bilderna. Nån som har något tips?
edit: det här kanske kan va nåt http://www.shallowsky.com/software/pandora/

Visa signatur
Permalänk
Hedersmedlem
Skrivet av usilusken:

Nu ska jag bara komma på hur man sammanfogar bilderna. Nån som har något tips?

Imagemagick verkar kunna: http://www.imagemagick.org/Usage/montage/

Permalänk
Medlem
Skrivet av Elgot:

Hmm ja, det där verkar va precis vad jag behöver
Den har nu laddat hem en tredjedel av alla bilder, sen ska datorn få jobba lite.

Tack än en gång!

Visa signatur
Permalänk
Skrivet av usilusken:

Hmm ja, det där verkar va precis vad jag behöver
Den har nu laddat hem en tredjedel av alla bilder, sen ska datorn få jobba lite.

Tack än en gång!

Gjorde en liten miss i programmet så bild 152 saknas för varje koordinat, gjorde en liten fix som laddar ner bilderna som saknas och lägger dom en en egen mapp som heter missing så är det bara att flytta dom till rätt mapp sen.

Ursäktar för missen.

http://www.mediafire.com/?e8730x7cv4lcjf1

Permalänk
Medlem
Skrivet av Chawan123:

Gjorde en liten miss i programmet så bild 152 saknas för varje koordinat, gjorde en liten fix som laddar ner bilderna som saknas och lägger dom en en egen mapp som heter missing så är det bara att flytta dom till rätt mapp sen.

Ursäktar för missen.

http://www.mediafire.com/?e8730x7cv4lcjf1

Tack för uppdateringen! Såg att det fattades några. Har laddat hem alla nu, 640mb vart det totalt, 320mb per bild. Hoppas ingen på lantmäteriet tar illa upp för det här. Jag har alltid vart lite förtjust i kartor och den här är ju extra häftig.

Visa signatur