سؤال

هدفي هو عرض أشكال مختلفة (المضلعات ، النقاط ، الخطية) على خرائط Google باستخدام البيانات التي تم إدخالها في قاعدة بيانات postGIS ديناميكيًا (أعني أنه يمكننا رؤية التعديلات في الخريطة في الوقت الفعلي). كنت أبحث عن طريقة للقيام بذلك والتي استخدمت الهيكل المكاني المتوفر بالفعل في PostGIS (المعين بالفعل إذا كان الشكل عبارة عن مضلع أو مضلع ، إلخ) بدلاً من تحليل الإحداثيات ثم إعادة إدخال البنية المكانية في خرائط Google. لقد رأيت أن Google Maps API متوافق الآن مع تنسيقات بيانات KML. ثم قرأت أنه يجب علي تحويل بيانات postgis إلى تنسيق KML. لقد قمت ببعض القراءة في المنتديات حول العملية الفعلية لتحويل بيانات PostGIS إلى KML عبر FWTools ، لكن لم أر أي شيء من شأنه أن يساعدني. أنا جديد على KML ولكني على دراية بـ Postgis و Perl و PHP. هل هناك برنامج تعليمي لعملية تحويل بيانات postgis إلى KML؟ أين يمكنني البدء؟ شكرا على اي مساعدة

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

المحلول

يمكنك الحصول على تمثيل نصي للبيانات المكانية من Postgres DB باستخدام وظيفة تحويل النص ، مثل

SELECT AsText(MyGemoetry) from MyTable

ثم يمكنك تحليل السلسلة ، وإنشاء كائناتك باستخدام وظائف API المختلفة - اعتمادًا على نوع هندسة PostGIS - وقم بإلحاق هذا الكائن إلى كائن GE الرئيسي GE بطريقة مثل DOM.

إذا كنت على دراية بـ JavaScript ولديك معرفة أساسية بـ XML ، فإن بداية جيدة http://code.google.com/apis/earth/documentation/reference/

لا تنس تحديد معرف فريد لكائناتك حتى تتمكن من العثور عليها لاحقًا لإسقاط/تعديل.

ربما يمكنك الحصول على بعض الإلهام هنا, ، عرض ملف "locator.js" المرتبط وانظر إلى الوظيفة Paintsubfield (Coord) ... هذه طريقة أخرى ، خامًا ولكن فعالًا ، وتجنب التعب

قد ترغب أيضًا في التشاور عينة التطبيقات واستخدام كود ملعب من أجل "النماذج الأولية السريعة"

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

حظا سعيدا

نصائح أخرى

يمكنك استخدام postgis للتحويل إلى KML مباشرة:

SELECT ST_AsKML(geometry) from MyTable;

st_askml هو واحد من العديد من تنسيقات الإخراج ، بما في ذلك WKT ، GML ، Geojson ، إلخ.

لإظهار البيانات الديناميكية في Google Earth ، يتمثل نمط شائع في استخدام KML مع أ NetworkLink عنصر. لديك الرابط viewRefreshMode يساوي onStop وستقوم Google Earth بتقديم طلبات (إلى عنوان URL الذي يقدمه PHP ، على الأرجح) مع معلمات مربع المحيط المرفقة. استخدم المربع المحيط بالاستعلام عن ميزات PostGIS ، وإرجاع نتائج KML. هذا أمر رائع إذا كان لديك الكثير والكثير من الميزات ، ولكن تريد فقط استرداد تلك الموجودة في المنطقة التي ينظر إليها المستخدم.

اعتمادًا على تعقيد التطبيق الخاص بك ، قد ترغب أيضًا في النظر إلى Geodjango. (الألفة مع Postgis هي بداية كبيرة!)

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