GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.8.3. صيغ أخرى
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_GeomFromGML

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

الاسم

ST_GeomFromGML — تأخذ تمثيل GML لشكل هندسي مدخلًا وتُخرج كائن geometry في PostGIS

المختصر

geometry ST_GeomFromGML(text geomgml);

geometry ST_GeomFromGML(text geomgml, integer srid);

الوصف

تُنشئ كائن ST_Geometry في PostGIS من تمثيل GML الخاص بـ OGC.

تعمل ST_GeomFromGML فقط مع أجزاء الأشكال الهندسية في GML (GML Geometry fragments). وتُطلق خطأً إذا حاولت استخدامها على مستند GML كامل.

إصدارات OGC GML المدعومة:

  • فضاء الأسماء GML 3.2.1

  • ملف التعريف GML 3.1.1 Simple Features profile SF-2 (مع توافق رجعي مع GML 3.1.0 و3.0.0)

  • GML 2.1.2

معايير OGC GML، انظر: http://www.opengeospatial.org/standards/gml:

متاحة منذ: 1.5، تتطلب libxml2 1.6+

حُسّنت في: 2.0.0 أُضيف دعم الأسطح متعددة الوجوه (Polyhedral surfaces) وTIN.

حُسّنت في: 2.0.0 أُضيف الوسيط الاختياري srid الافتراضي.

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

تدعم هذه الدالة الأسطح متعددة الوجوه (Polyhedral surfaces).

تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (TIN).

يسمح GML بأبعاد مختلطة (ثنائية وثلاثية الأبعاد داخل MultiGeometry واحد مثلًا). ولأن أشكال PostGIS لا تسمح بذلك، تحوّل ST_GeomFromGML الشكل الهندسي بأكمله إلى ثنائي الأبعاد إذا وُجد البعد Z مفقودًا ولو مرة واحدة.

يدعم GML أنظمة مرجعية مكانية (SRS) مختلطة داخل MultiGeometry واحد. ولأن أشكال PostGIS لا تدعم ذلك، تعيد ST_GeomFromGML في هذه الحالة إسقاط جميع الأشكال الفرعية إلى SRS العقدة الجذرية. وإذا لم تتوفر السمة srsName للعقدة الجذرية في GML، تُطلق الدالة خطأً.

لا تتشدد الدالة ST_GeomFromGML بشأن فضاء أسماء GML الصريح. ويمكنك تجنّب ذكره صراحةً في الاستخدامات الشائعة. لكنك تحتاج إليه إذا أردت استخدام ميزة XLink داخل GML.

[ملاحظة]

لا تدعم الدالة ST_GeomFromGML الأشكال المنحنية في SQL/MM.

أمثلة - شكل هندسي واحد مع srsName

SELECT ST_GeomFromGML($$
    <gml:LineString xmlns:gml="http://www.opengis.net/gml"
                        srsName="EPSG:4269">
        <gml:coordinates>
            -71.16028,42.258729 -71.160837,42.259112 -71.161143,42.25932
        </gml:coordinates>
    </gml:LineString>
$$);

                

أمثلة - استخدام XLink

SELECT ST_GeomFromGML($$
    <gml:LineString xmlns:gml="http://www.opengis.net/gml"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            srsName="urn:ogc:def:crs:EPSG::4269">
        <gml:pointProperty>
            <gml:Point gml:id="p1"
><gml:pos
>42.258729 -71.16028</gml:pos
></gml:Point>
        </gml:pointProperty>
        <gml:pos
>42.259112 -71.160837</gml:pos>
        <gml:pointProperty>
            <gml:Point xlink:type="simple" xlink:href="#p1"/>
        </gml:pointProperty>
    </gml:LineString>
$$);

                

أمثلة - سطح متعدد الأوجه (Polyhedral Surface)

SELECT ST_AsEWKT(ST_GeomFromGML('
<gml:PolyhedralSurface xmlns:gml="http://www.opengis.net/gml">
<gml:polygonPatches>
  <gml:PolygonPatch>
    <gml:exterior>
      <gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 0 0 1 0 1 1 0 1 0 0 0 0</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
  <gml:PolygonPatch>
    <gml:exterior>
        <gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 0 1 0 1 1 0 1 0 0 0 0 0</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
  <gml:PolygonPatch>
    <gml:exterior>
        <gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 1 0 0 1 0 1 0 0 1 0 0 0</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
  <gml:PolygonPatch>
    <gml:exterior>
        <gml:LinearRing
><gml:posList srsDimension="3"
>1 1 0 1 1 1 1 0 1 1 0 0 1 1 0</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
  <gml:PolygonPatch>
    <gml:exterior>
        <gml:LinearRing
><gml:posList srsDimension="3"
>0 1 0 0 1 1 1 1 1 1 1 0 0 1 0</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
  <gml:PolygonPatch>
    <gml:exterior>
        <gml:LinearRing
><gml:posList srsDimension="3"
>0 0 1 1 0 1 1 1 1 0 1 1 0 0 1</gml:posList
></gml:LinearRing>
    </gml:exterior>
  </gml:PolygonPatch>
</gml:polygonPatches>
</gml:PolyhedralSurface
>'));

-- result --
 POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0)),
 ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),
 ((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0)),
 ((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0)),
 ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)),
 ((0 0 1,1 0 1,1 1 1,0 1 1,0 0 1)))