美文网首页开源Gis专辑PostGIS
postgis Multi类型转simple类型

postgis Multi类型转simple类型

作者: 上岸躲雨 | 来源:发表于2018-12-25 11:52 被阅读6次

有些情况获得的数据是Multi类型的,如MultiPolygon和MultiLineString类型,这些类型在空间计算上,很多函数都用不上。像如MultiLineString类型想进行最短路径查询就比较不方便。postgis导入的时候能够选择simple类型,但是有时候就是导不进去。


image.png image.png

如上图这种情况,其实就可以将这些多边形进行打散,进行单独处理。这就需要用到st_numgeometries和st_geometryN两个函数了。

integer ST_NumGeometries(geometry geom);
Returns the number of Geometries. If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, for single geometries will return 1, otherwise return NULL.

SELECT ST_NumGeometries(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));

st_numgeometries 计算Multi的单个数量

geometry ST_GeometryN(geometry geomA, integer n);

Return the 1-based Nth geometry if the geometry is a GEOMETRYCOLLECTION, (MULTI)POINT, (MULTI)LINESTRING, MULTICURVE or (MULTI)POLYGON, POLYHEDRALSURFACE Otherwise, return NULL


SELECT
    n,
    ST_AsEWKT (ST_GeometryN(the_geom, n)) AS geomewkt
FROM
    (

        VALUES
            (
                ST_GeomFromEWKT (
                    'MULTIPOINT(1 2 7, 3 4 7, 5 6 7, 8 9 10)'
                )
            ),
            (
                ST_GeomFromEWKT (
                    'MULTICURVE(CIRCULARSTRING(2.5 2.5,4.5 2.5, 3.5 3.5), (10 11, 12 11))'
                )
            )
    ) AS foo (the_geom)
CROSS JOIN generate_series (1, 100) n
WHERE
    n <= ST_NumGeometries (the_geom);

ST_GeometryN 取index为 n的geometry

    SELECT st_geometryN(geom,n) from grid_class_sure_hex gcsh CROSS JOIN generate_series (1, 100) n where gcsh.name='aaaaa' and n <= ST_NumGeometries (gcsh.geom);
    
    --其中generate_series (1, 100)可以根据情况自己设置

最后的每个小的多边形都可以点击,是能够达到效果的。

相关文章

  • postgis Multi类型转simple类型

    有些情况获得的数据是Multi类型的,如MultiPolygon和MultiLineString类型,这些类型在空...

  • PostGIS特性

    PostGIS特性 1、PostGIS支持所有的空间数据类型,这些类型包括:点(POINT)、线(LINESTRI...

  • PostgreSQL+PostGIS 的使用

    from PostgreSQL+PostGIS 的使用 一、PostGIS中的几何类型 PostGIS支持所有O...

  • redis常用功能表述

    基础类型应用: String: String类型是Redis中最常使用的类型,内部的实现是通过SDS(Simple...

  • NSString、Char* 类型转换

    1. NSString 类型转 Char*类型 2.Char*类型转NSString类型

  • Java 数组转List

    不使用流 原始类型数组转list: 包装类型数组转list: 使用流 原始类型数组转list: 包装类型数组转list:

  • JS 类型转换和对象引用

    数据类型转换 任意类型转string: 任意类型转boolean: 其他类型转boolean后值为false的只有...

  • Mybatis-plus读取和保存Postgis geometr

    配置 引入postgis-jdbc包 创建类型转换类MyGeometryTypeHandler 在实体类配置typ...

  • JS 里的数据类型转换

    任意类型转字符串 任意类型转布尔 任意类型转数字 任意类型转null与undefined不讨论,因为不需要。 内存...

  • 类型转换

    类型转换 数据类型(变量) 一般类型转换建议低类型转高类型整型转成浮点型,高类型转地类型可能会丢失精度,符号发生变...

网友评论

    本文标题:postgis Multi类型转simple类型

    本文链接:https://www.haomeiwen.com/subject/hozxlqtx.html