Pracuję nad aplikacją, która musi tworzyć kafelki (JPEG) z danego zestawu danych rastrowych. Moja początkowa skłonność polegała na użyciu gdal2tiles.py, ale wydaje się, że jego wydajność można poprawić.
To prowadzi mnie do postawienia następującego pytania: Jaki byłby najszybszy sposób wycięcia „obrazu kafelkowego” z zestawu danych rastrowych przy użyciu GDAL? A przez „kafelkowy obraz” mam na myśli zwykły JPEG lub PNG.
W moim prototypie korzystam z powiązań MapServer C # MapScript. Oznacza to, że tworzę obiekt mapy, przeglądam wszystkie granice kafelków, które muszę wyciąć, ustawiam zasięg obiektów mapy, a następnie zapisuję obraz wynikowy. Wydajność tego podejścia jest znacznie lepsza niż w przypadku gdal2tiles.py, ale zastanawiam się, czy używam GDAL bezpośrednio, jeśli nie mogę zrobić tego jeszcze szybciej. Czy ktoś może zasugerować podobny przepływ pracy metodami GDAL?
EDYCJA: Po kilku dzisiejszych badaniach znalazłem odpowiedź przede mną. Jeśli pobrałeś FWTools, foldery csharp \ apps zawierają szereg klas demonstrujących powiązania C # GDAL. W moim przypadku GDALRead.cs i GDALReadDirect.cs były tym, czego szukałem.
Odpowiedzi:
Ktoś spędził czas, aby gdal2tiles.py używał wielu procesorów: równoległego gdal
Użyłem tego i wydaje się, że działa. Z powodzeniem wykorzystuje wszystkie 4 rdzenie do 100% i skraca całkowity czas tworzenia płytek do 1/4 pierwotnego czasu.
źródło
Próbowałeś tego? http://www.klokan.cz/projects/gdal2tiles/
źródło
W mojej firmie pisaliśmy niestandardowe skrypty Pythona, używając gdal_warp (zanim dowiedzieliśmy się, że istnieją gdal2tiles). Był szybszy niż g2t, szczególnie, gdy przepisaliśmy go na wiele rdzeni (używając puli wątków w Pythonie). Produkowano także płytki wyższej jakości (interpolacja lanczos na g2t wydaje się działać źle, w gdal_warp wynikowe płytki były zadziwiające).
To wymaga trochę wysiłku, aby napisać skrypty, musisz ręcznie obliczyć wynikowe ramki graniczne, ustawić niektóre opcje dla rzutów itp.
źródło
MapCruncher
http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/
działa dobrze i może być używany do cięcia zdjęć
źródło
Inną opcją jest użycie TileCache (WMS-C). Chociaż nigdy nie korzystałem z gdal2tiles, nie spodziewałbym się, że TileCache przyniesie lepszą wydajność.
W każdym razie następujące strategie mogą przyspieszyć układanie płytek:
źródło
Przydatnym rozwiązaniem może być skrypt gdal_tiler.py ze strony http://code.google.com/p/tilers-tools .
Zwykle wykazuje bardzo dobrą wydajność w porównaniu z gdal2tiles.py i powinien działać z dowolnym źródłem GDAL (zestawem danych), w szczególności nie wymaga konwersji źródłowego zestawu danych do RGB.
źródło
Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python Jeśli geopackage lub MBTILES to nie jest potrzebne żadne python, które jest wykonywane natywnie za pomocą gdal_translate.EXE. musisz także uruchomić gdaladdo, aby dodać więcej niż jeden poziom powiększenia. Używam również qtiles / qmetatiles dla qgis desktop. Nadal nic nie może konkurować z komercyjnym oprogramowaniem maptiler pro. Jeśli potrzebujesz folderu z kafelkami, po prostu przekonwertuj MBTILES na TMS LUB XYZ za pomocą python mbUtil
źródło