أكثر

تصدير أسماء النطاق مع ملف NetCDF في R

تصدير أسماء النطاق مع ملف NetCDF في R


أنا أستخدم R للعمل مع ملفات نقطية متعددة النطاقات وأواجه مشكلة. لقد قمت بتسمية النطاقات ، ولكن عندما أقوم بالتصدير بتنسيق netcdf ، يتم تجريد أسماء النطاقات. هل يعرف أحد كيفية تحديد أسماء النطاق عند تصدير ملفات netcdf؟

على سبيل المثال ، إذا كان لدي كائن نقطي يسمى "عشرة" ، وأكتب الأسماء (عشرة) ، فسأحصل على متجه أسماء النطاقات. إذا كتبت عشرة إلى القرص ثم أعد الاستيراد باستخدام

newraster = brick ("ten.nc") ، ثم يتم تجريد الأسماء. ومع ذلك ، فإن بريك () قادر على استيراد ملفات. nc أخرى جيدة مع الأسماء المرفقة.

الكود الذي أستخدمه هو

z = writeRaster (ten، filename = a، overwrite = TRUE،) ### إخراج إلى. / مجلد خارجي. هذه بيانات شهرية

ذلك لأن NetCDF لا يحتوي على أسماء لكل شريحة في الشريحة الثالثة (والعتمة الأعلى) ، لكن النقطية لديها أسماء. NetCDF له اسم لـ "متغير" (وهو المصفوفة) ، لكن النقطية لها اسم لكل شريحة في المتغير. (هذه هي الفوضى القياسية حيث ندمج حقول البيانات / السمات مع الأبعاد). لا توجد طريقة مباشرة لتخزين هذه الأسماء في NetCDF دون العبث - سيتعين عليك إنشاء فار خافت لتخزينها بشكل أساسي ، ولكن لا يوجد نموذج واضح لاستخدام مثل هذا الشيء في NetCDF.

انظر كيف يحصل المتغير على الاسم ، ولكن عندما ننتقل ذهابًا وإيابًا ، تحصل "الطبقات" الفردية ببساطة على اسم طبقة ، وينطبق varname على المصفوفة بأكملها. إنه نفس الشيء في GDAL ، فهو يفك لف المصفوفة إلى نطاقات متعددة (طبقات) - لا يوجد لدى NetCDF أي مكان يمكن لـ "dsf1" و "dsf2" الذهاب إليه بدون عمل إضافي في كلا الطرفين (ستكون هذه مكافئة لأسماء R للمصفوفة).

المكتبة (النقطية) r0 <- النقطية (البركان) r <- اسم الطوب (r0 ، r0 * 2) (r) <- لصق 0 ("dsf" ، seq_len (nlayers (r))) writeRaster (r، "a.nc ") الفئة: أبعاد RasterBrick: 87، 61، 5307، 2 (nrow، ncol، ncell، nlayers) الدقة: 0.01639344، 0.01149425 (x، y) المدى: 0، 1، 4.943962e-17، 1 (xmin، xmax، ymin ، ymax) تنسيق. المرجع. : مصدر بيانات NA: /rdsi/PRIVATE/home/mdsumner/Git/nectar/a.nc أسماء: X1، X2 غير معروف: 1، 2 varname: نظام متغير ("gdalinfo a.nc") برنامج التشغيل: netCDF / Network Common Data تنسيق الملفات: حجم a.nc 61 ، 87 نظام الإحداثيات هو "الأصل = (0.000000000000000،1.000000000000000) حجم البكسل = (0.016393442622951، -0.011494252873563) البيانات الوصفية: الشرق # long_name = الاتجاه الشرقي # الوحدات = متر NC_GLOBAL # Conventions = CF-1.4 NC_GLOBAL # created_by = R ، الحزم ncdf و raster (الإصدار 2.3-6) NC_GLOBAL # date = 2014-11-16 07:15:24 NETCDF_DIM_EXTRA = {value} NETCDF_DIM_value_DEF = {2،4} NETCDF_DIM_value_VALUES = {1،2} شمالاً # long_name = الشمال الشمالي # الوحدات = قيمة المتر # long_name = قيمة القيمة # الوحدات = متغير غير معروف # _FillValue = -3.4e + 38 متغير # long_name = متغير متغير # max = {195،390} متغير # min = {94،188} متغير # مفقود_قيمة = -3.4e + 38 إحداثيات الركن: أعلى اليسار (0.0000000 ، 1.0000000) أسفل اليسار (0.0000000 ، 0.0000000) أعلى اليمين (1.0000000 ، 1.0000000) أسفل اليمين (1.0000000 ، 0.0000000) مركز (0.5000000 ، 0 .5000000) كتلة النطاق 1 = 61x1 النوع = Float32، ColorInterp = قيمة NoData غير المحددة = -3.39999999999999996e + 38 البيانات الوصفية: _FillValue = -3.4e + 38 long_name = متغير max = {195،390} min = {94،188} missing_value = -3.4e +38 NETCDF_DIM_value = 1 NETCDF_VARNAME = متغير النطاق 2 Block = 61x1 النوع = Float32 ، ColorInterp = قيمة NoData غير المحددة = -3.39999999999999996e + 38 البيانات الوصفية: _FillValue = -3.4e + 38 long_name = أقصى متغير = {195،390} دقيقة = {94،188} دقيقة missing_value = -3.4e + 38 NETCDF_DIM_value = 2 NETCDF_VARNAME = فئة لبنة متغيرة ("a.nc"): أبعاد RasterBrick: 87 ، 61 ، 5307 ، 2 (nrow ، ncol ، ncell ، nlayer) الدقة: 0.01639344 ، 0.01149425 (x ، y) المدى: 0 ، 1 ، 4.943962e-17 ، 1 (xmin ، xmax ، ymin ، ymax) تنسيق. المرجع. : مصدر بيانات NA: /rdsi/PRIVATE/home/mdsumner/Git/nectar/a.nc أسماء: X1 ، X2 غير معروف: 1 ، 2 varname: متغير

وبطبقة واحدة فقط ، من الواضح أين ينطبق اسم "dsf" - على المصفوفة بأكملها:

مكتبة (نقطية) r <- أسماء نقطية (بركان) (r) <- "dsf" writeRaster (r، "a.nc") فئة: أبعاد الطبقة النقطية: 87، 61، 5307 (nrow، ncol، ncell) الدقة: 0.01639344 ، 0.01149425 (x، y) مدى: 0، 1، 4.943962e-17، 1 (xmin، xmax، ymin، ymax) تنسيق. المرجع. : NA data source: a.nc names: dsf zvar: dsf system ("ncdump -h a.nc") netcdf a {features: easting = 61؛ اتجاه الشمال = 87 ؛ المتغيرات: شرقاً مزدوجاً (شرقاً) ؛ شرقا: الوحدات = "متر" ؛ شرقا: long_name = "شرقًا" ؛ الشمال المزدوج (الشمال) ؛ اتجاه الشمال: الوحدات = "متر" ؛ اتجاه الشمال: long_name = "northing" ؛ تعويم dsf (شمالاً ، شرقاً) ؛ dsf: _FillValue = -3.4e + 38 ؛ dsf: missing_value = -3.4e + 38 ؛ dsf: long_name = "dsf" ؛ dsf: دقيقة = 94. ؛ dsf: الحد الأقصى = 195. ؛

بدون أن تكون شديد الأهمية (نظرًا لأن البيانات النقطية رائعة) ، أعتقد أن الأسماء (النقطية) تم تطبيقها بشكل خاطئ ، إذا كان نموذج البيانات النقطية أكثر عمومية ، فسوف يعطي اسمًا واحدًا فقط بغض النظر عما إذا كانت الشبكة ثلاثية الأبعاد أو رباعية الأبعاد أو أكثر ، ولكن إذا كنت نوع مختلف من المتغيرات - قل "درجة الحرارة" و "الضغط" ، فهذان سيكونان الأسماء ، بغض النظر عن أبعاد البيانات. هذا مصدر رئيسي للارتباك في المياه العكرة بين نظم المعلومات الجغرافية وعوالم النمذجة الأخرى.