Пример #1
0
	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()
Пример #2
0
	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()
Пример #3
0
	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