QGIS가 PostGIS보기를 추가하려고 할 때 "잘못된 레이어"메시지를 반환합니까?


14

Postgis와 QGIS를 처음 사용합니다. 로 정의 된보기를 만들었습니다.

CREATE OR REPLACE VIEW pupr.vstudentmuni AS 
 SELECT m.id AS munid, m.name AS muname, m.geom, s.code, 
    (s.name::text || ' '::text) || s.lastname::text AS fullname
   FROM pupr.municipio m, pupr.student_location l, pupr.student s
  WHERE st_within(l.geom, m.geom) AND s.code = l.code;

PostgreSQL에서. 이 뷰를 QGIS에 추가하려고하면 다음 오류가 반환됩니다.

"Invalid layer"..."sql= is an invalid layer and cannot be loaded."

문제가 무엇인지 잘 모르겠습니다. 표는 geommetry_columnsPostGIS 의 표에 언급되어 있지만 QGIS에서 "주어진보기에 키 필드가 없습니다"라는 메시지 항목을 볼 수 있습니다. PostgreSQL 9.2 및 QGIS 1.8.0을 사용하고 있습니다.


1
문제는 고유 키 필드와 관련이있는 것 같습니다. 나는 당신의 데이터를 모른다. 어쩌면 당신은 당신이 쿼리로 달성하고자하는 것에 대해 조금 더 설명 할 수있다. QGIS에서 레이어를 어떻게 열 수 있습니까? 열쇠를 선택 했습니까? 설명한 내용에서 s.code 만 고유 키로 사용할 수 있습니다. 또한, 각 학생마다 당신의 미네 키오 도형이 여러 번 반복 될 것입니다. 그것이 당신이 원하는 것입니까?
Alexandre Neto

답변:


6

PostGIS에서 QGIS로보기를 추가 할 때 고유 ID 필드를 지정해야합니다. 레이어 이름 오른쪽에 사용할 필드를 지정할 수있는 드롭 다운이 있습니다. 고유 ID 필드가없는 경우보기를 작성하는 쿼리에서 row_number () 창 함수를 사용하여 가짜 ID 필드를 작성할 수 있습니다.


이 질문 은 QGIS GUI에서 고유 ID 필드를 선택하는 방법과 관련 있습니다.
RyanKDalton

그리고 이 질문은 당신에게 고유 ID를 가진 뷰를 만드는 방법에 대한 자세한 내용을 제공 할 것입니다.
RyanKDalton

답장을 보내 주셔서 감사합니다. 제안 된 기능을 사용하여 문제가 해결되었습니다.
ufeliciano

1

오늘 나는 테이블 사이의 조인에서 생성 된 보기로이 오류에 부딪 쳤습니다. 결국 QGis를 화나게하는 두 개의 고유 필드가 있습니다. 처음에는보기가 다음과 같습니다.

CREATE OR REPLACE VIEW my_view AS
SELECT *
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;

이 방법으로 뷰에 두 개의 기본 키 필드가있었습니다. 대신 고유 식별자에 대한 단일 필드 후보를 끝내려면 결과 필드를 지정해야했습니다.

CREATE OR REPLACE VIEW my_view AS
SELECT n.id,
       n.name,
       n.geom,
       m.type,
       m.other_stuff,
       m.more_stuff
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.