Geotrasformazione per stereografica polare?


16

Attualmente sto lavorando per importare i dati climatici CANGRID (forniti come Surfer Grid ascii, file ".grd") in ArcGIS. La griglia ha 95 righe per 125 colonne. I metadati forniscono lat / lon di origine (angolo in basso a sinistra), dimensione della cella (50 km) e proiezione delle note come stereografica polare con meridiano centrale (110 gradi W) e latitudine di origine (60 gradi N).

Dopo aver tentato per la prima volta di convertire .grd in raster come .ascii e .flt senza successo, sono riuscito a utilizzare GDAL per impostare l'estensione e la proiezione, tuttavia il set di dati non si allinea correttamente con i confini dell'area prevista. Vedi sotto l'immagine.

Esiste una geotrasformazione accettata per la stereografia polare che potrebbe spiegare questa mancanza di allineamento?

Ad esempio, esiste un fattore di conversione o rotazione specifico che dovrei usare?

Un file di esempio dal set di dati è qui: "t201113.grd"

Ecco il codice che sto attualmente utilizzando in 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
`

Inoltre, ecco le informazioni sulla proiezione, come definite dall'input, ovvero da "GetProjection ()":

'PROJCS [ "North_Pole_Stereographic", GEOGCS [ "GCS_WGS_1984", DATUM [ "WGS_1984", SPHEROID [ "WGS_1984", 6378137.0,298.257223563]], PRIMEM [ "Greenwich", 0.0], unità [ "Degree", ,0174532925199433]], PROIEZIONE [ "stereografica"], PARAMETRO [ "False_Easting", 0,0], PARAMETRO [ "False_Northing", 0,0], PARAMETRO [ "Central_Meridian", 0,0], PARAMETRO [ "Scale_Factor", 1.0], PARAMETRO [ "Latitude_Of_Origin", 90.0 ], unità [ "50_Kilometers", 50000,0]]'

E l'ingresso GeoTransform:

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

Vengono inoltre forniti i long delle coordinate della griglia e, quando visualizzate nel sistema di coordinate proiettate, appaiono come di seguito. Quando la geotrasformazione è definita da coordinate della coordinata in basso a sinistra (gialla) o in alto a destra (rosa), posso effettivamente impostare l'estensione, ma permangono problemi di allineamento in tutto il raster.

inserisci qui la descrizione dell'immagine


Se stai usando ArcGIS, passa al Polo Nord stereografico e imposta il parallelo standard su 60.0. L'implementazione stereografica di ArcGIS utilizza un fattore di scala anziché un parallelo standard perché il proj può essere centrato ovunque.
mkennedy,

Grazie @mkennedy - intendi il proj "North Pole Stereographic" (WKID 102018)? Ho impostato la latitudine di origine e i valori meridiani centrali usando questa proiezione e ho ancora lo stesso problema. Forse ti riferisci a un'altra proiezione?
jsnider,

No, è necessario uno in cui la proiezione (metodo) è Stereographic_North_Pole. Non penso che abbiamo i PC esatti; prova a modificare da 3995 o 3413.
mkennedy,

1
I metadati indicano che "Il file grid_pnt_lls.txt elenca i lat / long per ogni x / y (0,0 = angolo SW della griglia)." Con questo file in mano puoi riproiettare questa griglia su qualsiasi sistema di coordinate desiderato e continuare da lì.
whuber

1
Dove possiamo scaricare il layer vettoriale per i test?
Farid Cheraghi,

Risposte:


2

Troppo a lungo per un commento, questo è per accompagnare la risposta di @ Matej .

  1. Aggiungi i dati ".grd" in ArcGIS.
  2. Utilizzare la funzione "Raster in altro formato" e convertire il file .grd in un formato GRID ESRII. Questo è importante perché la maggior parte delle funzioni raster in ArcGIS sono accessibili solo per questo formato, o quello o di solito diventa troppo lento quando lo si utilizza in altri formati.

  3. Poiché ha già il file di proiezione associato al file. Invece di proiettare i nuovi dati convertiti, definirne la proiezione. ArcToolbox> Strumenti di gestione dati> Proiezioni e trasformazioni> Definisci proiezione. È possibile passare alla proiezione ESRII grafica stereo polare predefinita e vedere se i suoi parametri corrispondono a quello indicato nei metadati (non funziona), quindi è possibile modificarlo come da @Matej. Solo qui - piuttosto che modificarlo, crearne uno nuovo basato sulla proiezione NPS con il meridiano centrale e la latitudine di origine cambiati e salvarlo su disco, quindi navigare verso la nuova proiezione e utilizzarlo quando si definisce la proiezione. Questo perché la modifica al volo non sarà disponibile in seguito quando si desidera utilizzarla per impostare il sistema di coordinate per il proprio frame di dati,



1

Non credo sia necessario riproiettare l'immagine. Esegui solo le seguenti operazioni:

  1. definire (modificare) la proiezione della mappa di base
  2. georeferenziazione (sposta) l'immagine nella posizione specificata

Si noti che l'immagine (grd) è già nella proiezione StereoGraphic del Polo Nord, che fornisce solo l'indicazione di come regolare la mappa di base che sarà allineata con l'immagine.

Step 1 :

Modifica la proiezione stereografica del Polo Nord originale (WKID: 102018) per regolare la latitudine di origine e il meridiano centrale:

inserisci qui la descrizione dell'immagine

Passo 2:

Georeferenziare il file GRD impostando l'angolo inferiore sinistro sulla coordinata specificata (lat, lon). Quando si aggiorna la georeferenziazione, il file .gdwx viene creato nella stessa cartella. Quando si assegna l'angolo SW a (40.0451, -129.853) il contenuto del file appare come segue:

50000
0
0
-50000
-1730620.4315
2744092.9724

modifica: il file mondiale sopra è stato modificato manualmente in base alle dimensioni della cella e alla posizione dell'angolo SW: la 5a e la 6a riga rappresentano la posizione calcolata del pixel superiore sinistro dell'immagine. La posizione dell'immagine è cambiata leggermente.

I valori sopra posizionano (spostano) l'immagine nella posizione specificata e definiscono la scala.

E questo è l'output: inserisci qui la descrizione dell'immagine

Se questo non sembra essere allineato correttamente, metterei in discussione le coordinate fornite per l'angolo SW dell'immagine. Nel caso in cui si abbia accesso alle coordinate dell'angolo NE dell'immagine, è possibile ricalcolare i parametri di trasformazione che ridimensionano e ruotano l'immagine tra due (o più) punti.


Il file .gdwx è un file mondiale ? In tal caso, l'articolo wiki collegato dice che le righe 5 e 6 fanno riferimento al pixel in alto a sinistra. Stai suggerendo di impostarlo sul pixel sud-ovest (in basso a sinistra)?
Kirk Kuykendall,

No. Ho specificato solo la posizione dell'angolo SW come indicato nel file Leggimi. La struttura del file sembra il file mondiale. È stato generato utilizzando lo strumento di georeferenziazione in ArcMap che potrebbe aver calcolato e memorizzato la posizione dell'angolo NW - non ancora verificato.
Matej,

1
Sì, l'ho controllato ora. La posizione memorizzata in .gdwx è l'angolo in alto a sinistra.
Matej,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.