def _parseLine(self, line, lineNumber, nrColumns, externalNames, keyDict): line = re.sub("\n", "", line) line = re.sub("\t", " ", line) result = None # read until first comment content = "" content, sep, comment = line.partition("#") if len(content) > 1: collectionVariableName, sep, tail = content.partition(" ") if collectionVariableName == self._varName: tail = tail.strip() key, sep, variableValue = tail.rpartition(" ") if len(key.split()) != nrColumns: tmp = re.sub("\(|\)|,", "", str(key)) msg = "Error reading %s line %d, order of columns given (%s columns) does not match expected order of %s columns" % ( self._fileName, lineNumber, len(key.split()) + 2, int(nrColumns) + 2) raise ValueError(msg) variableValue = re.sub('\"', "", variableValue) tmp = None try: tmp = int(variableValue) if self._dataType == pcraster.Boolean: tmp = pcraster.boolean(tmp) elif self._dataType == pcraster.Nominal: tmp = pcraster.nominal(tmp) elif self._dataType == pcraster.Ordinal: tmp = pcraster.ordinal(tmp) elif self._dataType == pcraster.Ldd: tmp = pcraster.ldd(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError, e: try: tmp = float(variableValue) if self._dataType == pcraster.Scalar: tmp = pcraster.scalar(tmp) elif self._dataType == pcraster.Directional: tmp = pcraster.directional(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError, e: variableValue = re.sub("\\\\", "/", variableValue) variableValue = variableValue.strip() path = os.path.normpath(variableValue) try: tmp = pcraster.readmap(path) except RuntimeError, e: msg = "Error reading %s line %d, %s" % ( self._fileName, lineNumber, e) raise ValueError(msg)
def _parseLine(self, line, lineNumber, nrColumns, externalNames, keyDict): line = re.sub("\n","",line) line = re.sub("\t"," ",line) result = None # read until first comment content = "" content,sep,comment = line.partition("#") if len(content) > 1: collectionVariableName, sep, tail = content.partition(" ") if collectionVariableName == self._varName: tail = tail.strip() key, sep, variableValue = tail.rpartition(" ") if len(key.split()) != nrColumns: tmp = re.sub("\(|\)|,","",str(key)) msg = "Error reading %s line %d, order of columns given (%s columns) does not match expected order of %s columns" %(self._fileName, lineNumber, len(key.split()) + 2, int(nrColumns) + 2) raise ValueError(msg) variableValue = re.sub('\"', "", variableValue) tmp = None try: tmp = int(variableValue) if self._dataType == pcraster.Boolean: tmp = pcraster.boolean(tmp) elif self._dataType == pcraster.Nominal: tmp = pcraster.nominal(tmp) elif self._dataType == pcraster.Ordinal: tmp = pcraster.ordinal(tmp) elif self._dataType == pcraster.Ldd: tmp = pcraster.ldd(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError, e: try: tmp = float(variableValue) if self._dataType == pcraster.Scalar: tmp = pcraster.scalar(tmp) elif self._dataType == pcraster.Directional: tmp = pcraster.directional(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError,e: variableValue = re.sub("\\\\","/",variableValue) variableValue = variableValue.strip() path = os.path.normpath(variableValue) try: tmp = pcraster.readmap(path) except RuntimeError, e: msg = "Error reading %s line %d, %s" %(self._fileName, lineNumber, e) raise ValueError(msg)
def fractionXY(surface): #-returns the fraction of transport in the x- and y-directions # given a gradient in a surface aspect= pcr.aspect(surface) noAspect= pcr.nodirection(pcr.directional(aspect)) sinAspect= pcr.sin(aspect) cosAspect= pcr.cos(aspect) fracX= pcr.ifthenelse(noAspect,0.,sinAspect/(pcr.abs(sinAspect)+pcr.abs(cosAspect))) fracY= pcr.ifthenelse(noAspect,0.,cosAspect/(pcr.abs(sinAspect)+pcr.abs(cosAspect))) return fracX,fracY
def testDeepCopyRasterNonSpatial(self): pcraster.setclone("validated/boolean_Result.map") raster = pcraster.boolean(1) tmp = copy.deepcopy(raster) self.assertEqual(True, self.arbitraryMapEquals(raster, tmp)) raster1 = pcraster.nominal(1) tmp1 = copy.deepcopy(raster1) self.assertEqual(True, self.arbitraryMapEquals(raster1, tmp1)) raster2 = pcraster.ordinal(1) tmp2 = copy.deepcopy(raster2) self.assertEqual(True, self.arbitraryMapEquals(raster2, tmp2)) raster3 = pcraster.scalar(1) tmp3 = copy.deepcopy(raster3) self.assertEqual(True, self.arbitraryMapEquals(raster3, tmp3)) raster4 = pcraster.directional(1) tmp4 = copy.deepcopy(raster4) self.assertEqual(True, self.arbitraryMapEquals(raster4, tmp4)) raster5 = pcraster.ldd(1) tmp5 = copy.deepcopy(raster5) self.assertEqual(True, self.arbitraryMapEquals(raster5, tmp5))
def _parseLine(self, line, lineNumber, nrColumns, externalNames, keyDict): line = re.sub("\n","",line) line = re.sub("\t"," ",line) result = None # read until first comment content = "" content,sep,comment = line.partition("#") if len(content) > 1: collectionVariableName, sep, tail = content.partition(" ") if collectionVariableName == self._varName: tail = tail.strip() key, sep, variableValue = tail.rpartition(" ") if len(key.split()) != nrColumns: tmp = re.sub("\(|\)|,","",str(key)) msg = "Error reading %s line %d, order of columns given (%s columns) does not match expected order of %s columns" %(self._fileName, lineNumber, len(key.split()) + 2, int(nrColumns) + 2) raise ValueError(msg) variableValue = re.sub('\"', "", variableValue) tmp = None try: tmp = int(variableValue) if self._dataType == pcraster.Boolean: tmp = pcraster.boolean(tmp) elif self._dataType == pcraster.Nominal: tmp = pcraster.nominal(tmp) elif self._dataType == pcraster.Ordinal: tmp = pcraster.ordinal(tmp) elif self._dataType == pcraster.Ldd: tmp = pcraster.ldd(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError as e: try: tmp = float(variableValue) if self._dataType == pcraster.Scalar: tmp = pcraster.scalar(tmp) elif self._dataType == pcraster.Directional: tmp = pcraster.directional(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError as e: variableValue = re.sub("\\\\","/",variableValue) variableValue = variableValue.strip() path = os.path.normpath(variableValue) try: tmp = pcraster.readmap(path) except RuntimeError as e: msg = "Error reading %s line %d, %s" %(self._fileName, lineNumber, e) raise ValueError(msg) # test if key is an external name transformedKeys = [] counter = 0 for k in key.split(): k = k.strip() if externalNames[counter].get(k): transformedKeys.append(externalNames[counter].get(k)) else: transformedKeys.append(k) counter += 1 key = tuple(transformedKeys) if not key in keyDict: tmp = re.sub("\(|\)|,","",str(key)) msg = "Error reading %s line %d, %s unknown collection index" %(self._fileName, lineNumber, tmp) raise ValueError(msg) if not keyDict[key] is None: tmp = re.sub("\(|\)|,","",str(key)) msg = "Error reading %s line %d, %s %s already initialised" %(self._fileName, lineNumber, self._varName, tmp) raise ValueError(msg) keyDict[key] = tmp
def _parseLine(self, line, lineNumber, nrColumns, externalNames, keyDict): line = re.sub("\n", "", line) line = re.sub("\t", " ", line) result = None # read until first comment content = "" content, sep, comment = line.partition("#") if len(content) > 1: collectionVariableName, sep, tail = content.partition(" ") if collectionVariableName == self._varName: tail = tail.strip() key, sep, variableValue = tail.rpartition(" ") if len(key.split()) != nrColumns: tmp = re.sub("\(|\)|,", "", str(key)) msg = "Error reading %s line %d, order of columns given (%s columns) does not match expected order of %s columns" % ( self._fileName, lineNumber, len(key.split()) + 2, int(nrColumns) + 2) raise ValueError(msg) variableValue = re.sub('\"', "", variableValue) tmp = None try: tmp = int(variableValue) if self._dataType == pcraster.Boolean: tmp = pcraster.boolean(tmp) elif self._dataType == pcraster.Nominal: tmp = pcraster.nominal(tmp) elif self._dataType == pcraster.Ordinal: tmp = pcraster.ordinal(tmp) elif self._dataType == pcraster.Ldd: tmp = pcraster.ldd(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError as e: try: tmp = float(variableValue) if self._dataType == pcraster.Scalar: tmp = pcraster.scalar(tmp) elif self._dataType == pcraster.Directional: tmp = pcraster.directional(tmp) else: msg = "Conversion to %s failed" % (self._dataType) raise Exception(msg) except ValueError as e: variableValue = re.sub("\\\\", "/", variableValue) variableValue = variableValue.strip() path = os.path.normpath(variableValue) try: tmp = pcraster.readmap(path) except RuntimeError as e: msg = "Error reading %s line %d, %s" % ( self._fileName, lineNumber, e) raise ValueError(msg) # test if key is an external name transformedKeys = [] counter = 0 for k in key.split(): k = k.strip() if externalNames[counter].get(k): transformedKeys.append(externalNames[counter].get(k)) else: transformedKeys.append(k) counter += 1 key = tuple(transformedKeys) if not key in keyDict: tmp = re.sub("\(|\)|,", "", str(key)) msg = "Error reading %s line %d, %s unknown collection index" % ( self._fileName, lineNumber, tmp) raise ValueError(msg) if not keyDict[key] is None: tmp = re.sub("\(|\)|,", "", str(key)) msg = "Error reading %s line %d, %s %s already initialised" % ( self._fileName, lineNumber, self._varName, tmp) raise ValueError(msg) keyDict[key] = tmp