أكثر

مشكلة عرض WMS مع EPSG: 3301 إسقاط باستخدام Leaflet


أحاول إظهار EPSG: 3301 طبقة wms باستخدام نشرة ، ولكن ليس لديها نجاح لفترة طويلة. http://kaart.maaamet.ee/wms/alus؟service=WMS&version=1.3.0&request=GetCapabilities هذا هو الكود الخاص بي:

تهيئة الوظيفة () {var crs = L.CRS.proj4js ('EPSG: 3301'، '+ proj = lcc + lat_1 = 59.33333333333334 + lat_2 = 58 + lat_0 = 57.51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + ellps = GRS80 + towgs84 = 0،0،0،0،0،0،0 + وحدة = m + no_defs '، تحويل L جديد (1 ، -40500 ، -1 ، 7017000)) ؛ var wmsMap = L.tileLayer.wms ('http://kaart.maaamet.ee/wms/alus' ، {الطبقات: 'MA-ALUS' ، التنسيق: 'image / png' ، maxZoom: 14 ، minZoom: 3 ، ContinuousWorld: true، transparent: true})؛ var map = L.map ('map' ، {الطبقات: [wmsMap] ، ContinuousWorld: true ، center: new L.LatLng (58.66 ، 25.05) ، التكبير: 2 ، maxZoom: 13 ، minZoom: 1 ، maxBounds: new L .LatLngBounds ([[56.42، 20.87]، [60.9، 29.23]])، crs: crs}) ؛

يرجى من أي شخص التحقق من الكود الخاص بي لمعرفة ما هو الخطأ فيه ؟؟ أرى منطقة الخريطة ، انظر الإحالة ومبدل الطبقة إذا قمت بإضافتهما ، لكن ليس خريطة.


إليك رمز عمل لمشكلتك: http://jsfiddle.net/GFarkas/rkhzfguz/1/

بعض التفسيرات على الأسطر الخاطئة:

var crs = L.CRS.proj4js ('EPSG: 3301'، '+ proj = lcc + lat_1 = 59.33333333333334 + lat_2 = 58 + lat_0 = 57.51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + ellps = GRS80 + towgs84 = 0،0،0،0،0،0،0 + وحدات = م + لا تعاريف ، تحويل L جديد (1 ، -40500 ، -1 ، 7017000)) ؛

بادئ ذي بدء ، اسم الوظيفة الصحيح كما ترون في دليل مشروع Proj4Leaflet هوL.Proj.CRS. أيضًا ، عليك الاتصال بـالجديدمثال للدالة (يوجد هنا مقال رائع حول المنشئات والمثيلات).

الحجتان الأوليانL.Proj.CRSيأخذ المُنشئ اسم الإسقاط وتعريفه. حتى الان جيدة جدا. ومع ذلك ، فإن الوسيطة الثالثة والأخيرة هي موضوع الخيارات. بشكل أكثر وضوحًا ، عليك وضع معلمات الخيار بين قوسين واستدعائها بأسمائها الخاصة (مثلالتحول: تحويل L جديد (1، -40500، -1، 7017000)). تسمى طريقة الاستدعاء هذه مع النقطتين KVP (أزواج المفتاح والقيمة).

المشكلة الأخيرة هي أنه يجب عليك تحديد الدقة على كل مستوى تكبير. لقد حددت 12 مستوى تكبير (3-14) ، لذلك عليك تحديد 12 دقة أو قيمة مقياس. عند مستوى التكبير 0 ، تبلغ الدقة المعتادة 8192 م ، وتنخفض إلى النصف عند كل مستوى تكبير.

سيبدو الرمز النهائي لهذا الجزء كالتالي:

var crs = new L.Proj.CRS ('EPSG: 3301'، '+ proj = lcc + lat_1 = 59.33333333333334 + lat_2 = 58 + lat_0 = 57.51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + ellps = GRS80 + towgs84 = 0،0،0،0،0،0،0 + وحدة = m + no_defs '، {الدقة: [1024 ، 512 ، 256 ، 128 ، 64 ، 32 ، 16 ، 8 ، 4 ، 2 ، 1 ، 0.5 ] ، التحول: تحويل L جديد (1 ، -40500 ، -1 ، 7017000)}) ؛

باقي الكود وظيفي ، ولكن لدي ملاحظتان يجب أن تضعهما في اعتبارك:

يعد تعيين عرض الخريطة بشكل فردي باستخدام رمز أسهل وأقلmap.setView ()

الكود الأصلي:

المركز: جديد L.LatLng (58.66 ، 25.05) ، تكبير: 2 ،

map.setView ()طريقة:

map.setView ([58.66، 25.05]، 2) ؛

لا يجب عليك استدعاء مستوى تكبير / تصغير لا تحتويه طبقتك ، لأنه سينتج عنه خلفية رمادية. لذلك إذا لم يكن لديك طبقات أخرى في مخزونك ، فيجب عليك استدعاء مستوى التكبير 3 بدلاً من مستوى التكبير 2. ثم ستظهر خريطتك بشكل طبيعي ولن تشعر بالارتباك إذا كانت التعليمات البرمجية الخاصة بك تعمل أم لا.


تظهر الصور باللون الأحمر لأن الطلب لم ينتج عنه صورة خريطة صالحة.

هذه هي الطريقة التي تصحح بها مثل هذه المشكلة:

  • افتح الصفحة في FireFox أو Chrome.
  • ثم احفظ إحدى الصور الحمراء على القرص.
  • افتح الملف المحفوظ في محرر نصي.

الآن ، يبدو أنك لا تطلب صورًا ، لكنك تطلب إمكانيات الخادم.

من المحتمل أنك قمت بلصق عنوان URL الخاص بالخادم في التعليمات البرمجية الخاصة بك ، ولكنك قمت بلصق عنوان URL الذي يطلب ما يمكن للخادم القيام به وما يدعمه.

لذلك ، ما عليك سوى إزالة هذا الجزء من عنوان URL: request = GetCapabilities

بحيث يصبح: http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer؟service=WMS

احفظ HTML ، وقم بالتحديث.

حسنًا ، نطلب الآن صورًا بالفعل ، لكنك ما زلت لا تحصل على أي شيء.

لذا ، افعل نفس الشيء. احفظ إحدى الصور الحمراء وشاهد ما بداخلها.

هذه المرة هناك رسالة خطأ بالداخل:

يبدو أنك تطلب طبقة تسمى الولايات ، لكن هذه الطبقة غير موجودة.

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


الانتقال من النظم المرجعية المكانية الثابتة في عام 2022

هذا منشور بواسطةJimBaumann في ARCUSER.

في عام 2008 ، أعلنت هيئة المسح الجيوديسي الوطنية (NGS) في خطتها التي تبلغ مدتها 10 سنوات عن استبدال اثنين من المساند الوطنية للبلاد: مسند أمريكا الشمالية لعام 1983 (NAD 83) ، والمرجع الهندسي المستخدم أساسًا للمواضع الأفقية ، والمرجع الهندسي لأمريكا الشمالية مسند عام 1988 (NAVD 88) ، المسند الرأسي المستخدم لتحديد الارتفاعات التقويمية (الارتفاعات).

"نترك وراءنا إلى الأبد فكرة أنظمة الإسناد المكاني الثابتة وغير المتغيرة. لقد كان هذا معروفًا جيدًا في المجتمع الجيوديسي لبعض الوقت. ". اقرأ المزيد عن هذا النشاط أدناه.


لا تتم محاذاة طبقة الخلفية OL3 gwc مع مجموعة الشبكة ، وتعمل في OL2

& # 8217 م باستخدام GeoServer 2.10.1 و GeoWebCache المدمج بها وأحاول استخدام طبقة خلفية مخزنة مؤقتًا في مجموعة شبكات مخصصة مع epsg محلي للعمل في تطبيق Ol3 بسيط:

ينتج عن هذا خريطة ذات شكل غامض & & quot؛ مقسمة & quot؛ نظرة على كل مستوى تكبير / تصغير (ولكن المربعات التي تم إرجاعها تبدو جيدة بالفعل ويبلغ .getResolution بالدقة الصحيحة). تقول GWC & quotdoes لا تتوافق مع مجموعة الشبكة & quot لكل getMap.

إذا سمحت لـ OL بحساب مستويات التكبير / التصغير ، فستبدو الخريطة الأساسية جيدة.

بدلاً من ذلك ، أحصل على http 400 طلب سيئ على طلبات getMap.

تُستخدم الطبقة الأساسية كخريطة خلفية في تطبيق ol2 المحدد بنفس الطريقة ، أي مدى وسلسلة من الدقة ، وهي تعمل بشكل جيد.

ما هو المطلوب في OL3 للاستفادة من طبقة الخلفية المخزنة مؤقتًا؟

إجابة واحدة

هناك بعض الأشياء التي تحتاج إلى تجربتها.

تأكد من أنك قمت بتكوين tilegrid الخاص بك بشكل صحيح داخل geowebcache.xml وأنك تستخدم نفس الدقة في الجانب ol3

ضمن تكوين العرض ، أضف الحد الأدنى ، والحد الأقصى للإعادة. مثل ذلك

ضمن تكوين طبقة التجانب ، ضع في اعتبارك تكوين tilegrid الذي فقدته وتعريف SRS. أعتقد أن معرفات المصفوفة مهمة.

من أجل حساب معرفات المصفوفة ، تحتاج إلى إنشاء دالة مساعدة. مثل ذلك


مشكلة عرض WMS مع EPSG: 3301 إسقاط باستخدام Leaflet - Geographic Information Systems

بقلم كريس جودل | 14 مايو 2015

RAS Mapper عبارة عن نافذة في HEC-RAS تتيح لك المعالجة المسبقة للمناطق ثنائية الأبعاد ، ونتائج الخرائط ، وإدارة صور الخلفية. في الإصدارات المستقبلية من HEC-RAS ، سيصبح RAS Mapper أكثر انتشارًا في تجربة نمذجة HEC-RAS. كما أفهمها ، قد يتم في النهاية دمج RAS Mapper ونافذة محرر الهندسة لتشكيل واجهة الواجهة الأمامية لـ HEC-RAS ، لتحل محل "نافذة RAS الرئيسية" الأيقونية.

لكن هذه تكهنات. ما لا يعد تخمينًا هو أنه إذا كنت تريد استخدام HEC-RAS 5.0 لأي شيء أكثر من نموذج أساسي جدًا ، فلا يوجد طريقة للتغلب على استخدام RAS Mapper ، وبالتالي ... ملف الإسقاط! يحدد ملف الإسقاط نظام إحداثيات جغرافي معين وإسقاطًا وهو شيء جديد إلى حد ما بالنسبة لنا لمصممي HEC-RAS (لقد كان في الواقع جزءًا من RAS Mapper منذ بدايته ، ولكن الآن مع النمذجة ثنائية الأبعاد وصور الويب في الإصدار 5.0 ، أصبح RAS Mapper جزءًا لا يتجزأ من نمذجة HEC-RAS). يتطلب ملف الإسقاط أن نعرف شيئًا عن رسم الخرائط الجغرافية المكانية (أي GIS) ، والذي لم يكن علينا معرفته كثيرًا من قبل كمستخدمي RAS. ولكن إذا كنت ترغب في استخدام RAS Mapper ، وانت كذلك، عليك أن تفهم ما هو ملف الإسقاط وكيفية الحصول عليه. بدونها ، يكون RAS Mapper عديم الفائدة إلى حد كبير. تؤدي إضافة ملف الإسقاط إلى مشروع RAS إلى إنشاء المرجع الجغرافي المكاني للمشروع. ملفات الإسقاط لها الامتداد * .prj. احرص على عدم الخلط بين هذا وبين ملف مشروع HEC-RAS ، أيضًا بالملحق * .prj. كلاهما موجود في دليل مشروع HEC-RAS الخاص بك ، ولكن فقط ملف الإسقاط المنسق بشكل صحيح سيعمل في RAS Mapper لإعداد العرض الخاص بك.

ملف الإسقاط هو في الحقيقة مجرد ملف نصي بسيط يحتوي على كلمات رئيسية بتنسيق معين. في الواقع ، هو عبارة عن سلسلة واحدة مكتوبة بتنسيق "نص معروف جيدًا" ، أو WKT. إنه بسيط وسهل القراءة وقد تم إنشاؤه بواسطة افتح اتحاد نظم المعلومات الجغرافية. هذا ما يبدو عليه ملف الإسقاط من الداخل. لاحظ أن هناك بعض الكلمات الأساسية ، التي تم تحديدها بكلمات الأحرف الكبيرة ، متبوعة ببعض البيانات المتعلقة بالكلمة الرئيسية ، الموجودة بين قوسين []. & # 8217ve قمت بترميزها بالألوان لتسهيل رؤية ما يتماشى مع ماذا. يشير اللون الأرجواني إلى أعلى ترتيب في التسلسل الهرمي ، متبوعًا باللون الأزرق ، ثم الأخضر ، ثم الأحمر. بمعنى آخر ، الكلمة الأساسية الحمراء هي كلمة "طفل" لكلمة أساسية خضراء ، والأخضر هو طفل إلى أزرق ، والأزرق هو طفل إلى أرجواني.

كل كلمة رئيسية والبيانات التي تليها تسمى "جملة". البند الأول والأساسي ، PROJCS ، يرمز إلى نظام الإحداثيات المتوقعة. يتكون نظام الإحداثي المسقط من البنود الفرعية التالية:

1. نظام الإحداثيات الجغرافية (GEOGCS) ، الذي يقوم على درجات خطوط الطول والعرض ويحتوي على مرجع الإسناد الأفقي (DATUM) ، وخط الطول المرجعي لقياسات خطوط الطول (PRIMEM). يحتوي DATUM أيضًا على وصف لشكل الأرض (SPHEROID) ، والذي في المثال أعلاه هو Clarke Ellipsoid لعام 1866. يتم استنتاج الوحدات (UNIT) هنا فقط لـ GEOGCS ، في هذه الحالة الدرجات.
2. الإسقاط (PROJECTION) ، وهو الإسقاط من الإحداثيات الجغرافية (خطوط الطول / العرض) إلى الإحداثيات المتوقعة. هذا هو في الأساس كيفية عرض الشكل الكروي ثلاثي الأبعاد (الأرض) على وسط عرض ثنائي الأبعاد. في المثال أعلاه ، مستعرض مركاتور محددًا ، والذي يستخدم مركاتور مستعرض عالمي (UTM) نظام الإحداثيات.

3. قيم معلمات الإسقاط المختلفة (PARAMETER). تتم تسمية المعلمة في اقتباسات متبوعة بقيمتها
4. وحدات لنظام الإحداثيات المسقط (UNIT). هنا يتم استخدام العدادات كوحدة خطية مع عامل تحويل "1". عامل التحويل يحول الوحدات الموصوفة إلى أمتار. إذا تم استخدام "FOOT_US" ، فسيكون معامل التحويل 0.30480060960121924.

قد تكون هناك بعض البنود الإضافية في ملف الإسقاط ، ولكن يبدو أن البنود المذكورة أعلاه نموذجية. يمكن العثور على جميع الكلمات الأساسية المستخدمة في تنسيق WKT مع الأوصاف في GeoAPI هنا.
يمكنك كتابة ملفات الإسقاط الخاصة بك وملفات يقدم GeospatialPython.com طريقة (هناك أمثلة أخرى هناك ، فقط جوجل). ومع ذلك ، فإنه من الأسهل والأكثر عملية العثور على ملف إسقاط تم تجميعه بالفعل واستخدامه. إذا كان لديك مشروع HEC-RAS محدد جغرافيًا بالفعل ، فإن كل ملف شكل مستخدم لإنشاء مكونات هندسية (خط الوسط الانسيابي ، خطوط xscutlines ، خطوط التدفق ، إلخ) يأتي مع ملف إسقاط. فقط ابحث عن مكان تخزينه على جهاز الكمبيوتر الخاص بك واستخدمه.

إذا لم يكن لديك ملفات GIS التي تم استخدامها لإنشاء مشروع HEC-RAS الذي تم إحداثه جغرافيًا ، فيمكنك العثور على ملفات الإسقاط في ثلاثة أماكن مختلفة على الأقل: ArcGIS 10.0 أو أقدم ، spatialreference.org ، و EPSG Projection Database. إذا كنت تعرف الآخرين ، يرجى التعليق أدناه!

عند استخدام أي من هذه المصادر ، تأكد من اختيار ملف الإسقاط الصحيح. ستعرف ما إذا كان هو الشخص المناسب جلب صور الويب إلى RAS Mapper والتحقق للتأكد من أن كل شيء يصطف من الناحية المكانية. يتضمن ArcGIS (الإصدارات السابقة للإصدار 10.1) مجلد أنظمة الإحداثيات الذي يحتوي على أكثر من 5000 نظام إحداثيات جغرافي ومتوقع وعمودي. لسوء الحظ ، لا تأتي الإصدارات الأحدث من ArcGIS مع هذا المجلد. إذا كان لديك ArcGIS 10.1 أو أحدث أو لم يكن لديك ArcGIS على الإطلاق ، يمكنك الوصول إلى قاعدة بيانات كبيرة لأنظمة الإسناد المكاني على http://spatialreference.org/

إذا انتقلت إلى spatialreference.org ، فتأكد من التحديد فقط من EPSG أو IAU2000 أو مراجع spatialreference.org. تحتوي مراجع ESRI فقط على عبارة GEOGCS في ملف الإسقاط وليست عبارة PROJCS الكاملة. لن يعملوا في RAS Mapper. بمجرد العثور على المرجع الذي تريده ، انقر فوقه ، ثم حدد "ملف .PRJ" من قائمة التنسيقات المتاحة. سيتم بعد ذلك تنزيل ملف الإسقاط على جهاز الكمبيوتر الخاص بك وستكون جاهزًا لاستخدامه في RAS Mapper. يوجد مربع بحث ملائم يسمح لك بالبحث عن الكلمات الرئيسية للرجوع إليها. على سبيل المثال ، إذا كان مشروعك في هاواي وتعرف أن مرجعك الأفقي هو NAD83 ، فيمكنك إدخال الكلمات الرئيسية: Hawaii NAD83 ، انقر فوق الزر "بحث" وسترى قائمة المراجع المكانية التالية:

تتوفر أيضًا على الإنترنت قاعدة بيانات EPSG Projection ، المستضافة على GoogleCode بواسطة geospatialpython.org. هنا تجد & # 8217ll ملفًا نصيًا للعديد من ملفات الإسقاط بتنسيق WKT الصحيح الذي يمكن نسخه ولصقه بسهولة في ملف الإسقاط الخاص بك.

بمجرد تحديد ملف الإسقاط وتعيينه إلى RAS Mapper ، تحقق جيدًا من صحة ملف الإسقاط إضافة صور الويب. إذا اصطف كل شيء ، فأنت على ما يرام. يوضح الشكل أدناه مجموعة بيانات Muncie في RAS Mapper ، مع تعيين ملف إسقاط غير صحيح.

من الواضح أن خطوطنا الانسيابية والمقاطع العرضية في هذا المثال ليست متماشية بشكل صحيح في Muncie Indiana حيث تنتمي. لقد وصلنا ملف الإسقاط غير الصحيح إلى وسط ألبرتا بكندا!

إعادة تعيين ملف الإسقاط الصحيح يعيد النموذج إلى الإسناد المكاني الصحيح.

هل يعرف أي شخص أي مصادر أخرى لملفات الإسقاط يمكننا استخدامها في HEC-RAS؟ إذا كان الأمر كذلك ، يرجى التعليق أدناه.

تعليقات

مجهول

لقد رأيت منشورك على الإسقاطات على مدونتك واعتقدت أنه قد يكون من الجيد الإشارة إلى أنه يمكنك تحويل النظام الإحداثي للنموذج في HEC-RAS الآن.

كريس جودل

كام أكرمان

يدعم HEC-RAS تنسيق esri & # 39s WKT الخاص بـ PRJ. استخدام تنسيقات WKT الأخرى هو YMMV.

كام أكرمان

يدعم HEC-RAS حاليًا تنسيق esri & # 39s WKT. تنسيقات WKT الأخرى هي YMMV.

كريس جودل

شكرا على الرأس & # 39s up. أعتقد أن جميع ملفات prj على spatialreference.org تتبع التنسيق المستخدم بواسطة HEC-RAS (على الأقل تلك التي قمت بفحصها) ، باستثناء (من المفارقات) 447 مراجع ESRI. لديهم فقط شرط GEOGCS ، وليس أي من الآخرين.

مجهول

هل يمكنني تحميل رابط WMS الخاص في RasMapper؟

لأن النموذج الخاص بي تم إنشاؤه في S-JTSK / Krova East North و bacgkround / WMS (ortophoto ، صورة القمر الصناعي) في WGS-84. عندما أقوم بتحميل bacgkround ، يتم إزاحة النموذج الخاص بي - هذا الخطأ يمكن التنبؤ به.

كريس جودل

يجب أن يكون الإسقاط الذي تم إنشاء نموذجك فيه والإسقاط الذي تقوم بتحميله في RAS Mapper هو نفسه.

روبرت س

أكد كريس فكرتي:
عندما تعمل على الإسقاطات الإحداثية الأخرى مثل WGS84 ، لذلك لا يمكنك استخدام خوادم صور WMS (RasMapper- أدوات). في الوقت الحاضر ، لا يدعم RasMapper الانضمام إلى WMS الأخرى.
يجب عليك حل الخلفية باستخدام صورة ثابتة (صورة ذات مرجعية جغرافية)

آمل أن أكتبه جيدًا يا كريس!

كريس جودل

روبرت. أعتقد أنني أفهم سؤالك بشكل أفضل (بمساعدة كاميرون في HEC). إذا ذهبت إلى دليل مشروع HEC-RAS ، فسترى مجلدًا يسمى GDAL. هناك ، سترى مجلدًا يسمى Web Map Services. هناك سترى ملف xml لكل خدمة صور ويب متوفرة في HEC-RAS. إذا كنت ترغب في إضافة المزيد من خدمات صور الويب ، يمكنك إنشاء xml الخاص بك ووضعه في هذا الدليل. يجب أن تظهر بعد ذلك في نافذة صور الويب في HEC-RAS. إذا كنت قادرًا على القيام بذلك باستخدام صور الويب الخاصة بك ، فيرجى إعادة توجيه xml إلي حتى نتمكن من مشاركتها مع الآخرين.

مايك تشيلسون

باستخدام ArcGIS 10.1+ ، أضف ببساطة إسقاطًا إلى قائمتك المفضلة وسيتم إنشاء ملف إسقاط ووضعه في:
ج: المستخدمون & quotUserName & quotAppDataRoamingESRIDesktop10.2ArcMapCoordinate Systems

جيريت ك.

أنا آسف جدًا لأي أجزاء مشفرة من هذه الرسالة ، ولكن بعد بضع ساعات من التحقيق في سبب عدم عرض EOV المجري (الإسقاط الوطني الموحد) بشكل صحيح في RAS Mapper ، اكتشفت أن جميع المعلومات للقيام بذلك بشكل صحيح متاحة في مكتبة GDAL التي يستخدمها RAS Mapper.

قد يكون الإسقاط الخاطئ ناتجًا في الأصل عن خطأ في قيمة معلمة في مصدر المعلومات ، ولكن تم تصحيح ذلك منذ فترة طويلة والتصحيح جزء من ملف مكتبة GDAL & # 39datum_shift.csv & # 39.

يوجد في الواقع 5 (!) معلمات تحويل بيانات مسجلة في هذا الملف (& quotSEQ_KEY & quot 350 إلى & quotSEQ_KEY & quot 354) وأي منها سيكون أكثر دقة في التحول من HD72 إلى WGS 84 ثم التنفيذ الحالي.

إذن ، هل مكتبة GDAL مطبقة جزئيًا فقط؟ أم أن هناك خطأ يمنع RAS Mapper من تطبيق إزاحة البيانات المفضلة المحددة في ملف مكتبة GDAL & # 39datum_shift.csv & # 39؟

كريس جودل

جيريت - شكرا على المعلومات. لست متأكدًا مما يمكن أن تكون عليه المشكلة. سأوجه البعض الآخر إلى سؤالك لمعرفة ما إذا كان بإمكاننا الحصول على إجابة جيدة.

مرحبا كريس ، شكرا على هذا المنشور. أواجه مشكلة في تعويض هندسي عن نهر / تضاريس WMS (انظر الرابط أدناه). لقد عثرت & # 39 على حل بديل عن طريق تحرير ملف .prj يدويًا ، ولكن هذا سيؤثر على إسقاط النموذج ثنائي الأبعاد ، على سبيل المثال خرائط الفيضانات؟

كريس جودل

اهلا مايك. هذا سؤال جيد. أنا & # 39m لست متأكدا كيف ستعمل. حدسي تقول إنه يجب أن يعمل بشكل جيد ، لكنني أعتقد أن هذا مجرد واحد من تلك الأشياء التي يجب عليك تجربتها لتتأكد من معرفتها. أعلمني كيف سيسير الامر.
كريس

مجهول

هل ملف الإسقاط مهم فقط لـ RAS-Mapper ، أو الهندسة أيضًا؟ لقد ورثت نموذج RAS الذي من المفترض أن يعمل ، حتى أنهم أرسلوا نتائج التشغيل النهائي. أنا غير قادر على تشغيله بسبب خطأ هندسي & # 8211 يبدو أن بعض مجاري الأنهار لا تصطف بشكل صحيح مع المقاطع العرضية المرتبطة بها. كما تقع بعض السدود تحت ارتفاع التضاريس. أعتقد أن هذه المشكلات قد تكون بسبب نقص ملف الإسقاط.

كريس جودل

يبدو وكأنه أخطاء في الإعداد الهندسي. لا ينبغي أن تفعل شيئا مع الإسقاط.

كولين هولدغرافير

لدي مشروع حيث كان RAS Mapper يعرض الخريطة على ما يرام باستخدام ملف إسقاط UTM Zone 15 NAD83 (متر) ، ولكن عندما قمت بتحويل المشروع من أمتار إلى أقدام باستخدام وحدات مشروع Options- & gtConvert ، لم تعد الخريطة تعمل. كيف يمكنني تغيير ملف العرض الخاص بي للمشروع الجديد بحيث يعرض المشروع في المكان المناسب؟ أم سيكون من المنطقي تنزيل ملف إسقاط جديد بناءً على تحويل الوحدة؟ وإذا كان الأمر كذلك ، فماذا سيكون هذا الإسناد الأفقي الجديد؟

كريس جودل

يجب عليك & # 39 الحصول على ملف عرض جديد (أو إنشاء ملف خاص بك) يحتوي على نظام الوحدة الصحيح.

كولين هولدغرافير

الشيء هو أن الإسقاط لا يزال UTM Zone 15 NAD83 (مترًا) ، ولكن تم تحويله الآن إلى أقدام.

هذه هي الطريقة التي تغيرت بها الإحداثيات بعد تحويل الوحدة عند نقطة معينة حيث يتقاطع المقطع العرضي مع وصول النهر:

(في الأصل) الأمتار: 451305.5383 ، 4625115.6106
(بعد التحويل) الأقدام: 1480661.2147 ، 15174263.8183

هنا & # 39 s ملف إسقاط الشكل الذي كنت أستخدمه قبل إجراء التحويل:

كيف ينبغي تعديل هذا لجعله حتى لا ينتهي مشروعي في منتصف المحيط المتجمد الشمالي بعد تحويل الوحدة؟ & # 39ve حاولت تعديل UNIT [& quotMeter & quot، 1]] لتقول UNIT [& quotFeet & quot، 3.28084]] ولكن لا يبدو أن ذلك يحل المشكلة.

بن سنايدر

لقد كنت أحاول حل تحول مسند أفقي غامض يقوم به RAS لبعض الوقت. أقوم بتصدير سطح من Civil 3D باستخدام CA State Plane Zone 1 ، US Feet ، EPSG 2225. بالنسبة لآخر اختبار عملي ، قمت بعمل ملف إسقاط لـ RAS الذي يحتوي على نفس بيانات الإسقاط مثل الصورة المدنية ثلاثية الأبعاد tif. تقول & quotSame As Project & quot عندما أصنع تضاريس جديدة. ثم عندما أفتح محرر الهندسة وألقي نظرة على إحداثيات معلم ، فإنه يقع بحوالي 12 قدمًا في الاتجاه الشرقي وقليلًا في الشمال. لا يكون التحول موجودًا عندما أحضر tif إلى GIS ، لذلك لا يبدو أنه يمثل مشكلة في التصدير المدني ثلاثي الأبعاد. أنا & # 39m متعثر! أيه أفكار؟ إنها مشكلة نظرًا لأنه يتم بعد ذلك نقل جميع البيانات النقطية لنتائج RAS وعدم اصطفافها.

بن سنايدر

في الواقع ، لقد نجح ذلك! قد يحتاج مستخدمو RAS الذين يعملون مع Civil 3D إلى التأكد من أن SRS هو & quot نفس المشروع & quot لتجنب حدوث تحول غامض. ولكن طالما أنهم متماثلون تمامًا ، فيجب أن يكونوا على ما يرام.

مجهول

مرحبا ، أنا بحاجة لمساعدتكم. لا يمكنني جعل ملف prj يعمل من: & quothttp: //spatialreference.org/&quot. أحتاج لـ & quotEPSG: 22174: POSGAR 98 / Argentina 4 & quot
لا أستطيع أن أجد الخطأ. شكرا جزيلا.

مجهول

تم إعداد مشروع HEC-RAS على النحو التالي:

• الوحدات: العادة في الولايات المتحدة
• مجموعة بيانات LiDAR
o إسقاط طائرة الدولة
o الوحدات الأفقية = أقدام دولية
• الإسقاط المستخدم في RAS Mapper
o إسقاط طائرة الدولة
o الوحدات الأفقية = متر

تصطف الصور الجوية بشكل صحيح. ولكن عند استخدام أداة القياس في RAS Mapper ، فإنها تعطي المسافات بالأقدام ولكن القياس يشير إلى أنه يجب أن تكون بالأمتار. على سبيل المثال ، المسافة التي يبلغ قياسها 10 أقدام باستخدام أداة القياس هي في الواقع 10 / 0.30458 = 32.8 قدم. هل سينتج عن هذا النموذج نتائج صحيحة أم أن المشهد الذي يتم من خلاله توجيه التدفق يتقلص أساسًا بعامل 3.28 (1 / 0.3048)؟

كريس جودل

أعتقد أن هذا مجرد خطأ وأنت بخير. ولكن تأكد من التحقق مرة أخرى.

لقد تحدثت عن الوحدة في هذا المنشور.

لذا لدي سؤال مشابه حول الوحدة مع HECRAS.

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

هل يمكنني استخدام هذا النموذج ببساطة عن طريق تحويل الوحدة إلى SI ، أم أن هذه ليست طريقة صحيحة لاستخدام هذا النموذج. الطريقة الصحيحة لاستخدام هذا النموذج في كندا هي إعداد تدفق المدخلات كوحدة إنجليزية ، وتشغيل النموذج ، وقراءة النتائج في أي وحدة نختارها. أعتقد أن هذا الفكر منطقي ، وأكده خبراء في CivilGEO. لكن كريس ما زلت أحب أن أعرف أفكارك.

كريس جودل

مرحبًا ويست. من الناحية النظرية ، يمكنك فقط تحويل النموذج الخاص بك إلى نظام وحدة مختلف باستخدام خيار تحويل وحدات المشروع من نافذة RAS الرئيسية. ومع ذلك ، سأكون حذرًا جدًا عند القيام بذلك ، لأنه من المعروف أن RAS بها بعض الأخطاء في أداة التحويل هذه. على الأقل ، تحتاج إلى التحقق من كل شيء بعد التحويل للتحقق من أنه تم بشكل صحيح. ولا تنس تحديث ملف العرض إذا لزم الأمر. فاز RAS & # 8217t تلقائيًا بهذا.


إنشاء خريطة بسيطة بملء الشاشة

عندما تعمل في تطبيقات الخرائط ، فإن المهمة الأولى والأهم هي إنشاء الخريطة نفسها. تلعب الخريطة دورًا أساسيًا في تطبيقك ، وهذا هو المكان الذي ستضيف فيه البيانات وتتخيلها.

ستوجهك هذه الوصفة خلال عملية إنشاء أول تطبيق خرائط ويب بسيط للغاية.

يستعد

تتلخص البرمجة باستخدام OpenLayers بشكل أساسي في كتابة HTML و CSS وبالطبع JavaScript. نحتاج ببساطة إلى محرر نصوص لبدء ترميز وصفاتنا. تتوفر مجموعة متنوعة من برامج تحرير النصوص ، لذا اختر ما يناسبك!

سيتضمن ملف HTML الخاص بنا بعض أصول مكتبة OpenLayers. على الرغم من أنك سترى أمثلة لدينا تشير إلى هذه الأصول ، فإننا لن نعرض لك محتويات الملفات لهذه الملفات الكبيرة في هذا الكتاب. للمتابعة ، ابدأ بتنزيل أحدث كود مصدر لـ OpenLayers (http://openlayers.org/download/).

يمكنك العثور على الكود المصدري لهذا المثال في ch01 / ch01-full-screen-map /.

كيف نفعل ذلك & hellip

لنبدأ أولاً بإنشاء ملف HTML جديد بالمحتوى التالي:

ستلاحظ أن ملفات OpenLayers المرتبطة هنا هي ol.css و ol.js. ملفاتنا المخصصة هي style.css و script.js.

يحتوي OpenLayers CSS (ol.css) على الرسوم المتحركة CSS3 والتصميم لعناصر HTML ، مثل عناصر تحكم الخريطة ، أي أزرار تكبير الخريطة ، وغير ذلك الكثير.

باستخدام أفضل الممارسات ، تم تضمين OpenLayers JavaScript (ol.js) وملف JavaScript المخصص قبل علامة الإغلاق & lt / body & gt لتجنب حظر عرض الصفحة. نتيجة إيجابية أخرى لذلك يمكننا التأكد من أن DOM قد تم تحميله قبل تنفيذ JavaScript الخاص بنا.

بعد ذلك ، قم بإنشاء ورقة أنماط (style.css) بالمحتوى التالي:

تؤدي هذه المجموعة المدمجة من قواعد CSS إلى توسيع div بحيث يملأ المساحة المتوفرة للصفحة بالكامل. يعني استخدام محدد فئة الخريطة أن هذا سيستهدف عنصر & ltdiv & gt الذي تم إنشاؤه مسبقًا:

تنزيل رمز المثال

يمكنك تنزيل نماذج ملفات الأكواد لجميع كتب Packt Publishing التي اشتريتها من حسابك على http://www.packtpub.com. إذا اشتريت هذا الكتاب في مكان آخر ، فيمكنك زيارة http://www.packtpub.com/support والتسجيل لإرسال الملفات بالبريد الإلكتروني مباشرة إليك.

يمكنك تنزيل ملفات التعليمات البرمجية باتباع الخطوات التالية:

قم بتسجيل الدخول أو التسجيل في موقعنا باستخدام عنوان البريد الإلكتروني وكلمة المرور.

قم بتمرير مؤشر الماوس على علامة التبويب الدعم في الأعلى.

انقر فوق تنزيلات الكود & amp Errata.

أدخل اسم الكتاب في مربع البحث.

حدد الكتاب الذي تبحث عنه لتنزيل ملفات الأكواد.

اختر من القائمة المنسدلة المكان الذي اشتريت منه هذا الكتاب.

بمجرد تنزيل الملف ، يرجى التأكد من فك ضغط المجلد أو استخراجه باستخدام أحدث إصدار من:

Zipeg / iZip / UnRarX لنظام التشغيل Mac

أخيرًا ، أنشئ ملف JavaScript المخصص (script.js) وضع المحتوى التالي فيه:

افتح الملف في متصفحك وشاهد النتيجة. سترى خريطة تملأ الصفحة ببعض عناصر التحكم في الزاوية العلوية اليسرى وإحالة الخريطة في الركن الأيمن السفلي ، وهو ما يشبه ما يظهر في لقطة الشاشة التالية:

كيف يعمل hellip

إنه لمن دواعي سرورنا أن ندرك أن إنشاء خريطة باستخدام OpenLayers يمكن تحقيقه بسرعة باستخدام الحد الأدنى من التعليمات البرمجية. ومع ذلك ، نحن لا نقرأ هذا الكتاب للوقوف في حالة من الرهبة ، بل نفضل أن نحاول فهم كيف أنجز JavaScript هذا.

في البداية ، يجدر فحص HTML لأن OpenLayers كان مشغولاً في إجراء التعديلات. ستحتاج إلى فتح أدوات تطوير المتصفح الخاص بك. عادة ما يكون هذا سهلاً مثل النقر بزر الماوس الأيمن في أي مكان على الصفحة والاختيار تدقيق العنصر من قائمة السياق. قم بالتمرير لأسفل إلى عنصر & ltdiv & gt الذي أنشأناه في الأصل. يجب أن تبدو مشابهة للصورة التالية:

ستلاحظ أن OpenLayers قد قام بتعديل محتوى & ltdiv & gt الفارغ سابقًا ، وأدخل عنصرًا فرعيًا & ltdiv & gt ، والذي يتم توسيعه إلى الأبعاد الإجمالية للعنصر الأصل ، والتي قمنا بتعيينها لملء الشاشة. يمكنك التحكم في حجم الخريطة بالكامل من خلال CSS.

تقوم OpenLayers بوضع بادئة لخطافات CSS الخاصة بها بـ ol-.

ضمن هذا الذي تم إنشاؤه & ltdiv & gt ، يكمن عنصر & ltcanvas & gt الذي يشكل الخريطة التي تراها أمامك. تعد تقنية لوحة HTML5 أكثر أداءً من عناصر DOM المجمعة للصور ، والتي كانت هي البنية الافتراضية في OpenLayers 2.

للفضول ، قم بالمغامرة أكثر في عناصر & ltdiv & gt الأخرى ، وسوف تتعثر بسرعة في HTML لعناصر التحكم في الخريطة. على عكس OpenLayers 2 الذي استخدم الصور لعناصر تحكم الخريطة ، يستخدم OpenLayers 3 CSS فقط. هذا يعني أن تخصيص عناصر التحكم في الخريطة أصبح أسهل بكثير من ذي قبل.

دعنا نخرج أنفسنا من HTML للحظة وننقل انتباهنا إلى JavaScript الذي جعل كل هذا يعمل. سوف نمر على الكود قطعة قطعة:

مُنشئ الخرائط ol.Map هو نقطة دخولنا لإنشاء خريطة. عند إنشاء مثيل ، يتضمن جزء مما يحدث إنشاء عناصر HTML التي بحثنا عنها سابقًا. كحد أدنى ، يتطلب المنشئ طريقة عرض وطبقة واحدة أو أكثر وهدفًا كما هي وسيطاته:

لمساعدتنا في فهم الخطوات المنفصلة المطلوبة لإنشاء خريطة ، دعنا نتخيل القياس التالي. لنفترض أن الخريطة هي عالم شاسع وخلاب لا يمكنك رؤيته إلا من خلال المناظير و ol.View هو المنظار. يمكنك إمالة رأسك والدوران حوله (عرض التدوير) ، وتحريك خط الرؤية الخاص بك للإشارة إلى مكان آخر (تغيير مركز العرض الخاص بك) وضبط التركيز على كائنات مختلفة على مسافة (تكبير / دقة).

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

تتوقع خاصية الطبقات لـ ol.Map مصفوفة ، حيث يمكنك تضمين طبقات متعددة لكل خريطة.

مُنشئ ol.layer.Tile هو فئة فرعية من ol.layer.Layer ، ولكنه مصمم خصيصًا للصور المبلطة التي تم عرضها مسبقًا والتي تم تنظيمها في شبكات ومنظمة حسب مستويات التكبير / التصغير للحصول على دقة معينة.

مصدر الطبقة المبلطة مشتق من مُنشئ ol.source.OSM ، الذي يمكننا من استخدام خدمة OpenStreetMap المتجانبة دون عناء. هذا المُنشئ هو فئة فرعية من ol.source.XYZ ، وهو التنسيق الذي يستخدمه OSM.

أخيرًا ، يمكن أن تكون الخاصية الهدف لـ ol.Map إما سلسلة (والتي يجب أن تمثل معرف عنصر HTML) ، أو يمكنك تمرير عنصر DOM بدلاً من ذلك. تتطابق السلسلة "js-map" مع عنصر HTML الخاص بنا:

بدلاً من ذلك ، كان بإمكاننا تمرير عنصر DOM:

الآن بعد أن غطينا جميع أجزاء هذا اللغز ، نأمل أن تكون قادرًا على الحصول على رؤية أفضل لما يحدث بالفعل. ستساعدك هذه المعرفة الأساسية في بناء أساس متين بينما نستمر في المضي قدمًا.

هناك المزيد & hellip

في مثالنا الأول ، استخدمنا أكبر قدر ممكن من صفحة الويب ، لكننا نعلم جميعًا أن هذا ليس تعريف ملء الشاشة تمامًا! للانتقال فعليًا إلى وضع ملء الشاشة بشكل صحيح ، يمكن لـ OpenLayers الاستفادة من واجهة برمجة تطبيقات ملء الشاشة HTML5.

يمكنك العثور على الكود المصدري لهذا المثال في ch01 / ch01-html5-full-screen-map /.

حافظ على HTML و CSS تمامًا مثل الإصدار السابق ، ولكن عدّل JavaScript بحيث يطابق ما يلي:

ربما لاحظ المراقبون منكم أنه بغض النظر عن حقيقة أننا لم نمرر أي عناصر تحكم إلى نسختنا السابقة من الخريطة ، فإنها لا تزال تحتوي على عناصر التحكم في التكبير / التصغير والإسناد. هذا لأن OpenLayers يضيف بعض الضوابط الافتراضية إذا لم يتم تحديد أي منها.

لقد قررنا توسيع عناصر التحكم الافتراضية التي يوفرها OpenLayers عادةً وإلحاق التحكم بملء الشاشة. تأتي طريقة الأداة المساعدة extension من مكتبة Google Closure ، والتي تمد كائنًا بكائن آخر في مكانه.

افتح الملف في متصفحك وسترى عنصر التحكم الجديد بملء الشاشة في الزاوية العلوية اليمنى من الخريطة. انقر فوق الزر للذهاب إلى وضع ملء الشاشة!

إذا أردنا فقط تمكين التحكم بملء الشاشة دون غيره ، فيمكننا استخدام الكود التالي:

على الرغم من أننا نمرر عنصر تحكم واحد فقط ، إلا أن OpenLayers تتوقع مجموعة ، لذلك يتم تغليفها داخل مصفوفة.

We finish this topic having learned how to create a new map from scratch with some custom controls. It's time to move on to the next topic!


5.7. Data Import¶

Raster data in a variety of formats, such as TIFF, netCDF, GRIB, etc. can be imported in rasdaman through the wcst_import.sh utility. Internally it is based on WCS-T requests, but hides the complexity and maintains the geo-related metadata in its so-called petascopedb while the raster data get ingested into the rasdaman array store.

Building large time-series / datacubes, mosaics, etc. and keeping them up-to-date as new data become available is supported for a large variety of data formats and file/directory organizations.

The systemtest contains many examples for importing different types of data.

5.7.1. Introduction¶

The wcst_import.sh tool is based on two concepts:

  • Recipe - A recipe defines how a set of data files can be combined into a well-defined coverage (e.g. a 2-D mosaic, regular or irregular 3-D timeseries, etc.)
  • Ingredients - A JSON file that configures how the recipe should build the coverage (e.g. the server endpoint, the coverage name, which files to consider, etc.).

To execute an ingredients file in order to import some data:

Alternatively, wcst_import.sh can be started in the background as a daemon:

or as a daemon that is “watching” for new data at some interval (in seconds):

For further informations regarding the usage of wcst_import.sh :

The workflow behind is depicted approximately on Figure 5.1 .

Figure 5.1 Ingestion process with wcst_import.sh

An ingredients file showing all possible options (across all recipes) can be found here in the same directory there are several examples of different recipes.

The following recipes are provided in the rasdaman repository:

For each one of these there is an ingredients example under the ingredients/ directory, together with an example for the available parameters Further on each recipe type is described in turn, starting with the common options shared by all recipes.

5.7.2. Common Options¶

Some options are commonly applicable to all recipes. We describe these options for each top-level section of an ingredient file: config, input, recipe, and hooks.

5.7.2.1. config section¶

service_url - The endpoint of the WCS service with the WCS-T extension enabled

mock - Print WCS-T requests but do not execute anything if set to true . Set to false by default.

automated - Set to true to avoid any interaction during the ingestion process. Useful in production environments for automated deployment for example. By default it is false , i.e. user confirmation is needed to execute the ingestion.

blocking (since v9.8) - Set to false to analyze and import each file separately (non-blocking mode). By default blocking is set to true , i.e. wcst_import will analyze all input files first to create corresponding coverage descriptions, and only then import them. The advantage of non-blocking mode is that the analyzing and importing happens incrementally (in blocking mode the analyzing step can take a long time, e.g. days, before the import can even begin).

When importing in non-blocking import mode for coverages with irregular axes, it will only rely on sorted files by filenames and it can fail if these axes’ coefficients are collected from input files’ metadata (e.g: DateTime value in TIFF’s tag or GRIB metadata) as they might not be consecutive. wcst_import will not analyze all files to collect metadata to be sorted by DateTime as in default blocking import mode.

default_null_values - This parameter adds default null values for bands that do ليس have a null value provided by the file itself. The value for this parameter should be an array containing the desired null value either as a closed interval low:high or single values. مثال:

If set this parameter will override the null/nodata values present in the input files.

If a null value interval is specified, e.g. e.g "9.96921e+35:*" , during encode it will not be preserved as-is because null value intervals are not supported by most formats. In this case it is recommended to first specify a non-interval null value, followed by the interval, e.g. [9.96921e+35, "9.96921e+35:*"] .

tmp_directory - Temporary directory in which gml and data files are created should be readable and writable by rasdaman, petascope and current user. By default this is /tmp .

crs_resolver - The crs resolver to use for generating WCS-T request. By default it is determined from the petascope.properties setting.

url_root - In case the files are exposed via a web-server and not locally, you can specify the root file url here the default value is "file://" .

skip - Set to true to ignore files that failed to import by default it is false , i.e. the ingestion is terminated when a file fails to import.

retry - Set to true to retry a failed request. The number of retries is either 5, or the value of setting retries if specified. This is set to false by default.

retries - Control how many times to retry a failed WCS-T request set to 5 by default.

retry_sleep - Set number of seconds to wait before retrying after an error a floating-point number can also be specified for sub-second precision. Default values is 1.

track_files - Set to true to allow files to be tracked in order to avoid reimporting already imported files. This setting is enabled by default.

resumer_dir_path - The directory in which to store the track file. By default it will be stored next to the ingredients file.

slice_restriction - Limit the slices that are imported to the ones that fit in a specified bounding box. Each subset in the bounding box should be of form < "low": 0, "high": <max> >, where low/high are given in the axis format. مثال:

description_max_no_slices - Maximum number of slices (files) to show for preview before starting the actual ingestion.

subset_correction (deprecated since v9.6) - In some cases the resolution is small enough to affect the precision of the transformation from domain coordinates to grid coordinates. To allow for corrections that will make the import possible, set this parameter to true .

5.7.2.2. input section¶

  • coverage_id - The name of the coverage to be created if the coverage already exists, it will be updated with the new files collected by paths .
  • paths - List of absolute or relative (to the ingredients file) paths or regex patterns that would work with the ls command. Multiple paths separated by commas can be specified. The collected paths are sorted by file name by default, unless specified otherwise in the recipe section (e.g. by date/time for time-series recipes).

5.7.2.3. recipe section¶

import_order - Allow to sort the input files ( ascending (default) or descending ).Currently, it sorts by datetime which allows to import coverage from the first date or the recent date. مثال:

tiling - Specifies the tile structure to be created for the coverage in rasdaman. You can set arbitrary tile sizes for the tiling option only if the tile name is ALIGNED . مثال:

For more information on tiling please check the Storage Layout Language

wms_import - If set to true , after importing data to coverage, it will also create a WMS layer from the imported coverage and populate metadata for this layer. After that, this layer will be available from WMS GetCapabilties request. مثال:

scale_levels - Enable the WMS pyramids feature. Level must be positive number and greater than 1 (note: only spatial geo axes, e.g. Lat and Long are scaled down in the pyramid member coverage). A new coverage as pyramid member of the importing coverage will be created with this pattern . Syntax:

scale_factors - Enable the WMS pyramids feature. It is a more flexible variant of the scale_levels setting. The two settings are exclusive, either scale_levels or scale_factors can exist in the ingredient file. ال coverage_id of each factor must be unique in rasdaman and manually set by the user. ال factors is a list of decimal values corresponding to the coverage axes according to its CRS order a scale value for an irregular axis must be 1, while for a regular axis it should be greater than 1 see more details here . For example, you can create two pyramid member 2D coverages which are 2x smaller (cov_level_2) and 4x smaller (cov_level_4) on the regular Lat و Long axes:

pyramid_members - List of existing coverages which can be added as pyramid members of the importing coverage, see request . Syntax:

5.7.2.3.1. Image pyramids¶

Since v9.7 it is possible to create downscaled versions of a given coverage, eventually achieving something like an image pyramid, in order to enable faster WMS requests when zooming in/out.

By using the scale_levels option of wcst_import when importing a coverage with WMS enabled, petascope will create downscaled collections in rasdaman following this pattern: coverageId_<level> . If level is a float, then the dot is replaced with an underscore, as dots are not permitted in a collection name. Some examples:

Example ingredients specification to create two downscaled levels which are 8x و 32x smaller than the original coverage:

Two new WCS-T non-standard requests are utilized by wcst_import for this feature, see here for more information .

5.7.2.4. hooks section¶

Since v9.8, it is possible to run shell commands before/after ingestion by adding optional hooks configuration in an ingredient file. There are 2 types of ingestion hooks:

  • before_ingestion - Run shell commands before analyzing the input files, e.g. reproject input files from EPSG:3857 to EPSG:4326 with gdalwarp and import the reprojected files only.
  • after_ingestion - Run shell commands after importing the input files, e.g. clean all projected files from running gdalwarp above.

When import mode is set to non-blocking ( "blocking": false ), wcst_import will run before/after hook(s) for the file which is being used to update coverage, while the default blocking importing mode will run before/after hooks for all input files before/after they are updated to a coverage. Parameters are explained below.

Example: Import GDAL subdatasets

The example ingredients below contains a pre-hook which replaces the collected file path into a GDAL subdataset form in this particular case, with the GDAL driver for NetCDF a single variable from the collected NetCDF files is imported.

5.7.3. Recipe map_mosaic¶

Well suited for importing a tiled map, not necessarily continuous it will place all input files given under a single coverage and deal with their position in space. Parameters are explained below.

5.7.4. Recipe time_series_regular¶

Well suited for importing multiple 2-D slices created at regular intervals of time (e.g sensor data, satelite imagery etc) as 3-D cube with the third axis being a temporal one. Parameters are explained below

5.7.5. Recipe time_series_irregular¶

Well suited for importing multiple 2-D slices created at irregular intervals of time into a 3-D cube with the third axis being a temporal one. There are two types of time parameters in “options”, one needs to be choosed according to the particular use case:

tag_name - e.g. TIFFTAG_DATETIME in the image’s metadata the metadata should be checked with gdalinfo <file> , as not every image may have the tag. Below is an example:

filename allows an arbitrary pattern to extract the time information from the data file paths. Below is an example:

5.7.6. Recipe general_coverage¶

This is a highly flexible recipe that can handle any kind of data files (be it 2D, 3D or n-D) and model them in coverages of any dimensionality. It does that by allowing users to define their own coverage models with any number of bands and axes and fill the necesary coverage information through the so called ingredient sentences inside the ingredients.

5.7.6.1. Coverage parameters¶

Using ingredient sentences we can define any coverage model directly in the options of the ingredients file. Each coverage model contains the following parts:

  • crs - Indicates the crs of the coverage to be constructed. Either a CRS url can be used e.g. http://opengis.net/def/crs/EPSG/0/4326 or the shorthand notation CRS1@CRS2@CRS3 , e.g. OGC/0/AnsiDate@EPSG/0/4326 for indicating a time/date + spatial CRS.
  • metadata - A group of options controlling metadata extraction and consolidation more detailed information follows below
  • slicer - A group of options controlling the data decoding and placement into the overall datacube more detailed information follows below .
5.7.6.1.1. metadata section¶

The metadata section specifies in which format you want the metadata (json or xml). It can only contain characters and is limited in size by the backend database limit for CLOB columns for postgresql (the default backend for petascope) the maximum size is 2GB (source).

type - Specifies the format for storing the coverage metadata xml and json are supported, and it is set to xml by default.

global - Specifies fields which should be saved once for the whole coverage (e.g. the data licence, the creator etc). For example a “Title” metadata value can be set with "global": < "Title": "'Drought code'", . >.

local - Specifies fields which are fetched from each input file to be stored in coverage’s metadata. When subsetting in the output coverage only محلي metadata associated to the subsetted areas will be added to the result. E.g., "local": < "LocalMetadataKey": "$" > sets LocalMetadataKey to a metadata value extracted from the input data the $ <..>is explained in Data expressions . For a more detailed explanation of local metadata see the dedicated Local metadata from input files section.

colorPaletteTable - Controls collection of color palette table for the created coverage, which can then be used internally when encoding coverage to, e.g. PNG, to colorize the result. Currently only GDAL-style colorTable with 256 color entries is supported.

A path to an explicit Color Palette Table file can be specified, see example file such a file can be referenced in the ingredients file with, e.g., "colorPaletteTable": "PATH/TO/table.cpt" .

If colorPaletteTable is set to "auto" or not specified at all, and the slicer is set to gdal (see next section for info on slicers), then the color table will be read automatically from the first input file if its metadata contains one.

If colorPaletteTable is set to an empty string "" , any color table metadata will be ignored when creating coverage’s global metadata.

bands and axes - Allow specifying metadata for the coverage bands and/or axes more details can be found in Band and axis metadata in global metadata .

5.7.6.1.2. slicer section¶

The slicer subsection specifies the driver to use to read from the data files, the required bands from data files and for each axis from the CRS how to obtain the bounds and resolution corresponding to each file.

type - Specifies the decoding driver to be used currently the following are supported:

gdal - for TIFF, PNG, and other encoding format that can be read with GDAL (check with gdalinfo <file> )

netcdf - for importing NetCDF data. If a netCDF file is flipped on Lat axis (South -> North coordinates increase in the output of ncdump -c ) instead of GDAL style (North -> South coordinates decrease), then it is necessary to flip it before importing as rasdaman, e.g. with cdo invertlat input.nc output.nc .

grib - for GRIB data. Currently, rasdaman only supports GRIB files with gridType format of regular lat long regular_ll . If the format is different, it is necessary to preprocess the input files into regular grid type. The grid type can be retreived with grib_dump file.grib | grep 'gridType' .

If a GRIB file is flipped on Lat axis (South -> North with jScansPositively = 0 in the output of grib_dump ) instead of GDAL style (North -> South with jScansPositively = 1 ), then it is necessary to flip it before importing to rasdaman, e.g. with cdo invertlat input.grib output.grib .

pixelIsPoint - Only valid if type is netcdf or grib . In some cases, by convention in the input files, the coordinates are set in the middle of grid pixels, hence, set to true to extend the lower and upper bounds of each regular axis by half grid pixel to be able to import. By default it is set to false .

bands - A list of bands/chanels/variables from the input files which should be imported to the importing coverage. Each entry is a JSON object with the following options, of which identifier and name are mandatory to specify while the rest are optional:

  • identifier - The name of the band in the input file
  • name - The name of the band which will be used in the created coverage this can be set to different from the indentifier
  • description - Metadata description of the band
  • nilValue` - Metadata null value of the band
  • nilReason - Metadata reason for the null value of the band
  • uomCode - Set the Unit of measurement (uom) code of the band. Besides setting it directly, it can also be derived from the input file metadata, with e.g. $ for NetCDF or $ for GRIB.
  • Further "key": "value" entries can be specified to add customized band metadata to the global coverage metadata.

axes - A JSON object which configures the properties of each axis of the created coverage with "axisLabel": < properties. >. The possible properties are listed below generally, gridOrder , min , max , and resolution have to be specified, except for irregular axes where resolution is not applicable.

  • gridOrder - The index of the axis in the input file (0-based)
  • crsOrder - Specifies a different name for this axis than the one configured in the CRS’s definition more details can be found here
  • min - The lower bound of the axis (coordinates in the axis CRS)
  • max - The upper bound of the axis (coordinates in the axis CRS)
  • resolution - The resolution of the axis from the input file if this axis is irregular, the resolution is set to 1
  • statements - Import python utility libraries (e.g. datetime / timedelta ) to support calculating min , max , resolution , etc covered in more detail in a subsequent section

A few additional options are specific to irregular axes:

  • irregular - Set to true to specify that this axis is irregular, e.g. a time axis with irregular datetime indexes if not specified, it is set to false by default
  • directPositions - A list of coefficients which are extracted or calculated from the axis values specified in the input file for an example see this ingredients file
  • dataBound - Set to false to specify that this axis should be imported as a slicing point instead of a subset with lower and upper bounds typical use case for this is when extracting irregular datetime values from the input file names. When not specified it is set to true by default.
  • sliceGroupSize - Group multiple input slices into a single slice in the created coverage, e.g., multiple daily data files onto a single week index on the coverage time axis explained in more detail here
5.7.6.1.3. Examples¶

The examples below illustrate importing data in different formats with the general_coverage recipe many more can be found in the rasdaman test suite.

Commented example for importing GRIB data (only the recipe section is shown for brevity):

Example for importing NetCDF data (full ingredients file here):

Example for importing TIFF data with the gdal driver (full ingredients file here):

5.7.6.2. Ingredient sentences¶

ان ingredient sentence can be of multiple types:

  • Numeric - e.g. 2 , 4.5
  • سلاسل - e.g. 'Some information'
  • المهام - e.g. datetime('2012-01-01', 'YYYY-mm-dd')
  • Data expressions - Allow to collect information from the data file being imported with a specific format driver. An expression is of form $ - e.g. $ or $
  • Python expressions - The types above can be combined into any valid Python expression this allows to do mathematical operations, string parsing, date/time manipulation, etc. E.g. $ + 1/2 * $ or datetime($ * 24 * 3600) . Expressions can use functions from any Python library which just needs to be explicitly imported as explained in Using libraries in sentences .

5.7.6.3. Data expressions¶

Each driver allows expressions to extract information from input files. We will mark with capital letters things that vary in the expression. على سبيل المثال $ means that you can replace FIELD with any valid gdal metadata tag such as TIFFTAG_DATETIME . Example ingredients where data expressions are used can be found in Examples .

5.7.6.3.1. NetCDF¶
يكتب وصف أمثلة
Metadata information $ $
Variable information $ where VAR_NAME can be any variable in the file and MODIFIER can be one of: first|last|max|min Any extra modifiers will return the corresponding metadata field on the given variable $ $
Dimension information $ where DIM_NAME can be any dimension in the file. This will return the value on the selected dimension. $
5.7.6.3.2. GDAL¶

Relevant for TIFF, PNG, JPEG, and other 2D data formats.

يكتب وصف أمثلة
Metadata information $ $
Geo Bounds $ where BOUND_NAME can be one of the minX|maxX|minY|maxY $
Geo Resolution $ where RESOLUTION_NAME can be one of the resolutionX|resolutionY $
Origin $ where ORIGIN_NAME can be one of the originX|originY $

5.7.6.3.3. GRIB¶
يكتب وصف أمثلة
GRIB Key $ where KEY can be any of the keys contained in the GRIB file $ is the special value to get the current processed GRIB message index (starting from 1) $
5.7.6.3.4. File¶
يكتب وصف أمثلة
File Information $ where property can be one of path|name|dir_path|original_path|original_dir_path original_* allows to get the original input file’s path/directory (used only when using pre-hook with replace_path to replace original input file paths with customized file paths). $
Imported File Information $ where property can be one of path|name|dir_path|original_path|original_dir_path Files which were imported to rasdaman (excluded skipped files). This variable is used only for after_ingestion hooks. $
5.7.6.3.5. Special functions¶

A couple of special functions are available to help with more complicated expressions:


شاهد الفيديو: HEC-HMS حساب هيدروجراف السيل ببرنامج (شهر اكتوبر 2021).