أكثر

إعادة طرح GeoJSON في OpenLayers

إعادة طرح GeoJSON في OpenLayers


أنا في الأساس أحاول (وفشل) تكرار هذا في OpenLayers 3.

لقد أعددت كمانًا هنا: http://jsfiddle.net/vu8ecy8v/5/

لدي انطباع بأن OpenLayers سيعيد طرح مصدر GeoJSON "سريعًا" إذا تم تحديد إسقاط GeoJSON - وهو ما أفعله في طبقات: من ol.map:

... new ol.layer.Vector ({title: 'Montana'، source: montanaSource، projection: 'EPSG: 4326'،}) ، ...

هذا لا يحدث فرقا. هل أفتقد شيئًا واضحًا أو يجب علي إعادة طرح GeoJSON بطريقة أخرى.

إذا قمت بتغيير الخلفية / العرض لتكون EPSG: 4326 (مثل المصدر) ، فإن GeoJSON يظهر بدون عوائق. هذه البدائل في كمان (علق بها).


بعد البحث في مستندات API على http://openlayers.org/en/v3.0.0/apidoc/ol.source.GeoJSON.html وإلغاء تحديد خانة الاختيار Stable Only أعلى يمين الشعار ، أرى خيار عرض لـ المصدر.

يجب عليك هنا ضبط الإسقاط ليقول لـ OpenLayers 3 لتحويل إحداثيات البيانات.

محاولة تغيير كمان الخاص بك مع الجزء السفلي ، فإنه يعمل

var montanaSource = new ol.source.GeoJSON ({object:…، projection: 'EPSG: 3857'})؛

هل حاولت إعادة طرح بياناتك بشكل صريح باستخدام ol.proj.transform؟

على سبيل المثال: var map_centre = ol.proj.transform ([lon، lat]، 'EPSG: 4326'، 'EPSG: 3857') ؛


Openlayers 3 Reproject EPSG: 4326 vector إلى EPSG: 3857

أحتاج إلى تحويل بيانات متجه GeoJSON من EPSG: 4326 إلى EPSG: 3857.

لدي خريطة.

وعرض.

أحدد كائن geoJson الخاص بي.

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

ثم أستخدم "vectorSource" أعلاه في طبقة Vector جديدة.

بغض النظر عما أفعله فإما أن أرى المتجه مرسومًا. ولكن في EPSG: 4326 أو لا شيء يتم تحميله.

لقد قضيت الكثير من الوقت في محاولة اكتشاف كيفية جعل OpenLayers3 يقوم بذلك. أي مساعدة يحظى بتقدير كبير!!


1 إجابة 1

يجب أن تتحول ميزاتك دائمًا إلى عرض الإسقاط:

(تمت إعادة تسمية الخيار الافتراضي DataProject إلى dataProject منذ OpenLayers 5)

حاليًا ، تستخدم طريقة العرض الخاصة بك تاجر الويب الافتراضي كما هو مستخدم من قبل OSM.

إذا كنت ترغب في عرض كل شيء (الميزات و OSM) في EPSG: 28992 ، فستحتاج إلى تسجيل proj4 وتعيين عرض الإسقاط

إذا كنت تستخدم geojsonSource مع عنوان url لا تحتاج إلى تحديد الإسقاط ، يتم تحويل البيانات تلقائيًا إلى عرض الإسقاط.


مدهنتد

كيف يقلل إشعاع هوكينغ من كتلة الثقوب السوداء؟

سؤال فلسفي حول الانحدار اللوجستي: لماذا لا يتم تدريب قيمة العتبة المثلى؟

هل يمكن لإجراء مخزن الرجوع إلى قاعدة البيانات التي تم تخزينها فيها؟

ما الذي يجعل المحاكاة الدقيقة للأنظمة القديمة مهمة صعبة؟

ما هي أغلى مادة في العالم يمكن استخدامها لصنع عود بون بون؟

السجل الورقي هو ما أعيق

ما مقدار النقد الذي يمكنني حمله بأمان إلى الولايات المتحدة وتجنب المصادرة المدنية؟

استخراج معاملات سلسلة ديريتشليت

تقييد خيارات حقل البحث ، بناءً على قيمة حقل بحث آخر؟

كيف يمكنني عمليا شراء الأسهم؟

جميع أحرف ASCII مع عدد بت معين

هل يستطيع أحد أن ينشر قصة حدثت لك؟

كيف تكون جيدًا في الخروج بمثال مضاد في الطوبولوجيا

طريقة أسرع لحساب أكبر عامل أولي

هل Diceware أكثر أمانًا من عبارة مرور طويلة؟

هل يمكنني انتقاد كبار المطورين من حولي لعدم كتابتهم تعليمات برمجية نظيفة؟

الحقن في الصنف المناسب والاختيار دون انتظام

خطأ في سنوات الخبرة في السيرة الذاتية؟

Von Neumann Extractor - أي بت يتم الاحتفاظ به؟

كيف أتعامل مع زميل في العمل يستمر في طلب إجراء تغييرات سطحية صغيرة على أحد التقارير ، وهو ما يثير قلقي بشكل جدي؟

تم شراء المصرف الذي أتعامل معه ، فهل سأضطر الآن إلى البدء في تقديم الإقرارات الضريبية في دولة مختلفة؟

جزيرة الفرسان والفرسان والجواسيس

هل حقًا لم يعد هناك استخدام لـ MD5 بعد الآن؟

كيف أقوم بإعادة تركيب رف بالحائط عندما ينفصل عن الحائط؟

مرشح WMS OpenLayers للتاريخ

تحميل GeoJSON عبر AJAX بعد إضافة الطبقة إلى OpenLayers 3؟ ) - لماذا يعمل أحد الإسقاطات المخصصة وليس الآخر؟ إعادة طرح طبقة تجانب XYZ بسرعة في OpenLayers 3؟ إعادة إسقاط OpenLayers WMTS ، إحداثيات المربع المحيط وسلوك WMS الغريب ، تقوم الطبقة المفتوحة بالضغط على العلامات الموضعية بعد تغيير إسقاط الخريطة

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

حاولت ما يلي ، ولكن لم يحالفني الحظ

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

الطريقة التي أضفتها الآن ، ينتج عنها ". ليست وظيفة "

يرجى تقديم رسالة خطأ كاملة.

ماذا لو أضفت TIME: "your-time" كأحد المعلمات؟

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

حاولت ما يلي ، ولكن لم يحالفني الحظ

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

الطريقة التي أضفتها الآن ، ينتج عنها ". ليست وظيفة "

يرجى تقديم رسالة خطأ كاملة.

ماذا لو أضفت TIME: "your-time" كأحد المعلمات؟

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

حاولت ما يلي ، ولكن لم يحالفني الحظ

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

الطريقة التي أضفتها الآن ، ينتج عنها ". ليست وظيفة "

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

حاولت ما يلي ، ولكن لم يحالفني الحظ

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


هل من الممكن ، النقر للتكبير والتبديل إلى طبقة متجه تحتها ، على صفحة الويب لإظهار طبقات GeoServer WMS عبر OpenLayers؟

الأول هو طبقة المقاطعة

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

هل من الممكن النقر لتحديد حالة ما والتكبير لطبقة المقاطعة أدناه ، ولا تظهر طبقة الحالة بعد ذلك ،
وعندما أقوم بالتصغير مرة أخرى ، تظهر طبقة الحالة مرة أخرى؟

أحاول استخدام Select features by Hover of OpenLayers لتحديد الحالة ، ثم انتقل إلى طبقة المقاطعة.
لكنها لا تعمل & # 8217t.

إجابة واحدة

يمكنك إضافة طبقاتك بشكل منفصل ثم تطبيق التمرير على طبقة المقاطعة فقط.


مدهنتد

ما هو الوضع القانوني للسفر مع (غير موصوف) الميثادون في حقيبة يدك؟

هل مدارس الطيران لديها عادة قواعد اللباس أو التوقعات؟

كيف ترد على الأحاديث الصغيرة / الحقائق العشوائية بطريقة غير هجومية؟

لماذا لا تكون الخيام القطنية (البولي) أكثر شيوعًا؟

كيف يمكنني الحصول على المزيد من الطاقة دون إنفاق العملات؟

هل يوجد رواد فضاء نباتيون؟

لماذا غالبًا ما تتضمن الكتب المدرسية حلولًا للمشكلات الفردية أو الزوجية وليس كلاهما؟

ما نوع السلك الذي يجب أن أستخدمه لربط منفذ؟

تكاليف الإصلاح المتتالية بعد حشية الرأس المنفوخة في سيارة سوبارو آوت باك 2004

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

ماذا تسمي فعل الشخص الضعيف في مواجهة خصوم أكبر؟

C-152 تسخين الكربوهيدرات قبل الهبوط في الطقس الحار؟

ما مدى شهرة وكيفية استخدام ترميز هوفمان في عام 1979؟

لماذا لا يوجد فضل الله عند الذهاب من يوم طوف إلى السبت؟

تعرض شاشة التمهيد Fedora كلاً من شعار Fedora وشعار Lenovo. لماذا و كيف؟

هل هناك أي دليل على أن العبوات الصغيرة (10 لترات) من 95٪ أكسجين تساعد بالفعل في داء المرتفعات؟

هل Finite Automata Turing كاملة؟

هل يؤدي تنظيف الحمام بالموجات فوق الصوتية إلى إتلاف معايرة الأواني الزجاجية الحجمية في المختبر؟

لماذا يبتعد الحل العددي لـ ODE عن التوازن غير المستقر؟

كتاب فانتازيا عبر العالم في التسعينيات (أو ما قبله) بنهر دائري وشوم من الدرجة الأولى

هل ينزف حبر الحبار؟

OpenLayers: اكتشف وحدات قيمة الارتفاع

خريطة OpenLayers باستخدام SRS المخصص (بدون رمز EPSG) إعادة إسقاط WGS84 إلى نظام إحداثيات متري بنقطة مرجعية في QGIS؟ كيفية التحويل تلقائيًا بين الطبقة الأساسية وطبقة المتجه في OpenLayersIssues مع الحصول على الارتفاع من SRTM gdalwarp WGS84 (EPSG: 4326) إلى Mercator ( EPSG: 3857) أعد طرح بلاط GEOTIFF من UTM إلى Plate CareeProblem مع إضافة GeoJSON إلى OpenLayers 3OpenLayers 3 يحول الإحداثيات إلى إسقاط مخصص لماذا تكون نتائج التحويل من المشروع 4 غير دقيقة؟ لا يمكن فتح صورة في CS63 في QGIS المسافة بين النقاط غير متسقة

هل من الممكن في OpenLayers معرفة (بشكل مثالي من ol / proj / Projection أو من ol / source / Source) ، ما هي وحدة قياس الارتفاع (تنسيق z)؟

أم أنه من الممكن أن نؤكد بطريقة ما أن الارتفاع دائمًا بالأمتار؟ (أي بتحويل الهندسة إلى EPSG: 4326 ، والتي يجب أن تكون دائمًا مترًا)

هل من الممكن في OpenLayers معرفة (بشكل مثالي من ol / proj / Projection أو من ol / source / Source) ، ما هي وحدة قياس الارتفاع (تنسيق z)؟

أم أنه من الممكن أن نؤكد بطريقة ما أن الارتفاع دائمًا بالأمتار؟ (أي بتحويل الهندسة إلى EPSG: 4326 ، والتي يجب أن تكون دائمًا مترًا)

هل من الممكن في OpenLayers معرفة (بشكل مثالي من ol / proj / Projection أو من ol / source / Source) ، ما هي وحدة قياس الارتفاع (تنسيق z)؟

أم أنه من الممكن أن نؤكد بطريقة ما أن الارتفاع دائمًا بالأمتار؟ (أي بتحويل الهندسة إلى EPSG: 4326 ، والتي يجب أن تكون دائمًا مترًا)

هل من الممكن في OpenLayers معرفة (بشكل مثالي من ol / proj / Projection أو من ol / source / Source) ، ما هي وحدة قياس الارتفاع (تنسيق z)؟


بناء قاعدة بيانات مكانية مجانية ومفتوحة المصدر باستخدام PostgreSQL و PostGIS

سيقدم هذا البرنامج التعليمي PostgreSQL ، وهو نظام إدارة قواعد البيانات العلائقية (RDBMS) ، و PostGIS ، وهو امتداد مكاني لـ PostgreSQL يسمح للمستخدم بتخزين البيانات الجغرافية والاستعلام عنها مكانيًا. كل من PostgreSQL و PostGIS هما برنامجان مجانيان ومفتوحان المصدر. تذكر كارتو؟ تم إنشاء CARTO في أعلى قاعدة بيانات PostgreSQL الممكّنة من PostGIS ، وقد بدأنا بالفعل في استخدام PostGIS!

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

في هذا البرنامج التعليمي ، سنقوم بتثبيت PostgreSQL وامتداد PostGIS ، ثم نقوم بتحميل البيانات المكانية المخزنة كملف CSV وكملف Shapefile في قاعدة البيانات. أخيرًا ، سنقوم بتشغيل بعض الاستعلامات المكانية التي توضح بعض وظائفها. إنشاء قاعدة بيانات تحتوي على المقاهي والأحياء في مدينة كامبريدج. بمجرد الإنشاء ، سنقوم بتشغيل بعض الاستعلامات التي ستخبرنا بعدد المقاهي في كل حي وأقرب المقاهي إلى موقع معين.

مجموعات البيانات التي سنعمل معها اليوم عبارة عن ملف CSV للمقاهي في مدينة كامبريدج ، وملف لأشكال أحياء كامبريدج.

المتطلبات الأساسية

مقاهي كامبريدج والأحياء

قم بتثبيت PostgreSQL و PostGIS

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

قم بتثبيت PostgreSQL

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

سوف تخدمك الإعدادات الافتراضية بشكل جيد ، تأكد من تذكر كلمة المرور الخاصة بك لـ postgres حساب المستخدم المتميز. لا توجد ميزة "نسيت كلمة المرور الخاصة بي" وبدون كلمة المرور الخاصة بك ، لن تتمكن من الوصول إلى قاعدة البيانات الخاصة بك - فأنت تقوم بالحسابات!

قم بتثبيت PostGIS

بمجرد الدخول إلى StackBuilder ، قم بتثبيت PostGIS. ابحث عنها ضمن الامتدادات المكانية.

PostGIS في الامتدادات المكانية

يمكنك قبول الإعدادات الافتراضية ، وستضع الأشياء في المكان المناسب وتمكنك من العمل مع PostGIS في قواعد البيانات الخاصة بك.

يجب أن نكون مستعدين للذهاب! بعد ذلك سنقوم بالاتصال بمثال PostgreSQL الخاص بنا باستخدام pgAdmin، وإنشاء قاعدة بيانات يمكننا العمل فيها ، وتحميل البيانات إلى قاعدة البيانات هذه.

الاتصال وتعديل قاعدة البيانات الخاصة بك

افتح وتواصل مع pgAdmin

تجد pgAdmin في مجلد التطبيقات وتشغيله ، سيعطينا هذا واجهة مستخدم رسومية للتفاعل مع قواعد بيانات PostgreSQL الخاصة بنا. من المحتمل أن يحدد pgAdmin موقع قاعدة البيانات تلقائيًا ، والتي ستظهر كـ "PostgreSQL 10" ضمن قائمة "الخوادم". إذا لم يكن كذلك ، فانقر بزر الماوس الأيمن فوق قائمة "الخوادم" واختر إنشاء> خادم. هنا ، أدخل معلومات قاعدة البيانات وبيانات الاعتماد الخاصة بك. يتطلب هذا اسم المستخدم المتميز الافتراضي (postgres) ، وكلمة المرور التي أنشأناها له في خطوة التثبيت ، والمنفذ (5432 افتراضيًا). نحن نتواصل مع مضيفنا المحلي ، ولكن إذا أردت الاتصال بموقع آخر ، فيمكنك ببساطة استبداله مضيف محلي مع عنوان IP الذي تريده. سيتعين عليك تعديل علامتي التبويب "عام" و "اتصال" كما هو موضح أدناه.

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

أنشئ قاعدة بيانات جديدة

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

إنشاء قاعدة بيانات جديدة

في ال قاعدة بيانات جديدة الحوار ، قم بإعداد ما يلي.

  1. في ال جنرال لواء علامة التبويب ، سمها كامبريدج. سنقوم بتخزين مقهى كامبريدج ومجموعات البيانات المجاورة. تعيين مالك ليكون postgres مستخدم متميز.
  2. في ال تعريف علامة التبويب ، اضبط قالب أن تكون template_postgis.

انقر فوق موافق. سيتم إنشاء قاعدة بياناتك الجديدة وستظهر في صفحة pgAdmin. انقر فوق كامبريدج لتمييزه وتحديده. يمكننا الآن إضافة جدول.

تحميل البيانات

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

قم بتحميل ملف CSV في قاعدة البيانات

انقر بزر الماوس الأيمن فوق قاعدة بيانات "cambridge" ، وانتقل إلى أدوات -> أداة الاستعلام. هذا يفتح نافذة استعلام SQL الخاصة بنا في pgAdmin والتي يمكننا استخدامها لإرسال البيانات والاستفسارات من وإلى قاعدة البيانات هذه. نود تحميل ملف cambridge_coffee.csv

قم بإنشاء جدول فارغ جديد

في أداة الاستعلام ، قم بإنشاء جدول فارغ جديد يسمى cambridge_coffee_shops باستخدام عبارة SQL التالية. هذا جدول فارغ يعتمد على مخطط CSV الخاص بنا. بالنسبة لأنواع بيانات PostgreSQL المتوفرة ، قم بعرض صفحات التوثيق الخاصة بأنواع البيانات.

الآن لدينا جدول فارغ يمكننا تحميل بياناتنا فيه.

قم بتحميل ملف CSV

عرض الجدول الجديد الخاص بك. وهي متداخلة في منطقتنا كامبريدج قاعدة البيانات ، بتنسيق المخططات -> عامة -> الجداول -> coffee_shops. بمجرد العثور عليه ، انقر بزر الماوس الأيمن فوقه واختر استيراد و تصدير . انظر الشكل أدناه.

انتقل إلى الجدول الخاص بنا والاستيراد

في مربع الحوار "استيراد" ، انتقل إلى علامات التبويب لإعداد إعدادات استيراد الجدول بناءً على ملف CSV الخاص بنا.

  • في علامة التبويب "خيارات" ، قم بالاستعراض إلى ملف cambridge_coffee_shops.csv ملف ، قم بتعيين التنسيق ليكون csv، واختر UTF8 للترميز.
  • في متفرقات. الخيارات ، يمكننا إخبار pgAdmin أن العمود الأول من ملف CSV الخاص بنا عبارة عن رأس وأن المحددات عبارة عن فاصلات. الشيك رأس، ووضع فاصلة في حقل المحدد.
  • اترك خيارات عرض الأسعار وخيارات NULL كخيارات افتراضية لهذا الجدول.
  • في علامة التبويب "الأعمدة" ، تأكد من تحديد كل عمود من الأعمدة التي تريد استيرادها.

خيارات الاستيراد

استيراد الأعمدة

انقر يستورد، سيتم الاستيراد بسرعة كبيرة ، ثم انقر فوق منجز

اعرض الجدول

اعرض الجدول عن طريق النقر عليه بالزر الأيمن واختيار عرض البيانات -> عرض جميع الصفوف. هنا مجموعة البيانات الخاصة بنا.

مقاهي كامبريدج

قم بإنشاء حقل Geom

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

قم بإنشاء ملف geom الحقل باستخدام العبارة التالية في أداة الاستعلام لجدولنا. استخدم ال تغيير بيان لإضافة عمود. أطلق عليه اسما geom. بالنسبة لنوع البيانات ، امنحه نوعًا من علم الهندسة (POINT ، 4326). الوسيطات هي نوع الهندسة (POINT) ونظام الإحداثيات (رمز EPSG ، والذي بالنسبة لـ WGS84 هو 4326).

املأ حقل Geom

الآن نريد أن يسكن geom مجال. يمكن القيام بذلك باستخدام عبارة UPDATE بسيطة في عمودنا الجغرافي ، ثم استخدام وظيفتين بسيطتين من وظائف PostGIS التي تحدد نظام الإحداثيات (ST_SetSRID) على نقطة تم إنشاؤها من حقلي خط الطول وخط العرض (ST_MakePoint. لاحظ أن جميع وظائف PostGIS تبدأ بـ ST قم بتشغيل ما يلي في أداة الاستعلام.

مجال GEOM

أخيرًا ، دعنا ننشئ فهرسًا لبياناتنا لتسهيل البحث فيها باستخدام العبارة التالية. لمزيد من المعلومات حول الفهارس ، تحقق من مستندات PostgreSQL ، أو اقرأ هذا المقال الرائع من Heroku.

لدينا بيانات! وهو موجود في قاعدة بياناتنا!

تحميل البيانات باستخدام QGIS

بعد ذلك ، افتح QGIS واتصل بقاعدة البيانات الخاصة بنا لعرض بياناتنا. في QGIS ، يمكننا استخدام مدير قاعدة البيانات لاستيراد ملف الشكل إلى قاعدة بيانات PostGIS الخاصة بنا.

عرض بياناتنا في QGIS

افتح QGIS. لعرض بياناتنا في QGIS ، نحتاج إلى الاتصال بقاعدة البيانات الخاصة بنا. قم بإنشاء مستند جديد فارغ.

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

الاتصال بقاعدة بيانات PostGIS الخاصة بك

اختبر الاتصال الخاص بك ، وانقر فوق موافق.

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

QGIS مع طبقة المقاهي الخاصة بنا

استخدم مدير قاعدة البيانات لإضافة ملف بحلقات

أضف ال الأحياء السكنية في كامبريدج شكل إلى خريطتك. لاحظ أنه موجود أيضًا في نظام الإسقاط WGS84. إذا كانت البيانات التي تعمل بها مختلفة ، فأعد إسقاطها الآن. ثم انقر فوق قاعدة البيانات -> مدير DB. في DB Manager ، حدد ملف كامبريدج قاعدة البيانات، عام مخطط ، ثم انقر فوق يستورد في الجزء العلوي من النافذة. سيسمح لنا ذلك بتحديد طبقة في خريطتنا لاستيرادها إلى قاعدة البيانات.

مدير QGIS DB

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

استيراد طبقة المتجه إلى PostGIS

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

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

الغوص في استفسارات PostGIS

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

أحياء كامبريدج

انتقل إلى أداة الاستعلام. دعونا نجري بعض الاستفسارات!

عدد المقاهي في الحي

عند تشغيل الاستعلامات ، ستصبح وثيق الصلة بوثائق ووظائف PostGIS. اقرأ كل شيء عن هذه هنا. بعبارات بسيطة: تكتب جمل SQL ، مثل SELECT و ALTER و CREATE وما إلى ذلك ، وتستخدم وظائف PostGIS كمعاملين هندسيين في الجداول التي تدرجها في بيانك. في مهمتنا الأولى ، دعونا نجد عدد المقاهي في كل حي. للقيام بذلك ، نريد إجراء تحديد بالتقاطع. سيكون مكافئ PostGIS بالنسبة لنا هو ST_Intersects. استعلامك ، على هذا النحو ، سيبدو كما يلي.

سيؤدي إدخال هذا البيان إلى الاختيار التالي ، مع إعطاء عدد المقاهي حسب الحي.

عدد المقاهي حسب الحي

اطلب المقاهي عن طريق المسافة إلى معهد ماساتشوستس للتكنولوجيا

لمهمتنا الثانية ، اطلب المقاهي عن طريق المسافة إلى 77 Massachusetts Ave وأعد اسم المحل وعنوانه. خط العرض وخط الطول في 77 Massachusetts Ave هو 42.359055 ، -71.093500. للقيام بذلك ، نريد ترتيب المسافة. يمكننا استخدام عامل تشغيل المسافة () في PostGIS للحصول على هذه القيم ، ونحتاج إلى تحديد نقطة من خط الطول وخط العرض. استعلامك ، على هذا النحو ، سيبدو كما يلي.

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

المقاهي بالمسافة إلى معهد ماساتشوستس للتكنولوجيا

في هذا المثال ، لا تهم الوحدة حقًا. ولكن إذا أردنا إجراء المزيد من تحليل التقارب ، فمن المحتمل أن نتوقع مجموعة البيانات.

أعد طرح مجموعة بيانات وابحث عن المقاهي على بعد 500 متر من ميدان هارفارد

لمهمتنا التالية ، نريد اختيار المقاهي على أساس منطقة عازلة حول ميدان هارفارد. للقيام بذلك ، نحتاج إلى عرض مجموعة بيانات المقهى لدينا على نظام إحداثيات محلي سيكون له مسافات أكثر دقة. لإعادة طرح بياناتك ، نحتاج إلى تعديل جدولنا بحيث يتم إنشاء ملف geom المجال في نظام الإحداثيات الصحيح. دعنا نحول بياناتنا إلى UTM Zone 19N ، حيث تقع كامبريدج. نظرًا لأننا نستخدم مرجع WGS84 بالفعل ، فسنستخدم إسقاط UTM استنادًا إلى WGS84. وحدة الإسقاط متر. رمز EPSG لهذا هو 32619. نحقق ذلك باستخدام ST_Transform في PostGIS.

قم بإنشاء جدول جديد ، يسمى القهوة_المحلات_وتم، باستخدام العبارة التالية.

إعادة طرح ملف القهوة_المحلات_وتم مجموعة البيانات بحيث يعتمد عمود geom على UTM Zone 19N. استخدم العبارة التالية لتغيير جدولنا باستخدام وظيفة ST_Transform.

يمكن العثور على ملخص لطيف لتحويل الإسقاط في صفحة نصائح PostGIS.

قم بتشغيل الاستعلام cambridge_coffee_shops_utm. سنستخدم الدالة ST_DWithin وننشئ مسافة بالأمتار ، حيث إنها وحدة إسقاطنا. إحداثيات مركز ميدان هارفارد هي 42.373570, -71.118961. تأخذ الدالة ST_DWithin شكلين هندسيين ومسافة. الهندسة الأولى ستكون geom من مجموعة بيانات المقاهي الخاصة بنا. والثاني سيكون هندسة نقطة نقررها ، مركز ميدان هارفارد. يمكننا الحصول على هذا باستخدام ST_SetSRID و ST_MakePoint. لأننا نقدم خطوط الطول والعرض في WGS84 (4326) ، نحتاج إلى تحويل (ST_Transform) النقطة إلى UTM 19N (32619). الوسيطة الأخيرة ، المسافة ، بالأمتار لأنها تستند إلى إسقاطنا الذي حددناه للتو ليكون UTM 19N لمجموعة البيانات. يمكن أن يكون هذا الرقم أي شيء بالمتر ، أو في حالتنا 500. بعد كل ما قيل وفعل ، سيبدو استعلامنا كما يلي.

سيؤدي دخول هذا البيان إلى الاختيار التالي ، المقاهي على بعد 500 متر (كما يطير الغراب) من ميدان هارفارد.

تقع المقاهي على بعد 500 متر من ساحة هارفارد

لم يتم ترتيب نتائج استعلامنا. يمكننا استخدام ORDER BY للحصول عليها في أمر من المحطة.

استنتاج

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

الخطوات التالية.

  • ادخل إلى خرائط الويب من خلال تشغيل Web Map Workshop وصنع بعض الخرائط الرائعة بناءً على PostGIS.
  • توسع في هذا الأمر من خلال إنشاء تطبيق جمع بيانات مشابه لهذا التطبيق.
  • دمج NodeJS و Express لإنشاء نظام خرائط قوي وآمن.

إعداد PostGIS على Amazon Web Services

استخدم Amazon RDS

إذا كنت ترغب في الوصول إلى بياناتك عبر الويب ، وهو ما يحدث غالبًا لإنشاء تطبيقات الويب والخرائط عبر الإنترنت ، فيمكنك بسهولة إعداد PostGIS على Amazon Web Services. اتبع البرنامج التعليمي الموجود على وثائق AWS أدناه لإعداد قاعدة البيانات الخاصة بك ، ثم قم بتثبيت PostGIS بمجرد إعداد قاعدة البيانات الخاصة بك.

ملاحظة مهمة: تأكد من إنشاء مثيل RDS كبير بما يكفي لبياناتك. الافتراضي هو 5 غيغابايت ، قد ترغب في المزيد.

بعد ذلك ، اتصل بقاعدة البيانات الخاصة بك. افعل هذا باستخدام ملفات pgAdmin (قم بتنزيله إذا لم يكن لديك). باستخدام pgAdmin ، يمكنك اتباع الإرشادات الموجودة على رابط توثيق AWS التالي.

أخيرًا ، تحتاج إلى تمكين ملحق PostGIS ، المضمن في تثبيت PostgreSQL RDBMS. ابحث عن التعليمات في موقع التوثيق التالي.

فويلا ، لديك PostGIS يعمل على أمازون! اتصل بها كما تفعل مع أي قاعدة بيانات أخرى!

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


إعطاء MongoDB طريقة للعب مع مجتمع نظم المعلومات الجغرافية

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

ومع ذلك ، فإن مجتمع نظم المعلومات الجغرافية غير مستعد. مع توفر جميع البيانات ، يفتقر خبراء نظم المعلومات الجغرافية إلى حلول جاهزة لإدارة الحجم المتزايد من البيانات المكانية. كانت قواعد البيانات المكانية العلائقية (RSDB) هي الرائدة في هذا المجال لعقود من الزمن ، لكن RSDBs فشلت في الابتكار للتعامل مع كميات هائلة من البيانات الواردة بسرعة عالية.

لحسن الحظ ، يعد MongoDB أداة مفيدة لهذا التحدي ، ولكنه يحتاج إلى بعض الأدوات لإنشاء موصل إلى نظام GIS التكنولوجي البيئي. من أجل سد الفجوة ، قمنا ببناء خط أنابيب للتوافق مع بنية مكتبة تجريد البيانات الجغرافية المكانية (GDAL) ، بحيث يمكن لـ MongoDB العمل مع معظم أدوات نظم المعلومات الجغرافية الشائعة مثل OpenLayers و Mapserver و GeoServer و QGIS و ArcGIS وغيرها. بسهولة. في هذا الحديث ، سأنتقل إلى أداة خطوط الأنابيب هذه وأعرض بعض الأمثلة عن كيفية استخدام هذا في تطبيقك التالي.


وثائق المشروع مفتوحة المصدر: OpenLayers

في وقت سابق اليوم ، قرأت منشورًا على مدونة OpenGeo GeoSpiel يدعو OpenLayers للحصول على & # 8220Usable Documentation Bandwagon & # 8221.

الآن ، سأكون صادقًا: لقد اتبعت الروابط التي قدمها ، ووجدت شيئًا ليس ، بالنسبة لي ، أكثر إقناعًا من توثيق OpenLayers كما هو عليه اليوم. إذا نظرت إلى ESRI & # 8217s JSAPI ، أرى بعض الأشياء الخاطئة على الفور من الخفافيش & # 8212 مثل حقيقة أنه يمكنني & # 8217t فعلاً الارتباط بالمكان الذي أريده. على أي حال ، إذا قمت بالنقر فوق Geometry -> Point ، فسترى مستندًا ، بالنسبة لي ، أقل إثارة للاهتمام بكثير من الصفحة المماثلة التي يوفرها OpenLayers.

ربما هناك بعض المجموعات الفرعية من الوثائق التي تم تجميعها بواسطة ESRI في JSAPI الخاصة بهم والتي تبدو منطقية ، ولكن بالنسبة لمرجع API ، يبدو لي أن OpenLayers يعمل جيدًا بشكل معقول في أجزاء API الخاصة بنا والتي استثمر شخص ما الوقت للعمل عليها.

هذا لا يعني أننا & # 8217re & # 8220 & # 8221 بأي امتداد للخيال: أحد الأشياء التي أردت فعلها للأعمار هو الجلوس والقيام بمراجعة شاملة لوثائق OpenLayers API وتحسين الكثير منها ، تستهدف الربط المتبادل مع الوثائق والأمثلة الأخرى على وجه الخصوص. ومع ذلك ، فإن هذه الأنواع من المهام هي أنواع المهام التي تتطلب الكثير من الوقت ، ولا تتمتع بالكثير من الفوائد الفورية. نظرًا لأن كل العمل على OpenLayers خلال الأشهر العديدة الماضية كان وقت فراغي الشخصي بعد العمل ، لم يكن هناك الكثير مما يمكنني القيام به شخصيًا. ومع ذلك ، لم يقم أي شخص * من أي وقت مضى * بتقديم طلب إلى فريق OpenLayers ليتمكن من القيام بهذا العمل & # 8212 بما في ذلك OpenGeo & # 8212 الذي رأيته & # 8217ve. يبدو لي أن مثقال ذرة من ذوي الخبرة والمعرفة حول OpenLayers ، منذ أن رأيته يستخدمها من أجل التطوير ، لكنني & # 8217 لم أره يطلب المشاركة في تحسين توثيق OpenLayers API في القوائم البريدية ، ولم أره طلب من هذا النوع من أي منظمة أخرى.

بالنسبة لي ، هذا يعني أنه من المحتمل أن وثائق API الخاصة بنا تلبي ، إلى حد ما ، احتياجات المؤسسات التي تستخدم OpenLayers. & # 8217s ليست مثالية & # 8212 لا شيء & # 8212 ولكن لا أحد يعتقد أنه & # 8217s حجر عثرة رئيسي & # 8217s يستحق الإصلاح ، على الأقل لا يكفي لإنفاق المال عليه.

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

تدرك OpenLayers مدى أهمية التوثيق لنجاح المشروع. لقد استثمرنا عشرات الساعات بين عشرات المساهمين المختلفين لإنشاء وصيانة مجموعة كاملة نسبيًا من وثائق API. وفقًا لـ Ohloh ، من بين 55000 سطر في OpenLayers Javascript ، أكثر من 30٪ عبارة عن تعليقات: أكثر من 25000 سطر من وثائق API. لا أحد يتجاهل المشكلة & # 8212 وإذا كانت الحالة الحالية غير كافية (حيث أن كل شيء في المشروع ، * خاصة * للمستخدمين الجدد والمبتدئين) ، فنحن منفتحون جدًا للمساعدة من أي وجميع الأطراف المهتمة.

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

OpenLayers مكتبة كبيرة. يتم استخدامه من قبل العديد من المنظمات. نحن & # 8217re منفتحين على المساهمات من جميع الأنواع & # 8212 لم أر مطلقًا OpenLayers يرفض شخصًا أراد المساعدة في التوثيق عن قصد. We have regularly worked with contributors in helping them to improve the documentation, and to claim that we are ignoring the need for documentation seems to me to be representative of a lack of knowledge of the tools that the project uses for documentation, not specifically a lack in the goals of the project, which puts documentation of functionality — via API docs and minimal examples demonstrating functionality — as a requirement of almost all new code in the library.


Tuesday, 28 August 2018

Enterprise geodatabase - What is difference between ArcSDE and spatially enabled databases?

When would you want to use ArcSDE (available as ArcGIS Server Basic license level) versus a spatially enabled database?

What are the trade-offs on either side?

What are the benefits on either side?

SDE [ArcSDE] can refer to at least two things: the organization of your data in the database (the SDE Schema) or a service listening for connections from clients (the SDE service). Generally they go hand in glove - the SDE service is bound to an SDE schema in a database.

In its "purest" (or perhaps dirtiest) state, SDE handles all of the spatial computations, and only stores data in your database as BLOBs and other native SQL types. Some database functions, like text or XML indexing, are used to improve performance, but generally the database doesn't "know" it is serving spatial data. There's just a bunch of tables and views and procedures, and they're full of data and functions.

With a spatially enabled database, the database IS aware that the data has a location. So, you can put location queries right into your SQL statements. Perhaps this is a good thing for you, it really depends on who is consuming your data. If your data consumers are fluent in SQL it's great! If your data consumers are fluent in ArcMap they could probably care less.

More recently we have been able to blend the two, by using SDE to translate to an underlying native spatial type. Furthermore, we can use "direct connect" to bypass the SDE service and just have the consumer application (ArcMap, ArcGIS server, etc) connect straight to the database. Personally I have had varying levels of success with direct connections.


  • Seamless integration with ESRI clients
  • Good performance
  • Some underlying database functionality can be exposed (spatial views, indexes)


  • Can be difficult to recover from corrupted data
  • The license is bound to the database
  • No easy access to geometry without using ESRI software

Benefits to a spatially enabled database:


  • Data easily accessible to any SQL client
  • Data can be managed using existing DB tools (backup, restore, analyze)
  • Open formats available

Drawbacks to using a spatially enabled database:


    Clients (software) may not be able to connect directly to your data, and may have to use inefficient protocols or exports to see it

I have more experience with plain SDE so there are likely more points for the spatially enabled database.


شاهد الفيديو: Openlayers Plugin in QGIS. Overlay Google Map Satellite in QGIS