أكثر

إظهار Linestring من جملة SQL مع CartoDB

إظهار Linestring من جملة SQL مع CartoDB


لدي تعليمة sql cartodb لإرجاع المضلعات التي تتقاطع مع خط مستقيم ، لكني أرغب في أن يكون هناك تصور للخيط السيني فوق المضلعات في النتائج. أيضا لا تقم بإضافة الخط السيني إلى قاعدة البيانات.

حدد البلد ، allow_inf ، allow_req ، the_geom_webmercator FROM airspaceshape_1 WHERE ST_Intersects (the_geom، ST_SetSRID (ST_GeomFromGeoJSON ('{"type": "LineString"، "الاحداثيات": [[27.456667،5.065]} ، [30.488] ، 4326))


يوجد خيارين.

الخيار 1

يمكنك إجراء الاستعلام تمامًا كما هو الحال لديك ، ثم إضافة خطك باستخدام GeoJSON على العميل. يمكنك استخدام CartoDB.js لرسم طبقة المضلع ثم استخدام Leaflet لإضافة طبقة GeoJSON في الأعلى.

الخيار 2

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

طبقات .getSubLayer (0) .setSQL ("SELECT country، allow_inf، allow_req، the_geom_webmercator FROM airspaceshape_1 WHERE ST_Intersects (the_geom، ST_SetSRID (ST_GeomFromGeoJSON ('{" type ":" LineString "،" 27.465]: [30.456667، -1.088]]} ')، 4326)) ") ؛ الطبقات .getSubLayer (1) .setSQL ("SELECT ST_Transform (ST_SetSRID (ST_GeomFromGeoJSON ('{" type ":" LineString "،" الإحداثيات ": [[27.456667،5.065] ، [30.456667، -1.088]]}') ، 4326 ) ، 3857) AS the_geom_webmercator ") ؛

الخيار 3

أنت يستطع تصورهم على نفس الطبقة. إنه معقد ويمكن أن يصبح فوضويًا. لكنك ستقوم بإعداد CartoCSS الخاص بك باستخدام مرشح نوع هندسي (على سبيل المثال [mapnik-geometry-type = 'Polygon']) ثم قم بعمل UNION للنتيجة بالإضافة إلى عبارة SQL للحصول على السطر. مرة أخرى ، سيكون هذا فوضويًا. هذا ممكن ، لكنني لا أوصي به.