Here is working example of Martin's suggestion, for a job that sounds fairly similar: https://github.com/bcgov/harvest-restrictions/blob/main/sql/overlay.sql
> On Jul 7, 2025, at 4:45 PM, Martin Davis <mtncl...@gmail.com> wrote: > > I'd characterize your use case as "Overlay of overlapping polygonal > datasets". The basic state-of-the art for solving this using PostGIS is > still the solution Paul outlined in > https://blog.cleverelephant.ca/2019/07/postgis-overlays.html (or see > https://dr-jts.github.io/postgis-patterns/overlay/overlay.html#count-overlap-depth-in-set-of-polygons > for more ideas). > > Basically, you node and polygonize to make a flat coverage, and then join > back to the parent layers to determine attribution (including counts). > > Doing this in a single query might be slow for very large datasets like > yours, though. You might be able to partition your large dataset and run > smaller queries, possibly in parallel. Also, it might be better to overlay > the small layers first, and then overlay that with the big layer. And if you > don't care about overlaps in the big layer (or if there are none), that makes > it much easier, since you can process each big-layer polygon independently > (and ideally in parallel). > > On Mon, Jul 7, 2025 at 1:16 PM celati Laurent <laurent.cel...@gmail.com > <mailto:laurent.cel...@gmail.com>> wrote: >> Dear all, >> I'm working with QGIS and PostGIS. As input, I have 25 polygonal layers >> covering a large area (multicities area). One of these data is a very large >> dataset (1 million objects). The other 24 are much smaller (a maximum of a >> hundred objects). >> For information, I should point out that some of these polygonal datasets >> are in "multi-part features" mode and others in "single-part features" mode. >> I imagine this may ultimately have a slight impact on the method/result. >> These 25 polygonal .shp files have highly variable, >> non-homogeneous/non-harmonized data structures. Each layer has a "data_id" >> field that allows to define/link/reference, for each feature, its >> membership in the layer. For example, all values in the "data_id" field for >> the first layer have a value of '1'. For the second layer, the field values >> are '2', etc. >> >> My goal would be to be able to apply/adapt the existing QGIS geoprocessing >> tool called "Multiple Union": >> https://docs.qgis.org/3.40/en/docs/user_manual/processing_algs/qgis/vectoroverlay.html#union-multiple >> >> Below a screenshot from the QGIS documentation : >> >> <image.png> >> >> My goal would be to have an output file: >> >> Which would be the result of the union/overlay of the 25 input data. To use >> the terms of the QGIS documentation, the processing should check for >> overlaps between features within the 25 layers and create separate features >> for the overlapping and non-overlapping parts. This "multiple union" >> geoprocessing seems interesting for my goal where there is no overlap (a, >> NULL; b, NULL; c, NULL). >> For areas where there is an overlap, the QGIS union geoprocessing creates as >> many identical overlapping features as there are features participating in >> this overlap. This doesn't bother me. But since, ultimately, I'd like a >> field in the result/output file to allow, for each feature, to retrieve the >> list of input layers that participate/contribute to this result feature (in >> order to retrieve the origin/source of the data). I was wondering/thinking >> it might be better if only one feature was created per overlapping area? >> I'd like a field in the result file to allow, for each feature, to retrieve >> the list of input layers that participate/contribute to this result feature. >> In order to retrieve the origin/source of the data. >> Ideally, a field that allows you to retrieve the number (COUNT) of layers >> that contribute to this feature (at least 1 layer, at most 25 layers). >> Regarding the non-geometric attributes/fields, I would like to be able to >> specify the selection/define the list of fields I ultimately want to keep. I >> don't want to keep all of the fields, but rather just some of the fields for >> each of the 25 input layers. >> >> I imagine it's recommended to do this processing in PostGIS rather than >> QGIS? I can, if necessary, import my 25 SHP files into a PostGIS database. I >> also imagine it's important to keep in mind that the "multi-part features" / >> "single-part pieces/features" mode of the input layers can affect the >> result. If I'm using a PostGIS query, I was thinking it might be helpful to >> force all features to be in single-part mode (using the PostGIS 'st_dump' >> function?). >> >> In advance, Thanks so much for your help, guidance. >>