Kutupsal stereografik için geotransformasyon?


16

Şu anda ArcGIS içine CANGRID iklim verilerini (Surfer Grid ascii, ".grd" dosyaları olarak sağlanan) almak için çalışıyorum. Izgara 95 satır x 125 sütun boyutundadır. Meta veriler lat / lon menşei (sol alt köşe), hücre boyutu (50km) ve ayrıca merkezi meridyen (110 derece W) ve orijin enlemi (60 derece N) ile polar stereografik olarak nota projeksiyonu sağlar.

İlk olarak .grd'yi .ascii ve .flt olarak rasterlere dönüştürmeyi denedikten sonra, kapsamı ve projeksiyonu ayarlamak için GDAL kullanmayı başardım, ancak veri kümesi istenen alanın sınırları ile doğru bir şekilde hizalanmıyor. Aşağıdaki resme bakın.

Polar stereografik için bu hizalama eksikliğini açıklayabilecek kabul edilmiş bir jeotransformasyon var mı?

Örneğin, kullanmam gereken belirli bir dönüşüm faktörü veya rotasyonu var mı?

Veri kümesinden bir örnek dosya burada: "t201113.grd"

İşte şu anda GDAL'de kullandığım kod

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
`

Ayrıca, girdi tarafından tanımlanan projeksiyon bilgisi, yani "GetProjection ()" dan:

]] 'PROJCS [ "North_Pole_Stereographic", GEOGCS [ "GCS_WGS_1984", VERİ [ "WGS_1984", küremsi [ "WGS_1984", 6378137.0,298.257223563]], PRIMEM [ "Greenwich", 0.0], BİRİM [ "derecesi",, ,0174532925199433, PROJEKSİYON [ "Stereographic"], pARAMETRE [ "False_Northing", 0.0], pARAMETRE, pARAMETRE [ "Central_Meridian", 0.0], pARAMETRE [ "Scale_Factor", 1.0], pARAMETRE [0.0 "False_Easting"] [ "Latitude_Of_Origin", 90.0 ] BİRİM [ "50_Kilometers", 50000,0]]'

Ve GeoTransform girişi:

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

Enlem, ızgara koordinatlarının uzun değerleri de sağlanır ve yansıtılan koordinat sistemindeki görünüm aşağıdaki gibi görünür. Geotransform, sol alt (sarı) veya sağ üst (pembe) kordinatın koordinatları ile tanımlandığında, kapsamı etkili bir şekilde ayarlayabilirim, ancak raster boyunca hizalama sorunları kalır.

resim açıklamasını buraya girin


ArcGIS kullanıyorsanız, Stereographic North Pole'a geçin ve standardı 60.0'a ayarlayın. ArcGIS stereografik uygulaması, standart bir paralelden ziyade bir ölçek faktörü kullanır, çünkü proje herhangi bir yerde ortalanabilir.
mkennedy

Teşekkürler mkennedy - "Kuzey Kutbu Stereografik" projesini (WKID 102018) mı kastediyorsunuz? Bu projeksiyonu kullanarak menşe ve merkezi meridyen değerlerinin enlemini ayarladım ve hala aynı sorunu yaşıyorum. Belki başka bir projeksiyondan bahsediyorsunuz?
jsnider

Hayır, projeksiyonun (yöntem) Stereographic_North_Pole olduğu bir taneye ihtiyacınız var. Tam PC'lere sahip olduğumuzu sanmıyorum; 3995 veya 3413'ten değiştirmeyi deneyin.
mkennedy

1
Meta veri "grid_pnt_lls.txt dosyası her x / y için enlem / boylamları listeler (0,0 = ızgaranın SW köşesi)." Elinizdeki bu dosya ile bu ızgarayı istediğiniz herhangi bir koordinat sistemine yeniden kopyalayabilir ve oradan devam edebilirsiniz.
whuber

1
Vektör katmanını test etmek için nereden indirebiliriz?
Farid Cheraghi

Yanıtlar:


2

Bir yorum için çok uzun, bu @ Matej'in cevabına eşlik edecek .

  1. “.Grd” verilerini ArcGIS'e ekleyin.
  2. “Raster to Other Format” işlevini kullanın ve .grd dosyanızı ESRII GRID biçimine dönüştürün. Bu önemlidir, çünkü ArcGIS'deki raster işlevlerinin çoğuna yalnızca bu biçim için erişilebilir, ya bu ya da diğer biçimlerde kullanıldığında genellikle çok yavaşlar.

  3. Zaten dosya ile ilişkili projeksiyon dosyası var gibi. Yeni dönüştürülen verileri yansıtmak yerine, projeksiyonunu tanımlayın. ArcToolbox> Veri Yönetimi Araçları> Projeksiyonlar ve Dönüşümler> Projeksiyonu Tanımla. Önceden tanımlanmış polar stereo grafik ESRII projeksiyonuna gidebilir ve parametrelerinin meta verilerde verilenle eşleşip eşleşmediğini görebilirsiniz (eşleşmez), böylece @Matej'e göre değiştirebilirsiniz. Sadece burada - değiştirmek yerine, merkezi meridyen ve menşe Latitude değiştiğinde NPS projeksiyonuna dayalı yeni bir tane oluşturun ve diske kaydedin, ardından yeni projeksiyona gidin ve projeksiyonunuzu tanımlarken bunu kullanın. Bunun nedeni, daha sonra veri çerçeveniz için koordinat sistemini ayarlamak üzere kullanmak istediğinizde anında modifikasyonunuzun kullanılamamasıdır.



1

Görüntüyü yeniden yapmanız gerektiğini sanmıyorum. Yalnızca aşağıdakileri yapın:

  1. taban haritasının izdüşümünü tanımlar (değiştirir)
  2. görüntüyü georeference (shift) ile belirtilen konuma getirin

Görüntünün (grd) zaten Kuzey Kutbu StereoGraphic projeksiyonunda olduğunu unutmayın, bu da size yalnızca görüntüyle hizalanacak taban haritasının nasıl ayarlanacağına dair işaret verir.

Adım 1 :

Menşe Enlemi ve Merkezi Meridyeni ayarlamak için orijinal Kuzey Kutbu Stereografik projeksiyonunu (WKID: 102018) değiştirin:

resim açıklamasını buraya girin

Adım 2:

Sol alt köşeyi belirtilen koordinat (lat, lon) olarak ayarlayarak grd dosyasına coğrafi referans verin. Coğrafi referansı güncellediğinizde, aynı klasörde .gdwx dosyası oluşturulur. SW köşesini (40.0451, -129.853) atarken dosyanın içeriği aşağıdaki gibi görünür:

50000
0
0
-50000
-1730620.4315
2744092.9724

edit: yukarıdaki dünya dosyası hücre boyutuna ve SW köşesinin sağlanan konumuna göre manuel olarak değiştirildi - 5. ve 6. satır görüntünün sol üst pikselinin hesaplanan konumunu temsil eder. Görüntünün konumu biraz değişti.

Yukarıdaki değerler görüntüyü belirtilen konuma yerleştirir (kaydırır) ve ölçeği tanımlar.

Ve bu çıktı: resim açıklamasını buraya girin

Bu düzgün bir şekilde hizalanmamış gibi görünüyorsa, görüntünün SW köşesi için sağlanan koordinatları sorgularım. Görüntünün NE köşesinin koordinatlarına erişiminiz varsa, görüntüyü iki (veya daha fazla) nokta arasında ölçeklendirecek ve döndürecek dönüşüm parametrelerini yeniden hesaplayabilirsiniz.


.Gdwx dosyası bir dünya dosyası mı? Öyleyse, bağlantılı wiki makalesinde satır 5 ve 6 sol üst piksele başvuruyor diyor . Güneybatı (sol alt) piksel olarak ayarlamanızı mı öneriyorsunuz?
Kirk Kuykendall

Hayır. SW köşesinin konumunu yalnızca benioku dosyasında belirtildiği gibi belirledim. Dosyanın yapısı dünya dosyasına benziyor. ArcMap'te KB köşesinin konumunu hesaplamış ve depolamış olabilecek Georeferencing aracı kullanılarak oluşturulmuştur - henüz kontrol edilmemiştir.
Matej

1
Evet, şimdi kontrol ettim. .Gdwx dosyasında depolanan konum sol üst köşedir.
Matej
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.