added function overload with subqueries input
This commit is contained in:
parent
73d38bbbaa
commit
5183f5ff92
@ -1,11 +1,11 @@
|
|||||||
## Gravity Model
|
## Gravity Model
|
||||||
|
|
||||||
### CDB_Gravity(t_id bigint[], t_geom geometry[], t_weight numeric[], s_id bigint[], s_geom geometry[], s_pop numeric[], target bigint, radius integer, minval numeric DEFAULT -10e307)
|
|
||||||
|
|
||||||
Gravity Models are derived from Newton's Law of Gravity and are used to predict the interaction between a group of populated areas (sources) and a specific target among a group of potential targets, in terms of an attraction factor (weight)
|
Gravity Models are derived from Newton's Law of Gravity and are used to predict the interaction between a group of populated areas (sources) and a specific target among a group of potential targets, in terms of an attraction factor (weight)
|
||||||
|
|
||||||
**CDB_Gravity** is based on the model defined in *Huff's Law of Shopper attraction (1963)*
|
**CDB_Gravity** is based on the model defined in *Huff's Law of Shopper attraction (1963)*
|
||||||
|
|
||||||
|
### CDB_Gravity(t_id bigint[], t_geom geometry[], t_weight numeric[], s_id bigint[], s_geom geometry[], s_pop numeric[], target bigint, radius integer, minval numeric DEFAULT -10e307)
|
||||||
|
|
||||||
#### Arguments
|
#### Arguments
|
||||||
|
|
||||||
| Name | Type | Description |
|
| Name | Type | Description |
|
||||||
@ -20,8 +20,22 @@ Gravity Models are derived from Newton's Law of Gravity and are used to predict
|
|||||||
| radius | integer | Radius in meters around the target under study that will be taken into account|
|
| radius | integer | Radius in meters around the target under study that will be taken into account|
|
||||||
| minval (optional) | numeric | Lowest accepted value of weight, defaults to numeric min_value |
|
| minval (optional) | numeric | Lowest accepted value of weight, defaults to numeric min_value |
|
||||||
|
|
||||||
|
### CDB_Gravity( target_query text, weight_column text, source_query text, pop_column text, target bigint, radius integer, minval numeric DEFAULT -10e307)
|
||||||
|
|
||||||
#### Returns
|
#### Arguments
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
|------|------|-------------|
|
||||||
|
| target_query | text | Query that defines targets |
|
||||||
|
| weight_column | text | Column name of weights |
|
||||||
|
| source_query | text | Query that defines sources |
|
||||||
|
| pop_column | text | Column name of population |
|
||||||
|
| target | bigint | cartodb_id of the target under study |
|
||||||
|
| radius | integer | Radius in meters around the target under study that will be taken into account|
|
||||||
|
| minval (optional) | numeric | Lowest accepted value of weight, defaults to numeric min_value |
|
||||||
|
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
|
||||||
| Column Name | Type | Description |
|
| Column Name | Type | Description |
|
||||||
|-------------|------|-------------|
|
|-------------|------|-------------|
|
||||||
|
@ -1,3 +1,34 @@
|
|||||||
|
CREATE OR REPLACE FUNCTION CDB_Gravity(
|
||||||
|
IN target_query text,
|
||||||
|
IN weight_column text,
|
||||||
|
IN source_query text,
|
||||||
|
IN pop_column text,
|
||||||
|
IN target bigint,
|
||||||
|
IN radius integer,
|
||||||
|
IN minval numeric DEFAULT -10e307
|
||||||
|
)
|
||||||
|
RETURNS TABLE(
|
||||||
|
the_geom geometry,
|
||||||
|
source_id bigint,
|
||||||
|
target_id bigint,
|
||||||
|
dist numeric,
|
||||||
|
h numeric,
|
||||||
|
hpop numeric) AS $$
|
||||||
|
DECLARE
|
||||||
|
t_id bigint[];
|
||||||
|
t_geom geometry[];
|
||||||
|
t_weight numeric[];
|
||||||
|
s_id bigint[];
|
||||||
|
s_geom geometry[];
|
||||||
|
s_pop numeric[];
|
||||||
|
BEGIN
|
||||||
|
EXECUTE 'WITH foo as('+target_query+') SELECT array_agg(cartodb_id), array_agg(the_geom), array_agg(' || weight_column || ') FROM foo' INTO t_id, t_geom, t_weight;
|
||||||
|
EXECUTE 'WITH foo as('+source_query+') SELECT array_agg(cartodb_id), array_agg(the_geom), array_agg(' || pop_column || ') FROM foo' INTO s_id, s_geom, s_pop;
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT g.* FROM t, s, CDB_Gravity(t_id, t_geom, t_weight, s_id, s_geom, s_pop, target, radius, minval) g;
|
||||||
|
END;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION CDB_Gravity(
|
CREATE OR REPLACE FUNCTION CDB_Gravity(
|
||||||
IN t_id bigint[],
|
IN t_id bigint[],
|
||||||
IN t_geom geometry[],
|
IN t_geom geometry[],
|
||||||
|
Loading…
Reference in New Issue
Block a user