¿Geotransformación para estereografía polar?

16

Actualmente estoy trabajando para importar datos climáticos CANGRID (proporcionados como Surfer Grid ascii, archivos ".grd") en ArcGIS. El tamaño de la cuadrícula es de 95 filas por 125 columnas. Metadata proporciona lat / lon de origen (esquina inferior izquierda), tamaño de celda (50 km) y proyección de notas como estereografía polar con meridiano central (110 grados W) y latitud de origen (60 grados N).

Después de intentar convertir el .grd en ráster como .ascii y .flt sin éxito, he logrado usar GDAL para establecer la extensión y la proyección, sin embargo, el conjunto de datos no se alinea correctamente con los límites del área deseada. Vea abajo la imagen.

¿Existeunageotransformaciónaceptadaparalaestereografíapolarquepodríaexplicarestafaltadealineación?

Porejemplo,¿hayunfactordeconversiónespecíficoorotaciónquedeberíaestarusando?

Unarchivodeejemplodelconjuntodedatosestáaquí: "t201113.grd"

Aquí está el código que estoy usando actualmente en GDAL

ds = gdal.Open("t201113.grd")
array = ds.ReadAsArray()

x_rotation = 0
y_rotation = 0
xres = 1
yres = -1

llx = -129.8530
lly = 40.0451
ulx = -175.144
uly = 71.385

input_osr = osr.SpatialReference()
input_osr.ImportFromWkt(ds.GetProjection())

wgs84_osr = osr.SpatialReference()
wgs84_osr.ImportFromEPSG(4326)

wgs_to_nps_trans = osr.CoordinateTransformation(wgs84_osr, input_osr)
x, y, z = wgs_to_nps_trans.TransformPoint(llx,lly)

geo_transform = [ x, xres, x_rotation, y, y_rotation, yres ]

ncol = ds.RasterXSize
nrow = ds.RasterYSize

out_driver = gdal.GetDriverByName("HFA")
out_ds = out_driver.Create(t201113.img", ncol, nrow, 1, gdal.GDT_Float32)

out_ds.SetGeoTransform(geo_transform)

out_prj = 'PROJCS["North_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",60.0],UNIT["50_Kilometers",50000.0]]'

out_ds.SetProjection(out_prj)

out_ds.GetRasterBand(1).WriteArray(array)
out_ds.GetRasterBand(1).SetNoDataValue(1.70141e+038)
out_ds.FlushCache()
out_ds = None
'

También, aquí está la información de la proyección, como se define en la entrada, es decir, de "GetProjection ()":

  

'PROJCS ["North_Pole_Stereographic", GEOGCS ["GCS_WGS_1984", DATUM ["WGS_1984", SPHEROID ["WGS_1984", 63p.P.P.] ]], PROYECCIÓN ["Estereográfica"], PARÁMETRO ["False_Easting", 0.0], PARÁMETRO ["False_Northing", 0.0], PARAMETER ["Central_Meridian", 0.0], PARAMETER ["Scale_Factor", 1.0], PARAMETER ["Latitude_Of_) ", 90.0], UNIDAD [" 50_Kilometers ", 50000.0]] '

Y la entrada GeoTransform:

(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)

Latitud, también se proporcionan longitudes de las coordenadas de la cuadrícula, y cuando la vista en el sistema de coordenadas proyectadas es la siguiente. Cuando la geotransformación se define mediante coordenadas de la coordenada inferior izquierda (amarilla) o superior derecha (rosa), puedo establecer la extensión de manera efectiva, pero sigue habiendo problemas de alineación en todo el ráster.

    
pregunta jsnider 03.10.2014 - 00:26

3 respuestas

2

Demasiado para un comentario, es para acompañar a la respuesta de @ Matej .

  1. Agregue los datos ".grd" a ArcGIS.
  2. Use la función "Raster to Other Format" y convierta su archivo .grd a un formato ESRII GRID. Esto es importante porque la mayoría de las funciones de ráster en ArcGIS son accesibles solo para este formato, ya sea eso o generalmente se vuelve demasiado lento cuando se usa en otros formatos.

  3. Como ya tiene el archivo de proyección asociado al archivo. En lugar de proyectar los nuevos datos convertidos, defina su proyección. ArcToolbox > Herramientas de gestión de datos > Proyecciones y transformaciones > Definir Proyección. Puede navegar a la proyección de ESRII del gráfico estéreo polar predefinido y ver si sus parámetros coinciden con el que figura en los metadatos (no lo hace), por lo que puede modificarlo según @Matej. Solo aquí: en lugar de modificar, cree una nueva basada en la proyección NPS con el meridiano central y la latitud de origen cambiada y guárdela en el disco, luego navegue hasta la nueva proyección y úsela cuando defina su proyección. Esto se debe a que su modificación sobre la marcha no estará disponible más adelante cuando desee usarla para configurar el sistema de coordenadas para su marco de datos, lo cual es necesario para alinear sus otros archivos de límites con el mismo sistema NPS modificado.

respondido por el yanes 01.10.2015 - 20:51
1

No creo que necesites reproyectar la imagen. Solo haz lo siguiente:

  1. define (modifica) la proyección del mapa base
  2. georeferencia (desplaza) la imagen a la ubicación especificada

Tenga en cuenta que la imagen (grd) ya se encuentra en la proyección de StereoGraphic del Polo Norte, que solo le da una indicación de cómo ajustar el mapa base que se alineará con la imagen.

Paso 1 :

Modifique la proyección estereográfica original del Polo Norte (WKID: 102018) para ajustar la latitud de origen y el meridiano central:

Paso2:

Georeferenciaelarchivogrdestableciendolaesquinainferiorizquierdaalacoordenadaespecificada(lat,lon).Cuandoactualizalageorreferenciación,elarchivo.gdwxsecreaenlamismacarpeta.AlasignarlaesquinadeSWa(40.0451,-129.853),elcontenidodelarchivotieneelsiguienteaspecto:

5000000-50000-1730620.43152744092.9724

editar:elarchivodelmundoanteriorsemodificómanualmentesegúneltamañodeceldaylaubicaciónproporcionadadelaesquinaSW:laquintaylasextalínearepresentanlaubicacióncalculadadelpíxelsuperiorizquierdodelaimagen.Laposicióndelaimagencambióligeramente.

Losvaloresanteriorescolocan(desplazan)laimagenalaubicaciónespecificadaydefinenlaescala.

Yestaeslasalida:

Si esto no parece estar alineado correctamente, cuestionaría las coordenadas proporcionadas para la esquina SW de la imagen. En caso de que tenga acceso a las coordenadas de la esquina NE de la imagen, puede volver a calcular los parámetros de transformación que escalarían y rotarían la imagen entre dos (o más) puntos.

    
respondido por el Matej 29.09.2015 - 20:58
1

La información de proyección adecuada para estos archivos se puede encontrar aquí: Define Proj4 cadena para el conjunto de datos CANGRD

    
respondido por el Guillaume 03.04.2017 - 23:13

Lea otras preguntas en las etiquetas