2
2
# Fabien Chereau fchereau@eso.org
9
7
def writePolys(pl, f):
8
"""Write a list of polygons pl into the file f.
9
The result is under the form [[[ra1, de1],[ra2, de2],[ra3, de3],[ra4, de4]], [[ra1, de1],[ra2, de2],[ra3, de3]]]"""
11
11
for idx,poly in enumerate(pl):
29
def outJSON(self, f, levTab):
31
f.write(levTab+'\t\t"short": "'+self.short+'",\n')
33
f.write(levTab+'\t\t"full": "'+self.full+'",\n')
34
if self.infoUrl!=None:
35
f.write(levTab+'\t\t"infoUrl": "'+self.infoUrl+'",\n')
36
f.seek(-2, os.SEEK_CUR)
22
40
class SkyImageTile:
41
"""Contains all the properties needed to describe a multiresolution image tile"""
23
42
def __init__(self):
44
self.imageCredits = StructCredits()
45
self.serverCredits = StructCredits()
46
self.imageInfo = StructCredits()
27
47
self.imageUrl = None
48
self.alphaBlend = None
28
49
self.maxBrightness = None
42
ff.open(qt.IO_ReadOnly)
43
data = qt.qCompress(ff.readAll())
44
fout = open(fName+".qZ", 'w')
45
fout.write(data.data())
63
fout = gzip.GzipFile(fName+".gz", 'w')
49
68
def __subOutJSON(self, prefix, qCompress, maxLevelPerFile, f, curLev, outDir):
69
"""Write the tile in the file f"""
51
71
for i in range(0,curLev):
54
74
f.write(levTab+'{\n')
56
f.write(levTab+'\t"credits" : "'+self.credits+'",\n')
58
f.write(levTab+'\t"infoUrl" : "'+self.infoUrl+'",\n')
75
if self.imageInfo.short!=None or self.imageInfo.full!=None or self.imageInfo.infoUrl!=None:
76
f.write(levTab+'\t"imageInfo": {\n')
77
self.imageInfo.outJSON(f, levTab)
78
f.write(levTab+'\t},\n')
79
if self.imageCredits.short!=None or self.imageCredits.full!=None or self.imageCredits.infoUrl!=None:
80
f.write(levTab+'\t"imageCredits": {\n')
81
self.imageCredits.outJSON(f, levTab)
82
f.write(levTab+'\t},\n')
83
if self.serverCredits.short!=None or self.serverCredits.full!=None or self.serverCredits.infoUrl!=None:
84
f.write(levTab+'\t"serverCredits": {\n')
85
self.serverCredits.outJSON(f, levTab)
86
f.write(levTab+'\t},\n')
60
f.write(levTab+'\t"imageUrl" : "'+self.imageUrl+'",\n')
61
f.write(levTab+'\t"worldCoords" : ')
88
f.write(levTab+'\t"imageUrl": "'+self.imageUrl+'",\n')
89
f.write(levTab+'\t"worldCoords": ')
62
90
writePolys(self.skyConvexPolygons, f)
64
f.write(levTab+'\t"textureCoords" : ')
92
f.write(levTab+'\t"textureCoords": ')
65
93
writePolys(self.textureCoords, f)
67
95
if self.maxBrightness:
68
f.write(levTab+'\t"maxBrightness" : %f,\n' % self.maxBrightness)
69
f.write(levTab+'\t"minResolution" : %f' % self.minResolution)
96
f.write(levTab+'\t"maxBrightness": %f,\n' % self.maxBrightness)
97
if self.alphaBlend==True:
98
f.write(levTab+'\t"alphaBlend": true,\n')
99
f.write(levTab+'\t"minResolution": %f' % self.minResolution)
70
100
if len(self.subTiles)==0:
71
101
f.write('\n'+levTab+'}')
74
f.write(levTab+'\t"subTiles" : [\n')
104
f.write(levTab+'\t"subTiles": [\n')
76
106
if curLev+1<maxLevelPerFile:
77
107
# Write the tiles in the same file
83
113
# Write the tiles in a new file
84
114
for st in self.subTiles:
85
115
st.outputJSON(prefix, qCompress, maxLevelPerFile, outDir)
86
f.write(levTab+'\t\t"'+prefix+"x%.2d_%.2d_%.2d.json" % (2**st.level, st.i, st.j))
116
f.write(levTab+'\t\t{"$ref": "'+prefix+"x%.2d_%.2d_%.2d.json" % (2**st.level, st.i, st.j))
90
120
f.seek(-2, os.SEEK_CUR)
91
121
f.write('\n'+levTab+'\t]\n')
92
122
f.write(levTab+'}')