Changeset 363
- Timestamp:
- 10/31/07 09:50:35 (1 year ago)
- Files:
-
- trunk/py/ws-compose.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/py/ws-compose.py
r362 r363 16 16 import tempfile 17 17 import textwrap 18 import string 18 19 import base64 19 20 import Image … … 78 79 79 80 def draw_map_extentified (self, args) : 80 self.error(999, "I'm sorry, Dave. Ican't let you do that.") 81 82 provider = self.load_provider(args['provider']) 83 84 coord, offset = ModestMaps.calculateMapExtent(provider, 85 args['width'], args['height'], 86 ModestMaps.Geo.Location(args['bbox'][0], args['bbox'][1]), 87 ModestMaps.Geo.Location(args['bbox'][2], args['bbox'][3])) 88 89 dim = ModestMaps.Core.Point(args['width'], args['height']) 90 map = ModestMaps.Map(provider, dim, coord, offset) 91 img = map.draw() 92 93 if args.has_key('filter') : 94 img = self.apply_filtering(img, args['filter']) 95 96 return img 81 97 82 98 # ########################################################## … … 99 115 img = map.draw() 100 116 101 if args ['dither']:102 img = self.apply_ atkinson_dithering(img)103 104 if args ['marker'] :117 if args.has_key('filter') : 118 img = self.apply_filtering(img, args['filter']) 119 120 if args.has_key('marker') : 105 121 self.add_marker(img, args) 106 122 … … 237 253 # ########################################################## 238 254 255 def apply_filtering (self, img, filter) : 256 257 return self.apply_atkinson_dithering(img) 258 259 # ########################################################## 260 239 261 # 240 262 # http://mike.teczno.com/notes/atkinson.html … … 306 328 self.send_header("Content-Type", "image/png") 307 329 self.send_header("Content-Length", fh.len) 330 self.send_header("X-ImageHeight", img.size[1]) 331 self.send_header("X-ImageWidth", img.size[0]) 308 332 self.end_headers() 309 333 … … 357 381 358 382 # 383 384 valid = {} 359 385 360 386 re_coord = re.compile(r"^-?\d+(?:\.\d+)?$") … … 362 388 re_provider = re.compile(r"^(GOOGLE|YAHOO|MICROSOFT)_(ROAD|HYBRID|AERIAL)$") 363 389 364 for p in ('latitude', 'longitude') : 390 # 391 # where am i? 392 # 393 394 if params.has_key('bbox') : 395 396 bbox = params['bbox'][0].split(",") 397 398 if len(bbox) != 4 : 399 self.error(101, "Missing or incomplete %s parameter" % 'bbox') 400 return False 401 402 bbox = map(string.strip, bbox) 403 404 for pt in bbox : 405 if not re_coord.match(pt) : 406 self.error(102, "Not a valid lat/long : %s" % pt) 407 return False 408 409 valid['bbox'] = map(float, bbox) 410 411 else : 412 413 for p in ('latitude', 'longitude') : 414 415 if not params.has_key(p) : 416 self.error(101, "Missing %s parameter" % p) 417 return False 418 419 if not re_coord.match(params[p][0]) : 420 self.error(102, "Not a valid lat/long : %s" % p) 421 return False 422 423 valid[p] = float(params[p][0]) 424 425 # 426 427 if not params.has_key('accuracy') : 428 self.error(101, "Missing %s parameter" % 'accuracy') 429 return False 430 431 if not re_num.match(params['accuracy'][0]) : 432 self.error(102, "Not a valid number %s" % 'accuracy') 433 return False 434 435 valid['zoom'] = float(params['accuracy'][0]) 436 437 # 438 # dimensions 439 # 440 441 for p in ('height', 'width') : 365 442 366 443 if not params.has_key(p) : 367 444 self.error(101, "Missing %s parameter" % p) 368 445 return False 369 370 if not re_coord.match(params[p][0]) :371 self.error(102, "Not a valid lat/long : %s" % p)372 return False373 374 #375 376 for p in ('height', 'width', 'accuracy') :377 378 if not params.has_key(p) :379 self.error(101, "Missing %s parameter" % p)380 return False381 446 382 447 if not re_num.match(params[p][0]) : 383 448 self.error(102, "Not a valid number %s" % p) 384 449 return False 385 386 # 387 450 451 valid[p] = int(params[p][0]) 452 453 # 454 # map provider 455 # 456 388 457 if not params.has_key('provider') : 389 458 self.error(101, "Missing %s parameter" % p) 390 459 return False 391 460 392 461 if not re_provider.match(params['provider'][0].upper()) : 393 462 self.error(102, "Not a valid provider") 394 463 return False 395 464 465 valid['provider'] = params['provider'][0].upper() 466 467 # 468 # markers? 396 469 # 397 470 … … 401 474 return False 402 475 403 else : 404 params['marker'] = [''] 405 406 # 407 408 if params.has_key('dither') and int(params['dither'][0]) : 409 params['dither'] = 1 410 else : 411 params['dither'] = 0 412 413 # 414 415 return { 416 'provider' : params['provider'][0].upper(), 417 'latitude' : float(params['latitude'][0]), 418 'longitude' : float(params['longitude'][0]), 419 'zoom' : float(params['accuracy'][0]), 420 'height' : int(params['height'][0]), 421 'width' : int(params['width'][0]), 422 'marker' : params['marker'][0], 423 'dither' : params['dither'], 424 } 476 valid['marker'] = params['marker'][0] 477 478 # 479 # filters 480 # 481 482 if params.has_key('filter') and params['filter'][0]: 483 valid['filter'] = params['filter'][0] 484 485 # 486 # whoooosh 487 # 488 489 return valid 425 490 426 491 # ##########################################################
