[GRASS-user] [gdal-dev] Working with NTF files
Nikos Alexandris
nik at nikosalexandris.net
Tue Jul 16 05:10:13 PDT 2013
Markus Metz:
> >> This is mixing different concepts, i.e. import and georeferencing. You
> >> can use i.rectify after importing raster data. RPC is not supported by
> >> GRASS, thus the gdalwarp approach is most probably the preferred
> >> solution. In good GRASS tradition, you could also figure out a
> >> reasonable target grid geometry and set this with the corresponding
> >> option to gdalwarp.
Nikos Alexandris:
> > Ok -- On/Off: would it make sense to be able to say
> > grass -c Some_NITF_Container /grassdb/Location_Based_On_NITF
Markus Metz wrote:
> You probably mean
> grass -c Some_GDAL/OGR_recognized_Container
> /grassdb/Location_Based_On_GDAL/OGR_recognized_dataset
Absolutely.
> which is already possible.
Is it (always)? Please, see below whenever time permits.
> > and, if need be, select the SDS that contains/is the SRS, i.e.
> > grass -c Some_NITF_Container /grassdb/Location_Based_On_NITF sds=2
> No, for e.g. hdf and NITF you can specify the sds directly, no need to
> have a sds= option.
> In general, grass -c <geofile> would use the SRS of the geodataset,
which is? The one that gdalinfo reports on top, right?
> not the SRS of the embedded GCPs or any other geotransform
> information. Transformation/georeferencing would be done after import
> with i.rectify or before import with gdalwarp.
Got it. I, think, I have a problem then...
Working with
# GDAL
gdal-config --version
1.10.0
# which?
which gdal-config
/usr/bin/gdal-config
# formats:
gdalinfo --formats | grep NI
NITF (rw+vs): National Imagery Transmission Format
# grass?
g.version -bg
version=7.0.svn
date=2013
revision=57074
build_date=2013-06-12
./configure --with-cxx --with-includes=/usr/include/ --with-libs=/usr/lib64/
--with-proj --with-proj-includes=/usr/include/ --with-proj-libs=/usr/lib64/ --
with-proj-share=/usr/share/proj/ --with-geos --with-geos=/usr/bin/geos-config
--with-gdal=/usr/bin/gdal-config --with-x --with-motif --with-cairo --with-
opengl-libs=/usr/include/GL --without-ffmpeg --with-python=yes --with-
python=/usr/bin/python2.7-config --with-wxwidgets --with-freetype=yes --with-
freetype-includes=/usr/include/freetype2/ --with-odbc=yes --with-sqlite=yes --
with-mysql=yes --with-mysql-includes=/usr/include/mysql --with-mysql-
libs=/usr/lib/mysql --with-postgres=yes --with-postgresql=yes --with-postgres-
includes=/usr/include/postgresql --with-opencl --with-openmp --with-pthread --
with-lapack --with-fftw --with-readline --with-regex --with-nls --with-jpeg --
with-tiff --with-png --with-netcdf --without-opendwg --enable-largefile=yes
Consider the following example
# below, obviously not epsg=4326, but UTM 37S
gdalinfo -proj4 -nogcp -nomd -norat -noct -nofl
15JUN11IK0101000po_697515_pan_0000000.ntf
Driver: NITF/National Imagery Transmission Format
Files: 15JUN11IK0101000po_697515_pan_0000000.ntf
Size is 13768, 44528
Coordinate System is:
PROJCS["unnamed",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9108"]],
AUTHORITY["EPSG","4326"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",39],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",10000000]]
PROJ.4 string is:
'+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m
+no_defs '
Origin = (545471.000000000000000,9533235.000000000000000)
Pixel Size = (1.000000000000000,-1.000000000000000)
Corner Coordinates:
Upper Left ( 545471.000, 9533235.000) ( 39d24'35.06"E, 4d13'22.02"S)
Lower Left ( 545471.000, 9488707.000) ( 39d24'35.85"E, 4d37'32.19"S)
Upper Right ( 559239.000, 9533235.000) ( 39d32' 1.67"E, 4d13'21.75"S)
Lower Right ( 559239.000, 9488707.000) ( 39d32' 2.71"E, 4d37'31.89"S)
Center ( 552355.000, 9510971.000) ( 39d28'18.81"E, 4d25'26.98"S)
Band 1 Block=1024x1024 Type=UInt16, ColorInterp=Undefined
Min=0.000 Max=2047.000
Minimum=0.000, Maximum=2047.000, Mean=392.957, StdDev=204.156
# use it
grass7 -c 15JUN11IK0101000po_697515_pan_0000000.tif /geo/grassdb/Location_Pan
# where am I in?
g.gisenv
MAPSET=PERMANENT
GISDBASE=/geo/grassdb
LOCATION_NAME=Location_Pan
GUI=text
# where?
g.proj -p
-PROJ_INFO-------------------------------------------------
name : Lat/Lon
proj : ll
datum : wgs84
ellps : wgs84
no_defs : defined
-PROJ_UNITS------------------------------------------------
unit : degree
units : degrees
meters : 1.0
This is not correct, is it?
Then, reporting on _all_ multi-spectral bands like
gdalinfo -proj4 -nogcp -nomd -norat -noct -nofl po_697515_red_0000000.ntf |
grep proj
returns
'+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m
+no_defs '
Using each of the MS bands to create a Location, gives
g.proj -p
XY location (unprojected)
?
Best, Nikos
More information about the grass-user
mailing list