• 金仓数据库 KingbaseGIS 使用手册(6.3. 几何对象创建函数)


    6.3. 几何对象创建函数

    6.3.1. ST_Collect

    ST_Collect — 收集几何对象到一个 Geometry Collection 集合中。

    语法

    geometry ST_Collect(geometry g1, geometry g2);
    geometry ST_Collect(geometry[] g1_array);
    geometry ST_Collect(geometry set g1field);
    

    描述

    收集几何对象到一个 Geometry Collection 集合中。 输出类型可以是 MULTI* 或 GEOMETRYCOLLECTION 类型,取决于输入的几何对象是同种类型还是类型各异(匀质的还是异质的)。 输入几何对象会被原封不动地放到集合中。

    • 变体1:接受两个输入几何对象

    • 变体2:接受一个几何对象数组

    • 变体3:接受几何对象记录集的聚合函数

    注意

    如果输入几何对象中有集合类型(Multi* 或者 GeometryCollection),ST_Collect 都将会返回一个 GeometryCollection(因为只有这种类型可以嵌套包含其他集合类型)。 要避免这一点,可在子查询中使用 ST_Dump 函数将集合中的每个元素展开成单个元素。

    注意

    ST_Collect 与 ST_Union 函数看起来相似,但操作方式很不相同。 ST_Collect 原封不动地聚合所有几何对象到一个集合中。 ST_Union 则会合并几何对象之间的公共部分,并且在 LineString 相交处进行切分。它可能会在拆解边界后返回一个单体几何对象。

    • 该函数支持3D对象,并且不会丢弃Z坐标。

    • 该函数支持 CircularString 和 Curve。

    样例:接受两个几何对象的变体

    收集2D点:

    SELECT ST_AsText( ST_Collect( ST_GeomFromText('POINT(1 2)'),
       ST_GeomFromText('POINT(-2 3)') ));
    
    st_astext
    ----------
    MULTIPOINT(1 2,-2 3)
    

    收集3D点:

    SELECT ST_AsEWKT( ST_Collect( ST_GeomFromEWKT('POINT(1 2 3)'),
          ST_GeomFromEWKT('POINT(1 2 4)') ) );
    
          st_asewkt
    -------------------------
    MULTIPOINT(1 2 3,1 2 4)
    

    收集Curve:

    SELECT ST_AsText( ST_Collect(
       'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
       'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)'));
    
          st_astext
    ------------------------------------------------------------------------------------
    MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
    CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))
    

    样例:接受几何对象数组的变体

    在子查询中使用数组构造器:

    SELECT ST_Collect( ARRAY( SELECT the_geom FROM sometable ) );
    

    使用一组值来创建数组:

    SELECT ST_AsText(  ST_Collect(
          ARRAY[ ST_GeomFromText('LINESTRING(1 2, 3 4)'),
             ST_GeomFromText('LINESTRING(3 4, 4 5)') ] )) As wktcollect;
    
    --wkt collect --
    MULTILINESTRING((1 2,3 4),(3 4,4 5))
    

    样例:聚合函数变体

    在表上使用 Group 子句将几何对象聚合成多个集合:

    SELECT stusps, ST_Collect(f.the_geom) as geom
       FROM (SELECT stusps, (ST_Dump(the_geom)).geom As the_geom
                FROM
                somestatetable ) As f
       GROUP BY stusps
    

    相关参考

    ST_DumpST_Union

    6.3.2. ST_LineFromMultiPoint

    ST_LineFromMultiPoint — 从一个MultiPoint几何类型中返回一个LineString类型对象。

    语法

    geometry ST_LineFromMultiPoint(geometry aMultiPoint);
    

    描述

    用MultiPoint几何类型对象创建一个LineString 类型对象。

    这个函数支持3D对象,并且不会删除z坐标。

    样例

    在一个三维 MULTIPOINT 对象的基础上构造一条三维的 LINESTRING:

    SELECT ST_AsEWKT(ST_LineFromMultiPoint(ST_GeomFromEWKT('MULTIPOINT(1 2 3, 4 5 6, 7 8 9)'))) ;
    
    LINESTRING(1 2 3,4 5 6,7 8 9)
    

    相关参考

    ST_AsEWKTST_CollectST_MakeLine

    6.3.3. ST_MakeEnvelope

    ST_MakeEnvelope — 根据给定的最小值范围和最大值范围生成一个矩形,输入值必须是SRS(spatial_reference_system表)规定的SRID值。

    用法

    geometry ST_MakeEnvelope(
       double precision xmin, double precision ymin,
       double precision xmax, double precision ymax,
       integer srid=unknown);
    

    描述

    根据给定的最小值范围和最大值范围生成一个矩形,输入值必须是SRS(spatial_reference_system表)规定的SRID值,如果SRID只没有给出,SRID会被假定为未知。

    样例 : 构建一个边界框多边形

    SELECT ST_AsText(ST_MakeEnvelope(10, 10, 11, 11, 4326));
    
    st_asewkt
    -----------
    POLYGON((10 10, 10 11, 11 11, 11 10, 10 10))
    

    相关参考

    ST_MakePointST_MakeLineST_MakePolygon

    6.3.4. ST_MakeLine

    ST_MakeLine — 根据point或line几何类型创建Linestring类型对象。

    用法

    geometry ST_MakeLine(geometry set geoms);
    geometry ST_MakeLine(geometry geom1, geometry geom2);
    geometry ST_MakeLine(geometry[] geoms_array);
    

    描述

    ST_MakeLine函数有3种形式(3种不同的参数),一种是聚集函数,它用一排point或line几何类型生成一个linestring几何对象。 一种是用一个数组的point或line生成一个linestring对象,还有一种函数是用两个point或linestring类型生成一个linestring几何类型对象。 可能需要先把这些点用子查询来对点排序,然后再当做这个函数的参数。 当添加了line参数后,输出中将移除共同的点。

    • 这个函数支持3D对象,并且不会删除z坐标。

    样例 : 空间聚集函数形式的版本

    该样例接收一个GPS定位点序列,为每次旅行创建一条记录。其中的几何字段包含一条线,由一次旅行中的GPS定位点按顺序连接而成:

    SELECT gps.gps_track, ST_MakeLine(gps.the_geom) As newgeom
    FROM (SELECT gps_track,gps_time, the_geom
    FROM gps_points ORDER BY gps_track, gps_time) As gps
    GROUP BY gps.gps_track;
    

    或者:

    SELECT gps.gps_track, ST_MakeLine(gps.the_geom ORDER BY gps_time) As newgeom
    FROM gps_points As gps
    GROUP BY gps.gps_track;
    

    样例 : 非空间聚集函数形式的版本

    第一个例子是由两个点组成的一条简单的线。

    第二个例子基于一个名为 userpoints 表中的 startpoint 和 endpoint 字段构造线,返回一个记录集。

    第三个例子基于三维的点构造了一条三维的线。

    SELECT ST_AsText(ST_MakeLine(ST_MakePoint(1,2), ST_MakePoint(3,4)));
    
    st_astext
    ---------------------
    LINESTRING(1 2,3 4)
    
    SELECT userpoints.id, ST_MakeLine(startpoint, endpoint) As drawn_line
    FROM userpoints ;
    
    SELECT ST_AsEWKT(ST_MakeLine(ST_MakePoint(1,2,3), ST_MakePoint(3,4,5)));
    
    st_asewkt
    -------------------------
    LINESTRING(1 2 3,3 4 5)
    

    样例 : 应用数组的版本

    SELECT ST_MakeLine(ARRAY(SELECT ST_Centroid(the_geom) FROM visit_locations ORDER BY visit_time));
    

    基于三维的点构建三维的线:

    SELECT ST_AsEWKT(ST_MakeLine(ARRAY[ST_MakePoint(1,2,3),
    ST_MakePoint(3,4,5), ST_MakePoint(6,6,6)]));
    
    st_asewkt
    -------------------------
    LINESTRING(1 2 3,3 4 5,6 6 6)
    

    相关参考

    ST_AsEWKTST_AsTextST_GeomFromTextST_MakePoint

    6.3.5. ST_MakePoint

    ST_MakePoint — 创建一个2D、3DZ 或 4D point 几何类型。

    用法

    geometry ST_MakePoint(float precision x, float precision y);
    geometry ST_MakePoint(float precision x, float precision y,
       float precision z);
    geometry ST_MakePoint(float precision x, float precision y,
       float precision z, float precision m);
    

    描述

    创建一个2D、3DZ 或 4D point 几何类型。 ST_MakePoint函数虽然和OGC不保持一致,但比ST_GeomFromText 和ST_PointFromText通常更快,也更精确。 如果的输入参数是裸坐标而不是WKT描述的对象,使用这个函数也更简单。

    注意

    注意x是经度,而y是纬度。

    注意

    如果需要使用 x、y、m 来生成点,可以使用ST_MakePointM函数。

    • 这个函数支持3D对象,并且不会删除z坐标。

    样例

    返回一个 SRID 为未知(unknown)的点:

    SELECT ST_MakePoint(-71.1043443253471, 42.3150676015829);
    

    返回一个 WGS 84 坐标系里的点:

    SELECT ST_SetSRID(ST_MakePoint(-71.1043443253471, 42.3150676015829),4326);
    

    返回一个三维的点(例如含有海拔高度):

    SELECT ST_MakePoint(1, 2, 1.5);
    

    返回一个点的 z 坐标:

    SELECT ST_Z(ST_MakePoint(1, 2, 1.5));
    
    result
    -------
    1.5
    

    相关参考

    ST_GeomFromTextST_PointFromTextST_SetSRIDST_MakePointM

    6.3.6. ST_MakePointM

    ST_MakePointM — 使用x、y、m坐标创建一个point 几何类型对象。

    用法

    geometry ST_MakePointM(float x, float y, float m);
    

    描述

    使用x、y、m坐标创建一个point 几何类型对象。

    注意

    x是经度,y是纬度。

    样例

    在下面的样例中使用ST_AsEWKT 函数来显示几何对象的文本表述而不是ST_AsText函数,因为 ST_AsText 不支持返回M值。

    返回EWKT表示的、SRID未定义的点:

    SELECT ST_AsEWKT(ST_MakePointM(-71.1043443253471, 42.3150676015829, 10));
    
    st_asewkt
    -----------------------------------------------
    POINTM(-71.1043443253471 42.3150676015829 10)
    

    返回EWKT表示的、采用WGS 84坐标系经纬度标记的点:

    SELECT ST_AsEWKT(ST_SetSRID(ST_MakePointM(-71.1043443253471, 42.3150676015829,10),4326));
    
    st_asewkt
    ---------------------------------------------------------
    SRID=4326;POINTM(-71.1043443253471 42.3150676015829 10)
    

    返回三维空间中的点(带有高度):

    SELECT ST_MakePoint(1, 2,1.5);
    

    返回点的 M 值:

    SELECT ST_M(ST_MakePointM(-71.1043443253471, 42.3150676015829,10));
    
    result
    -------
     10
    

    相关参考

    ST_AsEWKTST_MakePointST_SetSRID

    6.3.7. ST_MakePolygon

    ST_MakePolygon — 根据给定的闭合的LineString类型生成一个多边形,输入的几何类型必须是封闭的曲线。

    用法

    geometry ST_MakePolygon(geometry linestring);
    geometry ST_MakePolygon(geometry outerlinestring, geometry[] interiorlinestrings);
    

    描述

    根据给定的闭合的linestring生成一个多边形,输入的几何类型必须是闭合的linestring。该函数有两种形式:

    形式 1: 输入参数是闭合的linestring。

    形式 2: 根据给定的闭合线段和洞状的数组。

    可以使用ST_Accumor函数创建一个geometry数组,或根据KingbaseES ARRAY()函数创建创建ARRAY[]数组,输入的geometry类型必须是闭合的线段。

    注意

    这个函数不接受MULTILINESTRING参数。使用ST_LineMerge或ST_Dump生成linestring类型。

    • 这个函数支持3D对象,并且不会删除z坐标。

    样例: 单个闭合LINESTRING

    二维的LINESTRING。如果一个LINESTRING未闭合,可以为其添加一个点使其闭合。

    SELECT ST_MakePolygon(ST_GeomFromText(
       'LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)'));
    
    SELECT ST_MakePolygon(ST_AddPoint(foo.open_line,
    ST_StartPoint(foo.open_line)))
    FROM (
    SELECT ST_GeomFromText(
       'LINESTRING(75.15 29.53,77 29,77.6 29.5)') As open_line) As foo;
    

    三维闭合的LINESTRING。

    SELECT ST_MakePolygon(ST_GeomFromText(
       'LINESTRING(75.15 29.53 1,77 29 1,77.6 29.5 1, 75.15 29.53 1)'));
    
    st_asewkt
    -----------
    POLYGON((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1))
    

    带有M值的LINESTRING。

    样例: 有内外环的多边形

    构建一个带有蚂蚁洞的甜甜圈:

    SELECT ST_MakePolygon(
    ST_ExteriorRing(ST_Buffer(foo.line,10)),
    ARRAY[ST_Translate(foo.line,1,1),
    ST_ExteriorRing(ST_Buffer(ST_MakePoint(20,20),1)) ]
    )
    FROM
    (SELECT ST_ExteriorRing(ST_Buffer(ST_MakePoint(10,10),10,10))
    As line )
    As foo;
    

    根据省份多边形或多边形创建一个省份的边界,这里面的孔表示这个省份里面的一些湖泊,linestring在这里是用 ST_Accum使用样例:

    注意

    下面用例的CASE语句使用是因为如果ST_MakePolygon函数的输入是一个空数组,这个函数的输出也是NULL。

    注意

    使用left join方式是为了保证要在查询后返回所有省份,即便这个省份没有湖泊。

    SELECT p.gid, p.province_name,
    CASE WHEN
    ST_Accum(w.the_geom) IS NULL THEN p.the_geom
    ELSE ST_MakePolygon(ST_LineMerge(ST_Boundary(p.the_geom)),
    ST_Accum(w.the_geom)) END
    FROM
    provinces p LEFT JOIN waterlines w
    ON (ST_Within(w.the_geom, p.the_geom) AND ST_IsClosed(w.the_geom))
    GROUP BY p.gid, p.province_name, p.the_geom;
    

    上述有些案例可以用关联子查询来编写。KingbaseES内置的 ARRAY() 函数可以将一个记录集转换成数组:

    SELECT p.gid, p.province_name, CASE WHEN
    EXISTS(SELECT w.the_geom
    FROM waterlines w
    WHERE ST_Within(w.the_geom, p.the_geom)
    AND ST_IsClosed(w.the_geom))THEN
    ST_MakePolygon(ST_LineMerge(ST_Boundary(p.the_geom)),
    ARRAY(SELECT w.the_geom
    FROM waterlines w
    WHERE ST_Within(w.the_geom, p.the_geom)
    AND ST_IsClosed(w.the_geom)))
    ELSE p.the_geom END As the_geom
    FROM
    provinces p;
    

    相关参考

    `ST_Accum`_ST_AddPointST_GeometryTypeST_IsClosedST_LineMergeST_BuildArea

    6.3.8. ST_Point

    ST_Point — 根据给定的坐标值,返回ST_Point值对应的几何类型对象,这个函数是OGC函数ST_MakePoint 的别名。

    用法

    geometry ST_Point(float x_lon, float y_lat);
    

    描述

    根据给定的坐标值,返回ST_Point值对应的几何类型对象。这个函数和SQL/MM规范的ST_MakePoint函数兼容,ST_MakePoint 这个函数只有x,y两个参数。

    • 该方法实现了规范 SQL/MM specification。SQL-MM 3: 6.1.2

    样例: Geometry

    SELECT ST_SetSRID(ST_Point(-71.1043443253471, 42.3150676015829),4326)
    

    样例: Geography

    SELECT CAST(ST_SetSRID(ST_Point(-71.1043443253471, 42.3150676015829),4326)
       As geography);
    

    符号 :: 是 KingbaseES 中类型转换的速记形式:

    SELECT ST_SetSRID(ST_Point(-71.1043443253471,  42.3150676015829),4326)::geography;
    

    如果点坐标不同于 WGS 84 空间坐标系中的经纬度,则需要先对其进行转换。 这个例子中我们将以宾夕法尼亚州英尺标记的点转换到 WGS 84 坐标系中,并转换成 Geography 类型:

    SELECT ST_Transform(ST_SetSRID(ST_Point(3637510, 3014852),2273),4326)::geography;
    

    相关参考

    ST_MakePointST_SetSRIDST_Transform

    6.3.9. ST_Polygon

    ST_Polygon — 根据具体的linestring类型对象和SRID创建一个polygon对象。

    用法

    geometry ST_Polygon(geometry aLineString, integer srid);
    

    描述

    根据具体的linestring类型对象和SRID创建一个polygon对象。

    注意

    ST_Polygon 函数和该函数的第一个版本的ST_MakePolygon很像,除了它多了一个设置polygon对象的SRID参数。 该函数无法处理MULTILINESTRING类型对象,如果要使用,使用LineMerge函数合并multiline对象。 另外不要创建带有孔的polygon对象,如果需要创建带孔的,使用函数ST_MakePolygon处理。

    • 该方法实现了规范 OpenGIS Simple Features Implementation Specification for SQL 1.1 。

    • 该方法实现了规范 SQL/MM specification。 SQL-MM 3: 8.3.2 。

    • 这个函数支持3D对象,并且不会删除z坐标。

    样例

    一个二维多边形:

    SELECT ST_Polygon(ST_GeomFromText(
       'LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)'),
    4326);
    
    result
    ------
    POLYGON((75.15 29.53,77 29,77.6 29.5,75.15 29.53))
    

    一个三维多边形:

    SELECT ST_AsEWKT(ST_Polygon(ST_GeomFromEWKT(
       'LINESTRING(75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1)'),
       4326));
    
    result
    ------
    SRID=4326;POLYGON((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1))
    

    相关参考

    ST_AsEWKTST_AsTextST_GeomFromEWKTST_GeomFromTextST_LineMergeST_MakePolygon

    6.3.10. ST_TileEnvelope

    ST_TileEnvelope — 使用 xyz 瓦片系统在 Web 墨卡托参考系(SRID: 3875)中创建一个矩形多边形。

    语法

    geometry ST_TileEnvelope(integer tileZoom, integer tileX, integer tileY,
       geometry bounds=SRID=3857;LINESTRING(
          -20037508.342789 -20037508.342789,20037508.342789 20037508.342789),
       float margin=0.0);
    

    描述

    使用 xyz 瓦片系统在 Web 墨卡托参考系( SRID: 3875)中创建一个矩形多边形。 默认情况下,边界位于 EPSG:3875 坐标系并使用标准的 Web 墨卡托参考系范围(-20037508.342789,20037508.342789)。

    可选的 bounds 参数可以用来为任何瓦片布局生成包络线:提供一个带有 SRID 的几何对象和指定的瓦片系统内初始缩放到第 0 级的正方形区域。

    可选的 margin 参数可以用来按指定的比例扩展瓦片。例如: margin=0.125 将让瓦片扩展 12.5%,这等价于在ST_AsMVTGeom 函数中为幅面为 4096 的瓦片扩展出 512 宽的缓冲区。 这有助于创建一个瓦片缓冲区, 其中包含可见区域之外的数据,对当前瓦片的渲染产生影响。 例如:一个城市名称(一个地理点位)可能接近瓦片的边缘,即使该点位仅位于一个瓦片中,这个文本还是需要在两个相邻的瓦片中渲染。 在一个查询中使用扩展了的瓦片将能在两个相邻的瓦片中搜到这个点位。 如果使用负的 margin 参数,其值必须小于 0.5,以免清除整个瓦片的内容。 不要在 ST_AsMVTGeom 函数中使用 margin 参数,示例参见 ST_AsMVT 函数的说明。

    样例

    SELECT ST_AsText( ST_TileEnvelope(2, 1, 1) );
    st_astext
    ------------------------------
    POLYGON((-10018754.1713945 0,-10018754.1713945 10018754.1713945,0 10018754.1713945,0 0,-10018754.1713945 0))
    
    SELECT ST_AsText( ST_TileEnvelope(3, 1, 1, ST_MakeEnvelope(-180, -90, 180, 90, 4326) ) );
    st_astext
    ------------------------------------------------------
    POLYGON((-135 45,-135 67.5,-90 67.5,-90 45,-135 45))
    

    相关参考

    ST_MakeEnvelope

    6.3.11. ST_HexagonGrid

    ST_HexagonGrid — 创建一个由六边形瓦片组成的平面。

    语法

    setof record ST_HexagonGrid(float8 size, geometry bounds);
    

    描述

    创建一个由六边形瓦片组成的平面。(不是一个全球六边形瓦片集合,不是 H3 瓦片布局)基于给定的平面空间参考系和给定的边长,以坐标系原点为起点,只有一种铺满平面的方式 Tiling( SRS, Size)。 该函数解答的问题的是:给定平面空间参考系和边长,哪些六边形能够覆盖指定的矩形区域。

    输出六边形瓦片集合的空间参考系,就是边框几何对象所在的空间参考系。

    二倍或三倍边长的六边形可以产生一个新的、能够覆盖原始区域的父级瓦片集合。但不幸的是, 无法生成一个恰好覆盖子瓦片集合的父级六边形瓦片集合。

    样例:统计六边形瓦片中的点数

    为了在六边形瓦片中汇总点数,需要以点的分布范围为边界框,生成一个六边形网格,然后从空间位置上分组汇总点数。

    SELECT COUNT(*), hexes.geom
    FROM
    ST_HexagonGrid(
    10000,
    ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
    ) AS hexes
    INNER JOIN
    pointtable AS pts
    ON ST_Intersects(pts.geom, hexes.geom)
    GROUP BY hexes.geom;
    

    样例:用六边形瓦片覆盖给定的多边形

    如果为每个多边形边界生成一组六边形,并且过滤掉那些与多边形没有交集的六边形,即可获得覆盖每个多边形的六边形瓦片集合。

    用六边形瓦片覆盖每个州的结果,在州与州的边界上会有六边形重叠。

    SELECT admin1.gid, hex.geom
    FROM
    admin1
    CROSS JOIN
    ST_HexagonGrid(100000, admin1.geom) AS hex
    WHERE
    adm0_a3 = 'USA'
    AND
    ST_Intersects(admin1.geom, hex.geom);
    

    相关参考

    ST_EstimatedExtentST_SetSRIDST_SquareGridST_TileEnvelope

    6.3.12. ST_SquareGrid

    ST_SquareGrid — 创建一个由正方形瓦片组成的平面。

    语法

    setof record ST_SquareGrid(float8 size, geometry bounds);
    

    描述

    创建一个由正方形瓦片组成的平面。 基于给定的平面空间参考系和给定的边长,以坐标系原点为起点,只有一种铺满平面的方式 Tiling(SRS, Size)。 该函数解答的问题的是:给定平面空间参考系和边长,哪些正方形能够覆盖指定的矩形区域。

    输出正方形瓦片集合的空间参考系,就是边框几何对象所在的空间参考系。 二倍边长的正方形可以产生一个新的、能够覆盖原始区域的父级瓦片集合。 墨卡托投影中标准的 Web 地图瓦片就是以 2 为底数的倍数分划的正方形。

    样例:在正方形区域内计算点数(使用单个网格)

    SELECT COUNT(*), squares.geom
    FROM
    pointtable AS pts
    INNER JOIN
    ST_SquareGrid(
    1000,
    ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
    ) AS squares
    ON ST_Intersects(pts.geom, squares.geom)
    GROUP BY squares.geom;
    

    样例:使用一组网格在一组正方形区域内计算点数

    SELECT COUNT(*), squares.geom
    FROM
    pointtable AS pts
    INNER JOIN
    ST_SquareGrid(
    1000,
    pts.geom
    ) AS squares
    ON ST_Intersects(pts.geom, squares.geom)
    GROUP BY squares.geom;
    

    相关参考

    ST_TileEnvelopeST_HexagonGrid , ST_EstimatedExtent , ST_SetSRID

    6.3.13. ST_Hexagon

    ST_Hexagon — 在给定的单元格坐标系中生成一个六边形。坐标原点是可以通过可选参数指定的,默认为 0,0 点。

    语法

    geometry ST_Hexagon(float8 size, integer cell_i, integer cell_j, geometry origin);
    

    描述

    在给定的单元格坐标系中生成一个六边形。坐标原点是可以通过可选参数指定的,默认为 0,0 点。 生成的六边形是未设置 SRID 的,要 设置 SRID 需使用 ST_SetSRID 函数。

    样例:在原点处创建一个六边形

    SELECT ST_AsText(ST_SetSRID(ST_Hexagon(1.0, 0, 0), 3857)); POLYGON((-1 0,-0.5 -0.866025403784439,0.5 -0.866025403784439,1 0,0.5 0.866025403784439,-0.5 0.866025403784439,-1 0));

    相关参考

    ST_TileEnvelopeST_HexagonGridST_Square

    6.3.14. ST_Square

    ST_Square — 在指定单元格坐标系中创建一个正方形。

    语法

    geometry ST_Square(float8 size, integer cell_i, integer cell_j, geometry origin);
    

    描述

    在指定单元格坐标系中创建一个正方形。坐标原点是可以通过可选参数指定的,默认为 0,0 点。 生成的正方形是未设置 SRID 的,要 设置 SRID 需使用 ST_SetSRID 函数。

    样例:在原点处创建一个正方形

    SELECT ST_AsText(ST_SetSRID(ST_Square(1.0, 0, 0), 3857));
    POLYGON((0 0,0 1,1 1,1 0,0 0))
    

    相关参考

    ST_TileEnvelopeST_SquareGridST_Hexagon

  • 相关阅读:
    如何在Spring Boot应用中进行文件预览?
    小满nestjs(第八章 nestjs 控制器)
    vue3语法笔记
    这几个点让我买了Watch Ultra
    微服务学习
    python从入门到精通合集(二)面向对象,文件IO、线程、进程
    HTB-Valentine
    如何在Linux中使用read命令读取用户输入?——read命令实战
    运动神经元如何做好锻炼康复
    机械臂抓取的产业落地进展与思考
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126246456