QGIS 가상 레이어를 사용한 다각형 교차


10

가상 레이어를 사용하여 QGIS에서 다각형 지오메트리를 교차하려고합니다.

SELECT
    sbqry.rowid AS gid,
    sbqry.geom
FROM
    (SELECT
        ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom
    FROM land_parcels, flood_zone
    WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry))
    AS sbqry;

불행히도 sbqry.rowid AS gid자동 증가 값 대신 NULL을 반환합니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

아무도 'gid'라는 고유 식별자 열을 만드는 방법을 알고 있습니까? 내가 아는 한 가상 레이어는 SQLite / Spatialite를 기반으로합니다.


가상 계층에 어떤 데이터 유형을 사용하고 있습니까?
DPSSpatial 2016 년

입력 레이어는 .shp 파일이며 출력 지오메트리 유형은 'polygon'입니다.
eclipsed_by_the_moon

shapefile에서 공간 함수 (ST_ *)를 실행할 수 있다는 것을 몰랐습니다! 대단해 !!!
DPSSpatial 2016 년

'SELECT rowid as gid'에서 sbqry를 제거 해 보셨습니까? 예를 들어 다른 게시물을 찾았습니다.
kttii

'rowid AS gid'는 하위 쿼리가 아닌 버퍼 만들기와 같은 간단한 SELECT 문에서 작동합니다.
eclipsed_by_the_moon

답변:


3

PostGIS에서 행 번호를 원하면 다음과 같이 할 수 있습니다.

SELECT
    row_number() over () as gid,
    sbqry.geom
FROM
    (SELECT
        ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom
    FROM land_parcels, flood_zone
    WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry))
    AS sbqry;

'row_number () over ()'는 PostGIS에서는 작동하지만 SpatiaLite (QGIS 가상 레이어)에서는 작동하지 않는 것 같습니다.
eclipsed_by_the_moon 2016 년

2
SELECT  f.rowid AS gid, f.geom
FROM
(SELECT sbqry.geom
FROM (SELECT ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom FROM land_parcels, flood_zone 
WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry)) AS sbqry) as f

불행하게도 쿼리는 NULL 값만 반환합니다.
eclipsed_by_the_moon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.