def _computeRegions(self, count, startRegion, endRegion=None, zoomValue=None): """Computes regions based on start region and end region or zoom value for each of the animation frames.""" region = dict(gcore.region()) # cast to dict, otherwise deepcopy error if startRegion: region = dict( parse_key_val( gcore.read_command("g.region", flags="gu", region=startRegion), val_type=float, )) del region["cells"] del region["cols"] del region["rows"] if "projection" in region: del region["projection"] if "zone" in region: del region["zone"] regions = [] for i in range(self._mapCount): regions.append(copy.copy(region)) self._regions = regions if not (endRegion or zoomValue): return startRegionDict = parse_key_val( gcore.read_command("g.region", flags="gu", region=startRegion), val_type=float, ) if endRegion: endRegionDict = parse_key_val( gcore.read_command("g.region", flags="gu", region=endRegion), val_type=float, ) for key in ("n", "s", "e", "w", "nsres", "ewres"): values = interpolate(startRegionDict[key], endRegionDict[key], self._mapCount) for value, region in zip(values, regions): region[key] = value elif zoomValue: for i in range(self._mapCount): regions[i]["n"] -= zoomValue[0] * i regions[i]["e"] -= zoomValue[1] * i regions[i]["s"] += zoomValue[0] * i regions[i]["w"] += zoomValue[1] * i # handle cases when north < south and similarly EW if (regions[i]["n"] < regions[i]["s"] or regions[i]["e"] < regions[i]["w"]): regions[i] = regions[i - 1] self._regions = regions
def _computeRegions(self, width, height, count, startRegion, endRegion=None, zoomValue=None): """Computes regions based on start region and end region or zoom value for each of the animation frames.""" currRegion = dict( gcore.region()) # cast to dict, otherwise deepcopy error del currRegion['cells'] del currRegion['cols'] del currRegion['rows'] regions = [] for i in range(self._mapCount): if endRegion or zoomValue: regions.append(copy.copy(currRegion)) else: regions.append(None) if not startRegion: self._regions = regions return startRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=startRegion), val_type=float) if endRegion: endRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=endRegion), val_type=float) for key in ('n', 's', 'e', 'w'): values = interpolate(startRegionDict[key], endRegionDict[key], self._mapCount) for value, region in zip(values, regions): region[key] = value elif zoomValue: for i in range(self._mapCount): regions[i]['n'] -= zoomValue[0] * i regions[i]['e'] -= zoomValue[1] * i regions[i]['s'] += zoomValue[0] * i regions[i]['w'] += zoomValue[1] * i # handle cases when north < south and similarly EW if regions[i]['n'] < regions[i]['s'] or \ regions[i]['e'] < regions[i]['w']: regions[i] = regions[i - 1] for region in regions: mapwidth = abs(region['e'] - region['w']) mapheight = abs(region['n'] - region['s']) region['nsres'] = mapheight / height region['ewres'] = mapwidth / width self._regions = regions
def _computeRegions(self, count, startRegion, endRegion=None, zoomValue=None): """Computes regions based on start region and end region or zoom value for each of the animation frames.""" region = dict(gcore.region()) # cast to dict, otherwise deepcopy error if startRegion: region = dict( parse_key_val(gcore.read_command('g.region', flags='gu', region=startRegion), val_type=float)) del region['cells'] del region['cols'] del region['rows'] if 'projection' in region: del region['projection'] if 'zone' in region: del region['zone'] regions = [] for i in range(self._mapCount): regions.append(copy.copy(region)) self._regions = regions if not (endRegion or zoomValue): return startRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=startRegion), val_type=float) if endRegion: endRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=endRegion), val_type=float) for key in ('n', 's', 'e', 'w', 'nsres', 'ewres'): values = interpolate(startRegionDict[key], endRegionDict[key], self._mapCount) for value, region in zip(values, regions): region[key] = value elif zoomValue: for i in range(self._mapCount): regions[i]['n'] -= zoomValue[0] * i regions[i]['e'] -= zoomValue[1] * i regions[i]['s'] += zoomValue[0] * i regions[i]['w'] += zoomValue[1] * i # handle cases when north < south and similarly EW if regions[i]['n'] < regions[i]['s'] or \ regions[i]['e'] < regions[i]['w']: regions[i] = regions[i - 1] self._regions = regions
def _computeRegions(self, width, height, count, startRegion, endRegion=None, zoomValue=None): """Computes regions based on start region and end region or zoom value for each of the animation frames.""" currRegion = dict(gcore.region()) # cast to dict, otherwise deepcopy error del currRegion['cells'] del currRegion['cols'] del currRegion['rows'] regions = [] for i in range(self._mapCount): if endRegion or zoomValue: regions.append(copy.copy(currRegion)) else: regions.append(None) if not startRegion: self._regions = regions return startRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=startRegion), val_type=float) if endRegion: endRegionDict = parse_key_val(gcore.read_command('g.region', flags='gu', region=endRegion), val_type=float) for key in ('n', 's', 'e', 'w'): values = interpolate(startRegionDict[key], endRegionDict[key], self._mapCount) for value, region in zip(values, regions): region[key] = value elif zoomValue: for i in range(self._mapCount): regions[i]['n'] -= zoomValue[0] * i regions[i]['e'] -= zoomValue[1] * i regions[i]['s'] += zoomValue[0] * i regions[i]['w'] += zoomValue[1] * i # handle cases when north < south and similarly EW if regions[i]['n'] < regions[i]['s'] or \ regions[i]['e'] < regions[i]['w']: regions[i] = regions[i - 1] for region in regions: mapwidth = abs(region['e'] - region['w']) mapheight = abs(region['n'] - region['s']) region['nsres'] = mapheight / height region['ewres'] = mapwidth / width self._regions = regions