函数索引
函数 | 摘要 |
---|---|
ST_Area |
计算几何图形的面积。 |
ST_Area_Spheroid |
返回几何图形的面积(以米为单位),使用地球的椭球模型 |
ST_AsGeoJSON |
将几何图形返回为GeoJSON片段 |
ST_AsHEXWKB |
将几何图形返回为HEXWKB字符串 |
ST_AsSVG |
将几何图形转换为SVG片段或路径 |
ST_AsText |
将几何图形作为WKT字符串返回 |
ST_AsWKB |
将几何图形作为WKB二进制大对象返回 |
ST_Boundary |
返回几何图形的“边界” |
ST_Buffer |
返回输入几何体在目标距离处的缓冲区 |
ST_Centroid |
计算几何图形的质心 |
ST_Collect |
将几何图形列表收集到一个集合几何图形中。 |
ST_CollectionExtract |
从GeometryCollection中提取几何体到一个类型化的多几何体中。 |
ST_Contains |
如果geom1包含geom2,则返回true。 |
ST_ContainsProperly |
如果 geom1 "完全包含" geom2,则返回 true |
ST_ConvexHull |
返回包围几何体的凸包 |
ST_CoveredBy |
如果geom1被geom2“覆盖”,则返回true |
ST_Covers |
返回 geom1 是否“覆盖” geom2 |
ST_Crosses |
如果geom1“跨越”geom2,则返回true |
ST_DWithin |
返回两个几何体是否在彼此的目标距离内 |
ST_DWithin_Spheroid |
返回两个POINT_2D是否在地球表面的椭球模型下,以米为单位的距离内 |
ST_Difference |
返回两个几何图形之间的“差异” |
ST_Dimension |
返回几何体的维度。 |
ST_Disjoint |
返回两个几何体是否不相交 |
ST_Distance |
返回两个几何体之间的距离。 |
ST_Distance_Sphere |
返回两个几何体之间的半正矢距离。 |
ST_Distance_Spheroid |
返回两个几何体之间的距离(以米为单位),使用地球表面的椭球模型 |
ST_Dump |
将几何体转储为子几何体列表及其在原始几何体中的“路径”。 |
ST_EndPoint |
返回一条线的最后一个点。 |
ST_Envelope |
返回输入几何的最小边界框作为多边形几何。 |
ST_Equals |
比较两个几何图形是否相等 |
ST_Extent |
返回包含输入几何图形的最小边界框 |
ST_ExteriorRing |
返回多边形几何体的外环(外壳)。 |
ST_FlipCoordinates |
返回一个新的几何体,其输入几何体的坐标被“翻转”,使得x = y且y = x。 |
ST_Force2D |
强制几何图形的顶点具有X和Y分量 |
ST_Force3DM |
强制几何体的顶点具有X、Y和M分量 |
ST_Force3DZ |
强制几何体的顶点具有X、Y和Z分量 |
ST_Force4D |
强制几何图形的顶点具有X、Y、Z和M分量 |
ST_GeomFromGeoJSON |
从GeoJSON片段反序列化一个几何体。 |
ST_GeomFromHEXEWKB |
从HEXEWKB编码的字符串反序列化一个几何对象 |
ST_GeomFromHEXWKB |
从HEXWKB字符串创建GEOMETRY |
ST_GeomFromText |
从WKT字符串反序列化一个GEOMETRY,可选择忽略无效的几何体 |
ST_GeomFromWKB |
从WKB编码的二进制大对象中反序列化一个几何图形 |
ST_GeometryType |
返回一个 'GEOMETRY_TYPE' 枚举,用于标识输入几何类型。 |
ST_HasM |
检查输入几何体是否具有M值。 |
ST_HasZ |
检查输入几何体是否具有Z值。 |
ST_Hilbert |
将X和Y值编码为覆盖给定边界框的希尔伯特曲线索引。 |
ST_Intersection |
返回 geom1 和 geom2 的“交集” |
ST_Intersects |
如果两个几何图形相交,则返回 true |
ST_Intersects_Extent |
如果两个几何图形的范围相交,则返回true |
ST_IsClosed |
如果几何体是“闭合的”,则返回true |
ST_IsEmpty |
如果几何体是“空的”,则返回true |
ST_IsRing |
如果输入的线几何是一个环(既是ST_IsClosed又是ST_IsSimple),则返回true。 |
ST_IsSimple |
如果输入几何是“简单”的,则返回 true |
ST_IsValid |
如果几何在拓扑上是“有效的”,则返回true |
ST_Length |
返回输入线几何的长度 |
ST_Length_Spheroid |
返回输入几何的长度(以米为单位),使用地球的椭球模型 |
ST_LineMerge |
“合并”输入的线几何,可选择考虑方向。 |
ST_M |
返回点几何的M值,如果不是点或为空则返回NULL |
ST_MMax |
返回几何体的最大M值 |
ST_MMin |
返回几何体的最小M值 |
ST_MakeEnvelope |
返回一个包含输入几何体的最小边界框多边形 |
ST_MakeLine |
从一对或一组输入点创建一个LINESTRING几何体 |
ST_MakePolygon |
从外壳几何体和一组可选的孔创建多边形 |
ST_MakeValid |
尝试使无效的几何体有效,而不移除任何顶点 |
ST_Multi |
将单个几何体转换为多几何体。 |
ST_NGeometries |
返回集合几何中的组件几何数量。 |
ST_NInteriorRings |
返回多边形的内部环的数量 |
ST_NPoints |
返回几何图形中的顶点数量 |
ST_Normalize |
返回输入几何的“标准化”版本。 |
ST_NumGeometries |
返回集合几何中的组件几何数量。 |
ST_NumInteriorRings |
返回多边形的内部环的数量 |
ST_NumPoints |
返回几何图形中的顶点数量 |
ST_Overlaps |
如果geom1“重叠”geom2,则返回true |
ST_Perimeter |
返回几何图形的周长长度 |
ST_Perimeter_Spheroid |
返回使用地球表面椭球模型计算的周长长度(以米为单位) |
ST_Point |
创建一个几何点 |
ST_Point2D |
创建一个POINT_2D |
ST_Point3D |
创建一个POINT_3D |
ST_Point4D |
创建一个POINT_4D |
ST_PointN |
返回输入几何体的第n个顶点作为点几何体 |
ST_PointOnSurface |
返回一个保证在输入几何体表面上的点。有时是ST_Centroid的有用替代方案。 |
ST_Points |
将几何体中的所有顶点收集到一个多点中 |
ST_QuadKey |
计算给定经纬度点在给定级别下的quadkey。 |
ST_ReducePrecision |
返回所有顶点减少到目标精度的几何图形 |
ST_RemoveRepeatedPoints |
返回一个新的几何体,其中重复的点已被移除,可选择在彼此的目标距离内。 |
ST_Reverse |
返回输入几何体的新版本,其顶点的顺序被反转 |
ST_ShortestLine |
返回geom1和geom2之间最近的两个点之间的线 |
ST_Simplify |
通过折叠小于'distance'的边来简化输入几何 |
ST_SimplifyPreserveTopology |
返回一个简化的几何图形,但避免创建无效的拓扑结构 |
ST_StartPoint |
返回线几何的第一个点 |
ST_Touches |
如果 geom1 "接触" geom2,则返回 true |
ST_Transform |
在两个坐标系之间转换几何图形 |
ST_Union |
返回两个几何图形的并集。 |
ST_Within |
如果geom1在geom2内部,则返回true |
ST_X |
返回点几何的X值,如果不是点或为空则返回NULL |
ST_XMax |
返回几何图形的最大X值 |
ST_XMin |
返回几何图形的最小X值 |
ST_Y |
返回点几何的Y值,如果不是点或为空则返回NULL |
ST_YMax |
返回几何图形的最大Y值 |
ST_YMin |
返回几何图形的最小Y值 |
ST_Z |
返回点几何的Z值,如果不是点或为空则返回NULL |
ST_ZMFlag |
返回一个标志,指示输入几何体中是否存在Z和M值。 |
ST_ZMax |
返回几何体的最大Z值 |
ST_ZMin |
返回几何体的最小Z值 |
Function | Summary |
---|---|
ST_Envelope_Agg |
ST_Extent_Agg 的别名。 |
ST_Extent_Agg |
计算包含输入几何集合的最小边界框多边形 |
ST_Intersection_Agg |
计算一组几何图形的交集 |
ST_Union_Agg |
计算一组输入几何图形的并集 |
Function | Summary |
---|---|
ST_Drivers |
返回支持的GDAL驱动程序和文件格式列表 |
ST_Read |
使用GDAL库读取并导入多种地理空间文件格式。 |
ST_ReadOSM |
ST_ReadOsm() 表函数可以直接从 .osm.pbf 文件 中读取压缩的 OpenStreetMap 数据。 |
ST_Read_Meta |
使用GDAL库从各种地理空间文件格式中读取元数据。 |
标量函数
ST_Area
签名
DOUBLE ST_Area (col0 POINT_2D)
DOUBLE ST_Area (col0 LINESTRING_2D)
DOUBLE ST_Area (col0 POLYGON_2D)
DOUBLE ST_Area (col0 GEOMETRY)
DOUBLE ST_Area (col0 BOX_2D)
描述
计算几何图形的面积。
对于任何不是POLYGON
、MULTIPOLYGON
或包含多边形几何的GEOMETRYCOLLECTION
的几何体,返回0.0
。
面积与几何体的空间参考系统的单位相同。
此函数的 POINT_2D
和 LINESTRING_2D
重载总是返回 0.0
,但为了完整性而包含在内。
Example
SELECT ST_Area('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY);
-- 1.0
ST_Area_Spheroid
签名
DOUBLE ST_Area_Spheroid (col0 POLYGON_2D)
DOUBLE ST_Area_Spheroid (col0 GEOMETRY)
描述
返回几何体在地球椭球模型下的面积,单位为米
输入的几何形状假定为在EPSG:4326坐标系(WGS84)中,具有[纬度, 经度]轴顺序,并且面积以平方米返回。此函数使用GeographicLib库,使用地球的椭球模型计算面积。这是一种高度准确的方法,用于计算考虑地球曲率的多边形面积,但也是最慢的。
对于任何不是POLYGON
、MULTIPOLYGON
或包含多边形几何的GEOMETRYCOLLECTION
的几何体,返回0.0
。
ST_AsGeoJSON
签名
JSON ST_AsGeoJSON (col0 GEOMETRY)
Description
将几何体作为GeoJSON片段返回
这不返回完整的GeoJSON文档,仅返回几何片段。要构建完整的GeoJSON文档或特征,请考虑将此函数与DuckDB JSON扩展结合使用。 此函数支持具有Z值的几何体,但不支持M值。
Example
SELECT ST_AsGeoJSON('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY);
----
{"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,1.0],[1.0,1.0],[1.0,0.0],[0.0,0.0]]]}
-- Convert a geometry into a full GeoJSON feature (requires the JSON extension to be loaded)
SELECT CAST({
type: 'Feature',
geometry: ST_AsGeoJSON(ST_Point(1,2)),
properties: {
name: 'my_point'
}
} AS JSON);
----
{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0,2.0]},"properties":{"name":"my_point"}}
ST_AsHEXWKB
Signature
VARCHAR ST_AsHEXWKB (col0 GEOMETRY)
Description
将几何体返回为HEXWKB字符串
Example
SELECT ST_AsHexWKB('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY);
----
01030000000100000005000000000000000000000000000...
ST_AsSVG
Signature
VARCHAR ST_AsSVG (col0 GEOMETRY, col1 BOOLEAN, col2 INTEGER)
Description
将几何图形转换为SVG片段或路径
SVG片段以字符串形式返回。该片段是一个可以在SVG文档中使用的路径元素。 第二个布尔参数指定路径应该是相对还是绝对的。 第三个参数指定用于坐标的最大位数。
点使用绝对坐标格式化为cx/cy,或使用相对坐标格式化为x/y。
Example
SELECT ST_AsSVG('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY, false, 15);
----
M 0 0 L 0 -1 1 -1 1 0 Z
ST_AsText
Signatures
VARCHAR ST_AsText (col0 POINT_2D)
VARCHAR ST_AsText (col0 LINESTRING_2D)
VARCHAR ST_AsText (col0 POLYGON_2D)
VARCHAR ST_AsText (col0 BOX_2D)
VARCHAR ST_AsText (col0 GEOMETRY)
Description
将几何体作为WKT字符串返回
Example
SELECT ST_AsText(ST_MakeEnvelope(0,0,1,1));
----
POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))
ST_AsWKB
Signature
WKB_BLOB ST_AsWKB (col0 GEOMETRY)
Description
将几何图形作为WKB blob返回
Example
SELECT ST_AsWKB('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY)::BLOB;
----
\x01\x03\x00\x00\x00\x01\x00\x00\x00\x05...
ST_Boundary
Signature
GEOMETRY ST_Boundary (col0 GEOMETRY)
Description
返回几何图形的“边界”
ST_Buffer
Signatures
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE)
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE, num_triangles INTEGER)
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE, num_triangles INTEGER, join_style VARCHAR, cap_style VARCHAR, mitre_limit DOUBLE)
Description
返回输入几何体在目标距离周围的缓冲区
geom
是输入的几何体。
distance
是缓冲的目标距离,使用与输入几何相同的单位。
num_triangles
表示将生成多少个三角形来近似一个四分之一圆。数字越大,生成的几何形状越平滑。默认值为8。
join_style
必须是 "JOIN_ROUND"、"JOIN_MITRE"、"JOIN_BEVEL" 中的一个。此参数不区分大小写。
cap_style
必须是 "CAP_ROUND"、"CAP_FLAT"、"CAP_SQUARE" 中的一个。此参数不区分大小写。
mitre_limit
仅在 join_style
为 "JOIN_MITRE" 时适用。它是从角到斜接点的距离与角半径的比率。默认值为 1.0。
这是一个平面操作,不会考虑地球的曲率。
ST_Centroid
Signatures
POINT_2D ST_Centroid (col0 POINT_2D)
POINT_2D ST_Centroid (col0 LINESTRING_2D)
POINT_2D ST_Centroid (col0 POLYGON_2D)
POINT_2D ST_Centroid (col0 BOX_2D)
POINT_2D ST_Centroid (col0 BOX_2DF)
GEOMETRY ST_Centroid (col0 GEOMETRY)
Description
计算几何图形的质心
Example
SELECT st_centroid('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY);
----
POINT(0.5 0.5)
ST_Collect
Signature
GEOMETRY ST_Collect (col0 GEOMETRY[])
Description
将几何体列表收集到一个集合几何体中。
- 如果所有几何都是
POINT
,则返回一个MULTIPOINT
。 - 如果所有几何都是
LINESTRING
,则返回MULTILINESTRING
。 - 如果所有几何都是
POLYGON
,则返回MULTIPOLYGON
。 - 否则,如果输入集合包含混合的几何类型,则返回一个
GEOMETRYCOLLECTION
。
空的几何体和NULL
几何体将被忽略。如果所有几何体都是空的或NULL
,则返回GEOMETRYCOLLECTION EMPTY
。
Example
-- With all POINT's, a MULTIPOINT is returned
SELECT ST_Collect([ST_Point(1, 2), ST_Point(3, 4)]);
----
MULTIPOINT (1 2, 3 4)
-- With mixed geometry types, a GEOMETRYCOLLECTION is returned
SELECT ST_Collect([ST_Point(1, 2), ST_GeomFromText('LINESTRING(3 4, 5 6)')]);
----
GEOMETRYCOLLECTION (POINT (1 2), LINESTRING (3 4, 5 6))
-- Note that the empty geometry is ignored, so the result is a MULTIPOINT
SELECT ST_Collect([ST_Point(1, 2), NULL, ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')]);
----
MULTIPOINT (1 2)
-- If all geometries are empty or NULL, a GEOMETRYCOLLECTION EMPTY is returned
SELECT ST_Collect([NULL, ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')]);
----
GEOMETRYCOLLECTION EMPTY
-- Tip: You can use the `ST_Collect` function together with the `list()` aggregate function to collect multiple rows of geometries into a single geometry collection:
CREATE TABLE points (geom GEOMETRY);
INSERT INTO points VALUES (ST_Point(1, 2)), (ST_Point(3, 4));
SELECT ST_Collect(list(geom)) FROM points;
----
MULTIPOINT (1 2, 3 4)
ST_CollectionExtract
Signatures
GEOMETRY ST_CollectionExtract (geom GEOMETRY)
GEOMETRY ST_CollectionExtract (geom GEOMETRY, type INTEGER)
Description
从GeometryCollection中提取几何体到一个类型化的多几何体中。
如果输入的几何体是一个GeometryCollection,函数将返回一个由type
参数决定的多几何体。
- 如果
type
= 1,返回一个包含集合中所有点的 MultiPoint - 如果
type
= 2,返回一个包含集合中所有 LineString 的 MultiLineString - 如果
type
= 3,返回一个包含集合中所有多边形的 MultiPolygon
如果没有提供type
参数,函数将返回一个与包含的几何图形的最高“表面维度”相匹配的多几何图形。例如,如果集合仅包含点,则将返回多点。但如果集合同时包含点和线串,则将返回多线串。同样,如果集合包含多边形,则将返回多多边形。较低表面维度的包含几何图形将被忽略。
如果输入的几何体包含嵌套的几何集合,它们的几何体将被递归提取并包含在最终的多几何体中。
如果输入的几何体不是GeometryCollection,函数将原样返回输入的几何体。
Example
SELECT st_collectionextract('MULTIPOINT(1 2,3 4)'::GEOMETRY, 1);
-- MULTIPOINT (1 2, 3 4)
ST_Contains
Signatures
BOOLEAN ST_Contains (col0 POLYGON_2D, col1 POINT_2D)
BOOLEAN ST_Contains (col0 GEOMETRY, col1 GEOMETRY)
Description
如果geom1包含geom2,则返回true。
Example
SELECT st_contains('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY, 'POINT(0.5 0.5)'::GEOMETRY);
----
true
ST_ContainsProperly
Signature
BOOLEAN ST_ContainsProperly (col0 GEOMETRY, col1 GEOMETRY)
Description
如果geom1“正确包含”geom2,则返回true
ST_ConvexHull
Signature
GEOMETRY ST_ConvexHull (col0 GEOMETRY)
Description
返回包含几何体的凸包
ST_CoveredBy
Signature
BOOLEAN ST_CoveredBy (col0 GEOMETRY, col1 GEOMETRY)
Description
如果 geom1 被 geom2 "覆盖",则返回 true
ST_Covers
Signature
BOOLEAN ST_Covers (col0 GEOMETRY, col1 GEOMETRY)
Description
返回 geom1 是否“覆盖” geom2
ST_Crosses
Signature
BOOLEAN ST_Crosses (col0 GEOMETRY, col1 GEOMETRY)
Description
如果geom1“跨越”geom2,则返回true
ST_DWithin
Signature
BOOLEAN ST_DWithin (col0 GEOMETRY, col1 GEOMETRY, col2 DOUBLE)
Description
返回两个几何体是否在彼此的目标距离内
ST_DWithin_Spheroid
Signature
DOUBLE ST_DWithin_Spheroid (col0 POINT_2D, col1 POINT_2D, col2 DOUBLE)
Description
返回两个POINT_2D是否在地球表面的椭球模型下的目标距离(以米为单位)内。
输入的几何体假定位于EPSG:4326坐标系(WGS84)中,具有[纬度,经度]轴顺序,并且距离以米为单位返回。此函数使用GeographicLib库来解决逆大地测量问题,使用地球的椭球模型计算两点之间的距离。这是一种高度准确的方法,用于计算考虑地球表面曲率的两个任意点之间的距离,但也是最慢的。
ST_Difference
Signature
GEOMETRY ST_Difference (col0 GEOMETRY, col1 GEOMETRY)
Description
返回两个几何图形之间的“差异”
ST_Dimension
Signature
INTEGER ST_Dimension (col0 GEOMETRY)
Description
返回几何的维度。
Example
SELECT st_dimension('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY);
----
2
ST_Disjoint
Signature
BOOLEAN ST_Disjoint (col0 GEOMETRY, col1 GEOMETRY)
Description
返回两个几何体是否不相交
ST_Distance
Signatures
DOUBLE ST_Distance (col0 POINT_2D, col1 POINT_2D)
DOUBLE ST_Distance (col0 POINT_2D, col1 LINESTRING_2D)
DOUBLE ST_Distance (col0 LINESTRING_2D, col1 POINT_2D)
DOUBLE ST_Distance (col0 GEOMETRY, col1 GEOMETRY)
Description
返回两个几何体之间的距离。
Example
SELECT st_distance('POINT(0 0)'::GEOMETRY, 'POINT(1 1)'::GEOMETRY);
----
1.4142135623731
ST_Distance_Sphere
Signatures
DOUBLE ST_Distance_Sphere (col0 POINT_2D, col1 POINT_2D)
DOUBLE ST_Distance_Sphere (col0 GEOMETRY, col1 GEOMETRY)
Description
返回两个几何体之间的半正矢距离。
- 仅支持POINT几何类型。
- 返回以米为单位的距离。
- 输入应为WGS84 (EPSG:4326)坐标,使用[纬度, 经度]轴顺序。
ST_Distance_Spheroid
Signature
DOUBLE ST_Distance_Spheroid (col0 POINT_2D, col1 POINT_2D)
Description
返回使用地球表面椭球模型计算的两个几何体之间的距离(以米为单位)
输入的几何体假定为EPSG:4326坐标系(WGS84),轴顺序为[纬度, 经度],距离限制预期以米为单位。此函数使用GeographicLib库来解决逆大地测量问题,使用地球的椭球模型计算两点之间的距离。这是一种高度精确的方法,用于计算考虑地球表面曲率的任意两点之间的距离,但也是最慢的。
Example
-- Note: the coordinates are in WGS84 and [latitude, longitude] axis order
-- Whats the distance between New York and Amsterdam (JFK and AMS airport)?
SELECT st_distance_spheroid(
st_point(40.6446, -73.7797),
st_point(52.3130, 4.7725)
);
----
5863418.7459356235
-- Roughly 5863km!
ST_Dump
Signature
STRUCT(geom GEOMETRY, path INTEGER[])[] ST_Dump (col0 GEOMETRY)
Description
将几何体转储为子几何体列表及其在原始几何体中的“路径”。
Example
SELECT st_dump('MULTIPOINT(1 2,3 4)'::GEOMETRY);
----
[{'geom': 'POINT(1 2)', 'path': [0]}, {'geom': 'POINT(3 4)', 'path': [1]}]
ST_EndPoint
Signatures
GEOMETRY ST_EndPoint (col0 GEOMETRY)
POINT_2D ST_EndPoint (col0 LINESTRING_2D)
Description
返回一条线的最后一个点。
Example
SELECT ST_EndPoint('LINESTRING(0 0, 1 1)'::GEOMETRY);
-- POINT(1 1)
ST_Envelope
Signature
GEOMETRY ST_Envelope (col0 GEOMETRY)
Description
返回输入几何体的最小边界框作为多边形几何体。
ST_Equals
Signature
BOOLEAN ST_Equals (col0 GEOMETRY, col1 GEOMETRY)
Description
比较两个几何体是否相等
ST_Extent
Signatures
BOX_2D ST_Extent (col0 GEOMETRY)
BOX_2D ST_Extent (col0 WKB_BLOB)
Description
返回包含输入几何体的最小边界框
ST_ExteriorRing
Signatures
LINESTRING_2D ST_ExteriorRing (col0 POLYGON_2D)
GEOMETRY ST_ExteriorRing (col0 GEOMETRY)
Description
返回多边形几何的外部环(外壳)。
ST_FlipCoordinates
Signatures
POINT_2D ST_FlipCoordinates (col0 POINT_2D)
LINESTRING_2D ST_FlipCoordinates (col0 LINESTRING_2D)
POLYGON_2D ST_FlipCoordinates (col0 POLYGON_2D)
BOX_2D ST_FlipCoordinates (col0 BOX_2D)
GEOMETRY ST_FlipCoordinates (col0 GEOMETRY)
Description
返回一个新的几何体,其输入几何体的坐标被“翻转”,使得x = y且y = x。
ST_Force2D
Signature
GEOMETRY ST_Force2D (col0 GEOMETRY)
Description
强制几何体的顶点具有X和Y分量
此函数将从输入几何体中删除任何Z和M值(如果存在)。如果输入几何体已经是2D的,它将按原样返回。
ST_Force3DM
Signature
GEOMETRY ST_Force3DM (col0 GEOMETRY, col1 DOUBLE)
Description
强制几何体的顶点具有X、Y和M分量
以下情况适用:
- 如果输入几何体具有Z分量但没有M分量,Z分量将被新的M值替换。
- 如果输入几何体具有M分量但没有Z分量,它将按原样返回。
- 如果输入几何体同时具有Z分量和M分量,Z分量将被移除。
- 否则,如果输入几何体既没有Z也没有M分量,新的M值将被添加到输入几何体的顶点中。
ST_Force3DZ
Signature
GEOMETRY ST_Force3DZ (col0 GEOMETRY, col1 DOUBLE)
Description
强制几何体的顶点具有X、Y和Z分量
以下情况适用:
- 如果输入几何具有M分量但没有Z分量,M分量将被新的Z值替换。
- 如果输入几何具有Z分量但没有M分量,它将按原样返回。
- 如果输入几何体同时具有Z分量和M分量,M分量将被移除。
- 否则,如果输入几何体既没有Z也没有M分量,新的Z值将被添加到输入几何体的顶点中。
ST_Force4D
Signature
GEOMETRY ST_Force4D (col0 GEOMETRY, col1 DOUBLE, col2 DOUBLE)
Description
强制几何体的顶点具有X、Y、Z和M分量
以下情况适用:
- 如果输入几何具有Z分量但没有M分量,新的M值将被添加到输入几何的顶点中。
- 如果输入几何具有M分量但没有Z分量,新的Z值将被添加到输入几何的顶点中。
- 如果输入几何体同时具有Z分量和M分量,则几何体将按原样返回。
- 否则,如果输入几何体既没有Z也没有M分量,新的Z和M值将被添加到输入几何体的顶点中。
ST_GeomFromGeoJSON
Signatures
GEOMETRY ST_GeomFromGeoJSON (col0 VARCHAR)
GEOMETRY ST_GeomFromGeoJSON (col0 JSON)
Description
从GeoJSON片段反序列化一个GEOMETRY。
Example
SELECT ST_GeomFromGeoJSON('{"type":"Point","coordinates":[1.0,2.0]}');
----
POINT (1 2)
ST_GeomFromHEXEWKB
Signature
GEOMETRY ST_GeomFromHEXEWKB (col0 VARCHAR)
Description
从HEXEWKB编码的字符串反序列化一个GEOMETRY
ST_GeomFromHEXWKB
Signature
GEOMETRY ST_GeomFromHEXWKB (col0 VARCHAR)
Description
从HEXWKB字符串创建GEOMETRY
ST_GeomFromText
Signatures
GEOMETRY ST_GeomFromText (col0 VARCHAR)
GEOMETRY ST_GeomFromText (col0 VARCHAR, col1 BOOLEAN)
Description
从WKT字符串反序列化一个GEOMETRY,可以选择忽略无效的几何体
ST_GeomFromWKB
Signatures
GEOMETRY ST_GeomFromWKB (col0 WKB_BLOB)
GEOMETRY ST_GeomFromWKB (col0 BLOB)
Description
从WKB编码的二进制大对象中反序列化一个GEOMETRY
ST_GeometryType
Signatures
ANY ST_GeometryType (col0 POINT_2D)
ANY ST_GeometryType (col0 LINESTRING_2D)
ANY ST_GeometryType (col0 POLYGON_2D)
ANY ST_GeometryType (col0 GEOMETRY)
ANY ST_GeometryType (col0 WKB_BLOB)
Description
返回一个'GEOMETRY_TYPE'枚举,用于识别输入几何类型。
ST_HasM
Signatures
BOOLEAN ST_HasM (col0 GEOMETRY)
BOOLEAN ST_HasM (col0 WKB_BLOB)
Description
检查输入几何体是否具有M值。
Example
-- HasM for a 2D geometry
SELECT ST_HasM(ST_GeomFromText('POINT(1 1)'));
----
false
-- HasM for a 3DZ geometry
SELECT ST_HasM(ST_GeomFromText('POINT Z(1 1 1)'));
----
false
-- HasM for a 3DM geometry
SELECT ST_HasM(ST_GeomFromText('POINT M(1 1 1)'));
----
true
-- HasM for a 4D geometry
SELECT ST_HasM(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
true
ST_HasZ
Signatures
BOOLEAN ST_HasZ (col0 GEOMETRY)
BOOLEAN ST_HasZ (col0 WKB_BLOB)
Description
检查输入几何体是否具有Z值。
Example
-- HasZ for a 2D geometry
SELECT ST_HasZ(ST_GeomFromText('POINT(1 1)'));
----
false
-- HasZ for a 3DZ geometry
SELECT ST_HasZ(ST_GeomFromText('POINT Z(1 1 1)'));
----
true
-- HasZ for a 3DM geometry
SELECT ST_HasZ(ST_GeomFromText('POINT M(1 1 1)'));
----
false
-- HasZ for a 4D geometry
SELECT ST_HasZ(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
true
ST_Hilbert
Signatures
UINTEGER ST_Hilbert (col0 DOUBLE, col1 DOUBLE, col2 BOX_2D)
UINTEGER ST_Hilbert (col0 GEOMETRY, col1 BOX_2D)
UINTEGER ST_Hilbert (col0 BOX_2D, col1 BOX_2D)
UINTEGER ST_Hilbert (col0 BOX_2DF, col1 BOX_2DF)
UINTEGER ST_Hilbert (col0 GEOMETRY)
Description
将X和Y值编码为覆盖给定边界框的希尔伯特曲线索引。 如果提供了几何体,则使用近似边界框的中心作为要编码的点。 如果未提供边界框,则希尔伯特曲线索引映射到单精度浮点数的整个范围。 对于BOX_2D和BOX_2DF变体,使用框的中心作为要编码的点。
ST_Intersection
Signature
GEOMETRY ST_Intersection (col0 GEOMETRY, col1 GEOMETRY)
Description
返回 geom1 和 geom2 的“交集”
ST_Intersects
Signatures
BOOLEAN ST_Intersects (col0 BOX_2D, col1 BOX_2D)
BOOLEAN ST_Intersects (col0 GEOMETRY, col1 GEOMETRY)
Description
如果两个几何图形相交,则返回true
ST_Intersects_Extent
Signature
BOOLEAN ST_Intersects_Extent (col0 GEOMETRY, col1 GEOMETRY)
Description
如果两个几何图形的范围相交,则返回 true
ST_IsClosed
Signature
BOOLEAN ST_IsClosed (col0 GEOMETRY)
Description
如果几何体是“闭合的”,则返回 true
ST_IsEmpty
Signatures
BOOLEAN ST_IsEmpty (col0 LINESTRING_2D)
BOOLEAN ST_IsEmpty (col0 POLYGON_2D)
BOOLEAN ST_IsEmpty (col0 GEOMETRY)
Description
如果几何体是“空的”,则返回 true
ST_IsRing
Signature
BOOLEAN ST_IsRing (col0 GEOMETRY)
Description
如果输入的线几何是一个环(同时满足ST_IsClosed和ST_IsSimple),则返回true。
ST_IsSimple
Signature
BOOLEAN ST_IsSimple (col0 GEOMETRY)
Description
如果输入几何是“简单”的,则返回 true
ST_IsValid
Signature
BOOLEAN ST_IsValid (col0 GEOMETRY)
Description
如果几何在拓扑上是“有效的”,则返回 true
ST_Length
Signatures
DOUBLE ST_Length (col0 LINESTRING_2D)
DOUBLE ST_Length (col0 GEOMETRY)
Description
返回输入线几何的长度
ST_Length_Spheroid
Signatures
DOUBLE ST_Length_Spheroid (col0 LINESTRING_2D)
DOUBLE ST_Length_Spheroid (col0 GEOMETRY)
Description
返回输入几何的长度(以米为单位),使用地球的椭球模型
输入的几何图形假定为EPSG:4326坐标系(WGS84),具有[纬度,经度]轴顺序,并且长度以平方米为单位返回。此函数使用GeographicLib库,使用地球的椭球模型计算长度。这是一种高度准确的方法,用于计算考虑地球曲率的线几何图形的长度,但也是最慢的。
对于任何不是LINESTRING
、MULTILINESTRING
或包含线几何的GEOMETRYCOLLECTION
的几何体,返回0.0
。
ST_LineMerge
Signatures
GEOMETRY ST_LineMerge (col0 GEOMETRY)
GEOMETRY ST_LineMerge (col0 GEOMETRY, col1 BOOLEAN)
Description
“合并”输入线的几何形状,可选择考虑方向。
ST_M
Signature
DOUBLE ST_M (col0 GEOMETRY)
Description
返回点几何的M值,如果不是点或为空则返回NULL
ST_MMax
Signature
DOUBLE ST_MMax (col0 GEOMETRY)
Description
返回几何体的最大M值
ST_MMin
Signature
DOUBLE ST_MMin (col0 GEOMETRY)
Description
返回几何体的最小M值
ST_MakeEnvelope
Signature
GEOMETRY ST_MakeEnvelope (col0 DOUBLE, col1 DOUBLE, col2 DOUBLE, col3 DOUBLE)
Description
返回一个包含输入几何体的最小边界框多边形
ST_MakeLine
Signatures
GEOMETRY ST_MakeLine (col0 GEOMETRY[])
GEOMETRY ST_MakeLine (col0 GEOMETRY, col1 GEOMETRY)
Description
从一对或一组输入点创建LINESTRING几何
ST_MakePolygon
Signatures
GEOMETRY ST_MakePolygon (col0 GEOMETRY, col1 GEOMETRY[])
GEOMETRY ST_MakePolygon (col0 GEOMETRY)
Description
从外壳几何体和一组可选的孔创建一个多边形
ST_MakeValid
Signature
GEOMETRY ST_MakeValid (col0 GEOMETRY)
Description
尝试使无效的几何体有效,而不删除任何顶点
ST_Multi
Signature
GEOMETRY ST_Multi (col0 GEOMETRY)
Description
将单个几何体转换为多几何体。
如果几何已经是多几何,则按原样返回。
Example
SELECT ST_Multi(ST_GeomFromText('POINT(1 2)'));
-- MULTIPOINT (1 2)
SELECT ST_Multi(ST_GeomFromText('LINESTRING(1 1, 2 2)'));
-- MULTILINESTRING ((1 1, 2 2))
SELECT ST_Multi(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
-- MULTIPOLYGON (((0 0, 0 1, 1 1, 1 0, 0 0)))
ST_NGeometries
Signature
INTEGER ST_NGeometries (col0 GEOMETRY)
Description
返回集合几何中的组件几何数量。 如果输入的几何不是集合,则根据几何是否为空,此函数返回0或1。
ST_NInteriorRings
Signatures
INTEGER ST_NInteriorRings (col0 POLYGON_2D)
INTEGER ST_NInteriorRings (col0 GEOMETRY)
Description
返回多边形的内环数量
ST_NPoints
Signatures
UBIGINT ST_NPoints (col0 POINT_2D)
UBIGINT ST_NPoints (col0 LINESTRING_2D)
UBIGINT ST_NPoints (col0 POLYGON_2D)
UBIGINT ST_NPoints (col0 BOX_2D)
UINTEGER ST_NPoints (col0 GEOMETRY)
Description
返回几何体内的顶点数量
ST_Normalize
Signature
GEOMETRY ST_Normalize (col0 GEOMETRY)
Description
返回输入几何体的“标准化”版本。
ST_NumGeometries
Signature
INTEGER ST_NumGeometries (col0 GEOMETRY)
Description
返回集合几何中的组件几何数量。 如果输入的几何不是集合,则根据几何是否为空,此函数返回0或1。
ST_NumInteriorRings
Signatures
INTEGER ST_NumInteriorRings (col0 POLYGON_2D)
INTEGER ST_NumInteriorRings (col0 GEOMETRY)
Description
返回多边形的内环数量
ST_NumPoints
Signatures
UBIGINT ST_NumPoints (col0 POINT_2D)
UBIGINT ST_NumPoints (col0 LINESTRING_2D)
UBIGINT ST_NumPoints (col0 POLYGON_2D)
UBIGINT ST_NumPoints (col0 BOX_2D)
UINTEGER ST_NumPoints (col0 GEOMETRY)
Description
返回几何体内的顶点数量
ST_Overlaps
Signature
BOOLEAN ST_Overlaps (col0 GEOMETRY, col1 GEOMETRY)
Description
如果geom1“重叠”geom2,则返回true
ST_Perimeter
Signatures
DOUBLE ST_Perimeter (col0 BOX_2D)
DOUBLE ST_Perimeter (col0 POLYGON_2D)
DOUBLE ST_Perimeter (col0 GEOMETRY)
Description
返回几何图形的周长长度
ST_Perimeter_Spheroid
Signatures
DOUBLE ST_Perimeter_Spheroid (col0 POLYGON_2D)
DOUBLE ST_Perimeter_Spheroid (col0 GEOMETRY)
Description
使用地球表面的椭球模型返回周长长度(以米为单位)
输入的几何体假定位于EPSG:4326坐标系(WGS84)中,具有[纬度, 经度]轴顺序,并且长度以米为单位返回。此函数使用GeographicLib库,通过地球的椭球模型计算周长。这是一种高度精确的方法,用于计算考虑地球曲率的多边形周长,但也是最慢的。
Returns 0.0
for any geometry that is not a POLYGON
, MULTIPOLYGON
or GEOMETRYCOLLECTION
containing polygon geometries.
ST_Point
Signature
GEOMETRY ST_Point (col0 DOUBLE, col1 DOUBLE)
Description
创建一个GEOMETRY点
ST_Point2D
Signature
POINT_2D ST_Point2D (col0 DOUBLE, col1 DOUBLE)
Description
创建一个POINT_2D
ST_Point3D
Signature
POINT_3D ST_Point3D (col0 DOUBLE, col1 DOUBLE, col2 DOUBLE)
Description
创建一个POINT_3D
ST_Point4D
Signature
POINT_4D ST_Point4D (col0 DOUBLE, col1 DOUBLE, col2 DOUBLE, col3 DOUBLE)
Description
创建一个POINT_4D
ST_PointN
Signatures
GEOMETRY ST_PointN (col0 GEOMETRY, col1 INTEGER)
POINT_2D ST_PointN (col0 LINESTRING_2D, col1 INTEGER)
Description
返回输入几何中的第n个顶点作为点几何
ST_PointOnSurface
Signature
GEOMETRY ST_PointOnSurface (col0 GEOMETRY)
Description
返回一个保证位于输入几何体表面上的点。有时是ST_Centroid的有用替代方案。
ST_Points
Signature
GEOMETRY ST_Points (col0 GEOMETRY)
Description
将几何中的所有顶点收集到一个多点中
Example
SELECT st_points('LINESTRING(1 1, 2 2)'::GEOMETRY);
----
MULTIPOINT (1 1, 2 2)
SELECT st_points('MULTIPOLYGON Z EMPTY'::GEOMETRY);
----
MULTIPOINT Z EMPTY
ST_QuadKey
Signatures
VARCHAR ST_QuadKey (col0 DOUBLE, col1 DOUBLE, col2 INTEGER)
VARCHAR ST_QuadKey (col0 GEOMETRY, col1 INTEGER)
Description
计算给定经纬度点在给定级别的quadkey。 请注意,参数顺序是经度,纬度。
level
必须在1到23之间,包括1和23。
输入的坐标将被限制在地球的经度/纬度范围内(经度在-180到180之间,纬度在-85.05112878到85.05112878之间)。
如果输入的几何图形不是POINT
,几何重载会抛出错误
Example
SELECT ST_QuadKey(st_point(11.08, 49.45), 10);
----
1333203202
ST_ReducePrecision
Signature
GEOMETRY ST_ReducePrecision (col0 GEOMETRY, col1 DOUBLE)
Description
返回所有顶点减少到目标精度的几何体
ST_RemoveRepeatedPoints
Signatures
LINESTRING_2D ST_RemoveRepeatedPoints (col0 LINESTRING_2D)
LINESTRING_2D ST_RemoveRepeatedPoints (col0 LINESTRING_2D, col1 DOUBLE)
GEOMETRY ST_RemoveRepeatedPoints (col0 GEOMETRY)
GEOMETRY ST_RemoveRepeatedPoints (col0 GEOMETRY, col1 DOUBLE)
Description
返回一个新的几何体,其中重复的点已被移除,可选择在彼此的目标距离内。
ST_Reverse
Signature
GEOMETRY ST_Reverse (col0 GEOMETRY)
Description
返回输入几何体的新版本,其顶点顺序被反转
ST_ShortestLine
Signature
GEOMETRY ST_ShortestLine (col0 GEOMETRY, col1 GEOMETRY)
Description
返回geom1和geom2之间最近两点之间的线
ST_Simplify
Signature
GEOMETRY ST_Simplify (col0 GEOMETRY, col1 DOUBLE)
Description
通过折叠小于'distance'的边来简化输入几何
ST_SimplifyPreserveTopology
Signature
GEOMETRY ST_SimplifyPreserveTopology (col0 GEOMETRY, col1 DOUBLE)
Description
返回一个简化的几何图形,但避免创建无效的拓扑结构
ST_StartPoint
Signatures
GEOMETRY ST_StartPoint (col0 GEOMETRY)
POINT_2D ST_StartPoint (col0 LINESTRING_2D)
Description
返回线几何的第一个点
Example
SELECT ST_StartPoint('LINESTRING(0 0, 1 1)'::GEOMETRY);
-- POINT(0 0)
ST_Touches
Signature
BOOLEAN ST_Touches (col0 GEOMETRY, col1 GEOMETRY)
Description
如果 geom1 "接触" geom2,则返回 true
ST_Transform
Signatures
BOX_2D ST_Transform (geom BOX_2D, source_crs VARCHAR, target_crs VARCHAR)
BOX_2D ST_Transform (geom BOX_2D, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
POINT_2D ST_Transform (geom POINT_2D, source_crs VARCHAR, target_crs VARCHAR)
POINT_2D ST_Transform (geom POINT_2D, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
GEOMETRY ST_Transform (geom GEOMETRY, source_crs VARCHAR, target_crs VARCHAR)
GEOMETRY ST_Transform (geom GEOMETRY, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
Description
在两个坐标系之间转换几何体
源坐标系和目标坐标系可以使用PROJ库支持的任何格式来指定。
第三个可选的always_xy
参数可用于强制将输入和输出几何体解释为具有[easting, northing]坐标轴顺序,而不管源和目标坐标系定义如何。这在转换到/从WGS84/EPSG:4326坐标系(大多数人听到“经度”/“纬度”或“GPS坐标”时想到的)时特别有用,该坐标系定义为具有[纬度, 经度]轴顺序,尽管在实践中通常使用[经度, 纬度](例如,在GeoJSON中)。更多详细信息可在PROJ文档中找到。
DuckDB 空间提供了其自己的静态副本的 PROJ 坐标系数据库,因此如果您的系统上安装了 PROJ,可用的坐标系可能与其他 GIS 软件中的可用坐标系不同。
Example
-- Transform a geometry from EPSG:4326 to EPSG:3857 (WGS84 to WebMercator)
-- Note that since WGS84 is defined as having a [latitude, longitude] axis order
-- we follow the standard and provide the input geometry using that axis order,
-- but the output will be [easting, northing] because that is what's defined by
-- WebMercator.
SELECT ST_AsText(
ST_Transform(
st_point(52.373123, 4.892360),
'EPSG:4326',
'EPSG:3857'
)
);
----
POINT (544615.0239773799 6867874.103539125)
-- Alternatively, let's say we got our input point from e.g., a GeoJSON file,
-- which uses WGS84 but with [longitude, latitude] axis order. We can use the
-- `always_xy` parameter to force the input geometry to be interpreted as having
-- a [northing, easting] axis order instead, even though the source coordinate
-- reference system definition (WGS84) says otherwise.
SELECT ST_AsText(
ST_Transform(
-- note the axis order is reversed here
st_point(4.892360, 52.373123),
'EPSG:4326',
'EPSG:3857',
always_xy := true
)
);
----
POINT (544615.0239773799 6867874.103539125)
ST_Union
Signature
GEOMETRY ST_Union (col0 GEOMETRY, col1 GEOMETRY)
Description
返回两个几何体的并集。
Example
SELECT ST_AsText(
ST_Union(
ST_GeomFromText('POINT(1 2)'),
ST_GeomFromText('POINT(3 4)')
)
);
----
MULTIPOINT (1 2, 3 4)
ST_Within
Signatures
BOOLEAN ST_Within (col0 POINT_2D, col1 POLYGON_2D)
BOOLEAN ST_Within (col0 GEOMETRY, col1 GEOMETRY)
Description
如果 geom1 在 geom2 内,则返回 true
ST_X
Signatures
DOUBLE ST_X (col0 POINT_2D)
DOUBLE ST_X (col0 GEOMETRY)
Description
返回点几何的X值,如果不是点或为空则返回NULL
ST_XMax
Signatures
DOUBLE ST_XMax (col0 BOX_2D)
FLOAT ST_XMax (col0 BOX_2DF)
DOUBLE ST_XMax (col0 POINT_2D)
DOUBLE ST_XMax (col0 LINESTRING_2D)
DOUBLE ST_XMax (col0 POLYGON_2D)
DOUBLE ST_XMax (col0 GEOMETRY)
Description
返回几何体的最大X值
ST_XMin
Signatures
DOUBLE ST_XMin (col0 BOX_2D)
FLOAT ST_XMin (col0 BOX_2DF)
DOUBLE ST_XMin (col0 POINT_2D)
DOUBLE ST_XMin (col0 LINESTRING_2D)
DOUBLE ST_XMin (col0 POLYGON_2D)
DOUBLE ST_XMin (col0 GEOMETRY)
Description
返回几何图形的最小X值
ST_Y
Signatures
DOUBLE ST_Y (col0 POINT_2D)
DOUBLE ST_Y (col0 GEOMETRY)
Description
返回点几何的Y值,如果不是点或为空则返回NULL
ST_YMax
Signatures
DOUBLE ST_YMax (col0 BOX_2D)
FLOAT ST_YMax (col0 BOX_2DF)
DOUBLE ST_YMax (col0 POINT_2D)
DOUBLE ST_YMax (col0 LINESTRING_2D)
DOUBLE ST_YMax (col0 POLYGON_2D)
DOUBLE ST_YMax (col0 GEOMETRY)
Description
返回几何图形的最大Y值
ST_YMin
Signatures
DOUBLE ST_YMin (col0 BOX_2D)
FLOAT ST_YMin (col0 BOX_2DF)
DOUBLE ST_YMin (col0 POINT_2D)
DOUBLE ST_YMin (col0 LINESTRING_2D)
DOUBLE ST_YMin (col0 POLYGON_2D)
DOUBLE ST_YMin (col0 GEOMETRY)
Description
返回几何图形的最小Y值
ST_Z
Signature
DOUBLE ST_Z (col0 GEOMETRY)
Description
返回点几何的Z值,如果不是点或为空则返回NULL
ST_ZMFlag
Signatures
UTINYINT ST_ZMFlag (col0 GEOMETRY)
UTINYINT ST_ZMFlag (col0 WKB_BLOB)
Description
返回一个标志,指示输入几何中是否存在Z和M值。 0 = 没有Z或M值 1 = 只有M值 2 = 只有Z值 3 = 有Z和M值
Example
-- ZMFlag for a 2D geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT(1 1)'));
----
0
-- ZMFlag for a 3DZ geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT Z(1 1 1)'));
----
2
-- ZMFlag for a 3DM geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT M(1 1 1)'));
----
1
-- ZMFlag for a 4D geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
3
ST_ZMax
Signature
DOUBLE ST_ZMax (col0 GEOMETRY)
Description
返回几何体的最大Z值
ST_ZMin
Signature
DOUBLE ST_ZMin (col0 GEOMETRY)
Description
返回几何体的最小Z值
聚合函数
ST_Envelope_Agg
Signature
GEOMETRY ST_Envelope_Agg (col0 GEOMETRY)
Description
ST_Extent_Agg 的别名。
计算包含输入几何集合的最小边界框多边形。
Example
SELECT ST_Extent_Agg(geom) FROM UNNEST([ST_Point(1,1), ST_Point(5,5)]) AS _(geom);
-- POLYGON ((1 1, 1 5, 5 5, 5 1, 1 1))
ST_Extent_Agg
Signature
GEOMETRY ST_Extent_Agg (col0 GEOMETRY)
Description
计算包含输入几何集合的最小边界框多边形
Example
SELECT ST_Extent_Agg(geom) FROM UNNEST([ST_Point(1,1), ST_Point(5,5)]) AS _(geom);
-- POLYGON ((1 1, 1 5, 5 5, 5 1, 1 1))
ST_Intersection_Agg
Signature
GEOMETRY ST_Intersection_Agg (col0 GEOMETRY)
Description
计算一组几何图形的交集
ST_Union_Agg
Signature
GEOMETRY ST_Union_Agg (col0 GEOMETRY)
Description
计算一组输入几何图形的并集
Table Functions
ST_Drivers
Signature
ST_Drivers ()
Description
返回支持的GDAL驱动程序和文件格式列表
请注意,并非所有这些驱动程序都经过了适当的测试,有些可能需要传递额外的选项才能按预期工作。如果您遇到任何问题,请首先查阅GDAL文档。
Example
SELECT * FROM ST_Drivers();
ST_Read
Signature
ST_Read (col0 VARCHAR, keep_wkb BOOLEAN, max_batch_size INTEGER, sequential_layer_scan BOOLEAN, layer VARCHAR, sibling_files VARCHAR[], spatial_filter WKB_BLOB, spatial_filter_box BOX_2D, allowed_drivers VARCHAR[], open_options VARCHAR[])
Description
使用GDAL库读取并导入各种地理空间文件格式。
ST_Read
表函数基于 GDAL 翻译库,能够从各种地理空间矢量文件格式中读取空间数据,就像它们是 DuckDB 表一样。
请参阅ST_Drivers以获取支持的文件格式和驱动程序的列表。
除了path
参数外,所有参数都是可选的。
参数 | 类型 | 描述 |
---|---|---|
path |
VARCHAR |
要读取的文件的路径。必填 |
sequential_layer_scan |
BOOLEAN |
如果设置为true,表函数将顺序扫描所有层,并返回与给定层名称匹配的第一个层。这对于某些驱动程序正常工作是必需的,例如OSM驱动程序。 |
spatial_filter |
WKB_BLOB |
如果设置为WKB blob,表函数将仅返回与给定WKB几何体相交的行。某些驱动程序可能原生支持高效的空间过滤,在这种情况下,过滤将被下推。否则,过滤将由GDAL完成,这可能会慢得多。 |
open_options |
VARCHAR[] |
传递给GDAL驱动程序的键值对列表,用于控制文件的打开。例如,GeoJSON驱动程序支持FLATTEN_NESTED_ATTRIBUTES=YES选项来展平嵌套属性。 |
layer |
VARCHAR |
要从文件中读取的图层的名称。如果为NULL,则返回第一个图层。也可以是图层索引(从0开始)。 |
allowed_drivers |
VARCHAR[] |
允许用于打开文件的GDAL驱动程序名称列表。如果为空,则允许所有驱动程序。 |
sibling_files |
VARCHAR[] |
打开文件所需的兄弟文件列表。例如,ESRI Shapefile 驱动程序需要存在 .shx 文件。尽管大多数情况下这些可以自动发现。 |
spatial_filter_box |
BOX_2D |
如果设置为BOX_2D,表函数将仅返回与给定边界框相交的行。类似于spatial_filter。 |
keep_wkb |
BOOLEAN |
如果设置,表函数将返回一个类型为WKB_BLOB(可以转换为BLOB)的wkb_geometry列中的几何体,而不是GEOMETRY类型。这在你想使用DuckDB与DuckDB空间尚不支持在GEOMETRY类型中表示的更奇特的几何子类型时非常有用。 |
请注意,GDAL是单线程的,因此此表函数将无法充分利用并行性。
通过使用ST_Read
,空间扩展还提供了常见地理空间文件格式的“替换扫描”,允许您像直接查询表一样查询这些格式的文件。
SELECT * FROM './path/to/some/shapefile/dataset.shp';
实际上,这只是调用ST_Read的语法糖,因此在性能上没有区别。如果你想传递额外的选项,你应该直接使用ST_Read表函数。
以下格式目前通过其文件扩展名被识别:
格式 | 扩展名 |
---|---|
ESRI ShapeFile | .shp |
GeoPackage | .gpkg |
FlatGeoBuf | .fgb |
Example
-- Read a Shapefile
SELECT * FROM ST_Read('some/file/path/filename.shp');
-- Read a GeoJSON file
CREATE TABLE my_geojson_table AS SELECT * FROM ST_Read('some/file/path/filename.json');
ST_ReadOSM
Signature
ST_ReadOSM (col0 VARCHAR)
Description
ST_ReadOsm()
表函数可以直接从 .osm.pbf 文件
中读取压缩的 OpenStreetMap 数据。
此函数使用多线程和零拷贝的protobuf解析,这使得它比使用ST_Read()
OSM驱动快得多,然而它只输出原始的OSM数据(节点、路径、关系),而不构建任何几何图形。对于简单的节点实体(如兴趣点),你可以轻松地构建点几何图形,但也可以通过手动在SQL中连接引用和节点来构建线串和多边形几何图形,尽管可用内存通常是一个限制因素。
ST_ReadOSM()
函数还提供了一个“替换扫描”功能,使得可以直接从文件中读取数据,就像它是一个表一样。这实际上只是调用ST_ReadOSM()
的语法糖。示例:
SELECT * FROM 'tmp/data/germany.osm.pbf' LIMIT 5;
Example
SELECT *
FROM ST_ReadOSM('tmp/data/germany.osm.pbf')
WHERE tags['highway'] != []
LIMIT 5;
----
┌──────────────────────┬────────┬──────────────────────┬─────────┬────────────────────┬────────────┬───────────┬────────────────────────┐
│ kind │ id │ tags │ refs │ lat │ lon │ ref_roles │ ref_types │
│ enum('node', 'way'… │ int64 │ map(varchar, varch… │ int64[] │ double │ double │ varchar[] │ enum('node', 'way', … │
├──────────────────────┼────────┼──────────────────────┼─────────┼────────────────────┼────────────┼───────────┼────────────────────────┤
│ node │ 122351 │ {bicycle=yes, butt… │ │ 53.5492951 │ 9.977553 │ │ │
│ node │ 122397 │ {crossing=no, high… │ │ 53.520990100000006 │ 10.0156924 │ │ │
│ node │ 122493 │ {TMC:cid_58:tabcd_… │ │ 53.129614600000004 │ 8.1970173 │ │ │
│ node │ 123566 │ {highway=traffic_s… │ │ 54.617268200000005 │ 8.9718171 │ │ │
│ node │ 125801 │ {TMC:cid_58:tabcd_… │ │ 53.070685000000005 │ 8.7819939 │ │ │
└──────────────────────┴────────┴──────────────────────┴─────────┴────────────────────┴────────────┴───────────┴────────────────────────┘
ST_Read_Meta
Signature
ST_Read_Meta (col0 VARCHAR)
ST_Read_Meta (col0 VARCHAR[])
Description
使用GDAL库从各种地理空间文件格式中读取元数据。
ST_Read_Meta
表函数与 ST_Read
表函数一起使用,但它不是读取文件的内容,而是扫描元数据。
由于底层 GDAL 库的数据模型非常灵活,大多数有趣的元数据都在返回的 layers
列中,这是一个稍微复杂的 DuckDB STRUCT
和 LIST
类型的嵌套结构。
Example
-- Find the coordinate reference system authority name and code for the first layers first geometry column in the file
SELECT
layers[1].geometry_fields[1].crs.auth_name as name,
layers[1].geometry_fields[1].crs.auth_code as code
FROM st_read_meta('../../tmp/data/amsterdam_roads.fgb');