commit
86fac2a600
11
NEWS.md
11
NEWS.md
@ -1,3 +1,14 @@
|
|||||||
|
1.0.7 (2016-09-20)
|
||||||
|
|
||||||
|
__Bugfixes__
|
||||||
|
|
||||||
|
* `NULL` geometries or geometry IDs no longer result in an exception from any
|
||||||
|
augmentation functions ([#178](https://github.com/CartoDB/observatory-extension/issues/178))
|
||||||
|
|
||||||
|
__Improvements__
|
||||||
|
|
||||||
|
* Automatic tests work for Canada and Thailand
|
||||||
|
|
||||||
1.0.6 (2016-09-08)
|
1.0.6 (2016-09-08)
|
||||||
|
|
||||||
__Improvements__
|
__Improvements__
|
||||||
|
@ -179,7 +179,10 @@ BEGIN
|
|||||||
--raise notice 'Cannot find data table for boundary ID %, column_ids %, and time_span %', geometry_level, column_ids, time_span;
|
--raise notice 'Cannot find data table for boundary ID %, column_ids %, and time_span %', geometry_level, column_ids, time_span;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF ST_GeometryType(geom) = 'ST_Point'
|
IF geom IS NULL
|
||||||
|
THEN
|
||||||
|
results := NULL;
|
||||||
|
ELSIF ST_GeometryType(geom) = 'ST_Point'
|
||||||
THEN
|
THEN
|
||||||
--raise notice 'geom_table_name %, data_table_info %', geom_table_name, data_table_info::json[];
|
--raise notice 'geom_table_name %, data_table_info %', geom_table_name, data_table_info::json[];
|
||||||
results := cdb_observatory._OBS_GetPoints(geom,
|
results := cdb_observatory._OBS_GetPoints(geom,
|
||||||
@ -361,6 +364,10 @@ DECLARE
|
|||||||
sql TEXT;
|
sql TEXT;
|
||||||
numer_name TEXT;
|
numer_name TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
IF geom IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
geom := ST_SnapToGrid(geom, 0.000001);
|
geom := ST_SnapToGrid(geom, 0.000001);
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
@ -525,6 +532,9 @@ DECLARE
|
|||||||
measure_val NUMERIC;
|
measure_val NUMERIC;
|
||||||
data_geoid_colname TEXT;
|
data_geoid_colname TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
IF geom_ref IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
@ -573,6 +583,9 @@ DECLARE
|
|||||||
category_val TEXT;
|
category_val TEXT;
|
||||||
category_share NUMERIC;
|
category_share NUMERIC;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
IF geom IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
|
@ -66,12 +66,18 @@ t
|
|||||||
obs_getmeasure_bad_geometry
|
obs_getmeasure_bad_geometry
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getmeasure_null
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
obs_getcategory_point
|
obs_getcategory_point
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
obs_getcategory_polygon
|
obs_getcategory_polygon
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getcategory_null
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
obs_getpopulation
|
obs_getpopulation
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
@ -81,6 +87,9 @@ t
|
|||||||
obs_getpopulation_polygon_null_test
|
obs_getpopulation_polygon_null_test
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getpopulation_polygon_null_geom_test
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
obs_getuscensusmeasure_point_male_pop
|
obs_getuscensusmeasure_point_male_pop
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
@ -90,12 +99,18 @@ t
|
|||||||
obs_getuscensusmeasure_null
|
obs_getuscensusmeasure_null
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getuscensusmeasure_null_geom
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
obs_getuscensuscategory_point
|
obs_getuscensuscategory_point
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
obs_getuscensuscategory_polygon
|
obs_getuscensuscategory_polygon
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getuscensuscategory_null
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
obs_getmeasurebyid_cartodb_census_tract
|
obs_getmeasurebyid_cartodb_census_tract
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
@ -108,3 +123,6 @@ t
|
|||||||
obs_getmeasurebyid_nulls
|
obs_getmeasurebyid_nulls
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
obs_getmeasurebyid_null_id
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
|
@ -203,6 +203,11 @@ SELECT abs(cdb_observatory.OBS_GetMeasure(
|
|||||||
cdb_observatory._ProblemTestArea(),
|
cdb_observatory._ProblemTestArea(),
|
||||||
'us.census.acs.B01003001') - 96230.2929825897) / 96230.2929825897 < 0.001 As OBS_GetMeasure_bad_geometry;
|
'us.census.acs.B01003001') - 96230.2929825897) / 96230.2929825897 < 0.001 As OBS_GetMeasure_bad_geometry;
|
||||||
|
|
||||||
|
-- OBS_GetMeasure with NULL Input
|
||||||
|
SELECT cdb_observatory.OBS_GetMeasure(
|
||||||
|
NULL,
|
||||||
|
'us.census.acs.B01003001') IS NULL As OBS_GetMeasure_null;
|
||||||
|
|
||||||
-- Point-based OBS_GetCategory
|
-- Point-based OBS_GetCategory
|
||||||
SELECT cdb_observatory.OBS_GetCategory(
|
SELECT cdb_observatory.OBS_GetCategory(
|
||||||
cdb_observatory._TestPoint(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As OBS_GetCategory_point;
|
cdb_observatory._TestPoint(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As OBS_GetCategory_point;
|
||||||
@ -211,6 +216,10 @@ SELECT cdb_observatory.OBS_GetCategory(
|
|||||||
SELECT cdb_observatory.OBS_GetCategory(
|
SELECT cdb_observatory.OBS_GetCategory(
|
||||||
cdb_observatory._TestArea(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As obs_getcategory_polygon;
|
cdb_observatory._TestArea(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As obs_getcategory_polygon;
|
||||||
|
|
||||||
|
-- NULL Input OBS_GetCategory
|
||||||
|
SELECT cdb_observatory.OBS_GetCategory(
|
||||||
|
NULL, 'us.census.spielman_singleton_segments.X10') IS NULL As obs_getcategory_null;
|
||||||
|
|
||||||
-- Point-based OBS_GetPopulation, default normalization (area)
|
-- Point-based OBS_GetPopulation, default normalization (area)
|
||||||
SELECT (abs(OBS_GetPopulation - 10923.093200390833950) / 10923.093200390833950) < 0.001 As OBS_GetPopulation FROM
|
SELECT (abs(OBS_GetPopulation - 10923.093200390833950) / 10923.093200390833950) < 0.001 As OBS_GetPopulation FROM
|
||||||
cdb_observatory.OBS_GetPopulation(
|
cdb_observatory.OBS_GetPopulation(
|
||||||
@ -231,6 +240,13 @@ FROM
|
|||||||
cdb_observatory._TestArea(), NULL
|
cdb_observatory._TestArea(), NULL
|
||||||
) As m(obs_getpopulation_polygon_null);
|
) As m(obs_getpopulation_polygon_null);
|
||||||
|
|
||||||
|
-- Null input OBS_GetPopulation
|
||||||
|
SELECT obs_getpopulation_polygon_null_geom IS NULL As obs_getpopulation_polygon_null_geom_test
|
||||||
|
FROM
|
||||||
|
cdb_observatory.OBS_GetPopulation(
|
||||||
|
NULL, NULL
|
||||||
|
) As m(obs_getpopulation_polygon_null_geom);
|
||||||
|
|
||||||
-- Point-based OBS_GetUSCensusMeasure, default normalization (area)
|
-- Point-based OBS_GetUSCensusMeasure, default normalization (area)
|
||||||
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
|
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
|
||||||
cdb_observatory._testpoint(), 'male population') - 6789.5647735060920500) / 6789.5647735060920500) < 0.001 As obs_getuscensusmeasure_point_male_pop;
|
cdb_observatory._testpoint(), 'male population') - 6789.5647735060920500) / 6789.5647735060920500) < 0.001 As obs_getuscensusmeasure_point_male_pop;
|
||||||
@ -244,6 +260,11 @@ SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
|
|||||||
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
|
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
|
||||||
cdb_observatory._testarea(), 'male population', NULL) - 6043.63061042765) / 6043.63061042765) < 0.001 As obs_getuscensusmeasure_null;
|
cdb_observatory._testarea(), 'male population', NULL) - 6043.63061042765) / 6043.63061042765) < 0.001 As obs_getuscensusmeasure_null;
|
||||||
|
|
||||||
|
-- Poly-based OBS_GetUSCensusMeasure, Null input geom
|
||||||
|
SELECT cdb_observatory.obs_getuscensusmeasure(
|
||||||
|
NULL, 'male population', NULL) IS NULL As obs_getuscensusmeasure_null_geom;
|
||||||
|
|
||||||
|
|
||||||
-- Point-based OBS_GetUSCensusCategory
|
-- Point-based OBS_GetUSCensusCategory
|
||||||
SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
||||||
cdb_observatory._testpoint(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_point;
|
cdb_observatory._testpoint(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_point;
|
||||||
@ -252,6 +273,10 @@ SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
|||||||
SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
||||||
cdb_observatory._testarea(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_polygon;
|
cdb_observatory._testarea(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_polygon;
|
||||||
|
|
||||||
|
-- Null-input OBS_GetUSCensusCategory
|
||||||
|
SELECT cdb_observatory.OBS_GetUSCensusCategory(
|
||||||
|
NULL, 'Spielman-Singleton Segments: 10 Clusters') IS NULL As OBS_GetUSCensusCategory_null;
|
||||||
|
|
||||||
|
|
||||||
-- OBS_GetMeasureById tests
|
-- OBS_GetMeasureById tests
|
||||||
-- typical query
|
-- typical query
|
||||||
@ -285,3 +310,11 @@ SELECT cdb_observatory.OBS_GetMeasureById(
|
|||||||
'us.census.tiger.block_group',
|
'us.census.tiger.block_group',
|
||||||
'2010 - 2014'
|
'2010 - 2014'
|
||||||
) IS NULL As OBS_GetMeasureById_nulls;
|
) IS NULL As OBS_GetMeasureById_nulls;
|
||||||
|
|
||||||
|
-- NULL input id
|
||||||
|
SELECT cdb_observatory.OBS_GetMeasureById(
|
||||||
|
NULL,
|
||||||
|
'us.census.acs.B01003001',
|
||||||
|
'us.census.tiger.block_group',
|
||||||
|
'2010 - 2014'
|
||||||
|
) IS NULL As OBS_GetMeasureById_null_id;
|
||||||
|
@ -60,27 +60,30 @@ SKIP_COLUMNS = set([
|
|||||||
u'mx.inegi_columns.POB36',
|
u'mx.inegi_columns.POB36',
|
||||||
u'mx.inegi_columns.POB33',
|
u'mx.inegi_columns.POB33',
|
||||||
u'mx.inegi_columns.POB58',
|
u'mx.inegi_columns.POB58',
|
||||||
|
u'mx.inegi_columns.DISC4',
|
||||||
])
|
])
|
||||||
|
|
||||||
def default_geometry_id(column_id):
|
#def default_geometry_id(column_id):
|
||||||
'''
|
# '''
|
||||||
Returns default test point for the column_id.
|
# Returns default test point for the column_id.
|
||||||
'''
|
# '''
|
||||||
if column_id == 'whosonfirst.wof_disputed_geom':
|
# if column_id == 'whosonfirst.wof_disputed_geom':
|
||||||
return 'ST_SetSRID(ST_MakePoint(76.57, 33.78), 4326)'
|
# return 'ST_SetSRID(ST_MakePoint(76.57, 33.78), 4326)'
|
||||||
elif column_id == 'whosonfirst.wof_marinearea_geom':
|
# elif column_id == 'whosonfirst.wof_marinearea_geom':
|
||||||
return 'ST_SetSRID(ST_MakePoint(-68.47, 43.33), 4326)'
|
# return 'ST_SetSRID(ST_MakePoint(-68.47, 43.33), 4326)'
|
||||||
elif column_id in ('us.census.tiger.school_district_elementary',
|
# elif column_id in ('us.census.tiger.school_district_elementary',
|
||||||
'us.census.tiger.school_district_secondary',
|
# 'us.census.tiger.school_district_secondary',
|
||||||
'us.census.tiger.school_district_elementary_clipped',
|
# 'us.census.tiger.school_district_elementary_clipped',
|
||||||
'us.census.tiger.school_district_secondary_clipped'):
|
# 'us.census.tiger.school_district_secondary_clipped'):
|
||||||
return 'ST_SetSRID(ST_MakePoint(-73.7067, 40.7025), 4326)'
|
# return 'ST_SetSRID(ST_MakePoint(-73.7067, 40.7025), 4326)'
|
||||||
elif column_id.startswith('es.ine'):
|
# elif column_id.startswith('es.ine'):
|
||||||
return 'ST_SetSRID(ST_MakePoint(-2.51141249535454, 42.8226119029222), 4326)'
|
# return 'ST_SetSRID(ST_MakePoint(-2.51141249535454, 42.8226119029222), 4326)'
|
||||||
elif column_id.startswith('us.zillow'):
|
# elif column_id.startswith('us.zillow'):
|
||||||
return 'ST_SetSRID(ST_MakePoint(-81.3544048197256, 28.3305906291771), 4326)'
|
# return 'ST_SetSRID(ST_MakePoint(-81.3544048197256, 28.3305906291771), 4326)'
|
||||||
else:
|
# elif column_id.startswith('ca.'):
|
||||||
return 'ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)'
|
# return ''
|
||||||
|
# else:
|
||||||
|
# return 'ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)'
|
||||||
|
|
||||||
|
|
||||||
def default_point(column_id):
|
def default_point(column_id):
|
||||||
@ -107,6 +110,11 @@ def default_point(column_id):
|
|||||||
return 'ST_SetSRID(ST_MakePoint(-81.3544048197256, 28.3305906291771), 4326)'
|
return 'ST_SetSRID(ST_MakePoint(-81.3544048197256, 28.3305906291771), 4326)'
|
||||||
elif column_id.startswith('mx.'):
|
elif column_id.startswith('mx.'):
|
||||||
return 'ST_SetSRID(ST_MakePoint(-99.17019367218018, 19.41347699386547), 4326)'
|
return 'ST_SetSRID(ST_MakePoint(-99.17019367218018, 19.41347699386547), 4326)'
|
||||||
|
elif column_id.startswith('ca.'):
|
||||||
|
raise SkipTest('Skipping Canada until validation of data complete')
|
||||||
|
return 'ST_SetSRID(ST_MakePoint(-79.39716339111328, 43.65694347778308), 4326)'
|
||||||
|
elif column_id.startswith('th.'):
|
||||||
|
return 'ST_SetSRID(ST_MakePoint(100.49263000488281, 13.725377712079784), 4326)'
|
||||||
else:
|
else:
|
||||||
return 'ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)'
|
return 'ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)'
|
||||||
|
|
||||||
@ -116,7 +124,7 @@ def default_area(column_id):
|
|||||||
Returns default test area for the column_id
|
Returns default test area for the column_id
|
||||||
'''
|
'''
|
||||||
point = default_point(column_id)
|
point = default_point(column_id)
|
||||||
area = 'ST_Transform(ST_Buffer(ST_Transform({point}, 3857), 1000), 4326)'.format(
|
area = 'ST_Transform(ST_Buffer(ST_Transform({point}, 3857), 250), 4326)'.format(
|
||||||
point=point)
|
point=point)
|
||||||
return area
|
return area
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user