GRASS GIS / Poznámky pro družicová data Landsat: Porovnání verzí

Z GeoWikiCZ
Řádek 245: Řádek 245:
</center>
</center>


=== Vizualizace dat ===
=== Nastavení vyhledávací cesty ===


Mapset s naimportovanými daty přidáme do vyhledávací cesty pomocí {{GrassPrikaz|g.mapsets}}
Mapset s naimportovanými daty přidáme do vyhledávací cesty pomocí {{GrassPrikaz|g.mapsets}}
Řádek 256: Řádek 256:


[[Image:wxgui-mapset-access.png|center|thumb|Nastavení přístupu k mapsetům]]
[[Image:wxgui-mapset-access.png|center|thumb|Nastavení přístupu k mapsetům]]
=== Vizualizace dat ===


Příklad vizualizace kompozitního snímku (kanály 453).
Příklad vizualizace kompozitního snímku (kanály 453).

Verze z 23. 10. 2010, 18:38

Tato stránka obsahuje poznámky pro stažení dat LandSat Thematic Mapper a následné zpracování těchto dat v prostřední GRASS GIS.

Postup pro manuální stažení dat

Návod pro http://glovis.usgs.gov:

Import dat

Data je nejprve nutno dekomprimovat, např.

tar xvzf LT51910252009213MOR00.tar.gz

Příklad skriptu pro Bash, který rozbalí všechny dostupné archivy v aktuálním adresáři (pro každý rozbalený archiv vytvoří samostatný adresář).

#!/bin/sh

for file in *.tar.gz ; do
    echo "Zpracovavam $file..."
    dir=${file%.tar.gz}
    if [ -d $dir ] ; then
        rm -rf $dir
    fi
    mkdir $dir
    tar -xzf $file -C $dir
done

Archiv obsahuje několik souborů ve formátu geotiff (jeden soubor na kanál), seznam identických bodů (GCP, ground control points), metadata v textové podobě (MTL) a soubor README.GTF.

ls -w1
L5191025_02520090801_B10.TIF
L5191025_02520090801_B20.TIF
L5191025_02520090801_B30.TIF
L5191025_02520090801_B40.TIF
L5191025_02520090801_B50.TIF
L5191025_02520090801_B60.TIF
L5191025_02520090801_B70.TIF
L5191025_02520090801_GCP.txt
L5191025_02520090801_MTL.txt
README.GTF

Nástroj knihovny GDAL gdalinfo poslouží pro kontrolu metadat, např.

gdalinfo L5191025_02520090801_B10.TIF
Driver: GTiff/GeoTIFF
Files: L5191025_02520090801_B10.TIF
Size is 8441, 7441
Coordinate System is:
PROJCS["unnamed",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",15],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["unknown",1],
    AUTHORITY["EPSG","32633"]]
Origin = (398699.999999999941792,5679000.000000000000000)
Pixel Size = (30.000000000000000,-30.000000000000000)
Metadata:
  AREA_OR_POINT=Point
Image Structure Metadata:
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  (  398700.000, 5679000.000) ( 13d32'54.25"E, 51d15'12.06"N)
Lower Left  (  398700.000, 5455770.000) ( 13d36'29.29"E, 49d14'46.73"N)
Upper Right (  651930.000, 5679000.000) ( 17d10'35.91"E, 51d14'31.60"N)
Lower Right (  651930.000, 5455770.000) ( 17d 5'13.62"E, 49d14'9.03"N)
Center      (  525315.000, 5567385.000) ( 15d21'18.49"E, 50d15'29.05"N)
Band 1 Block=8441x1 Type=Byte, ColorInterp=Gray

Vytvoření lokace

Hromadný import dat

Data lze naimportovat pomocí modulu r.in.gdal (File -> Import raster data -> Import raster data), ukázka z příkazové řadky (přepínač -e nastaví po importu region podle vstupní dat).

r.in.gdal -e input=L5191025_02520090801_B10.TIF output=b10 title="kanal 1"

Základní metadata vypíše r.info.

r.info map=b10
 +----------------------------------------------------------------------------+
 | Layer:    b10                            Date: Thu Sep 16 17:48:23 2010    |
 | Mapset:   PERMANENT                      Login of Creator: martin          |
 | Location: tm                                                               |
 | DataBase: /home/martin/grassdata                                           |
 | Title:    kanal 1 ( b10 )                                                  |
 | Timestamp: none                                                            |
 |----------------------------------------------------------------------------|
 |                                                                            |
 |   Type of Map:  raster               Number of Categories: 0               |
 |   Data Type:    CELL                                                       |
 |   Rows:         7441                                                       |
 |   Columns:      8441                                                       |
 |   Total Cells:  62809481                                                   |
 |        Projection: UTM (zone 33)                                           |
 |            N:    5679000    S:    5455770   Res:    30                     |
 |            E:     651930    W:     398700   Res:    30                     |
 |   Range of data:    min = 0  max = 255                                     |
 |                                                                            |
 |   Data Description:                                                        |
 |    generated by r.in.gdal                                                  |
 |                                                                            |
 |   Comments:                                                                |
 |    r.in.gdal -e input="L5191025_02520090801_B10.TIF" output="b10"          |
 |                                                                            |
 +----------------------------------------------------------------------------+

Data lze hromadně naimportovat pomocí jednoduchého skriptu. Následuje ukázka pro Bash a Python.

Bash

Ukázka skriptu pro Bash (pro každou družicovou scénu vytvoří vlastní mapset).

#!/bin/sh

function import()
{
    idx=1
    for file in `ls *.TIF 2>/dev/null`; do
        oname=`echo $file | cut -d'_' -f3 | cut -d'.' -f1`
        g.message "Importuji $file -> $oname@$mapset..."
        g.mapset -c mapset=$mapset --quiet 2>/dev/null
        r.in.gdal -e input=$file output=$oname title="kanal $idx" --overwrite --quiet
        idx=$(($idx+1))
    done
}

eval `g.gisenv`

if test -n "$1" ; then
    mapset=$1
    cd $1
    import
else
    for dir in `find . -maxdepth 1 -mindepth 1 -type d`; do
	mapset=`echo $dir | cut -d'/' -f2`
	cd $dir
	import
	cd ..
    done
fi

g.mapset mapset=$MAPSET --quiet

Příklad spuštění:

  • ./import.sh projde všechny adresáře
  • ./import.sh LM41890261983200FFF03 naimportuje data pouze z vybraného adresáře

Python

Ukázka skriptu pro Python (pro každou družicovou scénu vytvoří vlastní mapset).

#!/usr/bin/python
 
import os
import sys
import grass.script as grass

def import_tifs(mapset):
    for file in os.listdir(mapset):
        if os.path.splitext(file)[-1] != '.TIF':
            continue
        ffile = os.path.join(mapset, file)
        name = os.path.splitext(file)[0].split('_')[-1]
        kanal = int(name[-2])
        grass.message('Importuji %s -> %s@%s...' % (file, name, mapset))
        grass.run_command('g.mapset',
                          flags = 'c',
                          mapset = mapset,
                          quiet = True,
                          stderr = open(os.devnull, 'w'))
        grass.run_command('r.in.gdal',
                          input = ffile,
                          output = name,
                          quiet = True,
                          overwrite = True,
                          title = 'kanal %d' % kanal)

def main():
    if len(sys.argv) == 1:
        for directory in filter(os.path.isdir, os.listdir(os.getcwd())):
            import_tifs(directory)
    else:
        import_tifs(sys.argv[1])

if __name__ == "__main__":
    main()

wxGUI

Dále lze data naimportovat pomocí wxGUI.

File -> Import raster data -> Bulk import of raster data

Nastavení vyhledávací cesty

Mapset s naimportovanými daty přidáme do vyhledávací cesty pomocí g.mapsets

g.mapsets addmapset=LM41890261983200FFF03

nebo pomocí wxGUI

Settings | GRASS working environment | Mapset access
Nastavení přístupu k mapsetům

Vizualizace dat

Příklad vizualizace kompozitního snímku (kanály 453).

Interpolace chybějících dat

g.region rast=B10
r.null map=B10 setnull=0
r.fillnulls input=B10 output=B10_fill

Atmosferické korekce

Externí odkazy