9
9
from math import floor , pi , log , tan , cos
10
10
from concurrent .futures import ThreadPoolExecutor
11
11
from tqdm import tqdm
12
+ from urllib .parse import urlparse
12
13
13
14
class TileClipper :
14
15
def __init__ (self ,
@@ -63,11 +64,12 @@ def bbox2tiles(self, zoom, bbox):
63
64
def download_tile (self , x , y , zoom ):
64
65
self .logger .info (f"Zoom Level: { zoom } " )
65
66
tile_url = self .base_url .replace ('{z}' , str (zoom )).replace ('{x}' , str (x )).replace ('{y}' , str (y ))
67
+ parsed_url = urlparse (tile_url )
68
+ filename = os .path .basename (parsed_url .path )
66
69
response = requests .get (tile_url )
67
70
if response .status_code == 200 :
68
71
directory = os .path .join (self .output_folder , f"{ zoom } /{ x } /" )
69
72
os .makedirs (directory , exist_ok = True )
70
- filename = tile_url .split ('/' )[- 1 ] + '.png'
71
73
with open (os .path .join (directory , filename ), 'wb' ) as file :
72
74
file .write (response .content )
73
75
self .logger .info (f"Tile downloaded successfully to: { directory } { filename } " )
@@ -94,11 +96,12 @@ def download_tiles(self, zoom_start, zoom_end):
94
96
def download_tile_with_progress_local (self , x , y , zoom , progress_bar ):
95
97
self .logger .info (f"Zoom Level: { zoom } " )
96
98
tile_url = self .base_url .replace ('{z}' , str (zoom )).replace ('{x}' , str (x )).replace ('{y}' , str (y ))
99
+ parsed_url = urlparse (tile_url )
100
+ filename = os .path .basename (parsed_url .path )
97
101
response = requests .get (tile_url )
98
102
if response .status_code == 200 :
99
103
directory = os .path .join (self .output_folder , f"{ zoom } /{ x } /" )
100
104
os .makedirs (directory , exist_ok = True )
101
- filename = tile_url .split ('/' )[- 1 ] + '.png'
102
105
local_file_path = os .path .join (directory , filename )
103
106
104
107
with open (local_file_path , 'wb' ) as file :
@@ -111,9 +114,10 @@ def download_tile_with_progress_local(self, x, y, zoom, progress_bar):
111
114
def download_tile_with_progress_s3 (self , x , y , zoom , progress_bar ):
112
115
self .logger .info (f"Zoom Level: { zoom } " )
113
116
tile_url = self .base_url .replace ('{z}' , str (zoom )).replace ('{x}' , str (x )).replace ('{y}' , str (y ))
117
+ parsed_url = urlparse (tile_url )
118
+ filename = os .path .basename (parsed_url .path )
114
119
response = requests .get (tile_url )
115
120
if response .status_code == 200 :
116
- filename = tile_url .split ('/' )[- 1 ] + '.png'
117
121
s3_client = boto3 .client (
118
122
service_name = 's3' ,
119
123
aws_access_key_id = self .aws_access_key ,
0 commit comments