GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.7. دوال النظام المرجعي المكاني
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_TransformPipeline

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

الاسم

ST_TransformPipeline — تُعيد شكلًا هندسيًا جديدًا بإحداثيات محوّلة إلى نظام مرجعي مكاني مختلف باستخدام خط تحويل إحداثيات (pipeline) معرّف.

المختصر

geometry ST_TransformPipeline(geometry g1, text pipeline, integer to_srid);

الوصف

تُعيد شكلًا هندسيًا جديدًا بإحداثيات محوّلة إلى نظام مرجعي مكاني مختلف باستخدام خط تحويل إحداثيات (pipeline) معرّف.

تُعرَّف خطوط التحويل باستخدام أي من صيغ السلاسل النصية التالية:

  • urn:ogc:def:coordinateOperation:AUTHORITY::CODE. لاحظ أن سلسلة EPSG:CODE البسيطة لا تحدد عملية إحداثيات بشكل فريد: فقد يُستخدم رمز EPSG نفسه لتعريف نظام مرجعي إحداثي (CRS).

  • سلسلة خط تحويل PROJ بالصيغة: +proj=pipeline .... لن يُطبَّق توحيد المحاور تلقائيًا، وقد يحتاج المستدعي عند الضرورة إلى إضافة خطوة إضافية إلى خط التحويل، أو إزالة خطوات axisswap.

  • عمليات متسلسلة بالصيغة: urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618.

متاحة منذ: 3.4.0

يُتجاهَل SRID الشكل الهندسي المُدخَل، ويُضبط SRID الشكل الناتج على صفر ما لم تُقدَّم قيمة عبر المعامل الاختياري to_srid. عند استخدام `ST_TransformPipeline()` يُنفَّذ خط التحويل في الاتجاه الأمامي. وباستخدام ST_InverseTransformPipeline يُنفَّذ في الاتجاه العكسي.

التحويلات باستخدام خطوط التحويل نسخة متخصصة من ST_Transform. في معظم الحالات تختار `ST_Transform` العمليات الصحيحة للتحويل بين أنظمة الإحداثيات، ويُفضَّل استخدامها.

أمثلة

تحويل خط الطول/العرض في WGS 84 إلى UTM 31N باستخدام التحويل EPSG:16031

-- Forward direction
SELECT ST_AsText(ST_TransformPipeline('SRID=4326;POINT(2 49)'::geometry,
  'urn:ogc:def:coordinateOperation:EPSG::16031')) AS utm_geom;

                  utm_geom
--------------------------------------------
 POINT(426857.9877165967 5427937.523342293)
(1 row)

-- Inverse direction
SELECT ST_AsText(ST_InverseTransformPipeline('POINT(426857.9877165967 5427937.523342293)'::geometry,
  'urn:ogc:def:coordinateOperation:EPSG::16031')) AS wgs_geom;

          wgs_geom
----------------------------
 POINT(2 48.99999999999999)
(1 row)
    

مثال GDA2020.

-- using ST_Transform with automatic selection of a conversion pipeline.
SELECT ST_AsText(ST_Transform('SRID=4939;POINT(143.0 -37.0)'::geometry, 7844)) AS gda2020_auto;

                 gda2020_auto
-----------------------------------------------
 POINT(143.00000635638918 -36.999986706128176)
(1 row)

-- using a defined conversion (EPSG:8447)
SELECT ST_AsText(ST_TransformPipeline('SRID=4939;POINT(143.0 -37.0)'::geometry,
  'urn:ogc:def:coordinateOperation:EPSG::8447')) AS gda2020_code;

                   gda2020_code
----------------------------------------------
 POINT(143.0000063280214 -36.999986718287545)
(1 row)

-- using a PROJ pipeline definition matching EPSG:8447, as returned from
-- 'projinfo -s EPSG:4939 -t EPSG:7844'.
-- NOTE: any 'axisswap' steps must be removed.
SELECT ST_AsText(ST_TransformPipeline('SRID=4939;POINT(143.0 -37.0)'::geometry,
  '+proj=pipeline
   +step +proj=unitconvert +xy_in=deg +xy_out=rad
   +step +proj=hgridshift +grids=au_icsm_GDA94_GDA2020_conformal_and_distortion.tif
   +step +proj=unitconvert +xy_in=rad +xy_out=deg')) AS gda2020_pipeline;

                   gda2020_pipeline
----------------------------------------------
 POINT(143.0000063280214 -36.999986718287545)
(1 row)