[Qgis-user] Problem correctly reading Mapinfo TIF and TAB files into QGIS

Bo Victor Thomsen bo.victor.thomsen at gmail.com
Sat Dec 28 01:22:03 PST 2013


Nick -

Could you make a couple of "problem" and "no problem" tiff/tab files 
available ?

Regards
Bo Victor Thomsen
Aestas-GIS
Denamrk

Den 27-12-2013 19:31, David Addy skrev:
> In this area of the UK, a number of local authorities use Mapinfo for their
> Archaeology and Record Office services. This often involves reading
> historical maps in order to compare with current conditions on the ground.
> All such maps are calibrated within Mapinfo, and are usually in the form of
> .TIF files accompanied by a .TAB file giving the georeferencing data. As
> these departments are constantly under budgetary pressure there are many
> applications where the use of QGIS could result in considerable cost
> savings. However, it is necessary that existing maps should be easily read
> by QGIS and correctly located,
> without a cumbersome file conversion process.
> An example of such maps is the 1880s First Series 1:2500 scale county
> Ordnance Survey maps for Suffolk. At this scale it takes a large number of
> tiles to cover a whole county. In a sample dozen of such maps around Bury St
> Edmunds, only four were correctly located by QGIS. My mapping friend Nick
> Hopton has kindly addressed this problem to the GDAL forum, using two sample
> tiles, one of which works in QGIS and the other does not. The discussion on
> this is reproduced below, and appears to come down to the size of the error
> found by GDAL in its attempted transformation. AS this error seems to be
> acceptable within Mapinfo, I do not quite understand why it cannot work
> equally well within QGIS.
> Obviously this must be a critical issue for all Mapinfo users who would like
> to adopt QGIS, but find that this problem causes their evaluations to fail
> at the first hurdle. Like myself, these users are not experts in the
> technical details of map projections, nor the problems of making pre-1936
> maps fit within today's UK Ordnance Survey OSGB36 Grid References.
> However, we need to know whether  anyone knows how to persuade QGIS/GDAL to
> locate these tiles in the correct place please?
>
> --------------------------------------------------
> PROBLEM PREVIOUSLY ADDRESSED TO GDAL FORUM:
>
> A friend, a relative newcomer to GIS, is having problems loading some of the
> TIFs created with Mapinfo into QGIS. Each TIF has a TAB file and in some
> cases the TAB file is interpreted correctly and in other cases the TAB file
> is (apparently) not recognised.
> I think this might be a problem with Gdal rather than a problem with QGIS.
> Taking just two of the TIFs, the output from gdalinfo when run on
> 33044061.TIF indicates that things are working as they should. However, when
> gdalinfo is run on 33044071.TIF the spatial data in its TAB file is not
> recognised. See the listings below.
>
> The strange thing is that all of the TIFs can successfully be converted from
> TIF to GeoTIFF using gdalwarp. (But it is important to my friend that he
> should be able to open Mapinfo raster images directly.)
>
> Any ideas?
>
> Regards,
> Nick.
>
>
> Contents of 33044061.TAB:
> ------------------------
> !table
> !version 300
> !charset WindowsLatin1
>
> Definition Table
>    File "33044061.tif"
>    Type "RASTER"
>    (582429,263569) (1,7594) Label "Pt 1",
>    (582372,265177) (1,0) Label "Pt 2",
>    (584784,265263) (11335,1) Label "Pt 3",
>    (584841,263655) (11335,7594) Label "Pt 4"
>    CoordSys Earth Projection 8, 79, "m", -2, 49, 0.9996012717, 400000,
> -100000
>    Units "m"
>
> Results of running gdalinfo on 33044061.TIF:
> -------------------------------------------
> nick at nick-6150M2MA:~/Desktop/tabstuff$ gdalinfo 33044061.TIF
> Warning 1: TIFFFetchNormalTag:ASCII value for tag "ImageDescription"
> contains null byte in value; value incorrectly truncated
> during reading due to implementation limitations
> Driver: GTiff/GeoTIFF
> Files: 33044061.TIF
> Size is 11335, 7594
> Coordinate System is:
> PROJCS["unnamed",
>      GEOGCS["unnamed",
>          DATUM["OSGB_1936",
>              SPHEROID["Airy 1930",6377563.396,299.3249646],
>              TOWGS84[375,-111,431,-0,-0,-0,0]],
>          PRIMEM["Greenwich",0],
>          UNIT["degree",0.0174532925199433]],
>      PROJECTION["Transverse_Mercator"],
>      PARAMETER["latitude_of_origin",49],
>      PARAMETER["central_meridian",-2],
>      PARAMETER["scale_factor",0.9996012717],
>      PARAMETER["false_easting",400000],
>      PARAMETER["false_northing",-100000],
>      UNIT["Meter",1]]
> GeoTransform =
>    582371.785312838, 0.2128106799708935, 0.007506419931892793
>    265177.0453393974, 0.007597130759524194, -0.2117600570261751
> Metadata:
>    TIFFTAG_IMAGEDESCRIPTION=
>    TIFFTAG_XRESOLUTION=300
>    TIFFTAG_YRESOLUTION=300
>    TIFFTAG_MINSAMPLEVALUE=0
>    TIFFTAG_MAXSAMPLEVALUE=1
>    TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
> Image Structure Metadata:
>    COMPRESSION=CCITTFAX4
>    INTERLEAVE=BAND
>    MINISWHITE=YES
> Corner Coordinates:
> Upper Left  (  582371.785,  265177.045) (  0d40'19.83"E, 52d15'14.75"N)
> Lower Left  (  582428.789,  263568.939) (  0d40'19.71"E, 52d14'22.68"N)
> Upper Right (  584783.994,  265263.159) (  0d42'27.09"E, 52d15'14.63"N)
> Lower Right (  584840.998,  263655.053) (  0d42'26.92"E, 52d14'22.57"N)
> Center      (  583606.392,  264416.049) (  0d41'23.39"E, 52d14'48.66"N)
> Band 1 Block=512x512 Type=Byte, ColorInterp=Palette
>    Image Structure Metadata:
>      NBITS=1
>    Color Table (RGB with 2 entries)
>      0: 255,255,255,255
>      1: 0,0,0,255
> nick at nick-6150M2MA:~/Desktop/tabstuff$
>
> Contents of 33044071.TAB:
> ------------------------
> !table
> !version 300
> !charset WindowsLatin1
>
> Definition Table
>    File "33044071.tif"
>    Type "RASTER"
>    (584841,263655) (1,7576) Label "Pt 1",
>    (584784,265263) (1,0) Label "Pt 2",
>    (587197,265349) (11335,1) Label "Pt 3",
>    (587254,263740) (11335,7576) Label "Pt 4"
>    CoordSys Earth Projection 8, 79, "m", -2, 49, 0.9996012717, 400000,
> -100000
>    Units "m"
>
> Results of running gdalinfo on 33044071.TIF:
> -------------------------------------------
> nick at nick-6150M2MA:~/Desktop/tabstuff$ gdalinfo 33044071.TIF
> Warning 1: TIFFFetchNormalTag:ASCII value for tag "ImageDescription"
> contains null byte in value; value incorrectly truncated
> during reading due to implementation limitations
> Driver: GTiff/GeoTIFF
> Files: 33044071.TIF
> Size is 11335, 7576
> Coordinate System is `'
> GCP Projection =
> PROJCS["unnamed",
>      GEOGCS["unnamed",
>          DATUM["OSGB_1936",
>              SPHEROID["Airy 1930",6377563.396,299.3249646],
>              TOWGS84[375,-111,431,-0,-0,-0,0]],
>          PRIMEM["Greenwich",0],
>          UNIT["degree",0.0174532925199433]],
>      PROJECTION["Transverse_Mercator"],
>      PARAMETER["latitude_of_origin",49],
>      PARAMETER["central_meridian",-2],
>      PARAMETER["scale_factor",0.9996012717],
>      PARAMETER["false_easting",400000],
>      PARAMETER["false_northing",-100000],
>      UNIT["Meter",1]]
> GCP[  0]: Id=Pt 1, Info=
>            (1,7576) -> (584841,263655,0)
> GCP[  1]: Id=Pt 2, Info=
>            (1,0) -> (584784,265263,0)
> GCP[  2]: Id=Pt 3, Info=
>            (11335,1) -> (587197,265349,0)
> GCP[  3]: Id=Pt 4, Info=
>            (11335,7576) -> (587254,263740,0)
> Metadata:
>    TIFFTAG_IMAGEDESCRIPTION=
>    TIFFTAG_XRESOLUTION=300
>    TIFFTAG_YRESOLUTION=300
>    TIFFTAG_MINSAMPLEVALUE=0
>    TIFFTAG_MAXSAMPLEVALUE=1
>    TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
> Image Structure Metadata:
>    COMPRESSION=CCITTFAX4
>    INTERLEAVE=BAND
>    MINISWHITE=YES
> Corner Coordinates:
> Upper Left  (    0.0,    0.0)
> Lower Left  (    0.0, 7576.0)
> Upper Right (11335.0,    0.0)
> Lower Right (11335.0, 7576.0)
> Center      ( 5667.5, 3788.0)
> Band 1 Block=512x512 Type=Byte, ColorInterp=Palette
>    Image Structure Metadata:
>      NBITS=1
>    Color Table (RGB with 2 entries)
>      0: 255,255,255,255
>      1: 0,0,0,255
> -------------------------------------------------------------------
>
>
> FRANK WARMERDAM REPLIED:
>
>
> Nick,
>
> I haven't tried the .TAB files locally, but I see they are both resulting in
> georeferencing info.  The one is expressed as a
>
> geotransform with rotation and shear while the other is expressed as ground
> control points.
>
> I believe that the .TAB reader attempts to compute a geotransform from the
> points in the TAB and if it can do so with minimal
>
> error then that is what is returned - a solution easier to utilize in QGIS
> and other applications.
>
> If the control points do not represent a clean affine transformation for the
> image then it falls back to returning them as
>
> ground control points which relatively few applications can utilize
> directly.
>
> One "solution" is to run gdalwarp to transform the image that isn't
> currently working so well into a north up affine
>
> transformation style image.
>   eg.
>
> gdalwarp 33044071.TIF 33044071_northup.TIF
>
> This warp will be done using the control points (ironically also using a
> best fit first order polynomial).
>
> The code responsible for the decision is this from gdal/gcore/gdal_misc.cpp:
>
>
> /* -------------------------------------------------------------------- */
>
> /*      Try to convert the GCPs into a geotransform definition, if      */
>
> /*      possible.  Otherwise we will need to use them as GCPs.          */
>
> /* -------------------------------------------------------------------- */
>
>      if( !GDALGCPsToGeoTransform( nCoordinateCount, asGCPs, padfGeoTransform,
>
>                                   FALSE ) )
>
>      {
>
>          if (pnGCPCount && ppasGCPs)
>
>          {
>
>              CPLDebug( "GDAL",
>
>                  "GDALLoadTabFile(%s) found file, wasn't able to derive a\n"
>
>                  "first order geotransform.  Using points as GCPs.",
>
>                  pszFilename );
>
>
>
>
>              *ppasGCPs = (GDAL_GCP *)
>
>                  CPLCalloc( sizeof(GDAL_GCP),nCoordinateCount );
>
>              memcpy( *ppasGCPs, asGCPs, sizeof(GDAL_GCP) * nCoordinateCount
> );
>
>              *pnGCPCount = nCoordinateCount;
>
>          }
>
>      }
>
>      else
>
>      {
>
>          GDALDeinitGCPs( nCoordinateCount, asGCPs );
>
>      }
>
>   I suspect if you change the FALSE to TRUE in the arguments to
> GDALGCPsToGeoTransform() you wlil always get an affine
>
> transform even when it is not a very good fit.
>
>
>
> --
> View this message in context: http://osgeo-org.1560.x6.nabble.com/Problem-correctly-reading-Mapinfo-TIF-and-TAB-files-into-QGIS-tp5095647.html
> Sent from the Quantum GIS - User mailing list archive at Nabble.com.
> _______________________________________________
> Qgis-user mailing list
> Qgis-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-user




More information about the Qgis-user mailing list