Postgis 2.0의 뷰에서 SRID 강제 실행


9

매우 까다로운 문제가 있습니다. Geoserver 2.1.3의 데이터 저장소로 사용되는 Postgis 2.0 데이터베이스가 있습니다.

SRID 4326이있는 지오메트리 열 (이름이 모양)이있는 테이블이 있습니다.

다음과 같은 뷰를 만들었습니다.

CREATE VIEW pippo AS SELECT st_geometryn(shape,1) as geom FROM events

그런 다음 geoserver를 사용하여 뷰를 게시했습니다. GetFeatureInfo 요청을 제외한 모든 기능이 작동합니다.

select * from geometry_columns

pippo.geom의 SRID가 0임을 반환합니다 (그러나 4326이어야 함).

나는이 정의를보기 위해 시도했다.

CREATE VIEW pippo AS SELECT st_setsrid(st_geometryn(shape,1), 4326) as geom FROM events

하지만 여전히 geometry_columns에 SRID = 0이 있습니다. ... 도움이 있습니까?

Geoserver에서 레이어를 정의하는 방법은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

해결 방법

문제 자체를 해결하는 것이 아니라 Geoserver가 GetFeatureInfo 요청에 대한 공간 검색을 수행 할 수있는 해결 방법을 찾았습니다.

뷰를 만들어 게시하는 대신 지오 서버에 직접 정의 된 SQL 계층을 게시했습니다. 레이어 정의 형식에서 올바른 gemoetry 유형과 SRID를 선택할 수 있었고 모든 것이 현재 작동하고 있습니다!

답변:


8

typmod를 사용하여 geometry_columns뷰 에서 srid를 지정할 수 있습니다.

CREATE VIEW pippo AS
SELECT st_geometryn(shape,1)::geometry(Geometry, 4326) as geom
FROM events

매뉴얼은 더 많은 정보를 가지고있다.


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