, R

2016-04-14 26 views
4

ben bile operasyon yavaş dosyanın daha küçük kırpılmış sürümü kullanarak this forestry map, R

benzer büyük bir ArcGIS ızgara dosyasının çeşitli özelliklerini ayıklamak çalışıyorum içinde raster kullanarak büyük bir ArcGIS ızgara dosyasını Deratifying ama daha Önemli olarak, sabit sürücümün çalışmasını durdurarak işlemin başarısız olmasına neden olan bir çok GB temp dosyası gerektirir. Bu sürücüde yaklaşık 35 GB boş alan var.

foo <- raster("grid/w001001.adf") 
allLayers <- deratify(foo) 

tek bir özelliği, bir tabaka elde etmek için yukarıdaki dosyanın kırpılmış bir versiyonu ile mümkündür, ancak kırpılmış ArcGIS grid dosyası dizin sadece ~ 160MB olduğunda bu yine de çok GB geçici dosya gerektirir. İşlevdeki bir dosya adını belirtmek, kullanılan sabit disk alanı miktarını iyileştirmiyor gibi görünmektedir.

allLayers <- deratify(fooCropped, att="BA_GE_3") 

Birkaç katmanı ayıklamak ve daha sonra bu özellikleri kullanarak piksel hesaplamalarına göre piksel yapmak istiyorum. Özellik tablosunu bir veri çerçevesi olarak ayıklamak, bunun üzerine hesaplamalar yapmak ve rasterle yeniden ilişkilendirmek için bir yol var mı?

Sistem bilgileri:

> R.Version() 
$platform 
[1] "x86_64-apple-darwin15.3.0" 
$arch 
[1] "x86_64" 
$os 
[1] "darwin15.3.0" 
$system 
[1] "x86_64, darwin15.3.0" 
... 

‘raster’ version 2.5-2 
R version 3.2.4 
+0

Benzer yapıya ait daha küçük bir dosya takdir edilecektir. Bu 900+ MB ve Orman Hizmeti'nin yavaş bir sunucusu var. –

+0

Kendim test etmedim, ancak bu dosya http://lemma.forestry.oregonstate.edu/data/species-maps aynı formatta tanımlanmıştır. Boyut açıkça, sahip olduğum sorunun bir parçasıdır, dolayısıyla bu bağlantıyı yukarıdaki dosyaya gönderir. – Peter

+1

deratify her özellik için bir katman oluşturacaktır. Kaç tane özellik var? – RobertH

cevap

0

Sık sık kayıtların milyonlarca akışı sıcaklık verilerine üzerinde hesaplamalar çalıştırın. Ne zaman bellek sorunları ile karşılaşırsam, gc() ve rm() işlevlerini veriyi işlediğim döngülere dahil ediyorum. Bu işlevleri rm() R ortamından gerek duymadığınız nesneleri kaldırır ve gc() belleği sisteminize döndürecek şekilde kırpılmış dosyaları işlemek için döngüde bu işlevleri kullanmayı düşünebilirsiniz.

Çok çekirdekli bir sisteminiz varsa, her düğümün bir ilmikli deratify() çağrısını tamamladıktan sonra temizleme ile tüm kırpılmış dosyalarınızı toplu işlemek için bunu bir döngüde kullanabilirsiniz. Kodunuzun daha fazlası olmadan, nasıl uygulayacağınızı önermek zordur.

+0

Cevabınız için teşekkürler, şu anda herhangi bir döngü kullanmıyorum. Sağlanan örnekler aslında çalıştırmaya çalıştığım tüm kodlardır. Rm() 've' gc() 'nin yardımcı olabileceği RAM ile değil, 'raster' paketi ile yapılan geçici dosya büyüklüğü – Peter