几何对象输出函数

ST_AsBinary

ST_AsBinary — 返回一个没有SRID信息的WKB描述的geometry或geography对象。

语法

st_asbinary ::=

参数

geom

geometry类型或者geography类型。

NDR_or_XDR

text类型。

返回值

返回值为bytea类型。返回一个WKB描述的几何对象。

返回几何体的已知二进制表示形式。该功能有两种形式。第一种不接受endian编码参数,默认为服务器机器endian。第二种使用第二个参数来表示编码——使用小端('NDR')或大端('XDR')编码。

这在二进制游标中很有用,可以从数据库中提取数据,而无需将其转换为字符串表示。

注解

对几何对象来说,函数ST_AsBinary是函数ST_GeomFromWKB逆功能函数,使用函数ST_GeomFromWKB可以把一个ST_AsBinary表述的几何对象转化成一个oscargis的几何对象。

示例

SELECT ST_AsBinary(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASBINARY(BYTEA)      |
------------------------
\001\003\000\000\000\001|
\000\000\000\005\000\00|
0\000\000\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\360?\000\000|
\000\000\000\000\360?\0|
00\000\000\000\000\000\|
360?\000\000\000\000\00|
0\000\360?\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\000          |
总数目:1

SELECT ST_AsBinary(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326), 'XDR');
ST_ASBINARY(BYTEA)      |
------------------------
\000\000\000\000\003\000|
\000\000\001\000\000\00|
0\005\000\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000?\360\000\000\|
000\000\000\000?\360\00|
0\000\000\000\000\000?\|
360\000\000\000\000\000|
\000?\360\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\000          |
总数目:1

SELECT ST_AsBinary(ST_GeogFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))'));
ST_ASBINARY(BYTEA)      |
------------------------
\001\003\000\000\000\001|
\000\000\000\005\000\00|
0\000\000\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\360?\000\000|
\000\000\000\000\360?\0|
00\000\000\000\000\000\|
360?\000\000\000\000\00|
0\000\360?\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\000          |
总数目:1

SELECT ST_AsBinary(ST_GeogFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))'), 'XDR');
ST_ASBINARY(BYTEA)      |
------------------------
\000\000\000\000\003\000|
\000\000\001\000\000\00|
0\005\000\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000?\360\000\000\|
000\000\000\000?\360\00|
0\000\000\000\000\000?\|
360\000\000\000\000\000|
\000?\360\000\000\000\0|
00\000\000\000\000\000\|
000\000\000\000\000\000|
\000\000\000\000\000\00|
0\000\000\000\000\000\0|
00\000\000\000          |
总数目:1

ST_AsEncodedPolyline

ST_AsEncodedPolyline — 由给定的LineString 几何类型,返回编码后的 Polyline 类型。

语法

st_asencodedpolyline ::=

参数

geom

geometry类型或者geography类型。

default

integer类型。指定类型的精度,默认值为5。

返回值

返回值为text类型。

将几何图形作为编码多段线返回。这种格式由谷歌地图使用,精度为5。开源路由机器使用,精度为5和6。

可选精度指定编码多段线中保留的小数位数。编码和解码时的值应相同,否则坐标将不正确。

示例

SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)'));
ST_ASENCODEDPOLYLINE(text)      |
--------------------------------
_p~iF~ps|U_ulLnnqC_mqNvxq`@     |
总数目:1

SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)'), 6);
ST_ASENCODEDPOLYLINE(text)      |
--------------------------------
_izlhA~rlgdF_{geC~ywl@_kwzCn`{nI|
总数目:1

ST_AsEWKB

ST_AsEWKB — 返回一个带有SRID信息的WKB描述的geometry对象。

语法

st_asewkb ::=

参数

geom

geometry类型。

NDR_or_XDR

bytea类型。

返回值

返回值为text类型。

返回一个WKB描述的几何对象。这个函数有两种形式,第一种是没有输入编码参数的,而是使用服务端的机器编码方式。第二种有一个编码参数,对’NDR’数据使用little-endian编码,

对XDR数据使用big-endian (’XDR’) 编码在使用二进制游标,将导出数据库时候,不用将二进制数据转化成文本形式,这一点很有用。

注解

函数ST_AsEWKB是函数ST_GeomFromEWKB逆功能函数,使用函数ST_GeomFromEWKB 可以把一个ST_AsEWKB表述的几何对象转化成一个oscargis的几何对象。

示例

SELECT ST_AsEWKB(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASEWKB(BYTEA)      |
----------------------
\001\003\000\000 \346\|
020\000\000\001\000\0|
00\000\005\000\000\00|
0\000\000\000\000\000|
\000\000\000\000\000\|
000\000\000\000\000\0|
00\000\000\000\000\00|
0\000\000\000\000\000|
\000\000\000\000\360?|
\000\000\000\000\000\|
000\360?\000\000\000\|
000\000\000\360?\000\|
000\000\000\000\000\3|
60?\000\000\000\000\0|
00\000\000\000\000\00|
0\000\000\000\000\000|
\000\000\000\000\000\|
000\000\000\000       |
总数目:1

SELECT ST_AsEWKB(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326), 'XDR');
ST_ASEWKB(BYTEA)      |
----------------------
\000 \000\000\003\000\|
000\020\346\000\000\0|
00\001\000\000\000\00|
5\000\000\000\000\000|
\000\000\000\000\000\|
000\000\000\000\000\0|
00\000\000\000\000\00|
0\000\000\000?\360\00|
0\000\000\000\000\000|
?\360\000\000\000\000|
\000\000?\360\000\000|
\000\000\000\000?\360|
\000\000\000\000\000\|
000\000\000\000\000\0|
00\000\000\000\000\00|
0\000\000\000\000\000|
\000\000\000\000\000\|
000\000\000\000       |
总数目:1

ST_AsEWKT

ST_AsEWKT — 返回一个带有SRID信息的WKT描述的geometry对象。

语法

st_asewkt ::=

参数

geom

geometry类型或者geography类型。

返回值

返回值为text类型。

注解

WKT格式不能保证坐标精度,因此为了阻止精度损失,使用函数 ST_AsBinary 或函数 ST_AsEWKB。

示例

SELECT ST_AsEWKT('0103000020E61000000100000005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000'::geometry);
ST_ASEWKT(text)      |
---------------------
SRID=4326;POLYGON((0 |
0,0 1,1 1,1 0,0 0))  |
总数目:1

SELECT ST_AsEWKT(ST_GeogFromText('SRID=4326;POINT(0 1)'));
ST_ASEWKT(text)      |
---------------------
SRID=4326;POINT(0 1) |
总数目:1

ST_AsGeoJSON

ST_AsGeoJSON — 返回一个GeoJSON格式(GeoJSON是一种类似json的格式数据,适用于地理编码)的几何对象。

语法

st_asgeojson ::=

参数

gj_version

integer类型。gj_version 参数是GeoJSON SPEC规范的主版本号。如果指定,则必须为1。这代表GeoJSON的规范版本。

geom

geometry类型。

geog

geography类型。

maxdecimaldigits

integer类型。默认值为 15。可用于减少输出中使用的最大小数位数(默认为15)。如果您使用的是EPSG:4326,并且输出的几何图形仅用于显示,那么对于许多地图,maxdecimaldigits=6可能是一个不错的选择。

options

integer类型。默认值为0。可来控制在GeoJSON输出中添加Bbox或Crs标签:

  • 0:表示没有选项(默认值)
  • 1:GeoJSON BBOX
  • 2:GeoJSON短CRS(例如EPSG:4326)
  • 4:GeoJSON长CRS(例如urn:ogc:def:CRS:EPSG::4326)

返回值

返回值为text类型。

在ajax通信中,GeoJSON 格式通常是比其他格式文档更高效的格式。一个流行的JavaScript 客户端Open Layers支持这种数据格式。

示例

--ST_AsGeoJSON(geometry geom, integer maxdecimaldigits=15, integer options=0)
SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)');
ST_ASGEOJSON(text)      |
------------------------
{"type":"LineString","co|
ordinates":[[1,2,3],[4,|
5,6]]}                  |
总数目:1

SELECT ST_AsGeoJSON(ST_GeogFromText('SRID=4326;POINT(0 1)'));
ST_ASGEOJSON(text)      |
------------------------
{"type":"Point","coordin|
ates":[0,1]}            |
总数目:1

--ST_AsGeoJSON(integer gj_version, geometry geom, integer maxdecimaldigits=15, integer options=0)
SELECT ST_AsGeoJSON(1,ST_GeomFromText('SRID=4326;POINT(0 1)'));
ST_ASGEOJSON(text)      |
------------------------
{"type":"Point","coordin|
ates":[0,1]}            |
总数目:1

ST_AsGML

ST_AsGML — 以GML版本2或3元素的形式返回几何体。

语法

st_asgml ::=

参数

gj_version

integer类型。gj_version 参数是GeoJSON SPEC规范的主版本号。如果指定,则必须为1。这代表GeoJSON的规范版本。

geom

geometry类型。

geog

geography类型。

maxdecimaldigits

integer类型。默认值为 15。可用于减少输出中使用的最大小数位数(默认为15)。如果您使用的是EPSG:4326,并且输出的几何图形仅用于显示,那么对于许多地图,maxdecimaldigits=6可能是一个不错的选择。

options

integer类型。默认值为0。“options”参数是一个位字段。它可用于在GML输出中定义CRS输出类型,并将数据声明为lat/lon:

  • 0:GML短CRS(例如EPSG:4326),默认值
  • 1:GML长CRS(例如urn:ogc:def:CRS:EPSG::4326)
  • 2:仅对于GML 3,从输出中删除srsDimension属性。
  • 4:仅对于GML 3,使用<LineString>而不是<Curve>标记线。
  • 16:声明数据是经纬度格式(例如 srid=4326)。默认假定的输出的是二维平面数据。该参数对GML 3.1.1版本输出很有用,和轴顺序相关。因此如果你设定了该值,该函数会交换坐标顺序为lat/lon的顺序,而不是lon/lat的顺序。
  • 32:输出几何体框(envelope)。

nprefix

text类型。可以用来指定一个定制的gml文档的namespace prefix,如果没有指定则没有prefix,如果为null或者省略该参数,则prefix为‘gml’。

id

text类型。

返回值

返回值为text类型。将几何图形作为地理标记语言(GML)元素返回。版本参数(如果指定)可以是2或3。如果未指定版本参数,则默认值为2。

GML 2指的是2.1.2版本,GML 3指的是3.1.1版本。

示例

SELECT ST_AsGML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASGML(text)      |
--------------------
<gml:Polygon srsName|
="EPSG:4326"><gml:o|
uterBoundaryIs><gml|
:LinearRing><gml:co|
ordinates>0,0 0,1 1|
,1 1,0 0,0</gml:coo|
rdinates></gml:Line|
arRing></gml:outerB|
oundaryIs></gml:Pol|
ygon>               |
总数目:1

SELECT ST_AsGML(ST_GeogFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))'));
ST_ASGML(text)      |
--------------------
<gml:Polygon srsName|
="EPSG:4326"><gml:o|
uterBoundaryIs><gml|
:LinearRing><gml:co|
ordinates>0,0 0,1 1|
,1 1,0 0,0</gml:coo|
rdinates></gml:Line|
arRing></gml:outerB|
oundaryIs></gml:Pol|
ygon>               |
总数目:1

SELECT ST_AsGML(3, ST_GeomFromText('POINT(5.234234233242 6.34534534534)',4326), 5, 17);
ST_ASGML(text)      |
--------------------
<gml:Point srsName="|
urn:ogc:def:crs:EPS|
G::4326"><gml:pos s|
rsDimension="2">6.3|
4535 5.23423</gml:p|
os></gml:Point>     |
总数目:1

SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 32);
ST_ASGML(text)      |
--------------------
<gml:Envelope srsNam|
e="EPSG:4326" srsDi|
mension="2"><gml:lo|
werCorner>1 2</gml:|
lowerCorner><gml:up|
perCorner>10 20</gm|
l:upperCorner></gml|
:Envelope>          |
总数目:1

SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 49);
ST_ASGML(text)      |
--------------------
<gml:Envelope srsNam|
e="urn:ogc:def:crs:|
EPSG::4326" srsDime|
nsion="2"><gml:lowe|
rCorner>2 1</gml:lo|
werCorner><gml:uppe|
rCorner>20 10</gml:|
upperCorner></gml:E|
nvelope>            |
总数目:1

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(text)      |
--------------------
<gml:PolyhedralSurfa|
ce><gml:polygonPatc|
hes><gml:PolygonPat|
ch><gml:exterior><g|
ml:LinearRing><gml:|
posList srsDimensio|
n="3">0 0 0 0 0 1 0|
 1 1 0 1 0 0 0 0</g|
ml:posList></gml:Li|
nearRing></gml:exte|
rior></gml:PolygonP|
atch><gml:PolygonPa|
tch><gml:exterior><|
gml:LinearRing><gml|
:posList srsDimensi|
on="3">0 0 0 0 1 0 |
1 1 0 1 0 0 0 0 0</|
gml:posList></gml:L|
inearRing></gml:ext|
erior></gml:Polygon|
Patch><gml:PolygonP|
atch><gml:exterior>|
<gml:LinearRing><gm|
l:posList srsDimens|
ion="3">0 0 0 1 0 0|
 1 0 1 0 0 1 0 0 0<|
/gml:posList></gml:|
LinearRing></gml:ex|
terior></gml:Polygo|
nPatch><gml:Polygon|
Patch><gml:exterior|
><gml:LinearRing><g|
ml:posList srsDimen|
sion="3">1 1 0 1 1 |
1 1 0 1 1 0 0 1 1 0|
</gml:posList></gml|
:LinearRing></gml:e|
xterior></gml:Polyg|
onPatch><gml:Polygo|
nPatch><gml:exterio|
r><gml:LinearRing><|
gml:posList srsDime|
nsion="3">0 1 0 0 1|
 1 1 1 1 1 1 0 0 1 |
0</gml:posList></gm|
l:LinearRing></gml:|
exterior></gml:Poly|
gonPatch><gml:Polyg|
onPatch><gml:exteri|
or><gml:LinearRing>|
<gml:posList srsDim|
ension="3">0 0 1 1 |
0 1 1 1 1 0 1 1 0 0|
 1</gml:posList></g|
ml:LinearRing></gml|
:exterior></gml:Pol|
ygonPatch></gml:pol|
ygonPatches></gml:P|
olyhedralSurface>   |
总数目:1

ST_AsHEXEWKB

ST_AsHEXEWKB — 返回HEXEWKB格式(文本表示)的geometry对象,对NDR数据使用little-endian编码,对XDR数据使用big-endian编码。

语法

st_ashexewkb ::=

参数

geom

geometry类型。

NDRorXDR

text类型。如果没有指定编码方式,默认使用NDR数据格式。

返回值

返回值为text类型。

示例

SELECT ST_AsHEXEWKB(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASHEXEWKB(text)      |
------------------------
0103000020E6100000010000|
00050000000000000000000|
00000000000000000000000|
00000000000000000000000|
0F03F000000000000F03F00|
0000000000F03F000000000|
000F03F0000000000000000|
00000000000000000000000|
000000000               |
总数目:1

SELECT ST_AsHEXEWKB(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326),'XDR');
ST_ASHEXEWKB(text)      |
------------------------
0020000003000010E6000000|
01000000050000000000000|
00000000000000000000000|
0000000000003FF00000000|
000003FF00000000000003F|
F00000000000003FF000000|
00000000000000000000000|
00000000000000000000000|
000000000               |
总数目:1

ST_AsKML

ST_AsKML — 返回一个几何对象的KML 元素表示。

语法

st_askml ::=

参数

version

integer类型。默认的version值为2。

geom

geometry类型。

geog

geography类型。

maxdecimaldigits

integer类型。默认的maxdecimaldigits值为15。

nprefix

text类型。默认值为NULL。KML输出namespace没有前缀。

返回值

返回值为text类型。

示例

SELECT ST_AsKML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASKML(text)      |
--------------------
<Polygon><outerBound|
aryIs><LinearRing><|
coordinates>0,0 0,1|
 1,1 1,0 0,0</coord|
inates></LinearRing|
></outerBoundaryIs>|
</Polygon>          |
总数目:1

SELECT ST_AsKML(2,ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASKML(text)      |
--------------------
<Polygon><outerBound|
aryIs><LinearRing><|
coordinates>0,0 0,1|
 1,1 1,0 0,0</coord|
inates></LinearRing|
></outerBoundaryIs>|
</Polygon>          |
总数目:1

SELECT ST_AsKML(2,ST_GeomFromText('POLYGON((0 0,0 1.123456789123456789,1 1,1 0,0 0))',4326),15,'AAAA');
ST_ASKML(text)      |
--------------------
<AAAA:Polygon><AAAA:|
outerBoundaryIs><AA|
AA:LinearRing><AAAA|
:coordinates>0,0 0,|
1.123456789123457 1|
,1 1,0 0,0</AAAA:co|
ordinates></AAAA:Li|
nearRing></AAAA:out|
erBoundaryIs></AAAA|
:Polygon>           |
总数目:1

ST_AsLatLonText

ST_AsLatLonText — 返回一个给定的度、分、秒表示。

语法

st_aslatlontext ::=

参数

geom

geometry类型。

default_format

text类型。是一个返回文本格式的字符串,与时间格式字符串很类似。有效的标记意义如下:

D表示degree,即度;M表示minute,分;C表示主方向(NSEW)。DMS标志可以重复来表示所需的宽度和精度例如(SSS.SSSS表示1.0023)。

标志格式的参数"M", "S", 和 "C" 都是可选的。 如果参数C被省略了,度数用符合“-”表示。如果参数S被省略了,minute值会被显示成你定义的任意精度的小数。如果参数M被省略了,度数被显示成你定义的任意精度小数。

如果输出格式的字符串被省略了(或零长度),那么将使用默认的输出格式。

返回值

返回值为text类型。

该函数假定点是处于lat/lon投影系中。X(表示经度)坐标和Y(表示维度)坐标会在输出进行正则化到正常范围内(经度范围是:-180到180,维度范围是-90到90)。

示例

SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)'));
ST_ASLATLONTEXT(text)      |
---------------------------
2°19'29.928"S 3°14'3.243"W |
总数目:1

SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D\textdegree{}M''S.SSS"C'));
ST_ASLATLONTEXT(text)      |
---------------------------
2\textdegree{}19'29.928"S 3|
\textdegree{}14'3.243"W    |
总数目:1

SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D degrees, M minutes, S seconds to the C'));
ST_ASLATLONTEXT(text)      |
---------------------------
2 degrees, 19 minutes, 30 s|
econds to the S 3 degrees,|
 14 minutes, 3 seconds to |
the W                      |
总数目:1

SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D\textdegree{}M''S.SSS"'));
ST_ASLATLONTEXT(text)      |
---------------------------
-2\textdegree{}19'29.928" -|
3\textdegree{}14'3.243"    |
总数目:1

SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D.DDDD degrees C'));
ST_ASLATLONTEXT(text)      |
---------------------------
2.3250 degrees S 3.2342 deg|
rees W                     |
总数目:1

SELECT (ST_AsLatLonText('POINT (-302.2342342 -792.32498)'));
ST_ASLATLONTEXT(text)      |
---------------------------
72°19'29.928"S 57°45'56.757|
"E                         |
总数目:1

ST_AsSVG

ST_AsSVG — 根据给定geometry或geography对象,在一个可伸缩矢量图形(简称SVG) 数据中返回一个geometry对象。

语法

st_assvg ::=

参数

geom

geometry类型。

geog

geography类型。

default_rel

integer类型。设置1时候表示使用相对移动的方式,默认即0是使用绝对移动的方式。

default_maxdecimaldigits

integer类型。用来减少精度默认是小数点后面保留15位小数。

返回值

返回值为text类型。

示例

SELECT ST_AsSVG(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
ST_ASSVG(text)      |
--------------------
M 0 0 L 0 -1 1 -1 1 |
0 Z                 |
总数目:1

-- Option
SELECT 'svg_option_01', ST_AsSVG(geography(ST_GeomFromEWKT('LINESTRING(1 1, 4 4, 5 7)')), 0);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_option_01          |M 1 -1 L 4 -4 5 -7  |
总数目:1

SELECT 'svg_option_02', ST_AsSVG(geography(ST_GeomFromEWKT('LINESTRING(1 1, 4 4, 5 7)')), 1);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_option_02          |M 1 -1 l 3 -3 1 -3  |
总数目:1

SELECT 'svg_option_03', ST_AsSVG(geography(ST_GeomFromEWKT('LINESTRING(1 1, 4 4, 5 7)')), 0, 0);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_option_03          |M 1 -1 L 4 -4 5 -7  |
总数目:1

SELECT 'svg_option_04', ST_AsSVG(geography(ST_GeomFromEWKT('LINESTRING(1 1, 4 4, 5 7)')), 1, 0);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_option_04          |M 1 -1 l 3 -3 1 -3  |
总数目:1

-- Precision
SELECT 'svg_precision_01', ST_AsSVG(geography(ST_GeomFromEWKT('POINT(1.1111111 1.1111111)')), 1, -2);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_precision_01       |x="1" y="-1"        |
总数目:1

SELECT 'svg_precision_02', ST_AsSVG(geography(ST_GeomFromEWKT('POINT(1.1111111 1.1111111)')), 1, 19);
?COLUMN?(varchar)      |ST_ASSVG(text)      |
-------------------------------------------
svg_precision_02       |x="1.1111111" y="-1.|
                       |1111111"            |
总数目:1

ST_AsText

ST_AsText — 返回不含有SRID信息的geometry或geography对象的WKT表示。

语法

st_astext ::=

参数

geom

geometry类型。

geog

geography类型。

default_maxdecimaldigits

integer类型。用来减少精度默认是小数点后面保留15位小数。

返回值

返回值为text类型。

注解

WKT格式不维持对象的精度,因此为了阻止精度损失,使用函数ST_AsBinary 或函数 ST_AsEWKB。

示例

SELECT ST_AsText('01030000000100000005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000');
ST_ASTEXT(text)      |
---------------------
POLYGON((0 0,0 1,1 1,|
1 0,0 0))            |
总数目:1

SELECT ST_AsText(GeomFromEWKT('SRID=4326;POINT(111.1111111 1.1111111)'),2);
ST_ASTEXT(text)      |
---------------------
POINT(111.11 1.11)   |
总数目:1

SELECT ST_AsText(GeomFromEWKT('SRID=4326;POINT(111.1111111 1.1111111)'));
ST_ASTEXT(text)      |
---------------------
POINT(111.1111111 1.1|
111111)              |
总数目:1

ST_AsTWKB

ST_AsTWKB — 输出TWKB(即Tiny WKB)描述的几何对象。

语法

st_astwkb ::=

st_astwkb ::=

参数

geom

geometry类型。

geometries

geometry[]类型。

unique_ids

bigint[]类型。

函数的数组输入形式用于将几何图形和唯一标识符的集合转换为保留标识符的TWKB集合。这对于希望解压集合,然后访问有关其中对象的进一步信息的客户端非常有用。可以使用array_agg函数创建数组。其他参数的操作与函数的简单形式相同。

xy z m

integer类型。默认值为0。控制输出中存储的精度。默认情况下,值在编码前四舍五入到最接近的单位。如果要传递更高的精度,请增加数字。例如,值为1意味着小数点右侧的第一个数字将被保留。

sizes b_boxes

boolean类型。默认值为false。

“大小”和“边界框”参数控制输出中是否包含有关对象编码长度和对象边界的可选信息。默认情况下,它们不是。除非你的客户端软件对它们有用,否则不要打开它们,因为它们只会占用空间(节省空间是TWKB的重点)。

返回值

返回值为text类型。以TWKB(极小的已知二进制)格式返回几何体。TWKB是一种压缩的二进制格式,其重点是最小化输出的大小。

示例

SELECT ST_AsTWKB('LINESTRING(1 1,5 5)'::geometry);
ST_ASTWKB(BYTEA)      |
----------------------
\002\000\002\002\002\0|
10\010                |
总数目:1

select ST_AsTWKB(ARRAY['LINESTRING (0 0, 10 10)','LINESTRING(124.983539 1.419224,91.181596 29.647798)'], array[1,2]) from dual;
ST_ASTWKB(BYTEA)      |
----------------------
\005\004\002\002\004\0|
02\000\000\024\024\00|
2\346\001\021C:       |
总数目:1

ST_AsX3D

ST_AsX3D — 返回X3D xml节点元素格式的几何图形:ISO-IEC-19776-1.2-X3DEncodings-xml。

语法

st_asx3d ::=

参数

geom

geometry类型。

default_maxdecimaldigits

integer类型。默认值为15。如果没有指定精度,最多保留15位小数。

default_options

integer类型。“options”参数是一个位字段,默认值为0。它用于表示是否使用X3D GeoCoordinates Geospatial节点表示坐标,以及是否翻转x/y轴。默认情况下,ST_AsX3D以数据库形式输出(long,lat或X,Y),但可以首选lat/lon,Y/X的X3D默认值。

  • 0:X/Y数据库顺序(例如long/lat=X,Y是标准数据库顺序)、默认值和非空间坐标(只是常规的旧坐标标记)。
  • 1:翻转X和Y。如果与GeoCoordinate选项开关一起使用,则输出将默认为“latitude_first”,坐标也将翻转。
  • 2:输出地理空间地理坐标中的坐标。如果几何图形不在WGS 84 long lat(srid:4326)中,此选项将引发错误。这是目前唯一受支持的地理坐标类型。请参阅指定空间参考系统的X3D规范。

返回值

返回值为text类型。

示例

SELECT ST_AsX3D(
ST_Translate(
ST_Force_3d(
ST_Buffer(ST_Point(10,10),5, 'quad_segs=2')), 0,0,
3)
,6) As x3dfrag;
X3DFRAG(text)      |
-------------------
<IndexedFaceSet  co|
nvex='false' coord|
Index='0 1 2 3 4 5|
 6 7'><Coordinate |
point='15 10 3 13.|
535534 6.464466 3 |
10 5 3 6.464466 6.|
464466 3 5 10 3 6.|
464466 13.535534 3|
 10 15 3 13.535534|
 13.535534 3 ' /><|
/IndexedFaceSet>   |
总数目:1

ST_GeoHash

ST_GeoHash — 返回一个几何对象的GeoHash表示。

语法

st_geohash ::=

参数

geom

geometry类型。

default_maxchars

integer类型。如果maxchars参数没有指定,ST_GeoHash 函数返回一个输入对象全精度的GeoHash值。

返回值

返回值为text类型。

一个GeoHash把一个point对象加密成一个基于前缀的可排序可收缩的形式。对一个点来说, GeoHash字符串越短,精度越低。GeoHash甚至可以被看做一个含有实际点的box对象。

Point类型对象返回一个20个字符的GeoHash字符串(基本上能够保持输入对象的精度)。其他类型根据对象的大小返回一个可变精度的GeoHash字符串。

更大的特征意味着更低的精度,更小的特征对象意味着精度更高(这里有点像分辨率,像点越大分辨率越低,像点越小分辨率越高)。这里的理念是用GeoHash表示的box总数包含输入的对象。

如果maxchars参数被指定, ST_GeoHash函数会返回一个不超过指定maxchars值个数的字符来表示一个较低精度的几何对象。对于非point类型对象,计算的起始点是几何对象的bounding box的中心点。

示例

SELECT ST_GeoHash(ST_SetSRID(ST_MakePoint(-126,48),4326));
ST_GEOHASH(text)      |
----------------------
c0w3hf1s70w3hf1s70w3  |
总数目:1

SELECT ST_GeoHash(ST_SetSRID(ST_MakePoint(-126,48),4326),5);
ST_GEOHASH(text)      |
----------------------
c0w3h                 |
总数目:1