Первый пост здесь, извинения за неправильный этикет. Я очень новичок в GDAL.
Как видно из заголовка, я пытаюсь взять данные в виде CSV-файла и создать геотиф из этих данных. Файл csv имеет следующую структуру: более 40 тыс. Строк:
id,Longitude,Latitude,Z_GPS,CA
1,-99.5228,49.9973,1278.8067,1917.5495
В настоящее время я работаю с консольным приложением для тестирования, но в конечном итоге оно станет частью веб-приложения. Я искал сеть для информации, и кажется, что это проще сделать на python, но мне было поручено написать его на c #. Там также, кажется, мало документации о том, как использовать GDAL в C #. Я использую GDAL.NET, установленный через Nuget с использованием Windows 10. Ниже мой код:
using System;
using System.IO;
using CsvHelper;
using OSGeo.GDAL;
using Ogr = OSGeo.OGR.Ogr;
namespace CSV_To_GeoTiff
{
public class Program
{
static void Main(string[] args)
{
//Configures gdal and sets up the drivers
GdalConfiguration.ConfigureGdal();
//Declare an empty dataset
OSGeo.GDAL.Dataset ds;
//Path and string setup
string path = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\.."));
string csvFile = "Ca.csv";
string vrtFile = "Ca.vrt";
string tifFile = "Ca.tif";
string lyr_name = "";
//DirectoryInfo oDir = Directory.CreateDirectory(path + @"\Output");
Console.WriteLine(path);
Console.ReadLine();
//Read the csv file and grab the name of the last column to be used as the layer name of the geotiff
using (var reader = new StreamReader(path + "\\" + csvFile))
using (var csv = new CsvReader(reader))
{
csv.Read();
csv.ReadHeader();
string[] headerRow = csv.Context.HeaderRecord;
lyr_name = headerRow[headerRow.Length - 1];
}
//Set up the vrt file with appropriate tags from the csv data
string[] vrtTags = { "<OGRVRTDataSource>",
"\t" + $"<OGRVRTLayer name=\"{lyr_name}\">",
"\t\t" + $"<SrcDataSource>{csvFile}</SrcDataSource>",
"\t\t" +"<GeometryType>wkbPoint</GeometryType>",
"\t\t" + "<LayerSRS>WGS84</LayerSRS>",
"\t\t" + $"<GeometryField encoding=\"PointFromColumns\" x=\"Longitude\" y=\"Latitude\" z=\"{lyr_name}\"/>",
"\t" + "</OGRVRTLayer>",
"</OGRVRTDataSource>"
};
string vrtPath = path + @"\Output\" + vrtFile;
string csvPath = path + "\\" +csvFile;
//Create and write the tags into the VRT file in an output directory for testing
File.WriteAllLines(vrtPath, vrtTags);
ds = Gdal.OpenEx(vrtPath, 0, null, null, null);
//Creates the raster file in the output folder
Gdal.wrapper_GDALGrid(path + @"\Output\"+ tifFile, ds, null, null, string.Empty);
}
}
}
Я получаю сообщение об ошибке в строке Gdal.wrapper_GDALGrid, в которой говорится "System.ApplicationException: 'Не удалось открыть источник данных` Ca.csv'. '". Что для меня означает, что файл vrt читается правильно и пытается открыть файл csv, но что-то идет не так. Я не знаю, что я делаю неправильно или как это исправить. Я поместил файл csv в то же место, что и файл vrt (в выходном каталоге), поскольку я предполагаю, что он должен находиться в том же месте.
Любая помощь будет принята с благодарностью и спасибо за ваше время.