الاسم
ST_AsGML — تُعيد الشكل الهندسي كعنصر GML من الإصدار 2 أو 3.
المختصر
text ST_AsGML(geometry geom, integer maxdecimaldigits=15, integer options=0);
text ST_AsGML(geography geog, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null);
text ST_AsGML(integer version, geometry geom, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null);
text ST_AsGML(integer version, geography geog, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null);
الوصف
تُعيد الشكل الهندسي كعنصر بلغة الترميز الجغرافي (GML). يمكن أن يكون معامل الإصدار، إن حُدِّد، إما 2 أو 3. وإذا لم يُحدَّد معامل الإصدار فيُفترض أنه 2. يمكن استخدام الوسيط maxdecimaldigits لتقليل الحد الأقصى لعدد المنازل العشرية المستخدمة في الإخراج (القيمة الافتراضية 15).
|
|
|
قد يؤدي استخدام المعامل |
يشير GML 2 إلى الإصدار 2.1.2، وGML 3 إلى الإصدار 3.1.1
الوسيط 'options' حقل بتّات (bitfield). ويمكن استخدامه لتحديد نوع إخراج CRS في GML، وللإعلان عن البيانات بأنها lat/lon:
-
0: CRS قصير في GML (مثل EPSG:4326)، القيمة الافتراضية
-
1: CRS طويل في GML (مثل urn:ogc:def:crs:EPSG::4326)
-
2: لـ GML 3 فقط، إزالة الخاصية srsDimension من الإخراج.
-
4: لـ GML 3 فقط، استخدام الوسم <LineString> بدلًا من <Curve> للخطوط.
-
16: الإعلان عن أن البيانات lat/lon (مثل srid=4326). الافتراض الافتراضي أن البيانات مستوية. هذا الخيار مفيد لإخراج GML 3.1.1 فقط، وهو متعلق بترتيب المحاور. فإذا عيّنته، ستُبدَّل الإحداثيات ليصبح الترتيب lat lon بدلًا من ترتيب قاعدة البيانات lon lat.
-
32: إخراج المستطيل المحيط للشكل الهندسي (الغلاف).
يمكن استخدام الوسيط 'namespace prefix' لتحديد بادئة مساحة أسماء مخصصة أو عدم استخدام بادئة (إذا كان فارغًا). وإذا كان null أو حُذف تُستخدم البادئة 'gml'
متاحة منذ: 1.3.2
متاحة منذ: 1.5.0 أُضيف دعم geography.
حُسّنت في: 2.0.0 أُضيف دعم البادئة. وأُضيف الخيار 4 لـ GML3 للسماح باستخدام الوسم LineString بدلًا من Curve للخطوط. وأُضيف دعم GML3 للأسطح متعددة الوجوه (Polyhedral surfaces) وTINS. وأُضيف الخيار 32 لإخراج المستطيل المحيط.
تغيّرت في: 2.0.0 استخدام الوسائط المسمّاة الافتراضية
حُسّنت في: 2.1.0 أُضيف دعم id لـ GML 3.
|
|
|
الإصدار 3+ فقط من ST_AsGML يدعم الأسطح متعددة الوجوه (Polyhedral Surfaces) وTINS. |
تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM IEC 13249-3: 17.2
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
تدعم هذه الدالة الأسطح متعددة الوجوه (Polyhedral surfaces).
تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (TIN).
أمثلة: الإصدار 2
SELECT ST_AsGML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
st_asgml
--------
<gml:Polygon srsName="EPSG:4326"
><gml:outerBoundaryIs
><gml:LinearRing
><gml:coordinates
>0,0 0,1 1,1 1,0 0,0</gml:coordinates
></gml:LinearRing
></gml:outerBoundaryIs
></gml:Polygon>
أمثلة: الإصدار 3
-- Flip coordinates and output extended EPSG (16 | 1)--
SELECT ST_AsGML(3, ST_GeomFromText('POINT(5.234234233242 6.34534534534)',4326), 5, 17);
st_asgml
--------
<gml:Point srsName="urn:ogc:def:crs:EPSG::4326"
><gml:pos
>6.34535 5.23423</gml:pos
></gml:Point>
-- Output the envelope (32) --
SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 32);
st_asgml
--------
<gml:Envelope srsName="EPSG:4326">
<gml:lowerCorner
>1 2</gml:lowerCorner>
<gml:upperCorner
>10 20</gml:upperCorner>
</gml:Envelope>
-- Output the envelope (32) , reverse (lat lon instead of lon lat) (16), long srs (1)= 32 | 16 | 1 = 49 --
SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 49);
st_asgml
--------
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner
>2 1</gml:lowerCorner>
<gml:upperCorner
>20 10</gml:upperCorner>
</gml:Envelope>
-- Polyhedral Example --
SELECT ST_AsGML(3, ST_GeomFromEWKT('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)) )'));
st_asgml
--------
<gml:PolyhedralSurface>
<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>