Memproyeksikan ulang data ketinggian untuk "Bumi yang dimiringkan"

8

Saya ingin membuat peta "Bumi miring", seperti contoh berikut ini di mana Australia berada di Kutub Utara:

masukkan deskripsi gambar di sini http://i1048.photobucket.com/albums/s379/laskaris_mods/tilted_earth.jpg

Saya dapat memproyeksi ulang peta dalam format gambar seperti .jpeg seperti ini dengan perangkat lunak yang saya gunakan, Geocart 3. Namun, yang perlu saya lakukan adalah memproyeksikan ulang kumpulan data dalam format netcdf (data ETOPO .grd) hanya dengan cara ini, sehingga Saya memiliki data ketinggian yang tepat untuk "Bumi miring" saya.

Apakah ada perangkat lunak SIG yang dapat melakukan ini?

Laskaris
sumber
Juga ditanya tentang Cartotalk: cartotalk.com/index.php?showtopic=9050 di mana daan strebe melaporkan bahwa Geocart 3 mendukung TIFF (Anda harus mengidentifikasi CRS TIFF dalam perangkat lunak).
mkennedy
1
Tetapi saya perlu memproyeksikan ulang data ketinggian sebenarnya dari TIFF, dan saya tidak berpikir Geocart melakukan itu. Saya juga lebih suka untuk dapat melakukannya dengan format netcdf.
Laskaris
Karena ukuran / lokasi sel telah berubah, nilai sel harus disampel / dihitung ulang tetapi itu harus terjadi. Menurut Anda mengapa tidak? Memproyeksikan ulang suatu titik tidak memengaruhi nilai elevasi / z / H.
mkennedy
Anda benar, ini berfungsi untuk TIFF dengan Geocart. Saya salah di sana. Terima kasih banyak! Sekarang, jika saya bisa melakukan hal yang sama dengan netcdf, itu akan menjadi lebih baik.
Laskaris

Jawaban:

1

Hal ini dapat dilakukan dengan menggunakan python netCDF4, pyproj library Projection4 dan numpy. Asalkan mengetahui file netcdf CRS dan CRS earth miring, jika kode EPSG tersedia, itu super mudah. Langkah-langkahnya adalah

  1. Impor file netcdf terlebih dahulu ke python menggunakan pustaka netCDF4.
  2. Permintaan lat, panjang file netcdf dan simpan sebagai array.
  3. Tentukan file netcdf CRS saat ini dan CRS earth miring yang diperlukan, jika tidak ada CRS, proyeksi dapat ditentukan, sebagai contoh untuk mengonversi antara proyeksi kustom lcc ke dalam EPSG: 4326, di bawah ini kode berfungsi. import pyproj
    tc={'proj':'lcc','width':'width_meters','height':'height_meters','lat_0':cen_lat,'lon_0':cen_lon,'lat_1':truelat1,'lat_2':truelat2} proj1=pyproj.Proj(tc) proj2_out='+init=EPSG:4326' proj2=pyproj.Proj(proj2_out) lat2,lon2=[],[] for k, l in zip(lon,lat): lat1,lon1=pyproj.transform(proj1,proj2,k,l) lat2.append(lon1) lon2.append(lat1)
  4. Array lat2 dan lon2 berisi nilai-nilai lat panjang yang diproyeksikan ulang, gunakan nilai-nilai itu untuk membuat ulang file Netcdf atau tiff menggunakan library python ogr.

Jawaban ini dapat memberikan permulaan untuk langkah 1 hingga 2. Atau lihat pengantar yang diperluas ini untuk konversi proyeksi menggunakan python library pyproj.

nish
sumber