source: subversion/applications/rendering/parking/osray/osray_server.py @ 22140

Last change on this file since 22140 was 22140, checked in by kdrangmeister, 10 years ago

fixes in geom, #declare boundbox

  • Property svn:mime-type set to text/plain
File size: 5.7 KB
Line 
1# -*- coding: utf-8 -*-
2
3import string, cgi, time
4from os import curdir, sep
5from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
6import urlparse
7import osray
8from osray_geom import *
9import math
10
11options = {'height': 100, 'dsn': 'dbname=gis', 'width': 100, 'prefix': 'planet_osm', 'quick': False, 'hq': False}
12#options['bbox']='9.94861 49.79293,9.96912 49.80629' # Europastern
13#options['bbox']='9.92498 49.78816,9.93955 49.8002' # Innenstadt
14options['bbox']='9.9630547 49.8471708,9.968461999999999 49.8504638' #Technopark
15#options['bbox']='12.13344 54.08574,12.14387 54.09182' # Rostock
16#options['bbox']='12.03344 53.98574,12.24387 54.19182' # Rostock-xx
17#options['bbox']='2.822157 41.983275,2.827371 41.987123' # Girona River
18#options['bbox']='8.9771580802 47.2703623267,13.8350427083 50.5644529365' # bayern
19#options['bbox']='-43.1806 -22.91442,-43.17034 -22.90488' # Rio
20# for tile names and coordinates:
21# http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
22
23class osrayHandler(BaseHTTPRequestHandler):
24
25    def do_GET(self):
26        try:
27            theurl = self.path
28            if theurl == "/favicon.ico":
29                self.send_response(200)
30                self.end_headers()
31                self.wfile.write("")
32                return
33            urlcomponents = urlparse.urlparse(theurl)
34            print urlcomponents
35            baseurl = urlcomponents[2]
36            print "parse=",urlparse.urlparse(theurl)
37            print "base=",baseurl
38            urlqs = urlparse.urlparse(theurl)[4]
39            print "URL qs:", urlqs
40            queryparams = urlparse.parse_qs(urlqs)
41            print queryparams
42
43            #options['bbox']=scale_bbox(options['bbox'],float(2**-1))
44
45            print "baseagain=",baseurl
46
47            if baseurl.startswith("/povtile/"): # example URL http://localhost/osray/povtile/16/34576/22282.png
48                if baseurl.endswith(".png"):
49                    zxy = baseurl[9:-4].split('/')
50                    if(len(zxy)==3):
51                        print "zxy=",zxy
52                        zoom = float(zxy[0])
53                        xtile = float(zxy[1])
54                        ytile = float(zxy[2])
55                        bbox = num2bbox(xtile,ytile,zoom)
56                        print bbox
57                        options['bbox']=bbox
58                        options['width']=256
59                        options['height']=256
60                        options['hq']=True
61                        print "--- calling osray"
62                        osray.main(options)
63                        print "--- calling osray ends"
64                        f = open(curdir + sep + 'scene-osray.png')
65                        print "--- send_response"
66                        self.send_response(200)
67                        print "--- send_header"
68                        self.send_header('Content-type','image/png')
69                        print "--- send_end_headers"
70                        self.end_headers()
71                        print "--- send_write"
72                        self.wfile.write(f.read())
73                        print "--- close"
74                        f.close()
75                        return
76                        # PLEASE IMPLEMENT HERE - FIXME
77           
78            if baseurl=="/big.png":
79                if queryparams.has_key('width'):
80                    options['width']=queryparams['width'][0]
81                if queryparams.has_key('height'):
82                    options['height']=queryparams['height'][0]
83                if queryparams.has_key('hq'):
84                    options['hq']=(str(queryparams['hq'][0])=='1')
85                print "--- calling osray"
86                osray.main(options)
87                print "--- calling osray ends"
88                f = open(curdir + sep + 'scene-osray.png')
89                print "--- send_response"
90                self.send_response(200)
91                print "--- send_header"
92                self.send_header('Content-type','image/png')
93                print "--- send_end_headers"
94                self.end_headers()
95                print "--- send_write"
96                self.wfile.write(f.read())
97                print "--- close"
98                f.close()
99                return
100            print "URL was ", theurl
101            urlqs = urlparse.urlparse(theurl)[4]
102            print "URL qs:", urlqs
103            queryparams = urlparse.parse_qs(urlqs)
104            print queryparams
105            self.send_response(200)
106            self.send_header('Content-type', 'text/html')
107            self.end_headers()
108            self.wfile.write("hey, today is the" + str(time.localtime()[7]))
109            self.wfile.write(" day in the year " + str(time.localtime()[0]))
110            return
111        except IOError:
112            self.send_error(404, 'File Not Found: %s' % self.path)
113
114
115"""
116    def do_POST(self):
117        global rootnode
118        try:
119            ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
120            if ctype == 'multipart/form-data':
121                query = cgi.parse_multipart(self.rfile, pdict)
122            self.send_response(301)
123           
124            self.end_headers()
125            upfilecontent = query.get('upfile')
126            print "filecontent", upfilecontent[0]
127            self.wfile.write("<HTML>POST OK.<BR><BR>");
128            self.wfile.write(upfilecontent[0]);
129           
130        except :
131            pass
132"""
133
134def main():
135    try:
136        server = HTTPServer(('', 8087), osrayHandler)
137        print 'started osray server...'
138        server.serve_forever()
139    except KeyboardInterrupt:
140        print 'shutting down server'
141        server.socket.close()
142
143if __name__ == '__main__':
144    main()
Note: See TracBrowser for help on using the repository browser.