Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
	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")