GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.5. دوال تحرير الأشكال الهندسية
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_SnapToGrid

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_SnapToGrid — التقاط جميع نقاط الشكل المُدخل إلى شبكة منتظمة.

المختصر

geometry ST_SnapToGrid(geometry geomA, float originX, float originY, float sizeX, float sizeY);

geometry ST_SnapToGrid(geometry geomA, float sizeX, float sizeY);

geometry ST_SnapToGrid(geometry geomA, float size);

geometry ST_SnapToGrid(geometry geomA, geometry pointOrigin, float sizeX, float sizeY, float sizeZ, float sizeM);

الوصف

الصيغ 1 و2 و3: التقاط جميع نقاط الشكل المُدخل إلى الشبكة المحددة بأصلها وحجم خلاياها. وإزالة النقاط المتتالية الواقعة في الخلية نفسها، مع إعادة NULL في النهاية إذا لم تكفِ نقاط الناتج لتعريف شكل من النوع المُعطى. تُحذف من المجموعة الأشكال المنهارة فيها. مفيدة لتقليل الدقة.

الصيغة 4: أُضيفت في 1.1.0 - التقاط جميع نقاط الشكل المُدخل إلى الشبكة المحددة بأصلها (الوسيط الثاني، ويجب أن يكون نقطة) وأحجام خلاياها. حدّد 0 حجمًا لأي بعد لا تريد التقاطه إلى شبكة.

[ملاحظة]

قد يفقد الشكل المُعاد بساطته (انظر ST_IsSimple).

[ملاحظة]

قبل الإصدار 1.1.0 كانت هذه الدالة تُعيد دائمًا شكلًا ثنائي الأبعاد. وبدءًا من 1.1.0 يكون للشكل المُعاد عدد الأبعاد نفسه للمُدخل مع بقاء قيم الأبعاد الأعلى دون مساس. استخدم الصيغة التي تأخذ وسيط geometry ثانيًا لتحديد جميع أبعاد الشبكة.

متاحة منذ: 1.0.0RC1

متاحة منذ: 1.1.0 - دعم Z وM

تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.

أمثلة

--Snap your geometries to a precision grid of 10^-3
UPDATE mytable
   SET geom = ST_SnapToGrid(geom, 0.001);

SELECT ST_AsText(ST_SnapToGrid(
                        ST_GeomFromText('LINESTRING(1.1115678 2.123, 4.111111 3.2374897, 4.11112 3.23748667)'),
                        0.001)
                );
                          st_astext
-------------------------------------
 LINESTRING(1.112 2.123,4.111 3.237)
 --Snap a 4d geometry
SELECT ST_AsEWKT(ST_SnapToGrid(
        ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 2.3456 1.11111,
                4.111111 3.2374897 3.1234 1.1111, -1.11111112 2.123 2.3456 1.1111112)'),
 ST_GeomFromEWKT('POINT(1.12 2.22 3.2 4.4444)'),
 0.1, 0.1, 0.1, 0.01) );
                                                                  st_asewkt
------------------------------------------------------------------------------
 LINESTRING(-1.08 2.12 2.3 1.1144,4.12 3.22 3.1 1.1144,-1.08 2.12 2.3 1.1144)


--With a 4d geometry - the ST_SnapToGrid(geom,size) only touches x and y coords but keeps m and z the same
SELECT ST_AsEWKT(ST_SnapToGrid(ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 3 2.3456,
                4.111111 3.2374897 3.1234 1.1111)'),
           0.01)      );
                                                st_asewkt
---------------------------------------------------------
 LINESTRING(-1.11 2.12 3 2.3456,4.11 3.24 3.1234 1.1111)