الاسم
ST_Segmentize — تُعيد geometry/geography معدّلًا لا تزيد فيه أي قطعة عن مسافة مُعطاة.
المختصر
geometry ST_Segmentize(geometry geom, float max_segment_length);
geography ST_Segmentize(geography geog, float max_segment_length);
الوصف
تُعيد geometry/geography معدّلًا لا تزيد فيه أي قطعة عن max_segment_length. يُحسب الطول في بعدين. وتُقسَّم القطع دائمًا إلى قطع فرعية متساوية الطول.
-
بالنسبة لـ geometry، يكون الطول الأقصى بوحدات النظام المرجعي المكاني.
-
بالنسبة لـ geography، يكون الطول الأقصى بالأمتار. وتُحسب المسافات على الكرة. وتُنشأ الرؤوس المضافة على طول أقواس الدوائر العظمى الكروية المحددة بنقطتي طرفي القطعة.
|
|
|
تقصّر هذه الدالة القطع الطويلة فقط، ولا تطيل القطع الأقصر من الطول الأقصى. |
|
|
|
بالنسبة للمُدخلات التي تحتوي على قطع طويلة، قد يؤدي تحديد |
متاحة منذ: 1.2.2
حُسّنت في: 3.0.0 أصبح تقسيم geometry يُنتج قطعًا فرعية متساوية الطول
حُسّنت في: 2.3.0 أصبح تقسيم geography يُنتج قطعًا فرعية متساوية الطول
حُسّنت في: 2.1.0 أُضيف دعم geography.
تغيّرت في: 2.1.0 نتيجة لإضافة دعم geography، فإن الاستخدام ST_Segmentize('LINESTRING(1 2, 3 4)', 0.5) يسبب خطأ دالة ملتبسة. يجب تحديد نوع المُدخل بشكل صحيح على أنه geometry أو geography. استخدم ST_GeomFromText أو ST_GeogFromText أو تحويلًا إلى النوع المطلوب (مثل ST_Segmentize('LINESTRING(1 2, 3 4)'::geometry, 0.5) )
أمثلة
تقسيم خط. تُقسَّم القطع الطويلة بالتساوي، ولا تُقسَّم القطع القصيرة.
SELECT ST_AsText(ST_Segmentize(
'MULTILINESTRING((0 0, 0 1, 0 9),(1 10, 1 18))'::geometry,
5 ) );
---------------------------------------------------
MULTILINESTRING((0 0,0 1,0 5,0 9),(1 10,1 14,1 18))
تقسيم مضلع:
SELECT ST_AsText(
ST_Segmentize(('POLYGON((0 0, 0 8, 30 0, 0 0))'::geometry), 10));
-------------------------------------------------------
POLYGON((0 0,0 8,7.5 6,15 4,22.5 2,30 0,20 0,10 0,0 0))
تقسيم خط جغرافي باستخدام طول أقصى للقطعة قدره 2000 كيلومتر. تُضاف الرؤوس على طول قوس الدائرة العظمى الواصل بين نقطتي الطرفين.
SELECT ST_AsText(
ST_Segmentize(('LINESTRING (0 0, 60 60)'::geography), 2000000));
-------------------------------------------------------------
LINESTRING(0 0,4.252632294621186 8.43596525986862,8.69579947419404 16.824093489701564,13.550465473227048 25.107950473646188,19.1066053508691 33.21091076089908,25.779290201459894 41.01711439406505,34.188839517966954 48.337222885886,45.238153936612264 54.84733442373889,60 60)
خط جغرافي مقسَّم على طول قوس دائرة عظمى