문제

공간적으로 활성화 된 데이터베이스 (DB2,이 경우)가 있습니다. 많은 수의 사각형을 테이블에 보관해야합니다. 어떤 표준 공간 SQL 데이터 유형이 가장 적합합니까?

나는 내가 사용할 수있을 것 같다 st_polygon, 그러나 아마도 더 전문화 된 유형이있을 수 있습니다.

  • 더 나은 성능
  • 더 나은 데이터 보증 (특정 열에 비 평격 값을 저장할 사람이 있으면 오류로 포착하고 싶습니다).

나는 찾으려고 노력했다 st_rectangle 또는 st_square 유형이지만 존재하지 않는 것 같습니다 (?)

DB2와 함께 일하는 동안 표준을 준수하는 한 DB2에서 작동하지 않는 솔루션에도 관심이 있습니다.

도움이 되었습니까?

해결책

DB2에서는 다각형이기도합니다. 그리드를 저장하는 것처럼 보이므로 ST_ENVELOPE (Geometry) == Geometry라면 사각형이있는 경우 빠른 점검이있을 수 있습니다.

이 코드는 왔습니다

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? 마지막 다각형 == ST_ENVELOPE (Geometry)

다른 팁

데이터가 사각형 또는 정사각형을 나타내더라도 ST_POLYGON 유형을 사용해야합니다. 그러나 데이터에 대한 쿼리를 수행하면 다음과 같은 1 차 필터를 사용할 수 있습니다. st_envintersect.

일반적으로 공간 데이터베이스는 교차로의 봉투 (즉 다각형이 포함 된 사각형)를 비교합니다. 그런 다음 더 비싼 다각형 간 교차 계산을 수행합니다. 이 경우, 다각형은 봉투와 같기 때문에 두 번째 더 비싼 단계를 건너 뛸 수 있습니다.

데이터 유효성 검사에 관한 한, st_equals (st_envelope (geom), geom) = 1을 확인하는 데이터베이스 트리거를 추가 할 수 있습니다.

당신은 찾고있을 수 있습니다 st_envelope -DB2에 대해 잘 모르지만 OGC 표준의 일부입니다. 비 지구 또는 비 유산 라인 또는 다각형은이 함수를 통해 사각형을 생성하여 좌표를 일반적으로 플로트로 저장합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top