Я пытаюсь пересечь геометрию многоугольника в 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
Входные слои - это файлы .shp, тип выходной геометрии - «многоугольник».
—
eclipsed_by_the_moon
Я не знал, что вы можете запускать пространственные функции (ST_ *) для шейп-файлов! Замечательно!!!
—
DPSSpatial
Вы пытались удалить sbqry из «SELECT rowid as gid» ... Я нашел другой пост с таким примером.
—
kttii
rowid AS gid работает с простыми инструкциями SELECT, такими как создание буфера, но не с подзапросом.
—
eclipsed_by_the_moon