summaryrefslogtreecommitdiffstats
path: root/rasodmg/test/init_fast_collection.pl
blob: 63b29da5bf6d9381a1805658089a43d67081a712 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/perl -w

my $COLLECTION="orthorgb";
my $SERVER="zombie";
my $YMIN=0;
my $YMAX=4999;
my $XMIN=0;
my $XMAX=4999;
my $SCALELEVELS=8;
my $IMGTYPE="RGB";#or "GREY"
my $STORAGEFORMAT="Array";
my $TRANSFERFORMAT="Array";
my $transferWidth=2000;
$transferWidth=int($transferWidth/(2**$SCALELEVELS))*(2**$SCALELEVELS);
print "#transfer width $transferWidth\n";
my $transferHeight=2000;
$transferHeight=int($transferHeight/(2**$SCALELEVELS))*(2**$SCALELEVELS);
print "#transfer height $transferHeight\n";
my $i=0;
my $currentCollection=$COLLECTION;
my $currentXMin=$XMIN;
my $currentYMin=$YMIN;
my $currentXMax=$XMIN + $transferWidth;
$currentXMax=min($XMAX, $currentXMax);
my $currentYMax=$YMIN + $transferHeight;
$currentYMax=min($YMAX, $currentYMax);
my $colltype;
my $mddtype;
my $conversiontype;
my $scaleLevel=2;
my $command;
my $scaleString;
my $domain;

sub max {
	my $currentMax = shift;
	my $next = shift;
	if ($currentMax > $next)
		{
		return $currentMax;
		}
	else	{
		return $next;
		}
	};

sub min {
	my $currentMax = shift;
	my $next = shift;
	if ($currentMax > $next)
		{
		return $next;
		}
	else	{
		return $currentMax;
		}
	};

if ($IMGTYPE eq "RGB")
	{
	$colltype="RGBSet";
	$mddtype="RGBImage";
	$conversiontype="RGBPixel";
	}
else	{
	if ($IMGTYPE eq "RGB")
		{
		$colltype="GreySet";
		$mddtype="GreyImage";
		$conversiontype="char";
		}
	else	{
		die "Unknown image type: $IMGTYPE\n";
		}
	}
for ($i=1; $i < $SCALELEVELS + 1; $i++)
	{
	$currentCollection = $COLLECTION . "_" . int($i);
	$scaleString .= "$currentCollection:$scaleLevel";
	if ($i != $SCALELEVELS)
		{
		$scaleString .= ";";
		}
	$scaleLevel *= 2;
	}
while ($currentXMax <= $XMAX)
	{
	while ($currentYMax <= $YMAX)
		{
		$domain = "[$currentXMin:" . ($currentXMax - 1) . ",$currentYMin:" . ($currentYMax - 1) . "]";
		$command = "system_update -s $SERVER --collection $COLLECTION -t --colltype $colltype --mddtype $mddtype --storageformat $STORAGEFORMAT --transferformat $TRANSFERFORMAT --scalelevels \"$scaleString\" --mdddomain \"$domain\"";
		print "$command\n";
		if ($currentYMax == $YMAX)
			{
			last;
			}
		$currentYMax += $transferHeight;
		$currentYMax = min($currentYMax, $YMAX);
		$currentYMin += $transferHeight;
		};
	if ($currentXMax == $XMAX)
		{
		last;
		}
	$currentXMin += $transferWidth;
	$currentXMax += $transferWidth;
	$currentXMax = min($currentXMax, $XMAX);
	$currentYMin = $YMIN;
	$currentYMax = $YMIN + $transferHeight;
	$currentYMax = min($YMAX, $currentYMax);
	};