Rasterize vector data

Issue #27 closed
Benjamin Jakimow created an issue
  • GUI to show options
  • as simple as possible
  • align to reference raster image
  • categorical data (string/integer fields) -> classification images (single-band) -> allow user to modify classification scheme (inherit from vector data/other classification raster/...)
  • continuous data (float/integer fields) -> regression images (single/multi-band)

Comments (9)

  1. Andreas Janz

    Dieser Issue sollte in mehrere Issues aufgespaltet werden. Hier überschneiden sich Zuständigkeiten bzgl. GUI und verschiedene DataProcessing-Algos. Benjamin, ich würde die Aufteilung übernehmen und diesen Task schließen.

    Subtasks:

  2. Benjamin Jakimow reporter

    Solange nix verloren geht können wir das munter auf verschiedene issues verteilen.

    Aktive/geschlossene issues kannst Du per #27 ganz einfach verlinken.

    Use-cases für continuous data gibt es zahlreiche, z.B. Temperaturmessungen, im Feld gemessene LAI oder Chlorophylwerte. Selbst eine Spektral Library/ASD spectra könnte man sich da vorstellen.

  3. Andreas Janz

    Use-cases für continuous data gibt es zahlreiche, z.B. Temperaturmessungen, im Feld gemessene LAI oder Chlorophylwerte. Selbst eine Spektral Library/ASD spectra könnte man sich da vorstellen.

    Wir brauchen einen konkreten Datensatz, den wir (EnMAP-Box Team) für sinnvoll halten und als Testdatensatz zusammen mit der Box ausliefern wollen. Den gibt es noch nicht!

    Aktuell haben wir den EnmapUrbanGradient Vektor-Datensatz mit qualitativen Polygon-Labels. Wie wir Punkt-Daten im allgemeinen und quantitative Information im speziellen behandeln wollen, haben wir uns noch gar nicht unterhalten. Da brauchen wir erstmal ein Team-Meeting!

  4. Benjamin Jakimow reporter

    Das ist doch trivial? Wenn das zu brennende Attribut floats beinhaltet wird's - by default filetype = "continuous" - if keyword filetype="categorical" -> cast input to integer/map string to categories + set categories - if keyword filetype="continuous" -> assert input is not string, do not set categories usw.

    Wenn nun also ein Shp mit continuierlichen LAI werten gerastert werden soll werde diese Werte genau so gebrannt. So wie die EnMAP-Box das bisher auch schon kann, ganz ohne Beispieldaten.

  5. Benjamin Jakimow reporter
    def RasterizeLayer(*args, **kwargs):
      """
        RasterizeLayer(Dataset dataset, int bands, Layer layer, void * pfnTransformer=None, void * pTransformArg=None, 
            int burn_values=0, char ** options=None, GDALProgressFunc callback=0, 
            void * callback_data=None) -> int
        """
      return _gdal.RasterizeLayer(*args, **kwargs)
    

    dataset = gdal.Dataset bands = band number/s in die geschrieben werden soll layer = ogr.Layer

  6. Andreas Janz

    Ja, richtig, auf der Implementierungsseite ist es trivial, einen Vektorlayer aufzurastern! Es geht auch mehr darum ein Format zu definieren, dass man nach außen kommunizieren kann und wo auch die Metadaten self-contained sind. Aktuell haben wir lediglich für hart (also Klassen) gelabelte Polygone eine Lösung, wie daraus für eine Zielauflösung ClassFractions und ClassLabels aufgerastert werden. Im Falle von Punktdaten gibt es i.d.R. noch eine räumliche Komponente die angibt, für welches Gebiet um den Punkt herum das Label zutrifft (also z.B. in einem Radius von 100m um den Punkt ist Wald).

    Benjamin, ich würde diese Sachen gerne konzeptionell im Team und mit anderen Personen aus der Abteilung besprechen, die mit solchen Daten auch inhaltlich arbeiten, damit wir keine trivialen Lösungen umsetzen, die an der Realität vorbeigehen. Deshalb wünsche ich mir auch einen aussagekräftigen Datensatz an dem man das, z.B. in Form eines Tutorials, demonstrieren kann.

  7. Benjamin Jakimow reporter

    An welche Metadata denkst Du da? Der User kan sie ggf. ja noch manuell hinzufügen (dataset / band description).

    Der Anwendungsfall ClassFractions ist da schon ein sehr spezieller. In den vmtl. meisten Fällen werden User ihre Vektordaten einfach auf ein Zielraster aufrastern wollen um anschließend eine pixel-basierte Analyse von Fernerkundungs- und nicht-FE-Daten durchführen zu können (wofür es unzählige Beispiele gibt).

    Bisher geht das schon mit QGIS/GDAL, nur ist es dort zu umständlich eben mal Vektordaten für ein Referenzgrid zu rastern. Trivial ist die Umsetzung mit der gdal-API, aber das hat bisher eben noch keiner für die QGIS GUI gemacht.

    Um nicht nur Vektor-Punkte in einzelne Pixel aufzurastern, sondern gleich noch die Pixel innerhalb eines bestimmten Radius, ist es üblich erst Point-Buffer Polygone zu erstellen und diese dann zu Rastern. Die damit einhergehenden Fragen sind in der GIS Welt eigentlich schon gut gelöst.

  8. Andreas Janz

    Allgemeines Tool zum Aufrastern soll es natürlich auch geben. Der Name des Issues ist da auch verwirrend! Mir geht es aktuell um das Aufrastern von Referenzdaten und im speziellen die Identifikation von üblichen Formaten, die es zu importieren gilt. Dafür hätte ich gerne konkrete Usecases, z.B. Import von Lucas-Daten, Import von Forstinventurdaten, Import von ... Das müssen wir zusammen mit den Experten in der Abteilung besprechen. Ich möchte keine rein generische Lösung, wo wichtige Aspekte nicht berücksichtigt sind. Deshalb ein Meeting/Workshop dazu.

  9. Log in to comment