Bagaimana cara memotong 'gambar ubin' dari dataset raster menggunakan GDAL?

22

Saya sedang mengerjakan aplikasi yang perlu membuat ubin (jpeg) dari dataset raster yang diberikan. Kecenderungan awal saya adalah menggunakan gdal2tiles.py, tetapi kinerjanya sepertinya dapat ditingkatkan.

Itu membuat saya mengajukan pertanyaan berikut: Apa cara tercepat untuk memotong 'gambar ubin' dari dataset raster menggunakan GDAL? Dan dengan 'ubin gambar', maksud saya hanya jpeg atau png sederhana.

Dalam prototipe saya, saya menggunakan binding MapServer C # MapScript untuk melakukan pekerjaan itu. Artinya, saya membuat objek peta, loop melalui semua batas ubin yang perlu saya potong, atur sejauh mana objek peta, dan kemudian simpan gambar yang dihasilkan. Kinerja dari pendekatan ini secara signifikan lebih baik daripada gdal2tiles.py, tetapi saya bertanya-tanya apakah saya menggunakan GDAL secara langsung jika saya tidak dapat membuatnya lebih cepat. Adakah yang bisa menyarankan alur kerja serupa dengan metode GDAL?

EDIT: Setelah beberapa penelitian hari ini, saya menemukan jawabannya tepat di depan saya. Jika Anda telah mengunduh FWTools, folder csharp \ apps berisi sejumlah kelas untuk menunjukkan ikatan C # GDAL. Dalam kasus saya, GDALRead.cs dan GDALReadDirect.cs adalah apa yang saya cari.

pengguna890
sumber
2
@vadp, @markusn, @mapperz & semua orang - harap jelaskan. Selain tautan satu atau dua kalimat mengapa Anda berpikir alat ini layak untuk dilihat dan apa yang membedakan dari yang lain akan sangat membantu. Kami ingin jawabannya bermanfaat di masa depan dan juga segera. Cepat atau lambat link-rot mogok dan jika semua yang kita miliki adalah url, sulit untuk menemukan di mana proyek berinkarnasi selanjutnya.
matt wilkie
4
Hai pengguna890, dapatkah Anda memposting solusi akhir Anda ke pertanyaan dan menandainya sebagai ditutup? dalam hal ini, kedengarannya seperti menggunakan binding spesifik bahasa memberi Anda kinerja yang Anda butuhkan.
scw
Saya tidak dapat menambahkan komentar, ke posting saya sendiri :( Tapi gdal_tiler.py juga mendukung multi-pemrosesan, tetapi dengan cara yang sangat kasar: ia hanya memproses sumber 'n' sekaligus. Namun demikian ia membuat beberapa efek positif :)
Vadim

Jawaban:

5

Seseorang telah menghabiskan waktu untuk menggunakan gdal2tiles.py menggunakan banyak prosesor: parallel gdal

Saya telah menggunakan ini dan sepertinya berhasil. Ini berhasil menggunakan semua 4 core hingga 100% dan memotong total waktu untuk membuat ubin hingga 1/4 dari waktu aslinya.

Hazzey
sumber
Anda dapat memeriksa gdal2tiles_parallel.py gitlab.com/GitLabRGI/geopackage-python . Saya lebih suka comme
GeospatialInformationTech
2

Apakah kamu mencoba ini? http://www.klokan.cz/projects/gdal2tiles/

markN
sumber
Terima kasih atas komentarnya, ini pada dasarnya adalah GUI untuk skrip gdal2tiles.py, agak lambat.
user890
1

Di perusahaan saya, kami menulis skrip python khusus, menggunakan gdal_warp (sebelum kami tahu ada gdal2tiles). Itu lebih cepat daripada g2t, terutama ketika kita menulis ulang untuk berjalan di banyak core (menggunakan pypool threadpool). Juga menghasilkan ubin berkualitas lebih tinggi (interpolasi lanczos pada g2t tampaknya bekerja buruk, di gdal_warp ubin yang dihasilkan sangat mencengangkan).

Perlu sedikit usaha untuk menulis skrip, Anda perlu secara manual menghitung kotak pembatas yang dihasilkan, mengatur beberapa opsi untuk proyeksi, dll.

stachu
sumber
0

Pilihan lain menggunakan TileCache (WMS-C). Meskipun saya belum pernah menggunakan gdal2tiles, saya tidak akan berharap bahwa TileCache akan membawa peningkatan kinerja.

Bagaimanapun, strategi berikut dapat mempercepat pemasangan:

  • Metatiling, jika menggunakan TileCache (Saya ingin tahu apakah gdal2tiles memiliki fitur serupa).
  • Jika data raster adalah ortofoto besar, gunakan format seperti ECW . Karena format ini menampilkan dekompresi parsial , dengan menggunakan format ini Anda bisa mendapatkan keuntungan kinerja yang signifikan.
dariapra
sumber
0

Skrip gdal_tiler.py dari http://code.google.com/p/tilers-tools bisa menjadi opsi yang bermanfaat.

Biasanya ini menunjukkan kinerja yang sangat baik dibandingkan dengan gdal2tiles.py dan itu harus bekerja dengan sumber GDAL (dataset), khususnya, itu tidak memerlukan konversi dataset sumber ke RGB.

Vadim
sumber
-1

Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python Jika geopackage atau MBTILES maka tidak diperlukan python yang dilakukan secara native dengan gdal_translate.EXE. Anda juga perlu menjalankan gdaladdo untuk menambahkan lebih dari satu level zoom. saya juga menggunakan qtiles / qmetatiles untuk desktop qgis. Masih tidak ada yang bisa bersaing dengan perangkat lunak komersial maptiler pro. Jika Anda membutuhkan folder ubin, konversikan MBTILES ke TMS ATAU XYZ dengan mbUtil python

Teknologi Informasi Geospatial
sumber
Tautan tidak lagi berfungsi
AndrewHarvey