উইন্ডোজে আর 'রাস্টার' প্যাকেজ সহ ডেম ফাইলটি পড়ার সময় এনএ মানগুলির সাথে সমস্যা


10

আমি আর। তে 'রাস্টার' প্যাকেজটি ব্যবহার করে উইন্ডোজে .DEM বিন্যাসে একটি রাস্টার ফাইল পড়ার চেষ্টা করছি am

উইন্ডোজ in-এ আর-তে ডেটা লোড করার সময় আমি এনএ মানগুলির সাথে সমস্যা পাই, তবে ওএসএক্স লায়নযুক্ত ম্যাকের ক্ষেত্রে আমার সমস্যা নেই। উইন্ডোজগুলিতে, এনএ মানগুলি সঠিকভাবে পড়েছে বলে মনে হয় না। প্রশ্ন হচ্ছে কেন এমন হয়?

ব্যবহৃত রাস্টার ফাইলটি নিম্নলিখিত আর কোডের সাথে ইউএসজিএস থেকে ডাউনলোড করা হয়েছিল:

download.file('http://edcftp.cr.usgs.gov/pub/data/gtopo30/global/e020n90.tar.gz', 'e020n90.tar.gz')
untar('e020n90.tar.gz')

তারপরে আমি 'রাস্টার' প্যাকেজটি ব্যবহার করে রাস্টারটিকে আরে পড়ি। ওএসএক্স সিংহ এবং আর 6464 সংস্করণ ২.১13.১ এ, এনএ মানগুলি স্বীকৃত:

> onMac <- raster('E020N90.DEM')
> onMac
class       : RasterLayer 
dimensions  : 6000, 4800, 28800000  (nrow, ncol, ncell)
resolution  : 0.008333333, 0.008333333  (x, y)
extent      : 20, 60, 40, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs 
values      : /Users/Tam/Desktop/E020N90.DEM 
min value   : -9999 
max value   : 5483 

> summary(values(onMac))
Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA's 
-137       85      148      213      213     5483 13046160

তবে উইন্ডোজ on (B৪ বিট, একই আর সংস্করণ) এ এটি এমন কক্ষের মানগুলিকে রূপান্তর করে যা এনএর হওয়া উচিত numbers

> onWindows <- raster('E020N90.DEM')
> onWindows
class       : RasterLayer 
dimensions  : 6000, 4800, 28800000  (nrow, ncol, ncell)
resolution  : 0.008333333, 0.008333333  (x, y)
extent      : 20, 60, 40, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 
values      : E:/WorldDegreeDays/gsoddata/gtopo/E020N90.DEM 
min value   : -9999 
max value   : 5483 

> summary(values(onWindows))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1     150     946   27190   55540   65540

আমি যখন উইন্ডোতে এটি পড়ি তখন রাস্টারটিতে কোনও এনএ মান নেই কেন? আমি কীভাবে এটিকে ঘিরে কাজ করতে পারি? আমার অনুমান যে সংখ্যাগুলি যেভাবে সংরক্ষণ করা হয় তার সাথে এটি করা দরকার, অনেকগুলি এনএ মান 55540 তে রূপান্তরিত হয়।

উইন্ডোজ থেকে তথ্য (রাস্টার লোড করার পরে):

SessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] rgdal_0.7-1   raster_1.9-12 sp_0.9-88    

loaded via a namespace (and not attached):
[1] grid_2.13.1     lattice_0.19-30

ওএসএক্স থেকে তথ্য (রাস্টার লোড করার পরে):

R version 2.13.1 (2011-07-08)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] rgdal_0.6-33  raster_1.9-12 sp_0.9-88    

loaded via a namespace (and not attached):
[1] grid_2.13.1     lattice_0.19-33

উভয় সিস্টেমে রাস্টার সংস্করণ 1.9-12
yellowcap

আপনি কি sessionInfo()আপনার পোস্টে অন্তর্ভুক্ত করতে পারেন ?
রোমান Luštrik

উইনএক্সপি-তে আমি রাস্টার_1.8-12 (তবে আপনার কাছে 1.9-12-তে অভিন্ন) পেয়েছি।
রোমান Luštrik

এটি রাস্টার_18-12-12 নিয়ে ভাল কাজ করেছে, নাকি এটি অন্যরকম ছিল?
yellowcap

উত্তর:


11

একটি কার্যকর কাজটি কেবল কাঁচা ডেটা অনুসন্ধান করা, যেহেতু এটি খুব সাধারণ ফাইল ফর্ম্যাট।

সবার জন্য নয়, তবে কী ঘটছে তা দেখতে আলোকিত হতে পারে।

## all these details are in the .HDR file
NROWS   <-      6000
NCOLS   <-      4800

এই মুহুর্তে আপনি সরাসরি সংখ্যার চিহ্ন এবং প্রসারণের জন্য বিভিন্ন বিকল্পগুলি চেষ্টা করতে পারেন এবং এইভাবে পড়ার > 32767পরে আমরা ফাইলটি পড়ার পরে রবার্ট রূপান্তরটির সাথে কী করে তা অর্জন করি ।

x1 <- readBin("E020N90.DEM", "integer", size = 2, signed = TRUE, n = NROWS * NCOLS, endian = "big")

range(x1)
[1] -9999  5483

x1[x1 < -9998] <- NA

## now for the simple georeferencing, also in the HDR file

ULXMAP   <-     20.00416666666667
ULYMAP   <-     89.99583333333334
XDIM     <-     0.00833333333333
YDIM     <-     0.00833333333333

## now generate x/y coordinates, and the data matrix (flip on Y)
x <- list(x = seq(ULXMAP, by = XDIM, length = NCOLS),
       y = seq(ULYMAP - NROWS * YDIM, by = YDIM, length = NROWS),
      z = matrix(x1, nrow = NCOLS)[ , NROWS:1])

library(sp)

x <- image2Grid(x)

library(raster)
r <- raster(x)

plot(r)

এখানে চিত্র বর্ণনা লিখুন

অবশেষে, অভিক্ষিপটি সেট করুন যেমন এটি রাস্টার দ্বারা পড়া হয় (এবং এটি সেইরকম পড়ার সময় যে প্লটটিতে দেখা যায় সেই একই দিকের অনুপাত দেয়)।

projection(r) <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"

সম্পাদনা: ওফস, উপরে থেকে বিয়োগ করতে ভুলে গিয়েছিল, এখন ঠিক হয়েছে - এখনও অর্ধ-সেল সমস্যা রয়েছে যা আমি তলানিতেও পৌঁছতে পারি নি।


আসলে আপনি উভয় পদ্ধতি একত্রিত করতে পারেন (এই উত্তর এবং আমার / রবার্টস উত্তর): r <- raster('E020N90.DEM')এবং তারপরে দৌড়ে values(r)<-readBin("E020N90.DEM", "integer", size = 2, signed = TRUE, n = nrows(r) * ncols(r), endian = "big")এবং তারপরে values(r)[values(r)==-9999]<-NA
johanvdw

হা হ্যাঁ তবে এটি
ধর্মবিরোধী

6

এই ফাইলটি বা জিডিএল নিয়ে কিছু সমস্যা রয়েছে। আমি উইন্ডোজ 7 ব্যবহার করছি

R version 2.13.1 (2011-07-08)
Platform: x86_64-pc-mingw32/x64 (64-bit)

এবং

> getGDALVersionInfo()
[1] "GDAL 1.7.2, released 2010/04/23"


> GDALinfo('E020N90.DEM')
rows        6000 
columns     4800 
bands       1 
origin.x        20 
origin.y        40 
res.x       0.008333333 
res.y       0.008333333 
ysign       -1 
oblique.x   0 
oblique.y   0 
driver      EHdr 
projection  +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs 
file        E020N90.DEM 
apparent band summary:
 GDType  Bmin Bmax   Bmean    Bsd hasNoDataValue NoDataValue
1 UInt16 -9999 5483 -4412.9 5088.6           TRUE       -9999
> 

মনে রাখবেন যে NoDataValue বিমিন মান (-9999) এর সমান, যা বিজোড়। সবচেয়ে খারাপটি হ'ল জিডিটাইপটি ইউআইএনটি 16 - স্বাক্ষরযুক্ত 2-বাইট পূর্ণসংখ্যা - যার অর্থ আপনার শূন্যের চেয়ে কম মান থাকতে পারে না। এটি সম্ভবত একটি বাগ যা gdal 1.8.0 এ স্থির করা হয়েছিল

সমস্যাটি উদাহরণস্বরূপ যখন আপনি করবেন

r <- 'E020N90.DEM'
plot(r)

আমি মনে করি এটির সমাধানের দ্রুততম উপায়টি হ'ল:

r <- raster('E020N90.DEM')
fun <- function(x){ x[x > 32767] <- x[x > 32767] - 65536; x[x == -9999] <- NA; x}
r[] <- fun(values(r))

plot(r)
r <- writeRaster(r, 'E020N90.TIF')

1
এই ফিক্সটি আমার চেয়ে ভাল কারণ ক্যাস্পিয়ান সমুদ্রের ডেটা পয়েন্টগুলিও রূপান্তরিত হয়েছে (এই পয়েন্টগুলিও নেতিবাচক)। নিস!
johanvdw

6

তথ্যটি স্বাক্ষরিত 2 বাইট পূর্ণসংখ্যার বিন্যাসে থাকা তথ্যটি স্বীকৃতি দিতে সমস্যা হওয়ার কারণ বলে মনে হচ্ছে। এটি স্বাক্ষরযুক্ত 2 বাইট পূর্ণসংখ্যার বিন্যাস হিসাবে ভুলভাবে ব্যাখ্যা করা হয়। অতএব আপনার নোডাটার মান -9999 হয়ে যায়: 2 বাইটস = 256 * 256 -9999 = 55537

আমি কী অদ্ভুত বলে মনে করি তা হ'ল ন্যূনতম মান: -9999 এবং সর্বাধিক মান: 5483 উইন্ডো এবং ম্যাক উভয়ের জন্য একই। দেখে মনে হয় যে উভয় ক্ষেত্রেই শিরোনামগুলি তৈরি করার সময় কোনও ডেটা সঠিকভাবে চিহ্নিত করা যায় নি, তবে যখন এটির জন্য এটি ব্যবহার করা হয় তখন ত্রুটি ঘটেছিল।

কার্যসংক্রান্ত:

values(onWindows)[values(onWindows)>128*256]<-values(onWindows)[values(onWindows)>128*256]-256*256
values(onWindows)[values(onWindows)==-9999]<-NA

আরও গভীর খনন করার জন্য: মনে হচ্ছে রাস্টার rgdal কল করে, যার ফলে gdal নিজেই কল করে। সম্ভবত আপনার সিস্টেমে gdal এর আলাদা সংস্করণ রয়েছে। আরজিডিএল লোড করার সময় পরীক্ষা করুন:

Loaded GDAL runtime: GDAL 1.8.0, released 2011/01/12

আমি কেবল লিনাক্সে একটি চেক চেক করেছি: gdal 1.8 ফাইলটি জরিমানা করে, তবে gdal 1.6 ব্যর্থ হয়। সুতরাং এটি gdal দ্বারা সৃষ্ট বলে মনে হচ্ছে না।


লোড জিডিএল রানটাইম: জিডিএল 1.7.2, প্রকাশিত
2010/04/23

উইন্ডোজগুলিতে আমার জিডিএল সংস্করণটি ওএসএক্স-এ আমার উপরে 1.8.0 এর উপরে (1.7.2।) উপরেও উদ্ধৃত একটি is তবে কেন আমি ১..2.২ ব্যবহার করে ডেম ফাইলটি পড়তে পারি না? কোন কাজ আছে?
হলুদক্যাপ

রাস্টারের বিভিন্ন সংস্করণে আমি পৃথক ফলাফল পেয়েছি (উপরে আমার মন্তব্যগুলি দেখুন) সুতরাং আমি সম্পূর্ণরূপে নিশ্চিত নই যে এটি প্রতি জিডিএল ।
রোমান Luštrik

আপনি কীভাবে উইন 7 এ rgdalএকটি আপডেট gdalইনস্টলেশন পেতে পারেন তা বর্ণনা করতে পারেন ? আমি সর্বাধিক সাম্প্রতিক gdalবাইনারি (32 এবং 64 উভয়) ডাউনলোড এবং ইনস্টল করেছি । এগুলি ডিফল্ট স্থানে ইনস্টল করা হয়েছিল তবে rgdalআপডেটের পরেও 1.7.2 ব্যবহার করে।
21:01

Rgdal আপডেট করা সুস্পষ্ট নয় এবং এর জন্য rgdal এর পুনঃসংশোধন প্রয়োজন। আরও তথ্য এখানে
johanvdw

0

যদিও আমি আপনার প্রয়োজনীয়তা সম্পর্কে নিশ্চিত নই, আপনি রূপান্তর করতে পারেন। .GRID ফাইলগুলিতে DEM ফাইলগুলি। তারপরে, আরকিস জিওপ্রোসেসর বা আর স্বয়ংক্রিয়ভাবে গ্রিড রাস্টার হেরফেরের সময় N / A মানগুলির সাথে জিআরআইডি সনাক্ত করবে।


প্রথমে ফাইলটি রূপান্তর করতে অন্য সফ্টওয়্যার ব্যবহার করা সম্ভব তবে আমার উদ্দেশ্যটি নয়। ধারণাটি ছিল কেবলমাত্র ফাইলটি ডাউনলোড, পড়া এবং বিশ্লেষণের জন্য আর ব্যবহার করা।
হলুদক্যাপ

নীতিগতভাবে আপনি আরডি ব্যবহার করে জিডাল্ট ট্রান্সলেট চালাতে পারেন system2
johanvdw
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.