سؤال

أعمل حاليًا (أو على الأقل أخطط) على مشروعين يتعاملان مع كميات كبيرة من البيانات المتكررة.نوع البيانات الذي يعمل بشكل جيد في جدول البيانات أو قاعدة البيانات، ولكنه سيئ في XML.:)

يبدو أن NetCDF خيارًا رائعًا لتنسيق الملف.ومع ذلك، فإن عملي يتم باستخدام لغة C# ولا يوجد تطبيق NetCDF "رسمي" متاح.هناك إصدار Python "رسمي" يمكنني استخدامه مع IronPython.هناك خيار آخر وهو "NetCDF Library for .Net" على CodePlex ولكنه يبدو هادئًا جدًا (http://www.codeplex.com/netcdf).

هل عمل أحد مع أي من هذه المكتبات؟هل يمكنك تقديم أي توصيات؟

هل كانت مفيدة؟

المحلول

أولاً، هل أنت متأكد من أن NetCDF هو الخيار الصحيح؟إذا كنت تريد التفاعل مع البرامج الأخرى التي تحتاج إلى قراءة كميات كبيرة من البيانات وهي تدعم بالفعل NetCDF، فمن المحتمل أن يكون هذا خيارًا رائعًا.لا يوجد العديد من تنسيقات الملفات القياسية والمدعومة جيدًا والتي تدعم المصفوفات الكبيرة متعددة الأبعاد.ولكن إذا كنت ستقرأ وتكتب الملفات من لغة C# فقط، فقد لا يكون هذا خيارًا جيدًا.

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

لسوء الحظ، اختار NetCDF-4 استخدام HDF-5 كتنسيق بياناته.إنه يضيف الكثير من التعقيد ويجعل كتابة محلل NetCDF الكامل بلغة أخرى أكثر صعوبة.HDF-5 هو غرض عام للغاية، وفي رأيي، تمت هندسته بشكل مبالغ فيه - فهو يحاول أن يكون أشياء كثيرة جدًا بالنسبة لعدد كبير جدًا من الأشخاص.لا أوصي بمحاولة العمل معه مباشرة إلا إذا كنت تخطط لقضاء شهر في كتابة اختبارات الوحدة.إذا كان يجب عليك استخدام netCDF-4 / HDF-5 من C#، فسيكون خيارك الواقعي الوحيد هو تغليف مكتبة C باستخدام SWIG أو شيء من هذا القبيل.

لاحظ أن NetCDF for Python هو مجرد غلاف حول كود C، لذا فهو ليس مفيدًا حقًا؛إذا كنت ستستخدم مكتبة C مغلفة، فيمكنك أيضًا كتابة غلاف C# بدلاً من استخدام Python كطبقة وسطى.

نصائح أخرى

أقوم بإضافة هذا الآن لأن هذه كانت الإجابة الأفضل عندما بحثت في Google حول هذا الموضوع.


الوقت المتوقع للوصول وفقًا للرد أدناه، تتوفر الآن مكتبة Microsoft NetCDF أخرى:

https://www.nuget.org/packages/SDSLite

مجموعة البيانات العلمية لايت 1.4.0

هذه مكتبة مشتركة بين الأنظمة الأساسية لمعالجة ملفات netCDF وCSV وTSV.


نظرًا لأنه تم طرح هذا السؤال والإجابة عليه في الأصل، فقد أصدرت Microsoft مكتبة Scientific DataSet التي تدعم NetCDF

http://research.microsoft.com/en-us/downloads/ccf905f6-34c6-4845-892e-a5715a508fa3/

وصف المشروع

تسهل مكتبة SDS على مطوري .Net قراءة وكتابة ومشاركة الكميات القياسية والمتجهات والمصفوفات والشبكات متعددة الأبعاد الشائعة جدًا في النمذجة العلمية.وهو يدعم CSV، NetCDF وتنسيقات الملفات الأخرى

تقوم البرامج التي تستخدم المكتبة بتخزين البيانات ذات الصلة وبيانات التعريف المرتبطة بها في حزمة مدمجة ذاتية الوصف.تأتي المكتبات مع مجموعة من الأدوات المساعدة والحزم:الأداة المساعدة لسطر الأوامر sds وتطبيق DataSet Viewer والوظيفة الإضافية لبرنامج Microsoft Excel 2007 (والإصدارات الأحدث).راجع صفحة الإصدار للحصول على التفاصيل.

والآن أصدرت Microsoft مكتبة أحدث لـ netCDF، متاحة عبر NuGet:

https://www.nuget.org/packages/SDSLite

مجموعة البيانات العلمية لايت 1.4.0

هذه مكتبة مشتركة بين الأنظمة الأساسية لمعالجة ملفات netCDF وCSV وTSV.

في أحد المشاريع نستخدم تطبيق ucar netcdf في لغة c# باستخدام ikvm.يمكن استخدام IKVM "لتحويل" مشاريع Java إلى مكتبات .Net دون استخدام Java VM.لم أقم بأي فحص للأداء ولكنها طريقة بسيطة للحصول على netcdf في c# :).

http://www.ikvm.net/stories.html

http://www.unidata.ucar.edu/downloads/netcdf/netcdf-java-4/index.jsp

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top