Skip to content

Instantly share code, notes, and snippets.

@Arty2
Created November 28, 2015 12:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Arty2/c5a3bf282217d1809e96 to your computer and use it in GitHub Desktop.
Save Arty2/c5a3bf282217d1809e96 to your computer and use it in GitHub Desktop.
Strip tiles from http://acropolis-gis.ysma.gr/ (requires tweaking the code)
<?php
/*--------------------------------------------------------------
Gigapixel tile ripper for http://acropolis-gis.ysma.gr/
http://acropolis-gis.ysma.gr/sites/default/files/Walls/krpano.xml
http://acropolis-gis.ysma.gr/sites/default/files/katopsi/krpano.xml
uncomment a set to start ripping
2014-06-26
--------------------------------------------------------------*/
ini_set('max_execution_time', 60*60*2);
header('Content-Type: text/html; charset=utf-8');
trigger_error( 'showing progress' , E_USER_NOTICE ) ; // quickfix to allow flush()
// $set = array('Groundplan', 36100, 18600, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/groundplan.tiles/l7/', 2);
// $set = array('Groundplan', 18050, 9300, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/groundplan.tiles/l6/', 2);
// $set = array('East_Wall', 38500, 11000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/East_Wall.tiles/l6/', 2);
// $set = array('External_South_E0', 3720, 6144, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/External_South_E0.tiles/l4/', 2);
// $set = array('West_Wall_A1', 3023, 4338, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_A1.tiles/l4/', 2);
// $set = array('West_Wall_A2', 6258, 6477, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_A2.tiles/l5/', 2);
// $set = array('West_Wall_B', 7372, 6657, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_B.tiles/l5/', 2);
// $set = array('West_Wall_C', 13000, 8500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/West_Wall_C.tiles/l6/', 2);
// $set = array('West_Wall_D', 5457, 4787, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_D.tiles/l5/', 2);
// $set = array('West_Wall_E', 2955, 4202, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_E.tiles/l4/', 2);
// $set = array('West_Wall_ST', 4250, 4670, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_ST.tiles/l5/', 3);
// $set = array('West_Wall_Z', 2979, 3342, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_Z.tiles/l4/', 2);
// $set = array('West_Wall_H', 4653, 3906, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_H.tiles/l4/', 3);
// $set = array('West_Wall_I', 9285, 5066, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_I.tiles/l5/', 2);
// $set = array('West_Wall_K', 6773, 6136, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/WEST_WALL_K.tiles/l5/', 2);
// $set = array('North_Wall_A1', 2775, 4687, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A1.tiles/l4/', 2);
// $set = array('North_Wall_A2', 2273, 3828, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A2.tiles/l4/', 2);
// $set = array('North_Wall_A3_1', 2688, 3608, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A3_1.tiles/l4/', 2);
// $set = array('North_Wall_A3_2', 3440, 3543, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A3_2.tiles/l4/', 2);
// $set = array('North_Wall_A4', 11500, 4500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A4.tiles/l5/', 2);
// $set = array('North_Wall_A5', 12000, 3500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_A5.tiles/l4/', 2);
// $set = array('North_wall_B1_1', 9530, 3381, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_wall_B1_1.tiles/l4/', 2);
// $set = array('North_wall_B1_2', 4199, 3563, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_wall_B1_2.tiles/l4/', 3);
// $set = array('North_Wall_B2_1', 9346, 4907, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_B2_1.tiles/l5/', 2);
// $set = array('North_Wall_B2_2', 9346, 4907, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_B2_2.tiles/l5/', 2);
// $set = array('North_Wall_B2_3', 4478, 4186, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_B2_3.tiles/l5/', 3);
// $set = array('North_Wall_B2_4', 2770, 4081, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_B2_4.tiles/l4/', 2);
// $set = array('North_wall_B3_1', 6656, 6994, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_wall_B3_1.tiles/l5/', 2);
// $set = array('North_Wall_ B3_2', 3500, 5500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_ B3_2.tiles/l4/', 2);
// $set = array('North_Wall_C1', 21000, 10500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_C1.tiles/l6/', 2);
// $set = array('North_Wall_C2', 7532, 5136, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_C2.tiles/l5/', 2);
// $set = array('North_Wall_D', 35500, 5000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_D.tiles/l5/', 2);
// $set = array('North_Wall_D', 17750, 2500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_D.tiles/l4/', 2);
// $set = array('North_Wall_E1_1', 6000, 7500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E1_1.tiles/l5/', 2);
// $set = array('North_Wall_E1_2', 7310, 6012, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E1_2.tiles/l5/', 2);
// $set = array('North_Wall_E1_3', 26500, 6000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E1_3.tiles/l5/', 2);
// $set = array('North_Wall_E1_3', 13250, 3000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E1_3.tiles/l4/', 2);
// $set = array('North_Wall_E2', 3451, 3404, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E2.tiles/l4/', 2);
// $set = array('North_Wall_E3', 3052, 5653, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E3.tiles/l4/', 2);
// $set = array('North_Wall_E4', 1904, 4873, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/North_Wall_E4.tiles/l3/', 2);
// $set = array('South_Wall_A_B', 83500, 12000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_A_B.tiles/l6/', 2);
// $set = array('South_Wall_A_B', 41750, 6000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_A_B.tiles/l5/', 2);
// $set = array('South_Wall_A_B', 20875, 3000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_A_B.tiles/l4/', 2);
// $set = array('South_Wall_CD1', 70000, 9000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_CD1.tiles/l6/', 2);
// $set = array('South_Wall_CD1', 35000, 4500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_CD1.tiles/l5/', 2);
// $set = array('South_Wall_CD1', 17500, 2250, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_CD1.tiles/l4/', 2);
// $set = array('South_Wall_CD2', 9908, 7151, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/South_Wall_CD2.tiles/l5/', 2);
// $set = array('Inner_East_Wall', 24500, 4500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_East_Wall.tiles/l5/', 2);
// $set = array('Inner_East_Part_F', 2115, 1690, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_East_Part_F.tiles/l3/', 2);
// $set = array('Inner_North_Wall_B4-5_A', 16500, 1500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B4-5_A.tiles/l3/', 2);
// $set = array('Inner_North_Wall_B45_b', 10081, 1116, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B45_b.tiles/l3/', 2);
// $set = array('Inner_North_Wall_B4-5_C', 11500, 2000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B4-5_C.tiles/l3/', 2);
// $set = array('Inner_North_Wall_B45_d_', 1851, 971, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B45_d_.tiles/l2/', 2);
// $set = array('Inner_North_Wall_B45_e', 3281, 1927, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B45_e.tiles/l3/', 2);
// $set = array('Inner_North_Wall_B6', 1518, 981, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B6.tiles/l2/', 2);
// $set = array('Inner_North_Wall_B7', 4140, 1338, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_B7.tiles/l3/', 3);
// $set = array('Inner_North_Wall_b8', 2212, 809, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_b8.tiles/l2/', 2);
// $set = array('Inner_North_Wall_b9', 3243, 746, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_b9.tiles/l2/', 2);
// $set = array('Inner_North_Wall_b10', 4971, 1497, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_b10.tiles/l3/', 3);
// $set = array('Inner_North_Wall_C1', 14500, 4500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_C1.tiles/l5/', 2);
// $set = array('Inner_North_Wall_C2_1', 9766, 2123, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_C2_1.tiles/l4/', 2);
// $set = array('Inner_North_Wall_C2_2', 5056, 1736, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_C2_2.tiles/l3/', 3);
// $set = array('inner_north_wall_d', 27000, 3000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/inner_north_wall_d.tiles/l4/', 2);
// $set = array('Inner_North_Wall_e1_dion2', 6122, 2181, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_e1_dion2.tiles/l4/', 2);
// $set = array('Inner_North_Wall_e2', 4873, 1717, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_e2.tiles/l3/', 3);
// $set = array('Inner_North_Wall_e3', 4873, 1717, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_North_Wall_e3.tiles/l3/', 3);
// $set = array('Inner_South_Wall_A1', 44500, 1500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_South_Wall_A1.tiles/l3/', 2);
// $set = array('Inner_SOUTH_WALL_A2', 2392, 924, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_SOUTH_WALL_A2.tiles/l2/', 2);
// $set = array('Inner_South_Wall_B', 22500, 1000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_South_Wall_B.tiles/l2/', 2);
// $set = array('Inner_South_Wall_C1', 16000, 1000, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_South_Wall_C1.tiles/l2/', 2);
// $set = array('Inner_South_C2', 25000, 2500, 'http://orbitlab.s3.amazonaws.com/projects/katopsi/gigaorthos/Inner_South_C2.tiles/l4/', 2);
$local = './' . $set[0] . '/';
@mkdir($local); //make local output directory
$online = $set[3]; $w = $set[1]; $h = $set[2]; $pad = $set[4];
$tile = 512;
$cols = ceil($w/$tile) + 1;
$rows = ceil($h/$tile) + 1;
echo '
<html>
<head>
<title>Acropolis gigapixel ripper</title>
<style>
body {
padding: 50px;
background: #444;
color: #fff;
font-family: "Consolas", monospace;
}
.loading {
word-wrap:break-word;
}
.xe-notice {
display: none;
}
</style>
</head>
<body>
ripping to ' . $local . '<br/>'
. $w . ' width<br/>'
. $h . ' height<br/>'
. ($rows - 1) . ' rows<br/>'
. ($cols - 1) . ' columns<br/><br/>
<div class="loading">';
$i = 1;
for ($r = 1; $r < $rows; $r++) {
for ($c = 1; $c < $cols; $c++) {
$filename = str_pad($r, $pad, '0', STR_PAD_LEFT) . '_' . str_pad($c, $pad, '0', STR_PAD_LEFT) . '.jpg';
// $localname = str_pad($i, 4, '0', STR_PAD_LEFT) . '.jpg';
copy( $online . $filename, $local . $filename);
echo '▒'; flush(); ob_flush(); // output “progressbar” to browser
$i++;
}
}
echo '
<div> Done!<br/>
<code> montage -mode concatenate -tile ' . ($cols - 1) . 'x *.jpg ' . $set[0] . '.jpg</code>
<body></html>';
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment