Referring to the parent layer with aggregate functions in QGIS Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Dissolve ploygons in QGIS or Grass to new polygons of defined population sizesWhat are QGIS equivalent functions for ArcPy's Update/Delete Row/Field?How to compute percent of a fieldIs there a quick way to clear all attributes from a layer but leave the polygons in place?Proportional aggregation of census data between layers in QGIS?Creating a Vineyard Map with QGIS using FishnetQGIS Print Composer: How can I get the sum of the canopy areas that are displayed on the map?Auto-populate “from” and “to” attribute fields of line layer with Unique IDs of points from point layer?Calculating point layer values aggregated by sub-polygons in QGIS 2Automatic numbering of attribute table in QGIS?
Restricting the Object Type for the get method in java HashMap
Which types of prepositional phrase is "toward its employees" in Philosophy guiding the organization's policies towards its employees is not bad?
Is there night in Alpha Complex?
How do I find my Spellcasting Ability for my D&D character?
Is there a spell that can create a permanent fire?
Is there a verb for listening stealthily?
Can I take recommendation from someone I met at a conference?
Cost function for LTI system identification
Can gravitational waves pass through a black hole?
Why does BitLocker not use RSA?
How does Billy Russo acquire his 'Jigsaw' mask?
No Invitation for Tourist Visa, But i want to visit
Fit odd number of triplets in a measure?
calculator's angle answer for trig ratios that can work in more than 1 quadrant on the unit circle
Should man-made satellites feature an intelligent inverted "cow catcher"?
Improvising over quartal voicings
How to get a flat-head nail out of a piece of wood?
draw a pulley system
Short story about astronauts fertilizing soil with their own bodies
Understanding piped commands in GNU/Linux
Where did Ptolemy compare the Earth to the distance of fixed stars?
The Nth Gryphon Number
Pointing to problems without suggesting solutions
Inverse square law not accurate for non-point masses?
Referring to the parent layer with aggregate functions in QGIS
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Dissolve ploygons in QGIS or Grass to new polygons of defined population sizesWhat are QGIS equivalent functions for ArcPy's Update/Delete Row/Field?How to compute percent of a fieldIs there a quick way to clear all attributes from a layer but leave the polygons in place?Proportional aggregation of census data between layers in QGIS?Creating a Vineyard Map with QGIS using FishnetQGIS Print Composer: How can I get the sum of the canopy areas that are displayed on the map?Auto-populate “from” and “to” attribute fields of line layer with Unique IDs of points from point layer?Calculating point layer values aggregated by sub-polygons in QGIS 2Automatic numbering of attribute table in QGIS?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.
The formula is;
aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)
Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.
So far, I've tried replacing "a field from the parent layer" with;
@parent "field"
"field"@parent
"field@parent"
"field(@parent)"
...and probably a half-dozen other combinations of parentheses, quotes and orders.
The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?
Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.
In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.
I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.
In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.
qgis aggregation
add a comment |
I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.
The formula is;
aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)
Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.
So far, I've tried replacing "a field from the parent layer" with;
@parent "field"
"field"@parent
"field@parent"
"field(@parent)"
...and probably a half-dozen other combinations of parentheses, quotes and orders.
The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?
Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.
In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.
I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.
In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.
qgis aggregation
Withinaggregate()
, if you call the first partlayer:=my parent layer
instead ofchild
, it will become more apparent and easily understood. You can access to any parent field just by" field "
without@parent
.
– Kazuhito
Oct 25 '18 at 9:30
add a comment |
I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.
The formula is;
aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)
Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.
So far, I've tried replacing "a field from the parent layer" with;
@parent "field"
"field"@parent
"field@parent"
"field(@parent)"
...and probably a half-dozen other combinations of parentheses, quotes and orders.
The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?
Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.
In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.
I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.
In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.
qgis aggregation
I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.
The formula is;
aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)
Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.
So far, I've tried replacing "a field from the parent layer" with;
@parent "field"
"field"@parent
"field@parent"
"field(@parent)"
...and probably a half-dozen other combinations of parentheses, quotes and orders.
The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?
Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.
In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.
I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.
In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.
qgis aggregation
qgis aggregation
edited Oct 24 '18 at 16:41
Isaacson
asked Oct 24 '18 at 15:38
IsaacsonIsaacson
491313
491313
Withinaggregate()
, if you call the first partlayer:=my parent layer
instead ofchild
, it will become more apparent and easily understood. You can access to any parent field just by" field "
without@parent
.
– Kazuhito
Oct 25 '18 at 9:30
add a comment |
Withinaggregate()
, if you call the first partlayer:=my parent layer
instead ofchild
, it will become more apparent and easily understood. You can access to any parent field just by" field "
without@parent
.
– Kazuhito
Oct 25 '18 at 9:30
Within
aggregate()
, if you call the first part layer:=my parent layer
instead of child
, it will become more apparent and easily understood. You can access to any parent field just by " field "
without @parent
.– Kazuhito
Oct 25 '18 at 9:30
Within
aggregate()
, if you call the first part layer:=my parent layer
instead of child
, it will become more apparent and easily understood. You can access to any parent field just by " field "
without @parent
.– Kazuhito
Oct 25 '18 at 9:30
add a comment |
1 Answer
1
active
oldest
votes
I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)
).
How about attribute()
? You could try filter:=attribute(@parent,'field')>1000
- keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.
EDIT: This only works in QGIS 3.x as @parent is not available in 2.x
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f300045%2freferring-to-the-parent-layer-with-aggregate-functions-in-qgis%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)
).
How about attribute()
? You could try filter:=attribute(@parent,'field')>1000
- keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.
EDIT: This only works in QGIS 3.x as @parent is not available in 2.x
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
add a comment |
I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)
).
How about attribute()
? You could try filter:=attribute(@parent,'field')>1000
- keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.
EDIT: This only works in QGIS 3.x as @parent is not available in 2.x
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
add a comment |
I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)
).
How about attribute()
? You could try filter:=attribute(@parent,'field')>1000
- keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.
EDIT: This only works in QGIS 3.x as @parent is not available in 2.x
I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)
).
How about attribute()
? You could try filter:=attribute(@parent,'field')>1000
- keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.
EDIT: This only works in QGIS 3.x as @parent is not available in 2.x
edited Apr 13 at 11:52
answered Oct 25 '18 at 6:33
she_weedsshe_weeds
1,479316
1,479316
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
add a comment |
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
1
1
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.
– Isaacson
Oct 25 '18 at 6:44
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
using QGIS 3.6 it works
– PieterB
Apr 13 at 11:09
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.
– she_weeds
Apr 13 at 11:51
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f300045%2freferring-to-the-parent-layer-with-aggregate-functions-in-qgis%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Within
aggregate()
, if you call the first partlayer:=my parent layer
instead ofchild
, it will become more apparent and easily understood. You can access to any parent field just by" field "
without@parent
.– Kazuhito
Oct 25 '18 at 9:30