Bagaimana cara menghasilkan file dunia untuk raster X?

8

Diberikan daftar raster yang di-georeferensi, sekitar seratus, apa metode paling sederhana untuk menghasilkan file dunia untuk masing-masing?

Dalam hal ini raster sumber adalah geotiff dengan embedded georeferencing atau .BIL dengan .PRJ yang menyertainya, tetapi solusi yang ideal seharusnya tidak peduli apa formatnya. Saya berharap untuk menghindari duplikasi data.

Saya miliki di Arcgis 10 (Arcinfo & Spatial Analyst), GDAL Utilities (gdal v1.8.0), dan Quantum GIS 1.8.

matt wilkie
sumber
menghasilkan file dunia tidak akan selalu memastikan bahwa suatu perangkat lunak dapat / tidak membaca file dunia untuk georeferensi. Geotiff adalah yang paling beruntung bagi saya dalam berbagai perangkat lunak.
Brad Nesom
apakah Anda mencoba membaca format EHdr ?? gdal.org/frmt_various.html
falcacibar
1
perangkat lunak yang saya persiapkan untuk ini tidak memahami file georeferencing tertanam atau eksternal .prj (proj4 atau wkt). Itu hanya melihat .wld (atau .blw, .jpw, ... dll).
matt wilkie

Jawaban:

12

Jika Anda menggunakan build QGIS baru-baru ini, Anda mungkin sudah memiliki akses ke alat Ekstraksi Proyeksi yang disebutkan di sini .

Dari artikel: "Apa yang memungkinkan Anda lakukan adalah untuk mengetahui proyeksi raster Anda. Kemudian mengekspor ini ke file .WLD. Ini juga memungkinkan Anda membuat file .PRJ. Jika Anda memiliki GDAL Tools diinstal (dan diaktifkan) ), Anda akan menemukan alat baru ini di bawah Raster> Proyeksi> Ekstrak Proyeksi. "

Ini juga mencakup opsi pemrosesan batch, yang sangat bagus untuk keperluan Anda.

R Thiede
sumber
jadi jika saya menunggu saya hari saya bisa menyelamatkan diri beberapa jam kerja! tapi saya tidak akan belajar apa-apa, jadi saya akan menyebutnya genap. ;-) Dari membaca log komit, di samping semua antarmuka pengguna, kebaikan alat qgis ini lebih baik daripada milik saya adalah menangani nama file unicode dan menulis file .prj gaya esri eksternal. Yang tidak dilakukan adalah mengikuti konvensi penamaan ekstensi setelah input, misalnya untuk jpeg yang ditulisnya .wld daripada .jgw, yang mungkin atau mungkin tidak penting bagi orang lain. Menerima ini sebagai jawaban yang benar walaupun saya tidak menggunakannya, karena itu solusi yang paling lengkap.
matt wilkie
7

Dipicu oleh Mike Toews pointer ke GetGeoTransform , saya berhasil membuat skrip python gdal kecil yang membangun file dunia untuk setiap raster georeferensi yang didukung (saya pikir). Kode lengkap di sini: gdal-makeworld.py. Bit penting adalah:

geotransform = dataset.GetGeoTransform()

if geotransform is not None:
    x, x_size, x_rot, y, y_rot, y_size = geotransform
    # correct for centre vs corner of pixel
    x = x_size/2+x
    y = y_size/2+y
    world_file.write('%s\n' % x_size)
    world_file.write('%s\n' % x_rot)
    world_file.write('%s\n' % y_rot)
    world_file.write('%s\n' % y_size)
    world_file.write('%s\n' % x)
    world_file.write('%s\n' % y)
    world_file.close()

''' geotransform tuple key:
    [0] /* top left x */
    [1] /* w-e pixel resolution */
    [2] /* rotation, 0 if image is "north up" */
    [3] /* top left y */
    [4] /* rotation, 0 if image is "north up" */
    [5] /* n-s pixel resolution */
'''

Terima kasih tambahan kepada Schuyler Erle yang telah menulis gdalcopyproj.pyyang saya gunakan sebagai titik awal.

Kiat ujung @AlisterH untuk "mengoreksi pusat vs sudut piksel" , 2019-05-30

matt wilkie
sumber