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.

BjartN
źródło
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.

Reed Copsey
źródło
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.

Mike Christian
źródło
Daję ci punkt do dodania wartości :)
BjartN
Bardzo mile widziane! ;)
Mike Christian
2

Co powiesz na ten kawałek kodu ?

Chad Cooper
źródło
To również niezarządzany GDAL pod maską
BjartN
Link nie jest już dostępny
Graviton