質問

空間対応データベース (この場合は DB2) があります。テーブルに多数の正方形を保存する必要があります。どの標準空間 SQL データ型が最も適していますか?

を使用できると思います ST_ポリゴン, 、しかしおそらく、より特殊なタイプがあるかもしれません。

  • よりよい性能
  • より良いデータ保証(特定の列に非正方形の値を格納する場所がある場合、それをエラーとしてキャッチしたい)

を見つけようとしました ST_長方形 または ST_スクエア タイプですが、存在しないようです(?)

私は DB2 を使用していますが、標準に準拠している限り、DB2 では動作しないソリューションにも興味があります。

役に立ちましたか?

解決

DB2では、それはまた、多角形です。あなたがグリッドを格納しているように見えますので、迅速なチェックが可能であることST_ENVELOPE(幾何学)==ジオメトリが、あなたは、正方形を持っている場合は、

このコードからである

<のhref = "http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.spatial/rsbp4040.htm" のrel =」 noreferrer nofollowを "> DB2のマニュアルの

SET CURRENT PATH = CURRENT PATH, db2gse;
CREATE TABLE sample_geoms (id INTEGER, geometry ST_Geometry);

INSERT INTO sample_geoms VALUES
(1, ST_Geometry(ST_Point('point EMPTY',0)));

INSERT INTO sample_geoms VALUES
(2, ST_Geometry(ST_Point('point zm (10 10 16 30)' ,0)));

INSERT INTO sample_geoms VALUES
(3, ST_Geometry(ST_Multipoint('multipoint m (10 10 5, 50 10 6, 
         10 30 8)' ,0)));

INSERT INTO sample_geoms VALUES
(4, ST_Geometry(ST_Linestring('linestring (10 10, 20 10)',0)));

INSERT INTO sample_geoms VALUES
(5, ST_Geometry(ST_Polygon('polygon((40 120, 90 120, 90 150, 
         40 150, 40 120))',0)));


SELECT id, CAST(ST_AsText(ST_Envelope(geometry)) as VARCHAR(160))  Envelope
FROM sample_geoms;

結果:

ID          ENVELOPE
----------- ---------------------------------------------------------------
      1     -

      2     POLYGON (( 9 9, 11 9, 11 11, 9 11, 9 9))

      3     POLYGON (( 10 10, 50 10, 50 30, 10 30, 10 10))

      4     POLYGON (( 10 9, 20 9, 20  11, 10 11, 10 9))

      5     POLYGON (( 40 120, 90 120, 90 150, 40 150, 40 120))

ID = 5を参照してください?最後POLYGON == ST_ENVELOPE(幾何学)

他のヒント

あなたのデータは、長方形や正方形を表している場合でも、あなたはまだたST_Polygonタイプを使用する必要があります。あなたがデータに対してクエリを実行するときしかし、あなたは、このような<のhref = "http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=として、第1次フィルタを使用することができます/com.ibm.db2.udb.spatial.doc/rsbp4142.html」のrel = "nofollowをnoreferrer"> ST_EnvIntersects を。

通常、空間データベースは、交差点用封筒(ポリゴンが含まれている、すなわち矩形)を比較します。そして、それはより高価なポリゴン・ツー・ポリゴン交点計算を行います。あなたのポリゴンが封筒に等しいので、この場合は、あなたは、第二のより高価なステップをスキップすることができます。

限りデータ検証としては、ST_Equalsではをチェックデータベース・トリガーを追加することができ(ST_ENVELOPE(GEOM)、GEOM)= 1

私は確かに知っていない -

あなたは ST_Envelope のを探している可能性がありDB2についてのそれはOGC標準の一部です。任意の非垂直または非水平線、または多角形、フロートとして典型的座標を記憶し、この機能を介して矩形を生成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top