GDAL czyli Geospatial Data Abstraction Library to zbiór narzędzi umożliwiających m.in. zaawansaowane operacje na danych rastrowych. Oprócz standardowych aplikacji uruchamianych w trybie konsoli dostępne są również biblioteki, które można podpiąć do aplikacji opartych na .NET:
http://trac.osgeo.org/gdal/wiki/GdalOgrInCsharp
Podążając za linkiem build SDK packages znajdziesz komplet skompilowanych bibliotek dla poszczególnych wersji .NET, np. MSVC2010 (Win64) -stable dla .NET 4.0 lub MSVC2008 (Win64) -stable dla .NET 3.5.
Polecam kompletny zestaw Compiled binaries in a single .zip package. Po rozpakowaniu w katalogu \bin znajdziesz wszystkie natywne pliki *.dll, a w katalogu \bin\gdal\csharp pliki *.dll zarządzane przez .NET (są tam też przykłądowe aplikacje *.exe napisane w c#).
Jeżeli chcesz napisać swój własny program w c# będziesz potrzebować wszystkich plików *.dll z katalogów \bin i \bin\gdal\csharp (pliki *.exe nie są potrzebne). Jeżeli chcesz uniknąć problemu z błędem dostępu do bibliotek natywnych (OSGeo.GDAL.GdalPINVOKE) to albo dodaj ktalogi z bibiliotekami do systemowej zmiennej PATH albo skopiuj te pliki *.dll do katalogu z Twoją aplikacją, np. \bin\Release. Warto też zmienić domyślne ustawienia kompilacji projektu z .NET 3.5 Client Profile na .NET 3.5.
Dla testu czy wszystko działa poprawnie dodaj do swojego projektu referencje do gdal_csharp.dll, a następnie dodaj kilka linijek kodu:
private void button1_Click(object sender, EventArgs e)
{
Gdal.AllRegister();
Dataset ds = Gdal.Open(@"C:\data\OrtoFoto.tif", Access.GA_ReadOnly);
if (ds == null)
{
MessageBox.Show("Nie można otworzyć pliku");
return;
}
MessageBox.Show(" Projection: " + ds.GetProjectionRef()
+ "\n\n RasterCount: " + ds.RasterCount
+ "\n\n RasterSize (" + ds.RasterXSize + "," + ds.RasterYSize + ")");
}