0

MySql データベースにジオメトリ コレクションを設定しています。したがって、さまざまなジオメトリ クラスを追加しました。

SET @g ='GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 1,2 3,4 5), POINT(6 6))'; INSERT INTO myTable (geoCollectionField) VALUES (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... を与える

SELECT AsText(GeometryN(geoCollectionField, 1)) FROM myTable;

指標付き幾何学クラス POINT(1 1) を与える.

たとえば、POINT クラスが POINT((1 1),(6 6)) になるなど、1 つのクラス タイプのみをフェッチする SELECT を作成できませんでした。

何かご意見は?

4

1 に答える 1

0

次の手順を検討してください。

  1. 使用中のジオメトリの数を取得します( STNumGeometries Reference )GeometryCollectionSTNumGeometries
  2. ループを使用して、 内のすべてのジオメトリを反復処理しますGeometryCollection
  3. ( STGeometryN Reference )を使用して、特定のインデックスでジオメトリを取得します。STGeometryN
  4. 各ジオメトリについて、( STGeometryType Reference )を使用してジオメトリ タイプを取得します。STGeometryType
  5. ジオメトリ タイプが目的のタイプと一致するかどうかを確認します。一致するものがある場合は、それを結果の に追加することをお勧めしますGeometryCollection

これらの手順に従うと、

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

MultiPoint希望するジオメトリ タイプ ( 、MultiLineStringMultiPolygon)に応じて、他のコレクションを使用することもできます。

マルチポイントの結果は次のようになります。

MULTIPOINT((1 1), (6 6))
于 2016-08-31T18:19:15.667 に答える