Dear sir,
I am currently using the Imaging Apache Common library in order to create
GeoTIFF images.
I succeeded to create the image and write the metadata in it
(ModelTiepointTag and ModelPixelScaleTag) but they seem not to be
recognized by GDAL or any other GIS Software. As a result my output image
is not georeferenced.
I was not able to solve that problem so far.
I attach to this mail the part of the script where I create the file. Could
you please tell me where is my mistake?
Here is the gdalinfo on the output image :
Driver: GTiff/GeoTIFF
> Files: <my-path>\output.tif
> Size is 2340, 1654
> Coordinate System is `'
> Metadata:
> TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
> TIFFTAG_XRESOLUTION=72
> TIFFTAG_YRESOLUTION=72
> Image Structure Metadata:
> COMPRESSION=LZW
> INTERLEAVE=PIXEL
> Corner Coordinates:
> Upper Left ( 0.0, 0.0)
> Lower Left ( 0.0, 1654.0)
> Upper Right ( 2340.0, 0.0)
> Lower Right ( 2340.0, 1654.0)
> Center ( 1170.0, 827.0)
> Band 1 Block=2340x1 Type=Byte, ColorInterp=Red
> Band 2 Block=2340x1 Type=Byte, ColorInterp=Green
> Band 3 Block=2340x1 Type=Byte, ColorInterp=Blue
Best regards
--
*Eric DAVID*
06 83 22 61 96
private void writeGeoTiff(File imgFile, OutputImageFactory imageFactory) {
try {
// Create the geoMetadata
double[] modelTiePoint = new double[6];
modelTiePoint[3] = imageFactory.getPlan().getxOri();
modelTiePoint[4] = imageFactory.getPlan().getyOri();
double[] modelPixelScale = new double[3];
modelPixelScale[0] = 1 / imageFactory.getScaleX();
modelPixelScale[1] = 1 / imageFactory.getScaleY();
byte[] imageBytes =
Imaging.writeImageToBytes(imageFactory.getOutputImage(), ImageFormats.TIFF,
new HashMap<>());
TiffImageMetadata metadata = (TiffImageMetadata)
Imaging.getMetadata(imageBytes);
TiffOutputSet outputSet = null;
if (null != metadata) {
outputSet = metadata.getOutputSet();
}
if (null == outputSet) {
outputSet = new TiffOutputSet();
}
outputSet.getOrCreateExifDirectory().add(GeoTiffTagConstants.EXIF_TAG_MODEL_PIXEL_SCALE_TAG,
modelPixelScale);
outputSet.getOrCreateExifDirectory().add(GeoTiffTagConstants.EXIF_TAG_MODEL_TIEPOINT_TAG,
modelTiePoint);
Map<String, Object> params = new HashMap<>();
params.put(ImagingConstants.PARAM_KEY_EXIF, outputSet);
Imaging.writeImage(imageFactory.getOutputImage(), imgFile,
ImageFormats.TIFF, params);
} catch (IOException ioe) {
LoggerManager.debug(ioe);
} catch (ImageWriteException iwe) {
LoggerManager.debug(iwe);
} catch (ImageReadException ire) {
LoggerManager.debug(ire);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]