コード例 #1
0
ファイル: addGrid.py プロジェクト: FrankAbelbeck/OSMImageMap
		#
		# SVG coordinate system: upper left corner, right/down
		#
		# guides are an Inkscape extension and follow Inkscape's coordinate system:
		# lower left corner, right/up
		x         = float(image.getAttribute("x"))
		y         = float(image.getAttribute("y"))
		width     = float(image.getAttribute("width"))
		height    = float(image.getAttribute("height"))
	except (IndexError,AttributeError,TypeError):
		print("Could not retrieve important XML elements! Invalid Inkscape SVG file?")
		sys.exit(1)
	
	print("potential map image at x={0} y={1} w={2} h={3}".format(x,y,width,height))
	
	lon0 = OSMTools.x_to_lon(args.X0,args.ZOOM)
	lat0 = OSMTools.y_to_lat(args.Y0,args.ZOOM)
	lon1 = OSMTools.x_to_lon(args.X0+args.NX,args.ZOOM)
	lat1 = OSMTools.y_to_lat(args.Y0+args.NY,args.ZOOM)
	
	#
	# prepare lists of meridians and parallels
	#
	
	stepsize = 1/args.steps
	special_meridians = (OSMTools.PRIME_MERIDIAN,)
	special_parallels = (OSMTools.ARCTIC_CIRCLE,OSMTools.TROPIC_CANCER,OSMTools.EQUATOR,OSMTools.TROPIC_CAPRICORN,OSMTools.ANTARCTIC_CIRCLE)
	
	# build meridians list; depends on map boundaries, stepsize and (optional) special meridians
	meridians = list()
	med = math.ceil(lon0*args.steps)/args.steps # round to nearest fraction inside map (round up)
コード例 #2
0
		except IndexError:
			print("Invalid source URL provided!")
			sys.exit(1)
	
	# check bounding box values
	if args.EAST <= args.WEST or args.NORTH <= args.SOUTH:
		print("Invalid bounding box values! Required: WEST < EAST and SOUTH < NORTH")
		sys.exit(1)
	
	# check zoom factor
	if args.ZOOM < 0 or args.ZOOM > 18:
		print("Invalid zoom factor!")
		sys.exit(1)
	
	# upper left corner of map
	x0 = int(OSMTools.lon_to_x(args.WEST,args.ZOOM))
	y0 = int(OSMTools.lat_to_y(args.NORTH,args.ZOOM))
	
	# lower right corner of map
	# (i.e. lower right tile next to the one which contains EAST/SOUTH -> +1)
	x1 = int(OSMTools.lon_to_x(args.EAST, args.ZOOM))+1
	y1 = int(OSMTools.lat_to_y(args.SOUTH,args.ZOOM))+1
	
	tiles = [(args.ZOOM,x,y) for x in range(x0,x1) for y in range(y0,y1)]
	n     = len(tiles)
	
	# calculate image dimensions based on the standard 256x256 tile
	w = (x1 - x0) * 256
	h = (y1 - y0) * 256
	
	# open map image file