ASCII rüzgar hızı dosyalarını rasterlere dönüştürme


11

Ben rüzgar hızı dosyalarını rasters rastlamak dönüştürmeye çalışıyorum. Takip ettiğim bir Arcgis forumunda tartışıldı. Bu, noktalı virgüllerin boşluklarla değiştirilmesini ve bir başlık eklenmesini içeriyordu.

Orijinal .asc dosyalarından birini 'temizlediğim' bir .csv sürümü ile birlikte eklemeyi umuyordum. Ne yazık ki metni kopyalayıp yapıştırmadan bunu nasıl yapacağımı göremiyorum. Orijinal .asc dosyasının ilk satırı:

Conversion of speed45i.dat   Wind m/s  Wind Speed @ 45m N. Ire 
(100,  499); 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 

Bunu şu şekilde değiştirdim:

ncols 700
nrows 1300
x||corner 0
y||corner 0
cellsize 1000                                                                                               "
"( 0 1299) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;"

Raster tercüme dönüştürme eklentisini kullandığımda hata mesajını aldım:

İşlem başlatılamadı. Çağrılan program eksik veya programı çağırmak için yeterli izniniz olmayabilir.

Herhangi bir öneri minnetle alındı.


belirli bir veri kümesiyle ilgili daha spesifik yardım almak istiyorsanız, her zaman DropBox'a bir örnek koymayı ve bir bağlantıyı paylaşmayı deneyebilirsiniz .
RyanKDalton

Yanıtlar:


14

Bu verileri çok iyi biliyorum. Bunlar biraz kötü şöhretli NOABL rüzgar hızı verileridir. Yine de onları bir ASCII rasterine dönüştürürken doğru yoldasınız. Onlar için (yıllar önce) oluşturduğum başlık şöyleydi:

ncols 700
nrows 1300
xllcorner 0
yllcorner 0
cellsize 1000
nodata_value -999
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Görünüşe göre, başlıkta xll ve yll için 'l' yerine '' sol '' anlamına gelen boru sembolleri ('|') kullandınız. Ayrıca her satırın başında köşeli parantez içindeki sayıları ve ters virgülleri de kaybedin. Sadece alanı sınırlandırın. Köşeli parantez içindeki sayılar (çalıştığınızdan emin olduğunuz gibi), veri satırının 100 kilometrelik başlangıç ​​koordinatlarını gösterir (1 km çözünürlükte - bu nedenle her köşeli parantez kümesinden sonra yüz değer vardır). Bu sayılar sadece bir ESRI ASCII rasterinde gereksiz olmakla kalmaz, aynı zamanda onu 'bozar'.

CAVEAT:
Bu verileri dikkatli kullanın. Çok yaşlılar ve Birleşik Krallık'ta yaygın olarak bulunan küçük bir avuç meteoroloji istasyonundan enterpole edildi. Ayrıca yüzey pürüzlülüğünü ve yerel düzeyde rüzgar hızını etkileyen diğer faktörleri hesaba katmadan enterpole edildi. Onlar kaba bir rehber olarak Tamam ama birçok yerde rüzgar hızı aşırı tahmin için kötü üne sahiptir . Örneğin, NOABL 45m rüzgar hızını düzenli olarak 80 m yüksekliklerde anemometre ile ölçülen rüzgar hızlarıyla karşılaştırılabilir buluyorum, ancak daha sonra, NOABL Kuzey Adaları'ndan herhangi bir veri kullanmadığından, rüzgar hızlarını acımasızca küçümsemek için NOABL buldum Shetland. NOABL verilerinde birkaç tanışılan istasyondan en uzak olanı (sadece 10 sanırım!) Wick idi.

Bununla birlikte, tüm uyarılar bir yana, akıllıca kullanıldığında, fazla tahminleri (ve bir deneyim serpintisini kullanarak) anladığımda, bu verileri kullanan rüzgar santrali verim hesaplamalarının sonuçlarını daha güncel kullanan hesaplamalar ile karşılaştırılabilir buldum ve titizlikle toplanan veriler. Bununla birlikte, bunu müjde olarak almayın, çünkü her alan farklıdır ve gerçek rüzgar hızı pürüzlülük, açık erişim, topografiden büyük ölçüde etkilenir.

Rüzgâr hızı projeniz için kritikse, elbette bunu bir başlangıç ​​noktası olarak kullanın, ancak üzerindeki çiftliğe bahse girmeyin!

EDIT
Parantez içindeki sayıları kaldırmak için verileri ayrıştırmak için bir Python betiği yazabilir veya kolay bir alternatif:

  • dosyayı bir metin düzenleyicide açın, ilk satırı silin (" Hız dönüşümü ... "), tüm boşlukları global olarak hiçbir şeyle değiştirmeyin ve '.csv' uzantısıyla yeniden kaydedin
  • Daha sonra sınırlayıcıyı noktalı virgül olarak ayarlayan bir elektronik tablo paketinde açın (Excel ve OpenOffice Calc'de dosyayı açtığınızda istenir). Şimdi tüm köşeli ayraçlı sayıları içeren ilk sütunu seçin ve silin.
  • En başta altı satır ekleyin ve başlığınızı ekleyin ("ncols 700" vb.).
  • Son olarak '.asc' uzantısıyla kaydedin, ancak sınırlayıcınızın tasarruf konusunda bir boşluk olduğundan emin olun.

Sylvester, Çok teşekkürler. Parantez içindeki sayıları silmede sorun yaşıyorum. İlk birkaç satır aşağıdaki gibi mi görünmeli? nrows 1300 xllcorner 0 yllcorner 0 hücre boyutu 1000 nodata_value -999 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
tedwalsh

@tedwalsh: neredeyse bu kadar. İlk satırın çoğunu 'kod' örneğine eklemek için yukarıdaki cevabımı düzenledim. Ayrıca köşeli parantezleri çıkarmanın kolay yolunu da ekledim. Hala mücadele ediyorsanız, bana e-posta adresinizle bir PM gönderin (web sitemin Kişiler bölümünü bulun) ve sizin için bir şeyler çözeceğim.
MappaGnosis

1
NOABL veri seti zamanı için oldukça düzenliydi, ancak o zaman neredeyse 20 yıl önceydi. O zamanlar üzerinde / onunla da çalıştığımı hatırlıyorum. En iyi şimdi tipik rüzgar türbini yüksekliklerinde gerçek iş için kullanılmaz.
scruss

11

NoData değeri ascii dosyanızda eksik ve x || ve y || xll ve yll yerine. NoData'nızın -999 olduğunu varsayıyorum.

bunu dene:

NCOLS 700
NROWS 1300
XLLCORNER 0
YLLCORNER 0
CELLSIZE 1000
NODATA_VALUE -999

Metin düzenleyicide açık olan ascii'niz şöyle görünmelidir:

NCOLS 700
NROWS 1300
XLLCORNER 0
YLLCORNER 0
CELLSIZE 1000
NODATA_VALUE -999
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

2
Biçim açısından bu doğru görünüyor, ancak sıfır NoData değeri ile karıştırmak önemli bir hata olabilir düşünüyorum. Sıfır rüzgar hızını göstermek için sıfır gerekirken, NoData değeri rüzgar hızı hakkında bilgi olmadığını gösterir.
whuber

@Tedwalsh bu bilgi vermedi beri NoData 0 olduğunu varsayıyordu.
Gago-Silva
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.