def loadRegion(self,name): """ Загрузку региона шэйп которого уже был добавлен в проект @param name: """ assert name not in self.regions, "This region name have already exist" shpFl='.\\regshp\\%s.shp'%name try: shpFile2shpobj(shpFl) except: logging.critical( "%s shapefile load have failed"%shpFl ) raise else: self.regions[name] = {} self.regionMeanData[name] = dict() self.updateRegionalMeans()
def addRegion(self, name, shpFl): """ Добавление региона в проект """ assert name not in self.regions, "This region name have already exist" try: shpFile2shpobj(shpFl) except: logging.critical( "%s shapefile load have failed"%shpFl ) raise else: head, tail=os.path.split(shpFl) oldFn, ext=tail.split('.') for fn in glob.glob(head+'\\'+oldFn+'.*'): ext=fn.split('.')[-1] shutil.copy2(shpFl, self.homesrc + 'regshp\\%s.%s' % (name,ext)) self.regions[name] = {} self.regionMeanData[name] = dict() self.updateRegionalMeans()
def calcObsRegMean(self,reg, replace=False): shp = self.homesrc + 'regshp\\%s.shp' % reg shpobj=shpFile2shpobj(shp) if type(shpobj) is list: shpobj.sort(key=lambda a:a.area) shpobj=shpobj[0] vr=voronoi(self.obsDataSet, shpobj) vra={i:s.area for i,s in vr.items() if s is not None} vraSum=sum(vra.values()) vra={i:s/vraSum for i,s in vra.items()} # dots = self.obsDataSet.setStInShape(shp) if len(vra)>0: regObsObj = metaData(self.obsDataSet.meta, stList=[self.obsDataSet[d] for d in vra]) cdo = regObsObj.setRegAvgData(greedy=True, weight=vra) cdo.save(self.getObsDataSrc(reg), replace=replace) else: cdo=None logging.warning('no observations for region %s'%str(reg)) self.obsMeanData[reg]=cdo return cdo