Python'da bir şekil dosyası çokgenini kullanarak NetCDF'den veri ayıklama [yineleme]


11

Belirli bir şekil dosyası kullanarak bir NetCDF veri alt kümeye gerekir. Veriler deniz yüzeyi sıcaklığı ve 1/4 derece çözünürlükte okyanus rengidir. ABD'yi tanımlayan 4 çokgenim var. Kuzeydoğu kıta sahanlığı büyük deniz ekosistemi ve verileri ayıklamak için kullanmam gereken alt bileşenler. 1982-2014 dönemindeki aylık bileşik dosyalarla çalışıyorum, bu nedenle bu veri çıkarma rutininin otomatikleştirilmesi gerekiyor. Dosyalar zaten [35, 45, -80, -60] 'nın yaklaşık çalışma alanı ızgarasına ayarlanmıştır.

resim açıklamasını buraya girin

Daha önce, HDF5 veri dosyalarını R'deki rasterlere dönüştürüyor ve bu şekilde işliyoruz, ancak bu yöntem gerçekten verimsiz ve mevcut NetCDF dosyalarını kullanarak Python'da daha iyi bir çözüm olduğundan eminim.

Şimdiye kadar veri dosyalarını yüklemek için şekil dosyalarını ve NetCDF4 okumak için GDAL ve Fiona kullanıyorum. Nasıl veri alt kümesi hakkında gitmek emin değilim. Bunu buldum:

Python için GDAL: NetCDF dosyasından alt alan adları çıkartılıyor mu?

Ancak, bu çokgenlerin kesinlikle olmadığı basit bir sınırlama kutusundan başka bir şey kullanarak bir NetCDF dosyasının nasıl alt kümeleneceği hakkında en ufak bir fikrim yok.

Çokgen rutinlerinde nokta muhtemelen çalışmak için bir sonsuzluk alacaktı, ama belki de bu başlangıç ​​şekil olarak bu şekillere uyacak şekilde döndürülmüş ve daha sonra bir poli-in noktası araması yapmak için döndürülmüş daha küçük bir sınırlama kutusu kullanarak verileri alt kümeye alabilirim:

Lon / lat sınırlayıcı bir kutu kullanarak eğrisel bir netCDF dosyasının (ROMS model çıktısı) alt ayarının yapılması.

Herhangi bir fikir?

DÜZENLEME 1:

Ben sadece fatura mükemmel uyuyor gibi görünüyor OpenClimateGIS paket rastladı ... Ben işe almak için bu bir gitmek olacak: http://ncpp.github.io/ocgis/examples. html # ileri subsetting


: Düzenleme 1 göründüğünü Your son halkası dead.This en iyi yedek olarak görünmektedir olmak earthsystemcog.org/projects/openclimategis
Aaron

Yanıtlar:


1

Bu , ihtiyaçlarınıza göre uyarlanabilir.

Komut satırını python'dan çağırmak sakıncası yoksa, böyle bir şey yapabilirsiniz gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif. -cwhereve kırpma için dört çokgenden birini seçmek için -csqldaha uygun gdalwarp seçenekleri olabilir .


1

Şuna bir göz atın: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile

Unutmayın, NetCDF'nizi yükledikten sonra bir NumPy dizisi ile çalışıyorsunuz.

Ne çıkarmaya çalışıyorsunuz? Çokgen alanlarına dayalı özet istatistikler?

Her neyse, işte ne yaparım:

  1. Şekil dosyanızı yükleyin ve alanlarınızı desteklenen bir biçime getirin (yukarıdaki bağlantıda matplotlib maske işlemini hedeflemek kulağa hoş geliyor)
  2. NetCDF dosyanızı yükleyin ve verileri tek bir X, Y, T numpy dizisine alın
  3. Bu diziyi çokgenler kullanarak maskeleyin (her seferinde bir tane mi?)
  4. Özet istatistiklerinizi dışa aktarın.

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.