Mam około 1000 zdjęć satelitarnych w formacie tiff i chcę utworzyć plik shapefile, który posłuży jako indeks dla rastrów. Jest to coś podobnego do katalogu rastrowego, ale nie chcę budować katalogu rastrowego.
Niektóre przeszkody, które mogę dostrzec, to to, że obraz jest georefrencjonowany, więc nie mają kształtu prostokątnego (mówię o obszarze danych).
Aby to wyjaśnić, wymagam, aby wielokąt pokrywał tylko niezerowe (lub non-węzłowe) piksele rastra, a nie cały prostokątny raster. Większość dotychczasowych odpowiedzi podaje prostokątny wielokąt, który obejmuje dane, a także piksele niebędące danymi.
Mój obraz
Wynik podany przez narzędzia, które sprawdziłem (takie jak raster catlog, różne Arcscripts, niestandardowy skrypt Pythona podany w jednej z odpowiedzi):
Wynik, który chcę:
źródło
Odpowiedzi:
W QGIS znajduje się wtyczka o nazwie Image Boundary . To świetne narzędzie. W tym narzędziu dostępna jest opcja „Poprawnych pikseli”, która na przykład pominie czarne krawędzie obrazu satelitarnego.
źródło
Poniższy kod weźmie wejściowy raster, uzyska jego zasięg i wstawi ten zasięg do klasy obiektów wielokąta:
Możesz uruchomić go w oknie ArcMap Python, konfigurując
in_raster
ifc
tak:gdzie
r_extent
jest istniejąca klasa cech wielokąta. Następnie po prostu skopiuj kod i uruchom go. Rozumiem:źródło
Możesz użyć gdaltindex do tego: http://www.gdal.org/gdaltindex.html
Nadal jednak będzie tworzyć prostokąty (np. 4 + 1 punkty) w tym samym systemie odniesienia co obrazy. Ale zastanawiam się, czy to naprawdę jest problem: jak duże są twoje zdjęcia?
źródło
Próbowałem narzędzia „Image Boundary” w QGIS, ale nie działa z niektórymi rastrami.
Inna opcja, która zadziałała dla mnie to: - 1. Konwertuj raster wejściowy na pojedynczy numer cyfrowy za pomocą narzędzia wiersza polecenia gdal_translate.
gdal_translate -co compress = lzw -b 1 -ot byte -scale 1 1 inp.tif out.tif
Spowoduje to utworzenie rastra z wartościami 1 wszędzie inp.tif miał niezerowe wartości.
Wyjściowy plik kształtów będzie miał nie-czworoboczne granice, z wieloma wierzchołkami wielokąta, zgodnie z rzeczywistą granicą obrazu.
źródło
Jeśli jesteś zainteresowany rozwiązaniem skryptowym, wypróbuj polecenie gdal nearblack . Możesz użyć flagi -białej, aby pobrać dane ograniczone również spacją. Możesz poligonizować dane wyjściowe, aby wygenerować nieprostokątny ślad danych rastrowych.
źródło
Wierzę, że w świecie ArcGIS można to osiągnąć za pomocą narzędzia 3D Analyst \ Conversion \ From Raster \ Raster Domain .
źródło
W ArcGIS 3D Analyst znajduje się narzędzie o nazwie Raster Domain, które tworzy ślad wielokąta lub polilinii części danych zestawu danych rastrowych - i ignoruje komórki NoData. Działa świetnie dla mnie.
źródło
Możesz utworzyć katalog rastrowy z przypisanym odniesieniem przestrzennym, dodać katalog rastrowy do ArcMap, a następnie „Eksportować ślad”. Pamiętaj, że istnieje możliwość utworzenia katalogu rastrowego „NIEZARZĄDZANY”, aby nie tworzyć duplikatów każdego zestawu danych rastrowych.
źródło