Czytanie GeoTiff za pomocą .NET


11

Czy istnieje biblioteka zarządzana do odczytu współrzędnych z pliku geotiff w .NET?

Wiem, że można to zrobić za pomocą GDAL, ale szukam zarządzanej alternatywy.


Możesz użyć Manifold: manifold.net , ale potrzebujesz co najmniej ich środowiska uruchomieniowego do dystrybucji wraz z aplikacją. Musisz jednak przeczytać GeoTIFF jako komponent Manifold przed wysłaniem do niego zapytania, co może być dla Ciebie nie do przyjęcia. Wszystko to zarządza VC ++ pod maską, a ich czytnik GeoTIFF jest przez nich pisany. Możesz przetestować za pomocą skryptów VBScript lub C # wewnątrz aplikacji, a następnie przenieść do zewnętrznej aplikacji w języku C # lub cokolwiek innego.
mdsumner

w przeciwnym razie api mapwindow może być przydatna, jestem pewien, że inni też, co będę pisać o ile dobrze pamiętam
mdsumner

Odpowiedzi:



10

Możesz użyć dołączonych do GDAL owijarek .NET . Umożliwia to dostęp do dowolnej funkcji GDAL z poziomu kodu zarządzanego.


Zgadzam się ... w tym przypadku najlepiej trzymać się kodu sprawdzonego w bitwie
WolfOdrade

To wciąż niezarządzany GDAL pod maską. W tym konkretnym przypadku szukam tylko zarządzanego.
BjartN

1
@BjartN: Zawsze możesz użyć System.Drawing.Bitmap.PropertyItems, a następnie samodzielnie zająć się przetwarzaniem tagów GeoTiff: remotesensing.org/geotiff/spec/geotiff2.6.html#2.6.1 Jednak wolę użyć zarządzanego opakowania wokół rodzimej biblioteki ...
Reed Copsey,

Dzięki, to może być to, czego szukam. Zbadam :) Mogę też skończyć z zarządzanym opakowaniem, ale nie bardzo lubię polegać na GDAL. Wolałby coś lżejszego.
BjartN

3

Nie zobaczysz wielu w zarządzanym języku C # z powodu ograniczenia wydajności i wykorzystania pamięci narzuconego przez warstwę zarządzania pamięcią .NET Framework. Nie zrozum mnie źle - uwielbiam C # i .NET. Jednak natywny C ++ jest znacznie szybszy i (moim zdaniem) mniej frustrujący w pisaniu w tym przypadku.

Ankiety zazwyczaj zawierają wiele plików GeoTIFF, co wymaga dużej ilości pamięci i manipulacji danymi podczas wykonywania geotransform (np. WGS82 do UTMM do współrzędnych TIFF XY, a następnie z powrotem.) Zapotrzebowanie na wydajność pamięci i efektywność zarządzania zwiększa się jeszcze bardziej, gdy zaangażujesz takie jak kompilowanie wyników badań liniowych, promieniowych i powierzchniowych.

Prawdopodobnie nie chcesz tego słyszeć, ale napisanie parsera w natywnym C ++, a następnie zapakowanie go w C # znacznie zwiększy wydajność i wyeliminuje ograniczenia pamięci. Pisanie parsera jest w rzeczywistości dość łatwe i będzie bardzo lekkie, ponieważ można go dostosować do własnych potrzeb. Przekonasz się to szczególnie w przypadku integracji bardziej zaawansowanych funkcji, takich jak automatyczny wybór i łączenie plików GeoTIFF.


Daję ci punkt do dodania wartości :)
BjartN

Bardzo mile widziane! ;)
Mike Christian

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.