أكثر

كيفية تحويل سلسلة إلى OpenLayers.Geometry.Polygon باستخدام جافا سكريبت؟


أنا أستخدم Javascript و jQuery و Java و GeoServer و OpenLayers و PostGIS.

استخدام فئة جافامجموعة النتائجأعيد هذه السلسلة:

POLYGON ((516000 2135000،515039.264020162 2125245.48389919،512193.976625564 2115865.82838175،507573.480615127 2107221.48834902،501355.339059327 2099644.66094067،493778.51165098 2093426.51938487،485134.171618255 2088806.02337444،475754.516100806 2085960.73597984،466000 2085000،456245.483899194 2085960.73597984،446865.828381746 2088806.02337444،438221.48834902 2093426.51938487،430644.660940673 2099644.66094067،424426.519384873 2107221.48834902،419806.023374436 2115865.82838175،416960.735979839 2125245،48389919 ، 416000 2135000،416960.735979838 2144754.51610081،419806.023374436 2154134.17161825،424426.519384873 2162778.51165098،430644.660940673 2170355.33905933،438221.48834902 2176573.48061513،446865.828381745 2181193.97662556،456245.483899193 2184039.26402016،466000 2185000،475754.516100806 2184039.26402016،485134.171618254 2181193.97662556،493778.51165098 2176573.48061513،501355.339059327 2170355.33905933،507573.480615127 2162778.51165098،512193.976625564 2154134.17161825،515039.264020161 2144754.51610081،516000 2135000))

طويل جدا أليس كذلك؟ لذا ، باستخدام وظيفة ajax في JQuery ، ألتقط هذه السلسلة وأريد الآن تحويلها إلى ملفالطبقات المفتوحة، هذا هو السطر الذي أستخدم فيه وظيفة أجاكس:

$ .ajax ({url: "Catcher" ، البيانات: الاستعلام ، النوع: "POST" ، نوع البيانات: "text" ، النجاح: الوظيفة (البيانات) {var fea = new OpenLayers.Feature.Vector (data)؛ // this لا يعمل vectorLayer.addFeatures ([fea]) ؛ // هنا أقوم بإضافة الميزة إلى طبقة المتجه التي أنشأتها كمتغير شامل map.zoomToExtent (حدود) ؛}}) ؛

كيف يمكنني إجراء التحويل؟


استخدم فئة OpenLayers.Format.WKT.

حاول استبدال هذا الخط:

var fea = new OpenLayers.Feature.Vector (بيانات) ؛ // هذا لا يعمل

لهذا السطر (إذا كانت البيانات. d = "POLYGON ((516000 ..."):

var fea = new OpenLayers.Format.WKT (). read (data.d) ؛

وإليك مثال على كيفية استخدامه: http://dev.openlayers.org/examples/vector-formats.html


OpenLayers. تنبؤ

طرق تنسيق التحويلات بين أنظمة الإحداثيات. بشكل افتراضي ، يشحن OpenLayers مع القدرة على تحويل الإحداثيات بين النظم المرجعية الجغرافية (EPSG: 4326) وشبكة الويب أو المركاتور الكروية (EPSG: 900913 وآخرون). انظر طريقة التحويل للحصول على تفاصيل حول الاستخدام.

يمكن إضافة تحويلات إضافية باستخدام مكتبة proj4js. إذا تم تضمين مكتبة proj4js ، فستعمل طريقة التحويل بين أي نظامين مرجعيين للإحداثيات بتعريفات proj4js.

إذا لم يتم تضمين مكتبة proj4js ، أو إذا كنت ترغب في السماح بالتحويلات بين أنظمة مرجعية إحداثيات عشوائية ، فاستخدم طريقة addTransform لتسجيل طريقة تحويل مخصصة.

OpenLayers. تنبؤطرق تنسيق التحويلات بين أنظمة الإحداثيات.
الخصائص
مشروع مثيل Proj4js.Proj.
كود المشروع
العنوان التعبير النمطي لتجريد العنوان من تعريف proj4js
البناء
OpenLayers. تنبؤتقدم هذه الفئة عدة طرق للتفاعل مع كائن إسقاط pro4js ملفوف.
الوظائف والخصائص
الحصول على رمزاحصل على سلسلة رمز SRS.
getUnitsاحصل على سلسلة الوحدات للإسقاط - تُرجع القيمة فارغة إذا لم يكن proj4js متاحًا.
إلى سلسلةتحويل الإسقاط إلى سلسلة (غلاف getCode).
يساوياختبار المساواة بين مثيلين الإسقاط.
هدمتدمير كائن الإسقاط.
يتحول التحولات هي كائن ، مع من الخصائص ، كل منها قد يكون لها خاصية إلى.
الافتراضات الإعدادات الافتراضية لرموز SRS المعروفة لـ OpenLayers (حاليًا EPSG: 4326 ، CRS: 84 ، urn: ogc: def: crs: EPSG: 6.6: 4326 ، EPSG: 900913 ، EPSG: 3857 ، EPSG: 102113 و EPSG: 102100).
addTransformقم بتعيين طريقة تحويل مخصصة بين توقعين.
تحولتحويل إحداثي نقطة من إسقاط إلى آخر.
nullTransform

الخصائص

كود المشروع

العنوان

التعبير العادي لتجريد العنوان من تعريف proj4js

البناء

OpenLayers. تنبؤ

تقدم هذه الفئة عدة طرق للتفاعل مع كائن إسقاط pro4js ملفوف.

المعلمات

كود المشروع سلسلة تحدد المعرف المعروف جيدًا للإسقاط.
والخيارات كائن اختياري لتعيين خصائص إضافية على الإسقاط.

عائدات

وظائف وخصائص

الحصول على رمز

عائدات

GetUnits

احصل على سلسلة الوحدات للإسقاط - تُرجع القيمة فارغة إذا لم يكن proj4js متاحًا.

عائدات

إلى سلسلة

تحويل الإسقاط إلى سلسلة (غلاف getCode).

عائدات

يساوي

اختبار المساواة بين مثيلي الإسقاط. يحدد المساواة على أساس Soley على كود الإسقاط.

عائدات

الإسقاطان متكافئان.

هدم

تدمير كائن الإسقاط.

يتحول

التحولات هي كائن ، مع من الخصائص ، كل منها قد يكون لها خاصية إلى. يتيح لك ذلك تحديد الإسقاطات دون الحاجة إلى دعم لتضمين proj4js.

يحتوي هذا الكائن على مفاتيح تتوافق مع كائن الإسقاط & lsquosource & rsquo. يجب أن تكون المفاتيح عبارة عن سلاسل ، تتوافق مع قيمة projection.getCode (). يجب أن يحتوي كل كائن إسقاط مصدر على مجموعة من مفاتيح إسقاط الوجهة المضمنة في الكائن.

يجب أن تكون كل قيمة في الكائن الوجهة دالة تحويل ، حيث من المتوقع أن يتم تمرير كائن بخاصية .x و. y للوظيفة. يجب أن تعيد الدالة الكائن ، مع تحويل .x و. y وفقًا لوظيفة التحويل.

ملحوظةلا يجب تعيين الخصائص على هذا الكائن مباشرة. لإضافة أسلوب تحويل إلى هذا الكائن ، استخدم الأسلوب addTransform. للحصول على مثال للاستخدام ، راجع ملف OpenLayers.Layer.SphericalMercator.

الافتراضات

الإعدادات الافتراضية لرموز SRS المعروفة لـ OpenLayers (حاليًا EPSG: 4326 ، CRS: 84 ، urn: ogc: def: crs: EPSG: 6.6: 4326 ، EPSG: 900913 ، EPSG: 3857 ، EPSG: 102113 و EPSG: 102100). المفاتيح هي رمز SRS ، والقيم هي الوحدات ، و maxExtent (مدى الصلاحية لـ SRS) و yx (صحيح إذا كان من المعروف أن SRS لها ترتيب محور عكسي).

AddTransform

قم بتعيين طريقة تحويل مخصصة بين توقعين. استخدم هذه الطريقة في الحالات التي لا يتوفر فيها proj4js lib أو حيث يلزم معالجة الإسقاطات المخصصة.

المعلمات

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

تحول

قم بتحويل إحداثي نقطة من إسقاط إلى آخر. لاحظ أن نقطة الإدخال تتحول في مكانها.


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

تم إرسال رسالتك إلى W3Schools.

أهم البرامج التعليمية

أعلى المراجع

أهم الأمثلة

دورات الويب

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


إدارة الأخطاء وإعادة المحاولة

إذا تلقيت استجابات UNKNOWN_ERROR ، فهذا ناتج عن أخطاء عابرة ومن الأفضل التعامل معها عن طريق إعادة المحاولة بعد فترة تأخير قصيرة. نوصي باستخدام مكتبات عملاء خدمات الويب في Google Maps Platform والتي تتضمن منطق إعادة المحاولة ودعم مصادقة Google Maps Platform Premium Plan. يعد Java Client و Python Client و Go Client و Node.js Client لخدمات خرائط Google مكتبات عملاء مدعومة من المجتمع ، ومتاحة للتنزيل والمساهمات على GitHub ، حيث ستجد أيضًا تعليمات التثبيت ونموذج التعليمات البرمجية.

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

باستثناء ما هو مذكور بخلاف ذلك ، يتم ترخيص محتوى هذه الصفحة بموجب ترخيص Creative Commons Attribution 4.0 ، كما يتم ترخيص نماذج التعليمات البرمجية بموجب ترخيص Apache 2.0. للحصول على تفاصيل ، راجع سياسات موقع Google Developers. Java هي علامة تجارية مسجلة لشركة Oracle و / أو الشركات التابعة لها.


OpenLayers. تنبؤ

طرق تنسيق التحويلات بين أنظمة الإحداثيات. بشكل افتراضي ، يشحن OpenLayers مع القدرة على تحويل الإحداثيات بين النظم المرجعية الجغرافية (EPSG: 4326) وشبكة الويب أو المركاتور الكروية (EPSG: 900913 وآخرون). انظر طريقة التحويل للحصول على تفاصيل حول الاستخدام.

يمكن إضافة تحويلات إضافية باستخدام مكتبة proj4js. إذا تم تضمين مكتبة proj4js ، فستعمل طريقة التحويل بين أي نظامين مرجعيين للإحداثيات بتعريفات proj4js.

إذا لم يتم تضمين مكتبة proj4js ، أو إذا كنت ترغب في السماح بالتحويلات بين أنظمة مرجعية إحداثيات عشوائية ، فاستخدم طريقة addTransform لتسجيل طريقة تحويل مخصصة.

OpenLayers. تنبؤطرق تنسيق التحويلات بين أنظمة الإحداثيات.
الخصائص
مشروع مثيل Proj4js.Proj.
كود المشروع
العنوان التعبير النمطي لتجريد العنوان من تعريف proj4js
البناء
OpenLayers. تنبؤتقدم هذه الفئة عدة طرق للتفاعل مع كائن إسقاط pro4js ملفوف.
الوظائف والخصائص
الحصول على رمزاحصل على سلسلة رمز SRS.
getUnitsاحصل على سلسلة الوحدات للإسقاط - تُرجع القيمة فارغة إذا لم يكن proj4js متاحًا.
إلى سلسلةتحويل الإسقاط إلى سلسلة (غلاف getCode).
يساوياختبار المساواة بين مثيلي الإسقاط.
هدمتدمير كائن الإسقاط.
يتحول التحولات هي كائن ، مع من الخصائص ، كل منها قد يكون لها خاصية إلى.
الافتراضات الافتراضيات لرموز SRS المعروفة لـ OpenLayers (حاليًا EPSG: 4326 ، CRS: 84 ، urn: ogc: def: crs: EPSG: 6.6: 4326 ، EPSG: 900913 ، EPSG: 3857 ، EPSG: 102113 ، EPSG: 102100 و OSGEO: 41001).
addTransformقم بتعيين طريقة تحويل مخصصة بين توقعين.
تحولقم بتحويل إحداثي نقطة من إسقاط إلى آخر.
nullTransform

الخصائص

كود المشروع

العنوان

التعبير النمطي لتجريد العنوان من تعريف proj4js

البناء

OpenLayers. تنبؤ

تقدم هذه الفئة عدة طرق للتفاعل مع كائن إسقاط pro4js ملفوف.

المعلمات

كود المشروع سلسلة تحدد المعرف المعروف جيدًا للإسقاط.
والخيارات كائن اختياري لتعيين خصائص إضافية على الإسقاط.

عائدات

وظائف وخصائص

الحصول على رمز

عائدات

GetUnits

احصل على سلسلة الوحدات للإسقاط - تُرجع القيمة فارغة إذا لم يكن proj4js متاحًا.

عائدات

إلى سلسلة

تحويل الإسقاط إلى سلسلة (غلاف getCode).

عائدات

يساوي

اختبار المساواة بين مثيلي الإسقاط. يحدد المساواة بناءً على كود الإسقاط فقط.

عائدات

الإسقاطان متكافئان.

هدم

تدمير كائن الإسقاط.

يتحول

التحولات هي كائن ، مع من الخصائص ، كل منها قد يكون لها خاصية إلى. يتيح لك هذا تحديد التوقعات دون الحاجة إلى دعم لتضمين proj4js.

يحتوي هذا الكائن على مفاتيح تتوافق مع كائن الإسقاط & lsquosource & rsquo. يجب أن تكون المفاتيح عبارة عن سلاسل ، مطابقة لقيمة projection.getCode (). يجب أن يحتوي كل كائن إسقاط مصدر على مجموعة من مفاتيح إسقاط الوجهة المضمنة في الكائن.

يجب أن تكون كل قيمة في الكائن الوجهة دالة تحويل ، حيث من المتوقع أن يتم تمرير كائن بخاصية .x و. y للوظيفة. يجب أن تعيد الدالة الكائن ، مع تحويل .x و. y وفقًا لوظيفة التحويل.

ملحوظةلا يجب تعيين الخصائص على هذا الكائن مباشرة. لإضافة أسلوب تحويل إلى هذا الكائن ، استخدم الأسلوب addTransform. للحصول على مثال للاستخدام ، راجع ملف OpenLayers.Layer.SphericalMercator.

الافتراضات

الافتراضيات لرموز SRS المعروفة لـ OpenLayers (حاليًا EPSG: 4326 ، CRS: 84 ، urn: ogc: def: crs: EPSG: 6.6: 4326 ، EPSG: 900913 ، EPSG: 3857 ، EPSG: 102113 ، EPSG: 102100 و OSGEO: 41001). المفاتيح هي رمز SRS ، والقيم هي الوحدات ، و maxExtent (مدى صلاحية SRS في الإحداثيات المسقطة) ، و worldExtent (النطاق العالمي و rsquos في EPSG: 4326) و yx (صحيح إذا كان من المعروف أن SRS له ترتيب محور عكسي).

AddTransform

قم بتعيين طريقة تحويل مخصصة بين توقعين. استخدم هذه الطريقة في الحالات التي لا يتوفر فيها proj4js lib أو حيث يلزم معالجة الإسقاطات المخصصة.

المعلمات

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

تحول

تحويل إحداثي نقطة من إسقاط إلى آخر. لاحظ أن نقطة الإدخال تتحول في مكانها.


كيفية تحويل سلسلة إلى OpenLayers.Geometry.Polygon باستخدام جافا سكريبت؟ - نظم المعلومات الجغرافية

لغة ترميز الجغرافيا

رون ليك
Galdos Systems Inc

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

GML أو Geography Markup Language هي معيار ترميز يستند إلى XML للمعلومات الجغرافية تم تطويره بواسطة OpenGIS Consortium (OGC). الوضع الحالي هو RFC قيد المراجعة داخل OpenGIS Consortium. يتم دعم RFC من قبل مجموعة متنوعة من البائعين بما في ذلك Oracle Corporation و Galdos Systems Inc و MapInfo و CubeWerx و Compusult Ltd. تم تنفيذ واختبار GML من خلال سلسلة من العروض التوضيحية التي شكلت جزءًا من OpenGIS Consortium's Web Mapping Test Bed (WMT) الذي تم إجراؤه في سبتمبر 1999. تضمنت هذه الاختبارات عملاء تعيين GML الذين يتفاعلون مع خوادم بيانات GML ومقدمي الخدمات.

2.2 الجغرافيا والرسومات والخرائط

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

تهتم GML بتمثيل محتوى البيانات الجغرافية. بالطبع يمكننا أيضًا استخدام GML لعمل الخرائط. يمكن تحقيق ذلك من خلال تطوير أداة عرض لتفسير بيانات GML ، ومع ذلك ، فإن هذا يتعارض مع نهج GML للتوحيد القياسي ، وفصل المحتوى والعرض التقديمي. لإنشاء خريطة من GML ، نحتاج فقط إلى تصميم عناصر GML في نموذج يمكن تفسيره للعرض الرسومي في متصفح الويب. تتضمن تنسيقات العرض الرسومية المحتملة W3C Scalable Vector Graphics (SVG) و Microsoft Vector Markup Language (VML) و X3D. وهكذا يتم استخدام أداة تحديد الخريطة لتحديد موقع عناصر GML وتفسيرها باستخدام أنماط رسومية معينة. ستتناول المقالة التالية في هذه السلسلة إنشاء خريطة من GML باستخدام SVG و X3D.

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

تم استخدام تنسيقات النص للهندسة والجغرافيا من قبل. إن العمل الرائد لمقاطعة كولومبيا البريطانية بتنسيق SAIF الخاص بها هو مجرد مثال واحد على ذلك. في مقاطعة كولومبيا البريطانية ، يتوفر أكثر من 7000 ملف من بيانات مقياس 1: 20000 بما في ذلك التضاريس والقياس (الهيدروغرافيا والمباني والطرق وما إلى ذلك) وأسماء المواقع الجغرافية بتنسيق SAIF. أظهرت المقاطعة أن تنسيقات النص عملية وسهلة الاستخدام. مثال آخر على استخدام النص لمجموعات البيانات الهندسية المعقدة هو VRML (لغة توصيف المتجهات). تم بناء نماذج VRML الكبيرة والمعقدة والتنقل عبر الويب باستخدام الترميز المستند إلى النص. ومن المثير للاهتمام أن هندسة VRML وسلوكها يتم الآن إعادة صياغتهما في XML من خلال جهود مجموعة عمل X3D.

2.4 GML يشفر الخصائص الهندسية والخصائص

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

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

لتشفير هندسة عنصر مثل مبنى نكتب ببساطة:

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

  • التحقق من صحة العميل لنظام الإسناد المكاني المحدد للخادم. يمكن للعميل طلب وصف SRS (مستند XML) ومقارنته بمواصفاته الخاصة أو إظهاره للمستخدم للتحقق منه.
  • عرض العميل لنظام الإسناد المكاني المحدد للخادم.
  • استخدمه بواسطة خدمة تحويل التنسيق للتحقق من صحة نظام الإسناد المكاني لمصادر بيانات الإدخال.
  • يمكن لخدمة تحويل الإحداثيات مقارنة وصف SRS بمواصفاتها الخاصة لمعرفة ما إذا كانت SRS متسقة مع التحويل المحدد.
  • للتحكم في تحويل الإحداثيات الآلي من خلال توفير أسماء نظام مرجعي للمدخلات والمخرجات وقيم الوسيطة.

باستخدام ترميز GML للمراجع المكانية ، من الممكن إنشاء موقع ويب يخزن أي عدد من تعريفات نظام الإسناد المكاني. ترقبوا موقع GeoJava للحصول على ترميزات قياسية لأنظمة الإسناد المكاني الشائعة.

2.6 مجموعات ميزات GML

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

عندما يتم تقديم طلب لبيانات GML من خادم GML ، يتم دائمًا إرجاع البيانات في FeatureCollections. لا يوجد حد في GML RFC على عدد الميزات التي يمكن تضمينها في مجموعة FeatureCollection. نظرًا لأن FeatureCollections يمكن أن تحتوي على FeatureCollections أخرى ، فإنه إجراء بسيط نسبيًا "للصق معًا" FeatureCollections المستلمة من الخادم في مجموعات أكبر.

2.7 GML - أكثر من مجرد نقل بيانات

في حين أن GML هي وسيلة فعالة لنقل المعلومات الجغرافية من مكان إلى آخر ، فإننا نتوقع أنها ستصبح أيضًا وسيلة مهمة لتخزين المعلومات الجغرافية أيضًا. العنصر الرئيسي هنا هو XLink و XPointer. في حين أن هاتين المواصفات متخلفة في مجال التطوير والتنفيذ ، إلا أنها تبشر بالخير لبناء مجموعات البيانات الجغرافية المعقدة والموزعة. البيانات الجغرافية ، حسناً ، جغرافية. يتم توزيعه بشكل طبيعي على وجه الأرض. الاهتمام بالبيانات حول Flin Flon ، Saskatchewan أعلى بكثير بالقرب من Flin Flon مما سيكون عليه في Pasadena ، كاليفورنيا. في الوقت نفسه ، هناك تطبيقات تحتاج إلى الوصول إلى البيانات والحصول عليها على أساس عالمي لتحليل واسع النطاق أو بسبب الاهتمام بمجال رأسي ضيق. تكثر التطبيقات من النوع اللاحق أيضًا في مجموعة متنوعة من المجالات من حماية البيئة إلى التعدين وإنشاء الطرق السريعة وإدارة الكوارث. ما مدى روعة أن يتم تطوير البيانات على المستوى المحلي ودمجها بسهولة في النطاقين الإقليمي والعالمي؟

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

نعتقد أن GML كتنسيق تخزين ، جنبًا إلى جنب مع XLink و XPointer سيوفر بعض المساهمات المفيدة في هذه المشكلات. شاهد موقع GeoJava للاطلاع على مقالتنا عن قواعد بيانات GML المكانية.

2.8 على ما هي التقنيات التي تعتمد عليها؟

يعتمد GML على XML. من الأفضل التفكير في لغة XML ، على الرغم من الحديث عنها أحيانًا كبديل لـ HTML ، كلغة لوصف البيانات. وبشكل أكثر صحة ، فإن XML هي لغة للتعبير عن لغات وصف البيانات. XML ليست لغة برمجة. لا توجد آليات في XML للتعبير عن السلوك أو لإجراء العمليات الحسابية. يتم ترك ذلك للغات أخرى مثل Java و C ++.

يوفر XML 1.0 وسيلة لوصف (ترميز) البيانات باستخدام علامات يحددها المستخدم. يتم تقييد كل مقطع من مستند XML بعلامات البداية والنهاية. يبدو هذا على النحو التالي:

& lt الميزة>
. المزيد من أوصاف XML.
.
& lt / ميزة>

يتم تحديد أسماء العلامات الصالحة من خلال تعريف نوع المستند. يتم أيضًا تحديد العلامات التي يمكن أن تظهر داخل زوج علامات الفتح والإغلاق بواسطة DTD.

يمكن أن تحتوي علامات XML أيضًا على سمات مرتبطة بها. هذه أيضًا مقيدة بـ DTD في الاسم وفي بعض الحالات من حيث القيم التي يمكن أن تفترضها السمات.

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

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

2.8.2 XSL و XSLT (تحويل WWW)

كان التركيز الأصلي لـ XML هو توفير وسيلة لوصف البيانات بشكل منفصل عن عرضها ، لا سيما في سياق شبكة الويب العالمية. يتعامل إصدار XML 1.0 مع وصف البيانات. كانت التكنولوجيا المصاحبة ، المسماة XSL ، هي التعامل مع جانب العرض. بمرور الوقت ، أصبح من الواضح أن XSL هما في الواقع تقنيتان مختلفتان. واحد ، يسمى الآن XSLT (ترمز T إلى التحويل) ، يركز على تحويل XML. تهتم التقنية الأخرى بالتنسيق الفعلي للنص أو الصور ويشار إليها من حيث كائنات التنسيق أو كائنات التدفق. في مناقشاتنا نحن مهتمون فقط بـ XSLT. نظرًا لأنه تم تطوير العديد من الأدوات (مثل MS IE 5.0) قبل توقف تسمية XSLT ، لا يزال XSL يُستخدم غالبًا عندما يكون XSLT مقصودًا فقط. سوف نتبع هذه الممارسة.

إذا كنت تتابع xml.com ، فقد تتذكر قدرًا كبيرًا من النقاش حول مزايا XSL. لقد ساعد توضيح XSLT في تثبيط هذه المناقشة إلى حد ما ، ومع ذلك ، لا يزال هناك قدر كبير من الشكوك بشأن الأداة المساعدة والحاجة إلى XSL في بعض قطاعات مجتمع XML. نحن نقف على الجانب الآخر من القضية. نعتقد أن الطابع التحولي لـ XML هو الأهم ، وأن XSL (XSLT) يوفر وسيلة تعريفية واضحة للتعبير عن هذه التحويلات. من وجهة نظرنا ، يعتبر XSLT ضروريًا لـ GML مثل XML نفسه.

XSL هي لغة بسيطة إلى حد ما. يوفر تركيبًا قويًا للتعبير عن مطابقة النمط والاستبدال. إنه تصريحي. يمكنك بسهولة قراءة ما يقول XSLT القيام به. أنت لا ترى كيف يتم إنجازها. باستخدام المواصفات المصاحبة (XPath و XQL) ، يمكنك تحديد بعض الاستعلامات القوية جدًا في مستند XML. علاوة على ذلك ، يدمج XSLT القدرة على استدعاء الوظائف في لغة برمجة أخرى مثل VBScript أو Java من خلال استخدام وظائف الامتداد. هذا يعني أنه يمكن استخدام XSL للقيام بالاستعلام والاختيار ، ثم استدعاء Java أو لغة أخرى لإجراء العمليات الحسابية المطلوبة أو معالجة السلسلة. بالنسبة للمهام البسيطة ، يوفر XSLT إمكانات حسابية ومعالجة سلسلة مضمنة.

2.8.3 SVG و VML و X3D - رسومات المتجهات للويب

جعلت لغة XML وجودها محسوسًا في العديد من الأوساط المختلفة ، وليس أقلها الرسومات المتجهة. تم تطوير العديد من المواصفات المستندة إلى XML لوصف عناصر الرسوم المتجهية ، بما في ذلك Scalable Vector Graphics (SVG) ، و Microsoft's Vector Markup Language (VML) ، و X3D ، وتجسد XML لبناء الجملة وسلوك VRML (لغة ترميز الواقع الافتراضي). تشبه هذه المواصفات من نواحٍ عديدة GML ، لكن لها هدف مختلف تمامًا. لكل منها وسيلة لوصف الهندسة. ومع ذلك ، فإن المواصفات الرسومية تركز على المظهر ومن ثم تشمل خصائص وعناصر الألوان وأوزان الخطوط والشفافية على سبيل المثال لا الحصر. لعرض ملف بيانات SVG أو VML أو X3D ، من الضروري أن يكون لديك عارض بيانات رسومي مناسب. في حالة VML ، تم تضمين هذا في IE 5.0 (وليس في أي مكان آخر). في حالة SVG ، تقوم Adobe بتطوير سلسلة من المكونات الإضافية لـ Internet Explorer و Netscape Communicator بالإضافة إلى Adobe Illustrator ، في حين أن شركة IBM والعديد من الشركات الأخرى ، أو طورت بالفعل ، عارضات SVG أو دعم مكتبات الرسومات. العديد من برامج عرض Java SVG متاحة أو قيد التطوير.

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

يوضح الشكل 1. رسم الخريطة باستخدام ورقة أنماط XSLT على عميل رسم خرائط مناسب.

باستخدام تقنية HTML الحالية ، من الممكن بناء مجموعات بيانات جغرافية مرتبطة. يمكن للمرء بسهولة إنشاء خرائط صور مرتبطة بخرائط الصور الأخرى. ومع ذلك ، فإن آلية ربط HTML بها العديد من القيود ، ونتيجة لذلك ، ليس من العملي إنشاء مجموعات بيانات موزعة كبيرة ومعقدة كما يحدث في أنظمة العالم الحقيقي. القيد الأكثر أهمية هو أن ارتباط HTML مشفر بشكل فعال في كل من المصدر (& lta href =.>) والهدف (المرساة) يوثقان حقيقة من شأنها أن يكون أي نظام مهم هشًا ومن المستحيل قياسه. يتغلب XLink على هذه المشكلات من خلال السماح بروابط "خارج الخط". في ارتباط خارج الخط ، يشير المصدر فقط إلى قاعدة بيانات الارتباط وهي قاعدة بيانات الارتباط التي توفر المؤشر لعناصر XML محددة في المستند الهدف. وبالتالي ، فإن الارتباط ليس مشفرًا في أي من الوثيقتين. هذا ذو أهمية كبيرة فيما يتعلق بـ GML لأنه يجعل من الممكن بناء مجموعات بيانات جغرافية موزعة وقابلة للتطوير. والأهم من ذلك ، يتيح كل من XLink و XPointer إنشاء فهارس خاصة بالتطبيقات لتواريخ معينة. هل تحتاج إلى مجموعة من المباني يتم تنظيمها حسب عنوان الشارع؟ هل تريد إنشاء فهرس لقطعة أرض المزرعة بناءً على نوع المحاصيل؟ باستخدام XLink و XPointer ، يمكن إنشاء أنظمة الفهرسة هذه والعديد من أنظمة الفهرسة الأخرى بسهولة ، وكل ذلك دون تغيير بيانات المصدر نفسها. سيكون لدينا الكثير لنقوله عن هذا في المقالات القادمة.

لماذا نقدم GML على الإطلاق؟ هناك بالفعل مجموعة من معايير الترميز للمعلومات الجغرافية بما في ذلك COGIF و MDIFF و SAIF و DLG و SDTS على سبيل المثال لا الحصر. ما هو الاختلاف في GML؟ في بعض النواحي لا شيء. GML هو ترميز نصي بسيط للميزات الجغرافية. بعض هذه التنسيقات الأخرى لا تعتمد على النص ، ومع ذلك ، فإن بعضها (مثل SAIF) مؤكد. يعتمد GML على نموذج جغرافي مشترك (OGC Abstract Specification) الذي تم تطويره والموافقة عليه من قبل الغالبية العظمى من بائعي GIS في العالم. والأهم من ذلك ، أن GML مبنية على XML. لماذا هذا مهم؟ هناك عدة أسباب وراء أهمية XML. للبدء بـ XML يوفر طريقة للتحقق من تكامل البيانات. ثانيًا ، يمكن قراءة أي مستند XML وتحريره باستخدام محرر نصوص بسيط. لا يلزم وجود أكثر من برنامج MS Notepad لعرض مستند XML أو تغييره. ثالثًا ، نظرًا لوجود عدد متزايد من لغات XML ، سيكون من السهل أكثر فأكثر دمج بيانات GML مع البيانات غير المكانية. حتى في حالة البيانات غير المكانية غير XML ، هذا هو الحال. ربما ، الأهم من ذلك ، أن XML سهل التحويل. باستخدام XSLT أو أي لغة برمجة أخرى (VB ، VBScript ، Java ، C ++ ، Javascript) يمكننا بسهولة تحويل XML من نموذج إلى آخر. وبالتالي يمكن استخدام آلية واحدة لمجموعة من التحولات من تصور البيانات لتنسيق التحولات والاستعلامات المكانية والتعميم الجغرافي المكاني.

تستند GML بشكل آمن إلى معيار عام معتمد على نطاق واسع ، وهو XML. يضمن ذلك إمكانية عرض بيانات GML وتحريرها وتحويلها من خلال مجموعة متنوعة من الأدوات التجارية والأدوات المجانية. لأول مرة يمكننا التحدث حقًا عن المعلومات الجغرافية المفتوحة.

3.1 Automated Verification of Data Integrity

One of the important features of XML is the ability to verify data integrity. In the XML 1.0 Recommendation this is achieved through the Document Type Definition (DTD). The DTD specifies the structure of an XML document in a such a way that a validating parser can verify that a given document instance complies with this DTD. GML is specified by such a DTD. Future versions of GML will also be supported by XML Schema, a more flexible integrity mechanism than the DTD that should become a W3C Recommendation early in 2000.

Using the GML DTD, servers and clients can readily verify that the data they are to send or receive complies with the specification. Furthermore this can be accomplished with a variety of parsing tools by at least a have a dozen different vendors on a wide variety of operating systems, databases, application servers and browsers.

3.2 GML can be Read by Public Tools

As we have already noted, GML is text and one need have nothing more than a simple text editor to read it. GML, however, is structured, and any of a variety of XML editors can be employed to display that structure. This makes viewing and navigating GML data very easy as shown in Figure 2.

Figure 2. Sample GML File Viewed in XML Spy

3.3 GML can be Easily Edited

Using the many XML editors described in Section 3.2 it is also very easy to edit GML data. Want to add a new feature property or change a property value ? Need to adjust a features geometry. These are easily accomplished with a standard XML editor. Unlike many other text based formats however there is no way you can corrupt the data using an XML editor. The editor can be made to ensure that any data which is created or modified complies with the DTD.

It is also not difficult to create a graphical editor for GML and such products are expected to appear on the market within the coming year. Again the GML DTD can be used to ensure data integrity. Note that when one edits GML graphically an intermediate graphic representation is required (perhaps SVG) which is then used to define the geometry of the associated GML feature. We will have more to say on this subject in our up coming article on Making Maps from GML to appear on the GeoJava site.

3.4 GML can readily Integrate with Non-Spatial Data

Binary data structures are typically very difficult to integrate with one another. A classic example is that of associating a text document, or a parameter list, with a separately developed and maintained spatial database of parcels or land tenure boundaries. With a binary data structure one must understand the file structure or database schema and be able to modify it. In many legacy systems using flat files the data structure cannot be modified without breaking the applications which rely on the existing data structure. With GML it is comparatively easy to provide links to other XML data elements and this will dramatically improve with the introduction of XLink and XPointer. Even links to non-XML elements can be readily handled using the well established URI syntax.

3.5 GML is Transformable

The most important aspect of XML in our view is its transformability. It is quite easy to write a transformation which carries XML data relative to one DTD to XML relative to another. This is exactly what we do when we generate an SVG graphical element stream from a GML data file. Such transformations can be accomplished using a variety of mechanisms including XSLT, Java, Javascript and C++ to name only a few. XSLT in our view is of particular interest. With XSLT it is very easy to write a style sheet which locates and transforms GML elements into other XML elements. Where XSLT is not up to the task, one can readily incorporate XSLT extension functions written in Java or VB (the exact languages supported depends on the implementation) to perform tasks such as string manipulation or mathematical computation. XSLT can also make use of powerful searching syntax (XPath/XQL) so as to retrieve elements that satisfy complex boolean expressions on the elements and their attributes. Using these techniques an XSLT style sheet can perform a wide variety of querying, analysis and transformation functions. Consider the following examples:

Using XSLT with suitable extension functions we can extract spatial elements which satisfy various spatial and attribute queries. Galdos Systems Inc will be providing just such a set of spatial extension functions in the near future on the GeoJava site. Using these functions it will be straightforward to write a spatial query that extracts features of a given type which lie within a specified region or which intersect a particular feature.

Change the XSLT style sheet and we can accomplish a totally different function. We can for example write a style sheet that performs coordinate transformation as was demonstrated in the OGC WMT IOC in Washington, September 10, 1999. This immediately provides us with a coordinate transformation service. Locate GML data in one part of the world in reference system X and simply pass its URI to the service and specify the target reference system, and presto you will have GML in the new frame of reference. Look on the GeoJava site for upcoming coordinate transformation service for GML data.

Change the XSLT style sheet and we can accomplish yet another function. We can for example generate an SVG, VML or X3D map on the server. Select different style sheets for different viewing devices or different types of maps.

The transformability of GML also means that we can readily construct application specific indexes or at least we will be able to once XLink and XPointer implementations start to move toward reality. Look for this to have a huge impact on the utility of GML data sets.

3.6 GML can Transport Behaviour

XML is a language for describing data description languages. GML does not itself encode behaviour. GML can, however, be used in conjunction with languages like Java or C++ to in effect transport geographic behaviour from one place to another. This can be done using a simple object factory which instantiates objects based on received GML data, mapping the GML element names into object classes. In the Java case this would mean mapping the GML elements into Java classes as listed in the OGC Java Simple Features RFC. This "re-hydration" of the GML data then creates Java objects which have the OGC interfaces for Simple Features (of course we did not transport the interfaces). GML and Java (or COM or CORBA) Simple Features can thus get along very well with one another. In many applications one only needs the behaviour for a small number of the elements. With this approach one might receive 10,000 GML elements but only need to construct a hundred or so Java objects on an as needed basis.

4.0 What's Coming Down the Road ?

I think we have made it pretty clear that we think GML is pretty cool. Once you have had the opportunity to play with it you will think it is pretty cool as well. Over the next 6 months a series of articles and services extending your understanding of GML, and how to apply it in real world problems, will appear on the GeoJava website. Look for articles on Map Making, Making maps in SVG, Geographic Transformations, GML Spatial databases, Mobile applications and much more.

What will happen to GML itself ? We expect quite a lot. The current version of GML is based on linear geometry and provide no notions of topology. Over the next several months, new versions of GML will be introduced adding topology, non-linear feature geometries, 21/2 and 3D geometry, support for OGC Coverages, XSLT spatial query extension functions, XLink/XPointer support, and an XML Schema implementation.

GML is a powerful new way to look at spatial information using XML encoding. It promises. however, much more than a mere encoding standard. The inherent transformability and accessibility of GML will open a whole new domain in geo-spatial information management.


How to convert a String to OpenLayers.Geometry.Polygon using javascript? - Geographic Information Systems

Wicket is a lightweight library for translating between Well-Known Text (WKT) and various client-side mapping frameworks:

  • Leaflet (demo)
  • Google Maps API (demo)
  • ESRI ArcGIS JavaScript API (demo)
  • Potentially any other web mapping framework through serialization and de-serialization of GeoJSON (with JSON.parse )

The core Wicket library and the Leaflet extension are both compatible with Node.js the Google Maps and ArcGIS API extensions will not work in Node.js because they require a browser.

If you are looking for Apache Wicket, the web-app development framework for Java, you'll find it here.

Wicket is released under the GNU General Public License version 3 (GPLv3). Accordingly:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The following examples work in any of the mapping environments, as Wicket has a uniform API regardless of the client-side mapping library you're using.

Wicket will read from the geometry objects of any mapping client it understands. ملحوظة: Don't use the deconstruct() method! This is used internally by Wkt.Wkt() instances. Use fromObject() instead, as in the following example.

Dependencies and Build Information

Wicket has zero dependencies, however, JSON parsing (from strings) is not provided. Wicket looks for the function JSON.parse , which is provided in most modern browsers (get it with this library, if you need to support older browsers).

Minified versions can be generated via:

Read the documentation here. Documentation can be generated with JSDoc 3.

Either way, make sure you invoke jsdoc from a directory in which you have write access it will output documentation to your current working directory.

Wicket was created out of the need for a lightweight Javascript library that can translate Well-Known Text (WKT) strings into geographic features. This problem arose in the context of OpenClimateGIS, a web framework for accessing and subsetting online climate data.

OpenClimateGIS emits WKT representations of user-defined geometry. The API Explorer allowed users to define arbitrary areas-of-interest (AOIs) and view predefined AOIs on a Google Maps API instance. So, initially, the problem was converting between WKT strings and Google Maps API features. While other mapping libraries, such as OpenLayers, have very nice WKT libraries built-in, the Google Maps API, as of this writing, does not. In the (apparent) absence of a lightweight, easy-to-use WKT library in Javascript, I set out to create one.

That is what Wicket aspires to be: lightweight, framework-agnostic, and useful. I hope it achieves these goals. If you find it isn't living up to that and you have ideas on how to improve it, please fork the code or drop me a line.

Wicket borrows heavily from the experiences of others who came before us:

  • The OpenLayers 2.7 WKT module (OpenLayers.Format.WKT)
  • Chris Pietshmann's article on converting Bing Maps shapes (VEShape) to WKT
  • Charles R. Schmidt's and the Python Spatial Analysis Laboratory's (PySAL) WKT writer

The base library, wicket.js, contains the Wkt.Wkt base object. This object doesn't do anything on its own except read in WKT strings, allow the underlying geometry to be manipulated programmatically, and write WKT strings. By loading additional libraries, such as wicket-gmap3.js, users can transform between between WKT and the features of a given framework (e.g. google.maps.Polygon instances). The intent is to add support for new frameworks as additional Javascript files that alter the Wkt.Wkt prototype.

To extend Wicket, nominally by writing bindings for a new mapping library, add a new file with a name like wicket-libname.src.js (and corresponding minified version wicket-libname.js) where "libname" is some reasonably short, well-known name for the mapping library.

WKT geometries are stored internally using the following convention. The atomic unit of geometry is the coordinate pair (e.g. latitude and longitude) which is represented by an Object with x and y properties. An Array with a single coordinate pair represents a a single point (i.e. POINT feature):

An Array of multiple points (an Array of Arrays) specifies a "collection" of points (i.e. a MULTIPOINT feature):

An Array of multiple coordinates specifies a collection of connected points in an ordered sequence (i.e. LINESTRING feature):

An Array can also contain other Arrays. In these cases, the contained Array(s) can each represent one of two geometry types. The contained Array might reprsent a single polygon (i.e. POLYGON feature):

The above example cannot represent a LINESTRING feature (one of the few type-based constraints on the internal representations), however it may represent a MULTILINESTRING feature. Both POLYGON and MULTILINESTRING features are internally represented the same way. The difference between the two is specified elsewhere (in the Wkt instance's type) and must be retained. In this particular example (above), we can see that the first coordinate in the Array is repeated at the end, meaning that the geometry is closed. We can therefore infer it represents a POLYGON and not a MULTILINESTRING even before we plot it. Wicket retains the type of the feature and will always remember which it is.

Similarly, multiple nested Arrays might reprsent a MULTIPOLYGON feature:

Or a POLYGON with inner rings (holes) in it where the outer ring is the polygon envelope and comes first subsequent Arrays are inner rings (holes):

Or they might represent a MULTILINESTRING where each nested Array is a different LINESTRING in the collection. Again, Wicket remembers the correct type of feature even though the internal representation is ambiguous.


Resource file naming

Resources are named for the full type name of their class minus the assembly name. For example, a French resource in a project whose main assembly is LocalizationWebsite.Web.dll for the class LocalizationWebsite.Web.Startup would be named Startup.fr.resx. A resource for the class LocalizationWebsite.Web.Controllers.HomeController would be named Controllers.HomeController.fr.resx. If your targeted class's namespace isn't the same as the assembly name you will need the full type name. For example, in the sample project a resource for the type ExtraNamespace.Tools would be named ExtraNamespace.Tools.fr.resx.

In the sample project, the ConfigureServices method sets the ResourcesPath to "Resources", so the project relative path for the home controller's French resource file is Resources/Controllers.HomeController.fr.resx. Alternatively, you can use folders to organize resource files. For the home controller, the path would be Resources/Controllers/HomeController.fr.resx. If you don't use the ResourcesPath option, the .resx file would go in the project base directory. The resource file for HomeController would be named Controllers.HomeController.fr.resx. The choice of using the dot or path naming convention depends on how you want to organize your resource files.

Resource name Dot or path naming
Resources/Controllers.HomeController.fr.resx Dot
Resources/Controllers/HomeController.fr.resx Path

Resource files using @inject IViewLocalizer in Razor views follow a similar pattern. The resource file for a view can be named using either dot naming or path naming. Razor view resource files mimic the path of their associated view file. Assuming we set the ResourcesPath to "Resources", the French resource file associated with the Views/Home/About.cshtml view could be either of the following:

If you don't use the ResourcesPath option, the .resx file for a view would be located in the same folder as the view.

RootNamespaceAttribute

The RootNamespaceAttribute attribute provides the root namespace of an assembly when the root namespace of an assembly is different than the assembly name.

This can occur when a project's name is not a valid .NET identifier. For instance my-project-name.csproj will use the root namespace my_project_name and the assembly name my-project-name leading to this error.

If the root namespace of an assembly is different than the assembly name:

  • Localization does not work by default.
  • Localization fails due to the way resources are searched for within the assembly. RootNamespace is a build-time value which is not available to the executing process.

If the RootNamespace is different from the AssemblyName , include the following in AssemblyInfo.cs (with parameter values replaced with the actual values):

The preceding code enables the successful resolution of resx files.


In a new short series of posts, we highlight some of the useful tools and techniques for developers and designers. Recently we’ve covered HTML Emails and SVG Generators. This time we look into different kinds of tools to help you streamline your accessibility testing process. Don’t miss the next one.

Smashing Magazine is so much more than articles.

14 printed books و 67 eBooks. Written for web developers, designers and marketeers.

Jump to books ↬ Free airmail shipping wordlwide. No ifs or buts.

Online workshops with experts. Broken into 2.5h-segments, with interactive, live sessions.

Helping designers and developers find great jobs, and connect with great companies.

A friendly community for people who design and build the web. With discounts, goodies and fancy cats.

Weekly tips on front-end & UX, delivered straight to your inbox. Just practical stuff that you can use.


In this HTML vs HTML5 article, we’ve learned the key features that distinguish HTML5 with its predecessor.

First, HTML5 enhanced tons of areas that its older version was lacking. It supports both video and audio embedding via <audio> و <video> tags, gives full support for JavaScript to run in the background, provides multiple new elements, like date, datalist, summary, etc., and has better compatibility with improved parsing rules.

Second, from a developer standpoint, HTML5 presents improvement in many areas, including persistent error handling, semantics elements, support for web application and mobile usage, utilization for <canvas> element, etc.

Finally, considering how convenient the use of HTML5 in modern-day web technology, we can safely assume that the adoption of this markup language will increase even more rapidly in the years to come.

It’s of paramount importance for you to learn about HTML5 as quickly as possible to maximize the potential of modern-day browsers. We hope that this HTML vs HTML5 article is of help. Best of Luck!

Domantas leads the content and SEO teams forward with fresh ideas and out of the box approaches. Armed with extensive SEO and marketing knowledge, he aims to spread the word of Hostinger to every corner of the world. During his free time, Domantas likes to hone his web development skills and travel to exotic places.


شاهد الفيديو: Web Mapping using Open Layer (شهر اكتوبر 2021).