6.8. 几何对象输入函数
6.8.1. ST_BdPolyFromText
ST_BdPolyFromText — 根据一个任意的封闭的WKT描述的MultiLineString几何类型对象创建一个Polygon对象。
语法
geometry ST_BdPolyFromText(text WKT, integer srid);
描述
根据一个任意的封闭的WKT描述的MultiLineString几何类型对象创建一个Polygon对象。
注意
如果WKT描述的对象并不是MULTILINESTRING类型的对象,会抛出异常.如果输出是MULTIPOLYGON也会抛出异常; 遇到这种情况使用ST_BdMPolyFromText函数,或者查看 ST_BuildArea()寻找KGIS专有的办法。
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
相关参考
ST_BuildArea, ST_BdMPolyFromText
6.8.2. ST_BdMPolyFromText
ST_BdMPolyFromText — 根据一个任意的封闭的WKT描述的MultiLineString几何类型对象创建一个MultiPolygon对象.
语法
geometry ST_BdMPolyFromText(text WKT, integer srid);
描述
根据一个任意的封闭的WKT描述的MultiLineString几何类型对象创建一个MultiPolygon对象
注意
如果WKT描述的对象并不是MULTILINESTRING类型的对象. 即使结果真的只有一个多边形组成,也会强制输出MULTIPOLYGON对象,遇到这种情况,如果确定输出是POLYGON对象,请使用ST_BdPolyFromText,或者查看ST_BuildArea()寻找KGIS专有的办法
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Availability: 1.1.0 - requires GEOS >= 2.1.0.
相关参考
ST_BuildArea, ST_BdPolyFromText
6.8.3. ST_GeogFromText
ST_GeogFromText —从一个WKT规范描述的对象返回一个具体的geography对象。
语法
geography ST_GeogFromText(text EWKT);
描述
从一个WKT或EWKT规范描述的对象返回一个具体的geography对象。SRID会默认设置为4326。 这个函数是ST_GeographyFromText的别名(即两个函数其实是一样的)。 Point类型必须用经纬度的形式做参数。
样例
--- 把经纬度坐标转换为geography坐标 ALTER TABLE sometable ADD COLUMN geog geography(POINT,4326); UPDATE sometable SET geog = ST_GeogFromText('SRID=4326;POINT(' || lon|| ' ' || lat || ')');
相关参考
ST_AsText, ST_GeographyFromText
6.8.4. ST_GeographyFromText
ST_GeographyFromText — 从一个WKT规范描述的对象返回一个具体的geography对象.
语法
geography ST_GeographyFromText(text EWKT);
描述
从一个WKT或EWKT规范描述的对象返回一个具体的geography对象.。SRID会默认设置为4326.
相关参考
ST_GeogFromText, ST_AsText
6.8.5. ST_GeomCollFromText
ST_GeomCollFromText — 根据WKT和给定的SRID值创建一个geometry collection类型的对象,如果SRID值没有给出,默认为0
语法
geometry ST_GeomCollFromText(text WKT, integer srid); geometry ST_GeomCollFromText(text WKT);
描述
根据WKT和给定的SRID值创建一个geometry collection类型的对象,如果SRID值没有给出,默认为0.
OGC SPEC 3.2.6.2 - 参数SRID需要满足该规范
如果WKT描述不是一个GEOMETRYCOLLECTION对象,返回null
注意
如果绝对确定输入的WKT geometry类型是collection类型的,不要使用这个函数,它会比ST_GeomFromText 这个函数慢得多,因为ST_GeomCollFromText这个函数会进行额外的类型校验步骤。
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该函数实现了SQL/MM 标准.
样例
SELECT ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(1 2, 3 4))');
相关参考
ST_GeomFromText, ST_SRID
6.8.6. ST_GeomFromEWKT
ST_GeomFromEWKT — 从一个EWKT描述的几何对象返回一个具体的ST_Geometry值。
语法
geometry ST_GeomFromEWKT(text EWKT);
描述
从一个OGC EWKT标准的描述的几何对象返回一个具体的KGIS ST_Geometry对象
注意
EWKT格式不是OGC标准,而是KGIS的具体的一种包含SRID的格式
-
这个函数支持3D对象,并且不会删除z坐标
-
该方法支持CircularString和curve几何类型字段
-
该函数支持Polyhedral Surface类型.
-
该函数支持 Triangles 和 Triangulated Irregular Network Surfaces (TIN)类型.
样例
SELECT ST_GeomFromEWKT('SRID=4269;LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)'); SELECT ST_GeomFromEWKT('SRID=4269;MULTILINESTRING((-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932))'); SELECT ST_GeomFromEWKT('SRID=4269;POINT(-71.064544 42.28787)'); SELECT ST_GeomFromEWKT('SRID=4269;POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239, -71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))'); SELECT ST_GeomFromEWKT('SRID=4269;MULTIPOLYGON(((-71.1031880899493 42.3152774590236, -71.1031627617667 42.3152960829043,-71.102923838298 42.3149156848307,-71.1023097974109 42.3151969047397,-71.1019285062273 42.3147384934248,-71.102505233663 42.3144722937587,-71.10277487471 42.3141658254797,-71.103113945163 42.3142739188902,-71.10324876416 42.31402489987,-71.1033002961013 42.3140393340215,-71.1033488797549 42.3139495090772,-71.103396240451 42.3138632439557,-71.1041521907712 42.3141153348029,-71.1041411411543 42.3141545014533,-71.1041287795912 42.3142114839058, -71.1041188134329 42.3142693656241,-71.1041112482575 42.3143272556118, -71.1041072845732 42.3143851580048,-71.1041057218871 42.3144430686681, -71.1041065602059 42.3145009876017,-71.1041097995362 42.3145589148055, -71.1041166403905 42.3146168544148,-71.1041258822717 42.3146748022936, -71.1041375307579 42.3147318674446,-71.1041492906949 42.3147711126569,-71.1041598612795 42.314808571739,-71.1042515013869 42.3151287620809,-71.1041173835118 42.3150739481917,-71.1040809891419 42.3151344119048, -71.1040438678912 42.3151191367447,-71.1040194562988 42.3151832057859,-71.1038734225584 42.3151140942995,-71.1038446938243 42.3151006300338,-71.1038315271889 42.315094347535,-71.1037393329282 42.315054824985,-71.1035447555574 42.3152608696313,-71.1033436658644 42.3151648370544,-71.1032580383161 42.3152269126061,-71.103223066939 42.3152517403219,-71.1031880899493 42.3152774590236)),((-71.1043632495873 42.315113108546,-71.1043583974082 42.3151211109857,-71.1043443253471 42.3150676015829,-71.1043850704575 42.3150793250568,-71.1043632495873 42.315113108546)))'); --3d circular string SELECT ST_GeomFromEWKT('CIRCULARSTRING(220268 150415 1,220227 150505 2,220227 150406 3)'); --Polyhedral Surface example SELECT 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_AsEWKT, ST_GeomFromText, ST_GeomFromEWKT
6.8.7. ST_GeometryFromText
ST_GeometryFromText — 根据WKT描述的对象返回一个具体的ST_Geometry 函数值(也是一个geometry对象),该函数是ST_GeomFromText的别名,即两者等价。
语法
geometry ST_GeometryFromText(text WKT); geometry ST_GeometryFromText(text WKT, integer srid);
描述
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范 OpenGIS Simple Features Implementation Specification for SQL 1.1.
-
该方法实现了 SQL/MM 标准版本SQL-MM 3: 5.1.40
相关参考
ST_GeomFromText
6.8.8. ST_GeomFromText
ST_GeomFromText — 根据WKT描述返回一个具体的ST_Geometry 值
语法
geometry ST_GeomFromText(text WKT); geometry ST_GeomFromText(text WKT, integer srid);
描述
从OGC Well-Known格式文本描述创建一个KGIS ST_Geometry对象。
注意
ST_GeomFromText 函数有两种变体(使用方式),第一种没有SRID参数,返回的geometry类型没有定义空间参考系,第二种定义了第二个参数SRID,返回的geometry对象包含了SRID值作为元数据信息,SRID值必须是定义在表spatial_ref_sys中的一种。
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 –可选参数SRID是为了满足该规范。
-
该方法实现了 SQL/MM 标准: SQL-MM 3: 5.1.40
-
该方法支持CircularString和curve几何类型字段
注意
ST_GeomFromText('GEOMETRYCOLLECTION(EMPTY)') 允许执行,遵守SQL/MM规范,这个写法是非法的。现在应该这样写ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')
样例
SELECT ST_GeomFromText('LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)'); SELECT ST_GeomFromText('LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)',4269); SELECT ST_GeomFromText('MULTILINESTRING((-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932))'); SELECT ST_GeomFromText('POINT(-71.064544 42.28787)'); SELECT ST_GeomFromText('POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239, -71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))'); SELECT ST_GeomFromText('MULTIPOLYGON(((-71.1031880899493 42.3152774590236, -71.1031627617667 42.3152960829043,-71.102923838298 42.3149156848307, -71.1023097974109 42.3151969047397,-71.1019285062273 42.3147384934248,-71.102505233663 42.3144722937587,-71.10277487471 42.3141658254797,-71.103113945163 42.3142739188902,-71.10324876416 42.31402489987,-71.1033002961013 42.3140393340215,-71.1033488797549 42.3139495090772,-71.103396240451 42.3138632439557,-71.1041521907712 42.3141153348029,-71.1041411411543 42.3141545014533,-71.1041287795912 42.3142114839058,-71.1041188134329 42.3142693656241,-71.1041112482575 42.3143272556118, -71.1041072845732 42.3143851580048,-71.1041057218871 42.3144430686681, -71.1041065602059 42.3145009876017,-71.1041097995362 42.3145589148055,-71.1041166403905 42.3146168544148,-71.1041258822717 42.3146748022936, -71.1041375307579 42.3147318674446,-71.1041492906949 42.3147711126569,-71.1041598612795 42.314808571739,-71.1042515013869 42.3151287620809,-71.1041173835118 42.3150739481917,-71.1040809891419 42.3151344119048,-71.1040438678912 42.3151191367447,-71.1040194562988 42.3151832057859,-71.1038734225584 42.3151140942995,-71.1038446938243 42.3151006300338,-71.1038315271889 42.315094347535,-71.1037393329282 42.315054824985,-71.1035447555574 42.3152608696313,-71.1033436658644 42.3151648370544,-71.1032580383161 42.3152269126061,-71.103223066939 42.3152517403219,-71.1031880899493 42.3152774590236)), ((-71.1043632495873 42.315113108546,-71.1043583974082 42.3151211109857, -71.1043443253471 42.3150676015829,-71.1043850704575 42.3150793250568,-71.1043632495873 42.315113108546)))',4326); SELECT ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)');
相关参考
ST_GeomFromEWKT, ST_GeomFromWKB, ST_SRID
6.8.9. ST_LineFromText
ST_LineFromText — 根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0.
用法
geometry ST_LineFromText(text WKT); geometry ST_LineFromText(text WKT, integer srid);
描述
根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0. 如果传递的WKT参数不是LINESTRING返回值将为空
注意
OGC SPEC 3.2.6.2 – SRID为了满足规范,保持和该规范一致性
注意
如果十分确定的几何类型列是LINESTRING,使用ST_GeomFromText性能更高. 而ST_LineFromText函数只是调用ST_GeomFromText 这个函数,同时添加了对LINESTRING类型的校验
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 7.2.8
样例
SELECT ST_LineFromText('LINESTRING(1 2, 3 4)') AS aline, ST_LineFromText('POINT(1 2)') AS null_return; aline | null_return ------------------------------------+----------- 010200000002000000000000000000F ... | t
相关参考
ST_GeomFromText
6.8.10. ST_MLineFromText
ST_MLineFromText — 根据WKT表述的几何对象返回ST_MultiLineString值
用法
geometry ST_MLineFromText(text WKT, integer srid);geometry ST_MLineFromText(text WKT);
描述
根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0
OGC SPEC 3.2.6.2 - 参数SRID为了满足该规范,和该规范保持一致
如果输入的WKT对象不是MULTILINESTRING几何类型对象,返回NULL值
注意
如果十分确定的几何类型列是Point类型,不要使用该函数,它比ST_GeomFromText慢很多,因为这个函数还增加了对输入类型校验功能
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification.SQL-MM 3: 9.4.4
样例
SELECT ST_MLineFromText('MULTILINESTRING((1 2, 3 4), (4 5, 6 7))');
相关参考
ST_GeomFromText
6.8.11. ST_MPointFromText
ST_MPointFromText — 根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0
用法
geometry ST_MPointFromText(text WKT, integer srid);geometry ST_MPointFromText(text WKT);
描述
根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0.
OGC SPEC 3.2.6.2 - 参数SRID为了满足该规范,和该规范保持一致
如果输入的WKT参数不是MULTIPOINT,返回NULL值
注意
如果十分确定的几何类型列是Point类型,不要使用这个函数,使用ST_GeomFromText性能更高,因为该函数添加了对输入类型的校验步骤
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. 3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 9.2.4
样例
SELECT ST_MPointFromText('MULTIPOINT(1 2, 3 4)'); SELECT ST_MPointFromText('MULTIPOINT(-70.9590 42.1180, -70.9611 42.1223)', 4326);
参考
ST_GeomFromText
6.8.12. ST_MPolyFromText
根据WKT表述和给定的SRID创建一个MultiPolygon Geometry几何类型对象,如果SRID没有给定默认设置为0
用法
geometry ST_MPolyFromText(text WKT, integer srid);geometry ST_MPolyFromText(text WKT);
描述
根据WKT表述和给定的SRID创建一个MultiPolygon Geometry几何类型对象,如果SRID没有给定默认设置为0
OGC SPEC 3.2.6.2 - 参数SRID为了满足该规范,和该规范保持一致
如果WKT参数不是MULTIPOLYGON,返回null值
注意
如果十分确定的几何类型列是multipolygon类型,不要使用这个函数,使用ST_GeomFromText性能更高,因为该函数添加了对输入类型的校验步骤
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 9.6.4
样例
SELECT ST_MPolyFromText('MULTIPOLYGON(((0 0 1,20 0 1,20 20 1,0 20 1,0 0 1),(5 5 3,5 7 3,7 7 3,7 5 3,5 5 3)))'); SELECt ST_MPolyFromText('MULTIPOLYGON(((-70.916 42.1002,-70.9468 42.0946,-70.9765 42.0872,-70.9754 42.0875,-70.9749 42.0879,-70.9752 42.0881,-70.9754 42.0891,-70.9758 42.0894,-70.9759 42.0897,-70.9759 42.0899,-70.9754 42.0902,-70.9756 42.0906,-70.9753 42.0907,-70.9753 42.0917,-70.9757 42.0924,-70.9755 42.0928,-70.9755 42.0942,-70.9751 42.0948,-70.9755 42.0953,-70.9751 42.0958,-70.9751 42.0962,-70.9759 42.0983,-70.9767 42.0987,-70.9768 42.0991,-70.9771 42.0997,-70.9771 42.1003,-70.9768 42.1005,-70.977 42.1011,-70.9766 42.1019,-70.9768 42.1026,-70.9769 42.1033,-70.9775 42.1042,-70.9773 42.1043,-70.9776 42.1043,-70.9778 42.1048,-70.9773 42.1058,-70.9774 42.1061,-70.9779 42.1065,-70.9782 42.1078,-70.9788 42.1085,-70.9798 42.1087,-70.9806 42.109,-70.9807 42.1093,-70.9806 42.1099,-70.9809 42.1109,-70.9808 42.1112,-70.9798 42.1116,-70.9792 42.1127,-70.979 42.1129,-70.9787 42.1134,-70.979 42.1139,-70.9791 42.1141,-70.9987 42.1116,-71.0022 42.1273,-70.9408 42.1513,-70.9315 42.1165,-70.916 42.1002)))',4326);
相关参考
ST_GeomFromText, ST_SRID
6.8.13. ST_PointFromText
ST_PointFromText — 根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知
用法
geometry ST_PointFromText(text WKT); geometry ST_PointFromText(text WKT, integer srid);
描述
根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知,如果输入的WKT对象不是point类型,返回为null,如果是无效的WKT描述对象,返回一个错误
注意
ST_PointFromText函数有两种变体(使用方式),第一种没有SRID参数,返回的geometry类型没有定义空间参考系,第二种定义了第二个参数SRID,返回的geometry对象包含了SRID值作为元数据信息,SRID值必须是定义在表spatial_ref_sys中的一种
注意
如果几何类型列是Point类型,不要使用这个函数,使用ST_GeomFromText性能更高,因为该函数添加了对输入类型的校验步骤.如果根据经纬度来构造point对象,并且和OGC兼容的函数使用后相比,更关注性能和精度,请使用函数ST_MakePoint或与OGC的ST_Point函数
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 -参数SRID为了满足该规范一致性要求
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 6.1.8
样例
SELECT ST_PointFromText('POINT(-71.064544 42.28787)'); SELECT ST_PointFromText('POINT(-71.064544 42.28787)', 4326);
相关参考
ST_GeomFromText, ST_MakePoint, ST_Point, ST_SRID
6.8.14. ST_PolygonFromText
ST_PolygonFromText— 根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知
用法
geometry ST_PolygonFromText(text WKT); geometry ST_PolygonFromText(text WKT, integer srid);
描述
根据WKT表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知.如果输入不是WKT表述的polygon对象,返回null值
OGC SPEC 3.2.6.2 - 参数SRID为了满足该规范,和该规范保持一致
注意
如果十分确定的几何类型列是polygon类型,不要使用这个函数,使用ST_GeomFromText性能更高,因为该函数添加了对输入类型的校验步骤
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 8.3.6
样例
SELECT ST_PolygonFromText('POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))') st_polygonfromtext ------------------ 010300000001000000050000006... SELECT ST_PolygonFromText('POINT(1 2)') IS NULL as point_is_notpoly; point_is_not_poly ---------- t
相关参考
ST_GeomFromText
6.8.15. ST_WKTToSQL
ST_WKTToSQL — 根据WKT描述的对象参数,返回一个geometry类型对象,这个函数是ST_GeomFromWKT的别名
用法
geometry ST_WKTToSQL(text WKT);
描述
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 5.1.34
相关参考
ST_GeomFromText
6.8.16. ST_GeogFromWKB
ST_GeogFromWKB —从一个WKB或EWKB规范描述的对象返回一个具体的geography对象。
语法
geography ST_GeogFromWKB(bytea geom);
描述
从一个WKB或EWKB规范描述的对象返回一个具体的geography对象.该函数在SQL中充当几何类型工厂的角色,如果SRID没有指定,函数会默认设置为4326(即WGS 84 long lat坐标系)
-
该方法支持CircularString和curve几何类型字段
样例
--虽然bytea描述包含单斜杠\,但当插入数据时候,这些符号需要使用逃逸字符E处理掉 SELECT ST_AsText( ST_GeogFromWKB(E'\\001\\002\\000\\000\\000\\002\\000\\000\\000\\037\\205\\353Q\\270~\\300\\323Mb\\020X\\231C@\\020X9\\264\\310~\\300)\\217\\302\\365\\230 C@') ); st_astext ------------------------------------------------------ LINESTRING(-113.98 39.198,-113.981 39.195) (1 row)
相关参考
ST_GeogFromText, ST_AsBinary
6.8.17. ST_GeomFromEWKB
ST_GeomFromEWKB —从一个EWKB描述的几何对象返回一个具体的ST_Geometry值。
语法
geometry ST_GeomFromEWKB(bytea EWKB);
描述
从一个OGC EWKB标准的描述的几何对象返回一个具体的KGIS ST_Geometry对象。
注意
EWKB 格式不是OGC标准,而是KGIS的具体的一种包含SRID的格式
-
这个函数支持3D对象,并且不会删除z坐标
-
该方法支持CircularString和curve几何类型字段
-
该函数支持Polyhedral Surface类型.
-
该函数支持 Triangles 和 Triangulated Irregular Network Surfaces (TIN)类型.
样例
line string binary rep 0f LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932) in NAD 83 long lat(4269).
注意
即便 byte类型数组是用\分隔的,也许还有单引号',如果standard_conforming_strings值为off,我们还是需要用反斜线\和双引号"来进行转义。 因此这个表示方式看起来与 ST_AsEWKB 函数输出的形式并不完全一致。
SELECT ST_GeomFromEWKB(E'\\001\\002\\000\\000\\\255\\020\\000\\000\\003\\000\\000\\000\\344 J=\\013B\\312Q\\300n\\303(\\010\\036!E@''\\277E''K\\312Q\\300\\366{b\\235*!E@\\225|\\354.P\\312Q\\300p\\231\\323e1!E@');
注意
在 KingbaseES standard_conforming_strings 默认值是on,可以根据需要对单个查询或者对全局的数据库修改该值。下面将告诉怎样在设置.standard_conforming_strings值为on的情况下,使用该函数。在这里,使用标准的ansi编码的单引号',对引号'进行转义,但是斜线并没有被转义。
set standard_conforming_strings = on; SELECT ST_GeomFromEWKB('\001\002\000\000\\255\020\000\000\003\000\000\000\344J=\012\013B\\312Q\300n\303(\010\036!E@''\277E''K\012\312Q\300\366{b\235*!E@\225|\354.P\312Q\012\300p\231\323e1');
相关参考
ST_AsBinary, ST_AsEWKB, ST_GeomFromWKB
6.8.18. ST_GeomFromWKB
ST_GeomFromWKB — 根据WKB表述创建一个geometry几何类型对象,SRID可选。
语法
geometry ST_GeomFromWKB(bytea geom); geometry ST_GeomFromWKB(bytea geom, integer srid);
描述
根据WKB表述创建一个geometry几何类型对象,SRID可选,这个函数在SQL中充当Geometry Factory 的角色,该函数 ST_WKBToSQL的候选别名
如果SRID没有指定,SRID将被设置为0,表示SRID未知
-
该方法实现了OpenGIS 关于SQL 1.1的简单特性实现规范OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.7.2 –可选参数SRID需要满足该规范
-
该方法实现了 SQL/MM 标准: SQL-MM 3: 5.1.41
-
该方法支持CircularString和curve几何类型字段
样例
--Although bytea rep contains single \\, these need to be escaped when inserting into a table -- unless standard_conforming_strings is set to on.SELECT ST_AsEWKT( ST_GeomFromWKB(E'\\001\\002\\000\\000\\000\\002\\000\\000\\000\\037\\205\\353Q\\270~\\\\\\300\\323Mb\\020X\\231C@\\020X9\\264\\310~\\\\\\300)\\\\\\217\\302\\365\\230 C@',4326) ); st_asewkt ------------------------------------------------------ SRID=4326;LINESTRING(-113.98 39.198,-113.981 39.195)(1 row) SELECT ST_AsText( ST_GeomFromWKB( ST_AsEWKB('POINT(2 5)'::geometry) ) ); st_astext ------------ POINT(2 5) (1 row)
相关参考
ST_WKBToSQL, ST_AsBinary, ST_GeomFromEWKB
6.8.19. ST_LineFromWKB
ST_LineFromWKB —根据WKB表述和给定的SRID创建一个LINESTRING几何类型对象
用法
geometry ST_LineFromWKB(bytea WKB); geometry ST_LineFromWKB(bytea WKB, integer srid);
描述
根据WKB表述和给定的SRID创建一个LINESTRING几何类型对象,该函数在SQL中充当Geometry Factory角色。
如果SRID没有给定默认设置为0,如果输入的的bytea类型参数不是LINESTRING几何类型对象,返回NULL值。
注意
OGC SPEC 3.2.6.2 –参数SRID为了满足该规范一致性要求.
注意
如果十分确定的几何类型列是LINESTRING,使用ST_GeomFromWKB性能更高.而ST_LineFromWKB函数只是调用ST_GeomFromWKB这个函数,同时添加了对LINESTRING类型的校验
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 7.2.9
样例
SELECT ST_LineFromWKB(ST_AsBinary(ST_GeomFromText('LINESTRING(1 2, 3 4)'))) AS aline, ST_LineFromWKB(ST_AsBinary(ST_GeomFromText('POINT(1 2)'))) IS NULL AS null_return; Aline | null_return --------------------------------------------------+------------------ 010200000002000000000000000000F ... | t
参考
ST_GeomFromWKB, ST_LinestringFromWKB
6.8.20. ST_LinestringFromWKB
ST_LinestringFromWKB — 根据WKB表述和给定的SRID创建一个geometry几何类型对象。
用法
geometry ST_LinestringFromWKB(bytea WKB); geometry ST_LinestringFromWKB(bytea WKB, integer srid);
描述
根据WKB表述和给定的SRID创建一个geometry几何类型对象。该函数在SQL中充当Geometry Factory角色,如果SRID没有给定默认设置为0,如果输入的的bytea类型参数不是LINESTRING 几何类型对象,返回NULL值,该函数是ST_LineFromWKB的别名,两者等价。
注意
OGC SPEC 3.2.6.2 - 参数SRID为了满足该规范,和该规范保持一致.
注意
如果十分确定的几何类型列是LINESTRING,使用ST_GeomFromWKB性能更高. 而ST_LineFromWKB函数只是调用ST_GeomFromWKB这个函数,同时添加了对LINESTRING类型的校验
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 7.2.9
样例
SELECT ST_LineStringFromWKB( ST_AsBinary(ST_GeomFromText('LINESTRING(1 2, 3 4)')) ) AS aline, ST_LinestringFromWKB( ST_AsBinary(ST_GeomFromText('POINT(1 2)')) ) IS NULL AS null_return; aline | null_return --------------------------------------+----------------- 010200000002000000000000000000F . .. | t
参考
ST_GeomFromWKB, ST_LineFromWKB
6.8.21. ST_PointFromWKB
ST_PointFromWKB — 根据WKB表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知
用法
geometry ST_GeomFromWKB(bytea geom); geometry ST_GeomFromWKB(bytea geom, integer srid);
描述
根据WKB表述和给定的SRID创建一个geometry几何类型对象,如果SRID没有给定默认设置为0,即未知,该函数在SQL中充当Geometry Factory角色,如果SRID没有给定默认设置为0,如果输入的的bytea类型参数不是POINT几何类型对象,返回NULL 值
-
该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1. s3.2.7.2
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 6.1.9
-
这个函数支持3D对象,并且不会删除z坐标。
-
该函数支持CircularString和Curve几何类型对象
样例
SELECT ST_AsText( ST_PointFromWKB( ST_AsEWKB('POINT(2 5)'::geometry) ) ); st_astext ------------ POINT(2 5) (1 row) SELECT ST_AsText( ST_PointFromWKB( ST_AsEWKB('LINESTRING(2 5, 2 6)'::geometry) ) ); st_astext ----------- (1 row)
参考
ST_GeomFromWKB, ST_LineFromWKB
6.8.22. ST_WKBToSQL
ST_WKBToSQL — 根据WKB描述的对象参数,返回一个geometry类型对象,这个函数是ST_GeomFromWKB的别名,但ST_WKBToSQL这个函数没有SRID参数
用法
geometry ST_WKBToSQL(bytea WKB);
描述
-
该方法实现了规范 SQL/MM specification. SQL-MM 3: 5.1.36
参考
ST_GeomFromWKB
6.8.23. ST_Box2dFromGeoHash
ST_Box2dFromGeoHash — 从一个GeoHash字符串返回一个BOX2D对象
语法
box2d ST_Box2dFromGeoHash(text geohash, integer precision=full_precision_of_geohash);
描述
从一个GeoHash字符串返回一个BOX2D对象.
如果precision参数没有给出,ST_Box2dFromGeoHash函数根据输入的GeoHash字符串的全精度返回一个BOX2D对象。如果指定了precision参数,ST_Box2dFromGeoHash函数会从GeoHash字符串中使用很多字符来创建一个BOX2D对象。更低的精度值会产生更大的BOX2D对象,而更大的精度值会提高精度。
样例
SELECT ST_Box2dFromGeoHash('9qqj7nmxncgyy4d0dbxqz0'); st_geomfromgeohash -------------------------------------------------- BOX(-115.172816 36.114646,-115.172816 36.114646) SELECT ST_Box2dFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 0); st_box2dfromgeohash ---------------------- BOX(-180 -90,180 90) SELECT ST_Box2dFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 10); st_box2dfromgeohash --------------------------------------------------------------------------- BOX(-115.17282128334 36.1146408319473,-115.172810554504 36.1146461963654)
相关参考
ST_GeoHash, ST_GeomFromGeoHash, ST_PointFromGeoHash
6.8.24. ST_GeomFromGeoHash
ST_GeomFromGeoHash —从一个GeoHash型字符串返回一个geometry对象类型.
语法
geometry ST_GeomFromGeoHash(text geohash, integer precision=full_precision_of_geohash);
描述
从一个GeoHash字符串返回一个geometry类型对象,该geometry对象会是一个polygon对象,表示GeoHash的边界如果precision参数没有给出,ST_GeomFromGeoHash函数根据输入的GeoHash字符串的全精度返回一个polygon对象。如果指定了precision参数,ST_GeomFromGeoHash函数会从GeoHash字符串中使用很多字符来创建一个polygon对象。
样例
SELECT ST_AsText(ST_GeomFromGeoHash('9qqj7nmxncgyy4d0dbxqz0')); st_astext -------------------------------------------------------------------------------------------------------------------------- POLYGON((-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646)) SELECT ST_AsText(ST_GeomFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 4)); st_astext ----------------------------------------------------------------------------------------------------- POLYGON((-115.3125 36.03515625,-115.3125 36.2109375,-114.9609375 36.2109375,-114.9609375 36.03515625,-115.3125 36.03515625)) SELECT ST_AsText(ST_GeomFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 10)); st_astext ----------------------------------------------------------------------------------------------------- POLYGON((-115.17282128334 36.1146408319473,-115.17282128334 36.1146461963654,-115.172810554504 36.1146461963654,-115.172810554504 36.1146408319473,-115.17282128334 36.1146408319473))
相关参考
ST_GeoHash,ST_Box2dFromGeoHash, ST_PointFromGeoHash
6.8.25. ST_GeomFromGML
ST_GeomFromGML —根据一个geometry对象的GML描述,返回一个KGIS的geometry类型对象
语法
geometry ST_GeomFromGML(text geomgml); geometry ST_GeomFromGML(text geomgml, integer srid);
描述
根据一个geometry对象的OGC GML描述,返回一个KGIS的geometry类型对象.
ST_GeomFromGML 只对GML描述的Geometry fragment元素标记类型输入有效,如果试着在整个GML文档上执行该函数,将会抛出异常。
OGC GML 支持下面的版本:
-
GML 3.2.1 Namespace
-
GML 3.1.1 Simple Features profile SF-2 (GML 3.1.0 and 3.0.0 后向兼容)
-
GML 2.1.2OGC GML 规范, 参考: Geography Markup Language | OGC:
-
这个函数支持3D对象,并且不会删除z坐标
-
该函数支持Polyhedral Surface类型.
-
该函数支持 Triangles 和 Triangulated Irregular Network Surfaces (TIN)类型.
GML 允许混合维度(例如在一个MultiGeometry类型中同时包含2D和3D对象).而KGIS不允许这样,所以函数ST_GeomFromGML一旦发现一个Z维度值缺失,就会把整个geometry对象转换为2D对象。
GML支持在同一个MultiGeometry类型中支持混合SRS对象,而KGIS几何对象不允许这样,ST_GeomFromGML,在这种情下会将整个子几何类型投影到SRS根节点类型。如果GML根节点没有可用的srsName值,这个函数会抛出一个异常。
注意
ST_GeomFromGML 函数不支持 SQL/MM curve几何类型对象.
样例 - 一个带有 srsName属性值的几何对象
SELECT ST_GeomFromGML(' <gml:LineString 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> <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 | 0,0 | 0)), ((0 | 0,1 | 0,1 | 1,0 | 1,0 | 0)), ((1 | 0,1 | 1,1 | 1,1 | 0,1 | 0)), ((0 | 0,0 | 1,1 | 1,1 | 0,0 | 0)), ((0 | 1,1 | 1,1 | 1,0 | 1,0 | 1)),
相关参考
ST_AsGML, ST_GMLToSQL
6.8.26. ST_GeomFromGeoJSON
ST_GeomFromGeoJSON — 该函数根据一个geojson描述的几何对象,生成一个KGIS的geometry对象
语法
geometry ST_GeomFromGeoJSON(text geomjson); geometry ST_GeomFromGeoJSON(json geomjson); geometry ST_GeomFromGeoJSON(jsonb geomjson);
描述
该函数根据一个geojson描述的几何对象,生成一个KGIS的geometry对象ST_GeomFromGeoJSON 只能在Json的Geometry的元素标记起作用,如果把整个JSON文档当做该函数的输入,将会抛出异常
注意
如果没有添加JSON-C支持,也许会得到一个错误提示,而不是一个正常的输出。要想添加JSON-C支持,需要运行:run configure --with-jsondir=/path/to/json-c.
这个函数支持3D对象,并且不会删除z坐标。
样例
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt; wkt ------ POINT(-48.23456 20.12345) -- a 3D linestring SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"LineString","coordinates ":[[1,2,3],[4,5,6],[7,8,9]]}')) As wkt; wkt ------------------- LINESTRING(1 2,4 5,7 8)
相关参考
ST_AsText, ST_AsGeoJSON,
6.8.27. ST_GeomFromKML
ST_GeomFromKML —该函数根据一个KML描述的几何对象,生成一个KGIS的geometry对象
语法
geometry ST_GeomFromKML(text geomkml);
描述
该函数根据一个OGC KML描述的几何对象,生成一个KGIS的geometry对象ST_GeomFromKML只能在KML的Geometry的元素标记起作用,如果把整个KML文档当做该函数的输入,将会抛出异常OGC KML
如下版本支持:
-
KML 2.2.0 Namespace OGC KML 规范, 参考: KML | OGC 。
-
这个函数支持3D对象,并且不会删除z坐标。
注意
ST_GeomFromKML 函数不支持SQL/MM curve几何类型.
样例
SELECT ST_GeomFromKML(' <LineString> <coordinates>-71.1663,42.2614 -71.1667,42.2616</coordinates> </LineString>');
相关参考
ST_AsKML
6.8.28. ST_GeomFromTWKB
ST_GeomFromTWKB — 该函数接受一个 TWKB ("Tiny Well-Known Binary") 形式的几何对象,生成一个相应的几何对象实例。
语法
geometry ST_GeomFromTWKB(bytea twkb);
描述
该函数接受一个 TWKB ("Tiny Well-Known Binary") 形式的几何对象,生成一个相应的几何对象实例。
样例
SELECT ST_AsText(ST_GeomFromTWKB(ST_AsTWKB('LINESTRING(126 34, 127 35)'::geometry))); st_astext ----------------------------- LINESTRING(126 34, 127 35) (1 row) SELECT ST_AsEWKT( ST_GeomFromTWKB(E'\\x620002f7f40dbce4040105') ); st_asewkt ------------------------------------------------------ LINESTRING(-113.98 39.198,-113.981 39.195) (1 row)
相关参考
ST_AsTWKB
6.8.29. ST_GMLToSQL
ST_GMLToSQL — 根据GML表述的对象返回一个ST_Geometry值,这个函数是ST_GeomFromGML的别名
语法
geometry ST_GMLToSQL(text geomgml); geometry ST_GMLToSQL(text geomgml, integer srid);
描述
-
该方法实现了 SQL/MM specification. SQL-MM 3: 5.1.50规范 (但不包括对curve类型的支持).
相关参考
ST_GeomFromGML, ST_AsGML
6.8.30. ST_LineFromEncodedPolyline
ST_LineFromEncodedPolyline — 从一个已编码的 Polyline 线形对象中创建一个 LineString 类型对象
用法
geometry ST_LineFromEncodedPolyline(text polyline, integer precision=5);
描述
从一个已编码的 Polyline 线形对象中创建一个 LineString 类型对象。
可选的 precision 参数指定了在已编码的 Polyline 线形对象中保留多少位十进制有效数字。编、解码的时候该设置必须是相同的,否则坐标值会发生错误。
样例
-- Create a line string from a polyline SELECT ST_AsEWKT(ST_LineFromEncodedPolyline('_p~iF~ps|U_ulLnnqC_mqNvxq`@')); -- result -- SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252) -- Select different precision that was used for polyline encoding SELECT ST_AsEWKT(ST_LineFromEncodedPolyline('_p~iF~ps|U_ulLnnqC_mqNvxq`@',6)); -- result -- SRID=4326;LINESTRING(-12.02 3.85,-12.095 4.07,-12.6453 4.3252)
参考
ST_AsEncodedPolyline
6.8.31. ST_PointFromGeoHash
ST_PointFromGeoHash — 根据GeoHash字符串返回一个point几何类型对象
用法
point ST_PointFromGeoHash(text geohash, integer precision=full_precision_of_geohash);
描述
根据GeoHash字符串返回一个point几何类型对象. 返回的point是GeoHash的中心点
如果precision参数没有给出,ST_PointFromGeoHash函数根据输入的GeoHash字符串的全精度返回一个point对象。如果指定了precision参数,ST_PointFromGeoHash函数会从GeoHash字符串中使用很多字符来创建一个point对象。
样例
SELECT ST_AsText(ST_PointFromGeoHash('9qqj7nmxncgyy4d0dbxqz0')); st_astext ------------------------------ POINT(-115.172816 36.114646) SELECT ST_AsText(ST_PointFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 4)); st_astext ----------------------------------- POINT(-115.13671875 36.123046875) SELECT ST_AsText(ST_PointFromGeoHash('9qqj7nmxncgyy4d0dbxqz0', 10)); st_astext ------------------------------------------- POINT(-115.172815918922 36.1146435141563)
参考
ST_GeoHash, ST_Box2dFromGeoHash, ST_GeomFromGeoHash