빈 PostGIS 테이블의 지오메트리 유형을 얻는 방법은 무엇입니까?


10

행을 삽입하기 전에 PostGIS 테이블의 geom 필드의 지오메트리 유형을 알아야하는 웹 응용 프로그램이 있습니다. 다음 쿼리를 사용하여 geom 열의 기하학 유형을 결정합니다.

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

실제 행의 지오메트리 유형을 반환하므로 테이블이 비어 있으면 작동하지 않습니다. 지오메트리 열 자체의 지오메트리 유형을 어떻게 결정합니까?

답변:


17

geometry_columns이 방법으로 테이블에 대해 쿼리를 실행할 수 있습니다.

SELECT type 
FROM geometry_columns 
WHERE f_table_schema = 'my_schema' 
AND f_table_name = 'building' 
and f_geometry_column = 'geom';

(당신이 사용하는 경우 또는, 지리 유형을 subsititute geometry_columnsgeography_columnsf_geometry_column함께 f_geography_column)


응답의 sql geometry은 유형에 대해 반환하지만 형상이 점인지 선인지는 여전히 알 수 없습니다.
giser

1
즉, 형상 열이 형상 유형 "형상"으로 설정되어 있습니다 (즉, 모든 종류의 형상을 허용 함). 이 경우 ST_GeometryType을 사용하여 각 지오메트리를 개별적으로 확인해야합니다
atlefren

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1이 같은 OP 게시물로? 테이블이 비어 있으면 작동하지 않습니다.
giser

그리고 모든 기하학 열이 geometry모든 테이블에 대해 유형 으로 설정되어 있으면 한 가지 더, 포함 할 수있는 모든 테이블이 포함 된 뷰를 만들 수 points lines polyogn있습니까?
giser

1
권리. 유추 : 기하 열이 "형상"유형이라고 선언하는 것은 모든 색상의 양말 용 서랍을 지정하는 것과 같습니다. 이 서랍에 어떤 색의 양말이 있는지 확인하는 것은 비어있을 때 불가능합니다.
atlefren

3

테이블 geometry_columns를 찾으십시오. srid 및 geometry 유형의 모든 geo 열이 여기에 등록됩니다. GEOMETRY 유형의 열이 있으면 모든 지오메트리 유형을 저장할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.