Reproyección de dataset de elevación para "Tierra inclinada"

8

Me gustaría crear mapas de una "Tierra inclinada", como el siguiente ejemplo donde Australia está en el Polo Norte:

ingrese la descripción de la imagen aquí http://i1048.photobucket.com/albums/s379/laskaris_mods/tilted_earth.jpg

Puedo reproyectar mapas en formatos de imagen como .jpeg como este con el software que estoy usando, Geocart 3. Sin embargo, lo que tengo que hacer es volver a proyectar conjuntos de datos de elevación en formato netcdf (los datos .grd ETOPO) de esta manera, de modo que Tengo datos de elevación exactos para mi "Tierra inclinada".

¿Existe un software SIG que pueda hacer esto?

Laskaris
fuente
También se le preguntó en Cartotalk: cartotalk.com/index.php?showtopic=9050 donde daan strebe informó que Geocart 3 admite TIFF (debe identificar los TIFF CRS en el software).
mkennedy el
1
Pero necesito reproyectar los datos de elevación reales del TIFF, y no creo que Geocart lo haga. También preferiría poder hacerlo con el formato netcdf.
Laskaris
Debido a que los tamaños / ubicaciones de las celdas han cambiado, los valores de las celdas deben volver a muestrearse / recalcularse, pero eso debería estar sucediendo. ¿Por qué crees que no lo es? Reproyectar un punto no afecta su valor de elevación / z / H.
mkennedy el
Tienes razón, funciona para TIFF con Geocart. Me equivoqué allí. ¡Muchas gracias! Ahora, si pudiera hacer lo mismo con netcdf, sería aún mejor.
Laskaris

Respuestas:

1

Se puede hacer usando python netCDF4, Projection4 library pyproj y numpy. Siempre que conozca el archivo netcdf CRS y el CRS de tierra inclinada, si los códigos EPSG están disponibles, es súper fácil. Los pasos son

  1. Primero importe el archivo netcdf en python usando la biblioteca netCDF4.
  2. Consulte el lat, largo del archivo netcdf y guárdelo como una matriz.
  3. Defina el CRS actual del archivo netcdf y el CRS de tierra inclinada requerido, si no hay CRS, la proyección se puede definir, por ejemplo, para convertir entre la proyección personalizada lcc en EPSG: 4326, debajo del código funciona. 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. Las matrices lat2 y lon2 contienen valores lat largos reproyectados, use esos valores para recrear archivos Netcdf o tiff usando la biblioteca python ogr.

Esta respuesta puede dar un comienzo para los pasos 1 a 2. O vea esta introducción extendida para la conversión de proyección usando la biblioteca python pyproj.

nish
fuente