diff --git a/make/make.py b/make/make.py index 7019a51b430c51f322ae8d0a155c2a25e0ffe81c..85753970c1c00f407d3bcbb328f60564fb5b693f 100644 --- a/make/make.py +++ b/make/make.py @@ -5,6 +5,10 @@ from PyQt4.QtGui import * from PyQt4.QtXml import * from PyQt4.QtXmlPatterns import * +from PyQt4.uic.Compiler.qtproxies import QtGui + +import gdal + from timeseriesviewer import DIR_UI, file_search jp = os.path.join @@ -18,6 +22,79 @@ def getDOMAttributes(elem): values[str(attr.nodeName())] = attr.nodeValue() return values + +def createTestData(pathTS, subsetRectangle, crs, dirTestData): + lines = open(pathTS).readlines() + import tempfile, random + from timeseriesviewer.main import TimeSeries, TimeSeriesDatum + from qgis.core import QgsRectangle, QgsPoint, QgsPointV2, QgsCoordinateReferenceSystem + + max_offset = 0 #in % + + + assert isinstance(subsetRectangle, QgsRectangle) + assert isinstance(crs, QgsCoordinateReferenceSystem) + TS = TimeSeries() + TS.loadFromFile(pathTS) + + sw = subsetRectangle.width() + sh = subsetRectangle.height() + + max_offset_x = sw / 100 * max_offset + max_offset_y = sw / 100 * max_offset + center = subsetRectangle.center() + + os.mkdir(dirTestData) + pathVRT = tempfile.mkstemp(suffix='.vrt', prefix='tempVRT') + + def random_xy(): + offset_x = center.x() + random.randrange(-max_offset_x, max_offset_x) + offset_y = center.y() + random.randrange(-max_offset_y, max_offset_y) + return offset_x, offset_y + + for TSD in TS: + assert isinstance(TSD, TimeSeriesDatum) + + ox, oy = random_xy() + UL = QgsPoint(subsetRectangle.xMinimum() + ox, + subsetRectangle.yMaximum() + oy) + LR = QgsPoint(subsetRectangle.xMaximum() + ox, + subsetRectangle.yMinimum() + oy) + + lyr = QgsRasterLayer(TSD.pathImg) + crsDS = lyr.dataProvider().crs() + assert isinstance(crsDS, QgsCoordinateReferenceSystem) + transform = QgsCoordinateTransform(crs, crsDS) + #transform UL and LR into CRS of source data set + UL = transform.transform(UL) + LR = transform.transform(LR) + BBOX = QgsRectangle(UL, LR) + + #crop src dataset to UL-LR box + #for this we use GDAL + + dsSrc = gdal.Open(TSD.pathImg) + assert isinstance(dsSrc, gdal.Dataset) + proj = dsSrc.GetProjection() + trans = dsSrc.GetGeoTransform() + trans[0] = UL.x() + trans[3] = UL.y() + + ns = BBOX.width() / lyr.rasterUnitsPerPixelX() + nl = BBOX.heigth() / lyr.rasterUnitsPerPixelY() + + drv = dsSrc.GetDriver() + assert isinstance(drv, gdal.Driver) + + dsDst = drv.Create(ns, nl, dsSrc.RasterCount, eType = dsSrc.GetRasterBand(1).) + assert isinstance(dsDst, gdal.Dataset) + dsDst.SetProjection(proj) + dsDst.SetGeoTransform(trans) + + + + + def make(ROOT): #find ui files ui_files = file_search(ROOT, '*.ui', recursive=True)