【问题标题】:mysql select a geometry class from a geometry collectionmysql 从几何集合中选择几何类
【发布时间】:2017-01-05 12:55:34
【问题描述】:

我正在 MySql 数据库中设置几何集合。因此,我添加了各种几何类:

SET @g ='GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 1,2 3,4 5), POINT(6 6))'; 插入 myTable (geoCollectionField) 值 (GeomFromText(@g));

geoCollectionField 在 WKT 大会上按预期响应:

GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 1,2 3,4 5),POINT(6 6))

我可以通过多种方式从此几何集合中获取数据。

从 myTable 中选择 geoCollectionField;

给出完整的 GEOMETRYCOLLECTION(POINT(1 1),LINESTRING...

从 myTable 中选择 AsText(GeometryN(geoCollectionField, 1));

给出索引几何类 POINT(1 1)。

我无法编写只获取一种类类型的 SELECT,例如以 POINT((1 1),(6 6)) 结尾的 POINT 类。

有什么想法吗?

【问题讨论】:

    标签: mysql geometry spatial spatial-query wkt


    【解决方案1】:

    考虑以下步骤:

    1. 使用STNumGeometries (STNumGeometries Reference) 获取GeometryCollection 中的几何数
    2. 使用循环遍历 GeometryCollection 中的所有几何图形。
    3. 使用STGeometryN (STGeometryN Reference) 获取特定索引处的几何
    4. 对于每个几何,使用STGeometryType (STGeometryType Reference) 获取几何类型
    5. 检查几何类型是否与您想要的类型相匹配。如果您有匹配项,您可能希望将其添加到生成的 GeometryCollection

    遵循这些步骤将导致

    GEOMETRYCOLLECTION(POINT(1 1), POINT(6 6))
    

    您还可以根据所需的几何类型使用其他集合(MultiPointMultiLineStringMultiPolygon

    多点结果可能如下所示:

    MULTIPOINT((1 1), (6 6))
    

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2020-10-03
      • 2020-07-20
      • 1970-01-01
      • 2018-04-09
      • 2015-08-20
      相关资源
      最近更新 更多