source: subversion/applications/utils/downloading/tiles_by_bbox/get.pl @ 5074

Last change on this file since 5074 was 5074, checked in by ojw, 12 years ago

Script to get tiles in bbox

File size: 1.0 KB
Line 
1# OJW 2006  GNU GPL v3 or later
2use Math::Trig;
3use strict;
4
5my ($W,$S,$E,$N) = split(/,/, shift());
6my $Z = shift();
7
8my $Usage = "usage: $0 W,S,E,N zoom\n";
9
10die($Usage) if($Z < 8 || $Z > 18);
11
12my $P2 = 2 ** $Z;
13my $Y1 = int(Lat2Y($N) * $P2);
14my $Y2 = int(Lat2Y($S) * $P2);
15my $X1 = int(Long2X($W) * $P2);
16my $X2 = int(Long2X($E) * $P2);
17
18die($Usage) if($X2 < $X1 || $Y2 <= $Y1);
19
20
21for(my $y = $Y1; $y <= $Y2; $y++){
22  for(my $x = $X1; $x <= $X2; $x++){
23    my $URL = sprintf("http://%s/%d/%d/%d.png", "tile.openstreetmap.org/mapnik",$Z,$x, $y);
24   
25    my $File = sprintf("tile_%d_%d_%d.png", $Z,$x,$y);
26   
27    printf("wget -O %s %s\n", $File, $URL);
28  }
29}
30sub Long2X{
31  my $Long = shift();
32  return(($Long + 180.0) / 360.0);
33}
34sub Lat2Y{
35  my $Lat = shift();
36  my $LimitY = ProjectF(85.0511);
37  my $Y = ProjectF($Lat);
38  my $PY = ($LimitY - $Y) / (2 * $LimitY);
39  return($PY);
40}
41sub ProjectF{
42  my $Lat = shift();
43  $Lat = deg2rad($Lat);
44  my $Y = log(tan($Lat) + (1/cos($Lat)));
45  return($Y);
46}
47sub deg2rad{
48  return(shift() * 0.0174532925);
49}
Note: See TracBrowser for help on using the repository browser.