Created
July 16, 2020 09:58
-
-
Save nxvhm/0244f6096d20f47cf67fa60456285d84 to your computer and use it in GitHub Desktop.
Revisions
-
nxvhm created this gist
Jul 16, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,74 @@ <?php # Folder in which current tiles reside $currentTilesFolder = 'tiles'; # Timeout between requests so script doesnt get blocked $timeout = 1; # Init recusrive iterator $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($currentTilesFolder)); $files = array(); # Get only file paths, no folders foreach ($rii as $file) { if ($file->isDir()){ continue; } $files[] = $file->getPathname(); } // Url format https://a.tile.openstreetmap.org/${z}/${x}/${y}.png; $downloadUrlPattern = 'https://a.tile.openstreetmap.org/%s/%s/%s'; # Make urself look like a browser $forge = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: en\r\n" . "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad ) ); $context = stream_context_create($forge); foreach ($files as $key => $pathName) { # Remove current folder name from path to get clean tile path $pathName = str_replace($currentTilesFolder, '', $pathName); $parts = explode('\\', $pathName); # echo $pathName . " \n"; $parts = array_values(array_filter($parts)); # print_r($parts); list($z, $x, $y) = $parts; $downloadUrl = sprintf($downloadUrlPattern, $z, $x, $y); $newPath = "cool-tiles/$z/$x/"; if (!file_exists($newPath)) { mkdir($newPath, 0777, true); } $newPath = $newPath.$y; if (!file_exists($newPath)) { $newTileContents = file_get_contents($downloadUrl, false, $context); file_put_contents($newPath, $newTileContents); echo $key . " For url: $downloadUrl new path is: $newPath \n"; sleep(1); } else { echo $key . ' '. $newPath . " already downloaded \n"; } }