def RenderRaster(self, TheRasterDataset, Stretch=True): ######################################################################## # Crop the raster to the vewing area if needed TheRasterBounds = TheRasterDataset.GetBounds( ) # upper left, lower right (XMin,YMax,XMax,YMin) TheViewBounds = self.GetBounds() RasterXMin = TheRasterBounds[0] RasterYMin = TheRasterBounds[1] RasterXMax = TheRasterBounds[2] RasterYMax = TheRasterBounds[3] DoCrop = False if (TheRasterBounds[0] < TheViewBounds[0]): # crop left side RasterXMin = TheViewBounds[0] DoCrop = True if (TheRasterBounds[1] < TheViewBounds[1]): # crop bottom RasterYMin = TheViewBounds[1] DoCrop = True if (TheRasterBounds[2] > TheViewBounds[2]): # crop right RasterXMax = TheViewBounds[2] DoCrop = True if (TheRasterBounds[3] > TheViewBounds[3]): # crop top RasterYMax = TheViewBounds[3] DoCrop = True if (DoCrop): TheRasterDataset = SpaRasters.Crop( TheRasterDataset, [RasterXMin, RasterYMin, RasterXMax, RasterYMax]) TheRasterBounds = TheRasterDataset.GetBounds() RasterXMin = TheRasterBounds[0] RasterYMin = TheRasterBounds[1] RasterXMax = TheRasterBounds[2] RasterYMax = TheRasterBounds[3] ############################################# # Scale the raster to match the view XFactor = (RasterXMax - RasterXMin) / TheRasterDataset.GetWidthInPixels() ChangeFactor = XFactor / self.Factor if (ChangeFactor != 1): TheRasterDataset = SpaRasters.Resample(TheRasterDataset, ChangeFactor) ############################################# # Stretch the raster if needed TheBands = TheRasterDataset.GetBands() WidthInPixels = TheRasterDataset.GetWidthInPixels() HeightInPixels = TheRasterDataset.GetHeightInPixels() RasterSize = WidthInPixels * HeightInPixels TheBand = TheBands[0] if (Stretch): Min, Max = TheRasterDataset.GetMinMax(0) # Min=numpy.amin(TheBand) # Max=numpy.amax(TheBand) super_threshold_indices = TheBand < 0.00000001 TheBand[super_threshold_indices] = 0 Min = numpy.amin(TheBand) Factor = 255 / Max TheBand = TheBand * Factor TheRasterImage = PIL.Image.fromarray(numpy.uint8(TheBand)) ########################################### # Draw the raster into the view TheImage = self.GetImage() PixelXMin = self.GetPixelXFromRefX(RasterXMin) PixelYMin = self.GetPixelYFromRefY(RasterYMax) PixelXMin = int(PixelXMin) PixelYMin = int(PixelYMin) PixelXMax = PixelXMin + WidthInPixels PixelYMax = PixelYMin + HeightInPixels TheImage.paste(TheRasterImage, (PixelXMin, PixelYMin, PixelXMax, PixelYMax))
NewDataset.Save(TempFolderPath + "Abs.tif") # test resampler if (True): NewDataset=SpaRasters.Resample(RasterFilePath,0.5) NewDataset.Save(TempFolderPath + "Resampled.tif") # test reclassify if (True): NewDataset=SpaRasters.ReclassifyRange(RasterFilePath,[(-1000,1),(1,3),(3,10000)],[1,2,3]) NewDataset.Save(TempFolderPath + "Reclassed.tif") #test crop if (True): print("*** Performing crop tests") NewDataset=SpaRasters.Crop(RasterFilePath,[560000,5114000,565000,5119000]) NewDataset.Save(TempFolderPath+"Cropped.tif") NewDataset=SpaRasters.NumpyCrop(RasterFilePath,[560000,5114000,565000,5119000]) NewDataset.Save(TempFolderPath+"NumpyCropped.tif") if (False): print("*** Performing polygonize test") NewDataset=SpaRasterVectors.Polygonize(RasterFilePath) NewDataset.Save(TempFolderPath + "Polygonize.shp") # topographic transforms if (True): print("*** Performing topography tests") NewDataset=SpaTopo.Hillshade(RasterFilePath) NewDataset.Save(TempFolderPath+"Hillshade.tif")