Giao điểm đa giác sử dụng các lớp ảo QGIS


10

Tôi đang cố gắng giao cắt các hình học đa giác trong QGIS bằng cách sử dụng một lớp ảo:

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;

Thật không may, sbqry.rowid AS gidtrả về NULL thay vì giá trị tăng tự động.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Có ai biết cách tạo một cột định danh duy nhất có tên là 'gid' không? Theo tôi biết các lớp ảo dựa trên SQLite / Spatialite.


Loại dữ liệu nào bạn đang sử dụng cho lớp ảo?
DPSSpatial

Các lớp đầu vào là các tệp .shp, loại hình học đầu ra là 'đa giác'.
lu

Tôi không biết bạn có thể chạy các chức năng không gian (ST_ *) trên shapefiles! Thật tuyệt!!!
DPSSpatial

bạn đã thử xóa sbqry khỏi 'SELECT rowid as gid' ... Tôi tìm thấy một bài đăng khác với ví dụ như vậy.
kttii

'Rowid AS gid' hoạt động với các câu lệnh CHỌN đơn giản như tạo bộ đệm nhưng không phải với truy vấn con.
lu

Câu trả lời:


3

Trong PostGIS, nếu bạn chỉ muốn số hàng, bạn có thể làm điều này:

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 ()' dường như hoạt động trong PostGIS nhưng không hoạt động trong SpatiaLite (các lớp ảo QGIS).
lu

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

Thật không may, truy vấn chỉ trả về giá trị NULL.
lu mờ_by_the_moon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.