# # 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)
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