Я пытаюсь создать файл geotiff (данные высотной матрицы высот), используя Libtiff.Net.
Проблема в том, что мне никогда не удавалось добавить следующие два тега:
TiffTag.GEOTIFF_MODELTIEPOINTTAG
TiffTag.GEOTIFF_MODELPIXELSCALETA
Чтобы добавить тег, я написал следующий код:
tiff.SetField(TiffTag.GEOTIFF_MODELTIEPOINTTAG, 0.0, 0.0, 0.0, leftTopX, leftTopY, 0.0);
tiff.SetField(TiffTag.GEOTIFF_MODELPIXELSCALETAG, pixelScaleX, pixelScaleY, 0.0);
В соответствии с описанием метода «SetField», метод возвращает «true», если значение тега было установлено успешно.
Однаков моем случае метод никогда не возвращается при попытке добавить вышеупомянутые 2 тега.
(другие теги могут быть добавлены без проблем.)
Я уже подтвердил, что созданный геотиф не содержит географическогоинформация с использованием других программ ГИС, таких как ArcGIS.
Я что-то упустил или сделал что-то не так?
Будут благодарны за любые подсказки или ответы!
Для вашего удобства кодЯ пока пишу следующее:
public void WriteTiff()
{
using (var tiff = Tiff.Open("C:\\test\\newCreated.tif", "w"))
{
if (tiff == null)
return;
int width = 100;
int height = 100;
int byteDepth = 4;
int tileSize = 64;
//Geo info to add
double leftTopX = 10000;
double leftTopY = 15000;
double pixelScaleX = 1;
double pixelScaleY = 1;
//Set the basic tags
tiff.SetField(TiffTag.IMAGEWIDTH, width);
tiff.SetField(TiffTag.IMAGELENGTH, height);
tiff.SetField(TiffTag.SAMPLESPERPIXEL, 1);
tiff.SetField(TiffTag.BITSPERSAMPLE, 8 * byteDepth);
tiff.SetField(TiffTag.ORIENTATION, Orientation.TOPLEFT);
tiff.SetField(TiffTag.ROWSPERSTRIP, height);
tiff.SetField(TiffTag.XRESOLUTION, 88);
tiff.SetField(TiffTag.YRESOLUTION, 88);
tiff.SetField(TiffTag.RESOLUTIONUNIT, ResUnit.INCH);
tiff.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
tiff.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISBLACK);
tiff.SetField(TiffTag.COMPRESSION, Compression.NONE);
tiff.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB);
tiff.SetField(TiffTag.SOFTWARE, "MyLib");
tiff.SetField(TiffTag.SAMPLEFORMAT, SampleFormat.IEEEFP);
//Set the size of the tile
tiff.SetField(TiffTag.TILEWIDTH, tileSize);
tiff.SetField(TiffTag.TILELENGTH, tileSize);
//set the geographics info
//The following two lines never succeeded....
tiff.SetField(TiffTag.GEOTIFF_MODELTIEPOINTTAG, 0.0, 0.0, 0.0, leftTopX, leftTopY, 0.0);
tiff.SetField(TiffTag.GEOTIFF_MODELPIXELSCALETAG, pixelScaleX, pixelScaleY, 0.0);
//Write the tile data here
//........
//
}
}