QGIS sanal katmanlarını kullanarak çokgen kavşağı


10

Sanal bir katman kullanarak QGIS çokgen geometrileri kesişmeye çalışıyorum:

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;

Maalesef, sbqry.rowid AS giddeğerleri otomatik olarak artırmak yerine NULL döndürür.

resim açıklamasını buraya girin resim açıklamasını buraya girin

'Gid' adında benzersiz bir tanımlayıcı sütunun nasıl oluşturulacağını bilen var mı? Bildiğim kadarıyla sanal katmanlar SQLite / Spatialite dayanmaktadır.


Sanal katman için hangi veri türünü kullanıyorsunuz?
DPSSpatial

Giriş katmanları .shp dosyalarıdır, çıkış geometrisi türü 'çokgen'dir.
eclipsed_by_the_moon

Şekil dosyalarında uzamsal işlevler (ST_ *) çalıştırabileceğinizi bilmiyordum! Bu harika!!!
DPSSpatial

sbqry 'SELECT rowid gid' den kaldırmayı denediniz mi ... Böyle bir örnekle başka bir yazı buldum.
kttii

'rowid AS gid', arabellek oluşturma gibi basit SELECT deyimleriyle çalışır, ancak alt sorgu ile çalışmaz.
eclipsed_by_the_moon

Yanıtlar:


3

PostGIS'te, yalnızca satır numarasını istiyorsanız bunu yapabilirsiniz:

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'de çalışıyor, ancak SpatiaLite (QGIS sanal katmanları) içinde çalışmıyor gibi görünüyor.
eclipsed_by_the_moon

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

Ne yazık ki, sorgu yalnızca NULL değerleri döndürür.
eclipsed_by_the_moon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.