/vsistdin reading only the first 1024 characters of VRT string
|Reported by:||lpinner||Owned by:||warmerdam|
To avoid temporary files when warping to VRT and compressing with gdal_translate, I tried piping gdalwarp VRT output to gdal_translate. This did not work on Windows (7) or Linux (Ubuntu 14.04).
gdalwarp -q -t_srs EPSG:32611 -of vrt byte.tif /vsistdout/ | gdal_translate -co compress=lzw /vsistdin/ byte_wgs84.tif
byte.tif is from the autotest suite - https://svn.osgeo.org/gdal/trunk/autotest/gcore/data/byte.tif
Error message (Windows):
ERROR 1: Parse error at EOF, not all elements have been closed, starting with Co GDALOpen failed - 1 Parse error at EOF, not all elements have been closed, starting with Co
The linux error is similar with "ColorInte" instead of "Co". The difference in the win->linux output is caused by \r\n and \n linebreaks respectively.
Redirecting stdout to a file outputs the entire VRT string as expected.
Just as a sanity check I tried redirecting stdin from a file with correct VRT xml. The same error is shown.
gdalwarp -t_srs EPSG:32611 -of vrt byte.tif byte_wgs84.vrt Creating output file that is 20P x 20L. Processing input file byte.tif. #Read STDIN - fail gdal_translate /vsistdin/ byte_wgs84.tif < byte_wgs84.vrt ERROR 1: Parse error at EOF, not all elements have been closed, starting with ColorInte GDALOpen failed - 1 Parse error at EOF, not all elements have been closed, starting with ColorInte #Read VRT file - success gdal_translate byte_wgs84.vrt byte_wgs84.tif Input file size is 20, 20 0...10...20...30...40...50...60...70...80...90...100 - done.
It appears /vsistdin is only reading the first 1024 bytes/characters of the output.