الاسم
ST_AsMVTGeom — تحوّل شكلًا هندسيًا إلى فضاء إحداثيات بلاطة MVT.
المختصر
geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true);
الوصف
تحوّل شكلًا هندسيًا إلى فضاء إحداثيات بلاطة MVT (Mapbox Vector Tile)، مع قصّه وفق حدود البلاطة إن لزم. يجب أن يكون الشكل الهندسي في نظام إحداثيات الخريطة الهدف (باستخدام ST_Transform عند الحاجة). وعادةً ما يكون هذا Web Mercator (SRID:3857).
تحاول الدالة الحفاظ على صلاحية الشكل الهندسي، وتصحّحها عند الحاجة. وقد يؤدي ذلك إلى انهيار الشكل الهندسي الناتج إلى بُعد أدنى.
يجب توفير الحدود المستطيلة للبلاطة في فضاء إحداثيات الخريطة الهدف، حتى يمكن تحويل الشكل الهندسي وقصّه إن لزم. ويمكن توليد الحدود باستخدام ST_TileEnvelope.
تُستخدم هذه الدالة لتحويل الشكل الهندسي إلى فضاء إحداثيات البلاطة الذي تتطلبه ST_AsMVT.
geom الشكل الهندسي المراد تحويله، في نظام إحداثيات الخريطة الهدف.
bounds الحدود المستطيلة للبلاطة في فضاء إحداثيات الخريطة، دون نطاق عازل.
extent حجم امتداد البلاطة في فضاء إحداثيات البلاطة كما تعرّفه مواصفة MVT. القيمة الافتراضية 4096.
buffer حجم النطاق العازل في فضاء إحداثيات البلاطة لقصّ الشكل الهندسي. القيمة الافتراضية 256.
clip_geom قيمة منطقية تتحكم في ما إذا كانت الأشكال الهندسية تُقصّ أو تُرمَّز كما هي. القيمة الافتراضية true.
متاحة منذ: 2.4.0
|
|
|
منذ 3.0، يمكن اختيار Wagyu وقت الإعداد (configure) لقصّ مضلعات MVT والتحقق من صلاحيتها. هذه المكتبة أسرع وتعطي نتائج أصح من GEOS الافتراضي، لكنها قد تُسقط المضلعات الصغيرة. |
أمثلة
SELECT ST_AsText(ST_AsMVTGeom(
ST_GeomFromText('POLYGON ((0 0, 10 0, 10 5, 0 -5, 0 0))'),
ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),
4096, 0, false));
st_astext
--------------------------------------------------------------------
MULTIPOLYGON(((5 4096,10 4091,10 4096,5 4096)),((5 4096,0 4101,0 4096,5 4096)))
مثال نموذجي لبلاطة Web Mercator يستخدم حدود بلاطة محسوبة للاستعلام عن الشكل الهندسي وقصّه. يُفترض أن للعمود data.geom قيمة srid تساوي 4326.
SELECT ST_AsMVTGeom(
ST_Transform( geom, 3857 ),
ST_TileEnvelope(12, 513, 412), extent =
> 4096, buffer =
> 64) AS geom
FROM data
WHERE geom && ST_Transform(ST_TileEnvelope(12, 513, 412, margin =
> (64.0 / 4096)),4326)