|
38 | 38 | from qgis.core import QgsProcessingException
|
39 | 39 |
|
40 | 40 |
|
41 |
| -RASTER_EXTENSION_MAP = None |
42 |
| - |
43 |
| - |
44 |
| -def initGdalData(): |
45 |
| - global RASTER_EXTENSION_MAP |
46 |
| - |
47 |
| - if RASTER_EXTENSION_MAP is not None: |
48 |
| - return |
49 |
| - |
50 |
| - if gdal.GetDriverCount() == 0: |
51 |
| - gdal.AllRegister() |
52 |
| - |
53 |
| - RASTER_EXTENSION_MAP = dict() |
54 |
| - for i in range(gdal.GetDriverCount()): |
55 |
| - driver = gdal.GetDriver(i) |
56 |
| - if driver is None: |
57 |
| - continue |
58 |
| - md = driver.GetMetadata() |
59 |
| - if gdal.DCAP_CREATE in md and md[gdal.DCAP_CREATE].lower() == 'yes': |
60 |
| - ext = md[gdal.DMD_EXTENSION] if gdal.DMD_EXTENSION in md else None |
61 |
| - if ext is not None and ext != '': |
62 |
| - RASTER_EXTENSION_MAP[driver.ShortName] = ext |
63 |
| - |
64 |
| - |
65 |
| -def formatShortNameFromFileName(fileName): |
66 |
| - initGdalData() |
67 |
| - ext = os.path.splitext(fileName)[1][1:] |
68 |
| - for k, v in RASTER_EXTENSION_MAP.items(): |
69 |
| - if ext == v: |
70 |
| - return k |
71 |
| - return 'GTiff' |
72 |
| - |
73 |
| - |
74 | 41 | def scanraster(layer, feedback):
|
75 | 42 | filename = str(layer.source())
|
76 | 43 | dataset = gdal.Open(filename, gdal.GA_ReadOnly)
|
@@ -111,48 +78,3 @@ def mapToPixel(mX, mY, geoTransform):
|
111 | 78 |
|
112 | 79 | def pixelToMap(pX, pY, geoTransform):
|
113 | 80 | return gdal.ApplyGeoTransform(geoTransform, pX + 0.5, pY + 0.5)
|
114 |
| - |
115 |
| - |
116 |
| -class RasterWriter(object): |
117 |
| - |
118 |
| - NODATA = -99999.0 |
119 |
| - |
120 |
| - def __init__(self, fileName, minx, miny, maxx, maxy, cellsize, |
121 |
| - nbands, crs, geotransform=None): |
122 |
| - self.fileName = fileName |
123 |
| - self.nx = int((maxx - minx) / float(cellsize)) |
124 |
| - self.ny = int((maxy - miny) / float(cellsize)) |
125 |
| - self.nbands = nbands |
126 |
| - self.matrix = numpy.empty(shape=(self.ny, self.nx), dtype=numpy.float32) |
127 |
| - self.matrix.fill(self.NODATA) |
128 |
| - self.cellsize = cellsize |
129 |
| - self.crs = crs |
130 |
| - self.minx = minx |
131 |
| - self.maxy = maxy |
132 |
| - self.geotransform = geotransform |
133 |
| - |
134 |
| - def setValue(self, value, x, y, band=0): |
135 |
| - try: |
136 |
| - self.matrix[y, x] = value |
137 |
| - except IndexError: |
138 |
| - pass |
139 |
| - |
140 |
| - def getValue(self, x, y, band=0): |
141 |
| - try: |
142 |
| - return self.matrix[y, x] |
143 |
| - except IndexError: |
144 |
| - return self.NODATA |
145 |
| - |
146 |
| - def close(self): |
147 |
| - fmt = 'GTiff' |
148 |
| - driver = gdal.GetDriverByName(fmt) |
149 |
| - dst_ds = driver.Create(self.fileName, self.nx, self.ny, 1, |
150 |
| - gdal.GDT_Float32) |
151 |
| - dst_ds.SetProjection(str(self.crs.toWkt())) |
152 |
| - if self.geotransform is None: |
153 |
| - dst_ds.SetGeoTransform([self.minx, self.cellsize, 0, |
154 |
| - self.maxy, self.cellsize, 0]) |
155 |
| - else: |
156 |
| - dst_ds.SetGeoTransform(self.geotransform) |
157 |
| - dst_ds.GetRasterBand(1).WriteArray(self.matrix) |
158 |
| - dst_ds = None |
0 commit comments