Opened 17 years ago
Closed 17 years ago
#1469 closed defect (fixed)
AutoCreateWarpedVRT creates incorrect VRT Dataset
Reported by: | szekerest | Owned by: | warmerdam |
---|---|---|---|
Priority: | normal | Milestone: | 1.4.1 |
Component: | GDAL_Raster | Version: | unspecified |
Severity: | normal | Keywords: | vrt |
Cc: | Mateusz Łoskot |
Description (last modified by )
Currently, for the SWIG bindings, the only option to use the the GDAL warp functionality is to utilize AutoCreateWarpedVRT. To use this feature the following (simplified) C# code sample was created:
gdal.AllRegister(); Dataset ds = gdal.Open( "usapm.jpg", gdalconst.GA_ReadOnly ); SpatialReference t_srs = new SpatialReference(""); t_srs.SetFromUserInput("+proj=longlat +ellps=clrk80 +no_defs"); string t_srs_wkt; t_srs.ExportToWkt(out t_srs_wkt); SpatialReference s_srs = new SpatialReference(""); s_srs.SetFromUserInput("+proj=utm +zone=16 +datum=NAD83 +no_defs"); string s_srs_wkt; s_srs.ExportToWkt(out s_srs_wkt); Dataset dswarp = gdal.AutoCreateWarpedVRT( ds, s_srs_wkt, t_srs_wkt, gdalconst.GRA_NearestNeighbour, 0.125 ); Driver drv_out = gdal.GetDriverByName("GTiff"); // saving the VRT dataset (optional) Dataset dsw1 = dswarp.GetDriver().CreateCopy("usapm_bad.vrt", dswarp, 1, null); // saving the warped image Dataset dsw = drv_out.CreateCopy("usapm_bad.tif", dswarp, 0, new string[] { "INTERLEAVE=PIXEL", null });
Currently this code does not work as expected and the resulting image is not warped.
So as to inspect this problem the following equivalent commands were executed using the same dataset:
gdalwarp -s_srs "+proj=utm +zone=16 +datum=NAD83 +no_defs" \ -t_srs "+proj=longlat +ellps=clrk80 +no_defs" -of VRT \ usapm.jpg usapm_good.vrt
gdalwarp -co "INTERLEAVE=PIXEL" usapm_good.vrt usapm_good.tif
A suggested patch was also created for fixing this problem.
The following files will be attached to this bug:
usapm_good.vrt usapm_bad.vrt usapm.zip (contains usapm.jpg, usapm.jgw) vrtwarped.cpp.patch
Attachments (3)
Change History (8)
by , 17 years ago
Attachment: | usapm_good.vrt added |
---|
comment:1 by , 17 years ago
The data file couldn't be attached due to it's size, and can be downloaded from here: http://members.chello.hu/szekeres.tamas1/usapm.zip
comment:3 by , 17 years ago
Description: | modified (diff) |
---|
comment:4 by , 17 years ago
Cc: | added |
---|---|
Keywords: | vrt added |
comment:5 by , 17 years ago
Milestone: | → 1.4.1 |
---|---|
Priority: | highest → normal |
Severity: | critical → normal |
I will review this before the 1.4.1 release to see if it belongs there, though I am hesitant at this late date.
comment:6 by , 17 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
I don't really understand the bulk of the patch. I found the following change (passing pszDstWKT into GDALCreateGenImgProjTransformer()) was sufficient to fix the problem.
warmerda@amd64[120]% svn diff --diff-cmd diff -x -c Index: vrtwarped.cpp =================================================================== *** vrtwarped.cpp (revision 11196) --- vrtwarped.cpp (working copy) *************** *** 120,126 **** /* -------------------------------------------------------------------- */ psWO->pfnTransformer = GDALGenImgProjTransform; psWO->pTransformerArg = ! GDALCreateGenImgProjTransformer( psWO->hSrcDS, pszSrcWKT, NULL, NULL, TRUE, 1.0, 0 ); /* -------------------------------------------------------------------- */ --- 120,127 ---- /* -------------------------------------------------------------------- */ psWO->pfnTransformer = GDALGenImgProjTransform; psWO->pTransformerArg = ! GDALCreateGenImgProjTransformer( psWO->hSrcDS, pszSrcWKT, ! NULL, pszDstWKT, TRUE, 1.0, 0 ); /* ------------------------------------------------------------------
This change has been applied in trunk, and 1.4 branch in time for the 1.4.1 release.
usapm_good.vrt