将 Postgres 几何格式转换为 WKT
convert Postgres geometry format to WKT
我有一个 Postgres table,它将多边形几何图形以其特定格式存储在其中一个列中,类似于这样-
0103000020E61000000100000004000000B8627F336B1554405DD602FFA2733A40B8627FA7601554403851F8EBC7723A40B8627FC38F15544036D539E90B733A40B8627F336B1554405DD602FFA2733A40
我知道如何使用 ST_AsText
将这个单一值转换为 WKT,这将给我 POLYGON((Lat Long))。但我想将整个专栏转换为 WKT 格式。
如何实现?
谢谢!
你试过这个吗?
SELECT ST_AsText(your_geom_column) FROM your_table
在下面的示例中,我将向您展示几种序列化几何图形的方法。这是带有编码为 4326 (WGS84) 的两个点的示例数据:
CREATE TEMPORARY TABLE tmp
(geom GEOMETRY);
INSERT INTO tmp VALUES
('SRID=4326;POINT(1 2)'),
('SRID=4326;POINT(2 4)');
几何图形为 WKB
(众所周知的二进制,默认值):
SELECT geom FROM tmp;
geom
----------------------------------------------------
0101000020E6100000000000000000F03F0000000000000040
0101000020E610000000000000000000400000000000001040
几何图形为 WKT
(Well-Known Text) and EWKT
(具有显式空间参考系统的 WKT):
SELECT ST_AsText(geom), ST_AsEWKT(geom) FROM tmp;
st_astext | st_asewkt
------------+----------------------
POINT(1 2) | SRID=4326;POINT(1 2)
POINT(2 4) | SRID=4326;POINT(2 4)
万一你喜欢GeoJSON
SELECT ST_AsGeoJSON(geom) FROM tmp;
st_asgeojson
--------------------------------------
{"type":"Point","coordinates":[1,2]}
{"type":"Point","coordinates":[2,4]}
甚至GML
SELECT ST_AsGML(geom) FROM tmp;
st_asgml
-----------------------------------------------------------------------------------
<gml:Point srsName="EPSG:4326"><gml:coordinates>1,2</gml:coordinates></gml:Point>
<gml:Point srsName="EPSG:4326"><gml:coordinates>2,4</gml:coordinates></gml:Point>
Google地球爱好者也玩得不亦乐乎!几何图形为 KML
SELECT ST_AsKML(geom) FROM tmp;
st_askml
-----------------------------------------------
<Point><coordinates>1,2</coordinates></Point>
<Point><coordinates>2,4</coordinates></Point>
而且这个清单还在继续!在 PostGIS 文档中有 other fancy ways to serialise geometry.
演示:db<>fiddle
我有一个 Postgres table,它将多边形几何图形以其特定格式存储在其中一个列中,类似于这样-
0103000020E61000000100000004000000B8627F336B1554405DD602FFA2733A40B8627FA7601554403851F8EBC7723A40B8627FC38F15544036D539E90B733A40B8627F336B1554405DD602FFA2733A40
我知道如何使用 ST_AsText
将这个单一值转换为 WKT,这将给我 POLYGON((Lat Long))。但我想将整个专栏转换为 WKT 格式。
如何实现?
谢谢!
你试过这个吗?
SELECT ST_AsText(your_geom_column) FROM your_table
在下面的示例中,我将向您展示几种序列化几何图形的方法。这是带有编码为 4326 (WGS84) 的两个点的示例数据:
CREATE TEMPORARY TABLE tmp
(geom GEOMETRY);
INSERT INTO tmp VALUES
('SRID=4326;POINT(1 2)'),
('SRID=4326;POINT(2 4)');
几何图形为 WKB
(众所周知的二进制,默认值):
SELECT geom FROM tmp;
geom
----------------------------------------------------
0101000020E6100000000000000000F03F0000000000000040
0101000020E610000000000000000000400000000000001040
几何图形为 WKT
(Well-Known Text) and EWKT
(具有显式空间参考系统的 WKT):
SELECT ST_AsText(geom), ST_AsEWKT(geom) FROM tmp;
st_astext | st_asewkt
------------+----------------------
POINT(1 2) | SRID=4326;POINT(1 2)
POINT(2 4) | SRID=4326;POINT(2 4)
万一你喜欢GeoJSON
SELECT ST_AsGeoJSON(geom) FROM tmp;
st_asgeojson
--------------------------------------
{"type":"Point","coordinates":[1,2]}
{"type":"Point","coordinates":[2,4]}
甚至GML
SELECT ST_AsGML(geom) FROM tmp;
st_asgml
-----------------------------------------------------------------------------------
<gml:Point srsName="EPSG:4326"><gml:coordinates>1,2</gml:coordinates></gml:Point>
<gml:Point srsName="EPSG:4326"><gml:coordinates>2,4</gml:coordinates></gml:Point>
Google地球爱好者也玩得不亦乐乎!几何图形为 KML
SELECT ST_AsKML(geom) FROM tmp;
st_askml
-----------------------------------------------
<Point><coordinates>1,2</coordinates></Point>
<Point><coordinates>2,4</coordinates></Point>
而且这个清单还在继续!在 PostGIS 文档中有 other fancy ways to serialise geometry.
演示:db<>fiddle