Exemple #1
0
					parallels.append(specpar)
		par = par - stepsize
		# correct near-zero imprecision of floats
		if par > -1e-10 and par < 1e-10: par = 0
	
	# avoid multiple guide instances: record all present guides:
	existing_guides = list()
	for guide in namedview.getElementsByTagName("sodipodi:guide"):
		existing_guides.append(guide.getAttribute("id"))
	
	n_guides = 0
	
	# iterate over meridians list...
	for lon in meridians:
		# calculate position and id
		guide_pos = x + (OSMTools.lon_to_x(lon,args.ZOOM) - args.X0) * width / args.NX
		guide_id  = "meridian{0}".format(lon)
		
		# check if guide is already present (id in use)
		if guide_id not in existing_guides:
			# create Inkscape guide element, populate it and append it to the
			# named view of the SVG document
			guide = svg.createElement("sodipodi:guide")
			guide.setAttribute("id",guide_id)
			guide.setAttribute("orientation","1,0")
			guide.setAttribute("position","{0},{1}".format(guide_pos,0))
			namedview.appendChild(guide)
			print("Added guide for meridian={0}° at x={1}.".format(lon,guide_pos))
			n_guides = n_guides + 1
		else:
			print("Skipping already existing guide for meridian={0}°.".format(lon))
		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