From 44e8205f61653bfc71216c04b5a510de9dbe5d4d Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 15:59:41 +1200 Subject: [PATCH 01/19] feat: combine town_city table into suburb_locality table --- .../buildings_reference/drop_town_city.sql | 10 ++ .../functions/town_city.sql | 156 +---------------- .../functions/town_city@v4.0.0-dev1.sql | 158 ++++++++++++++++++ .../update_suburb_locality_name_column.sql | 14 -- .../update_suburb_locality_table.sql | 22 +++ .../buildings_reference/drop_town_city.sql | 28 ++++ .../functions/town_city.sql | 155 ++++++++++++++++- .../functions/town_city@v4.0.0-dev1.sql | 13 ++ ...n.sql => update_suburb_locality_table.sql} | 3 +- db/sql/sqitch.plan | 4 +- .../buildings_reference/drop_town_city.sql | 32 ++++ .../functions/town_city.sql | 44 ++++- .../functions/town_city@v4.0.0-dev1.sql | 13 ++ ...n.sql => update_suburb_locality_table.sql} | 2 +- 14 files changed, 476 insertions(+), 178 deletions(-) create mode 100644 db/sql/deploy/buildings_reference/drop_town_city.sql create mode 100644 db/sql/deploy/buildings_reference/functions/town_city@v4.0.0-dev1.sql delete mode 100644 db/sql/deploy/buildings_reference/update_suburb_locality_name_column.sql create mode 100644 db/sql/deploy/buildings_reference/update_suburb_locality_table.sql create mode 100644 db/sql/revert/buildings_reference/drop_town_city.sql create mode 100644 db/sql/revert/buildings_reference/functions/town_city@v4.0.0-dev1.sql rename db/sql/revert/buildings_reference/{update_suburb_locality_name_column.sql => update_suburb_locality_table.sql} (74%) create mode 100644 db/sql/verify/buildings_reference/drop_town_city.sql create mode 100644 db/sql/verify/buildings_reference/functions/town_city@v4.0.0-dev1.sql rename db/sql/verify/buildings_reference/{update_suburb_locality_name_column.sql => update_suburb_locality_table.sql} (82%) diff --git a/db/sql/deploy/buildings_reference/drop_town_city.sql b/db/sql/deploy/buildings_reference/drop_town_city.sql new file mode 100644 index 00000000..c38daf78 --- /dev/null +++ b/db/sql/deploy/buildings_reference/drop_town_city.sql @@ -0,0 +1,10 @@ +-- Deploy nz-buildings:buildings_reference/drop_town_city_table to pg + +BEGIN; + +DROP TABLE buildings_reference.town_city; + +ALTER TABLE buildings_reference.reference_update_log +DROP COLUMN town_city; + +COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/town_city.sql b/db/sql/deploy/buildings_reference/functions/town_city.sql index 7e955adf..7c7b9db6 100644 --- a/db/sql/deploy/buildings_reference/functions/town_city.sql +++ b/db/sql/deploy/buildings_reference/functions/town_city.sql @@ -2,157 +2,9 @@ BEGIN; --------------------------------------------- --- buildings_reference.town_city - --- Functions - --- town_city_intersect_polygon (id of the town/city that has the most overlap) - -- params: p_polygon_geometry geometry - -- return: integer town_city_id - --- town_city_delete_removed_areas (removed from table areas not in admin_byds) - -- params: - -- return: integer list of town_cities deleted - --- town_city_insert_new_areas (insert new areas from admin_bdys) - -- params: - -- return: integer list of outlines inserted - --- town_city_update_areas(update geometries based on those in admin_bdys) - -- params: - -- return: integer list of areas updated - --------------------------------------------- - --- Functions: - --- town_city_intersect_polygon (id of the town/city that has the most overlap) - -- params: p_polygon_geometry geometry - -- return: integer town_city_id - -CREATE OR REPLACE FUNCTION buildings_reference.town_city_intersect_polygon( - p_polygon_geometry geometry -) -RETURNS integer AS -$$ - - SELECT town_city_id - FROM buildings_reference.town_city - WHERE ST_Intersects(shape, p_polygon_geometry) - ORDER BY ST_Area(ST_Intersection(p_polygon_geometry, shape)) DESC - LIMIT 1; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.town_city_intersect_polygon(geometry) IS -'Return id of town/city with most overlap'; - --- update town_city table functions: - --- town_city_delete_removed_areas (removed from table areas not in admin_byds) - -- params: - -- return: integer list of town_cities deleted - -CREATE OR REPLACE FUNCTION buildings_reference.town_city_delete_removed_areas() -RETURNS integer[] AS -$$ - - WITH delete_town AS ( - DELETE FROM buildings_reference.town_city - WHERE external_city_id NOT IN ( - SELECT DISTINCT city_id - FROM admin_bdys.nz_locality - WHERE city_id IS NOT NULL - ) - RETURNING * - ) - SELECT ARRAY(SELECT town_city_id FROM delete_town); - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.town_city_delete_removed_areas() IS -'Function to delete from the buildings_reference town city table the areas that have been removed in the admin_bdys schema'; - --- town_city_insert_new_areas (insert new areas from admin_bdys) - -- params: - -- return: integer list of outlines inserted - -CREATE OR REPLACE FUNCTION buildings_reference.town_city_insert_new_areas() -RETURNS integer[] AS -$$ - - WITH insert_town AS ( - INSERT INTO buildings_reference.town_city (external_city_id, name, shape) - SELECT - subquery.city_id - , subquery.city_name - , ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) - FROM ( - SELECT - city_id - , city_name - , ST_Multi(ST_Union(nzl.shape)) AS shape - FROM admin_bdys.nz_locality AS nzl - WHERE city_id != 0 - AND city_id NOT IN ( - SELECT external_city_id - FROM buildings_reference.town_city - ) - GROUP BY city_id, city_name - ) AS subquery - RETURNING * - ) - SELECT ARRAY( - SELECT town_city_id - FROM insert_town - ); - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.town_city_insert_new_areas() IS -'Function to insert from the admin_bdys schema new areas not in the buildings_reference town city table'; - --- town_city_update_areas(update geometries based on those in admin_bdys) - -- params: - -- return: integer list of areas updated - -CREATE OR REPLACE FUNCTION buildings_reference.town_city_update_areas() -RETURNS integer[] AS -$$ - - WITH update_town AS ( - UPDATE buildings_reference.town_city - SET - name = subquery.city_name - , shape = ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) - FROM ( - SELECT - city_id - , city_name - , ST_Multi(ST_Union(nzl.shape)) AS shape - FROM admin_bdys.nz_locality AS nzl - WHERE city_id != 0 - GROUP BY city_id, city_name - ) AS subquery - WHERE buildings_reference.town_city.external_city_id = subquery.city_id - AND ( NOT ST_Equals(ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193), buildings_reference.town_city.shape) - OR city_name != buildings_reference.town_city.name - ) - RETURNING * - ) - SELECT ARRAY( - SELECT town_city_id - FROM update_town - ); - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.town_city_update_areas() IS -'Function to update the id, names and geometries of the town city'; +DROP FUNCTION IF EXISTS buildings_reference.town_city_intersect_polygon(geometry); +DROP FUNCTION IF EXISTS buildings_reference.town_city_delete_removed_areas(); +DROP FUNCTION IF EXISTS buildings_reference.town_city_insert_new_areas(); +DROP FUNCTION IF EXISTS buildings_reference.town_city_update_areas(); COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/town_city@v4.0.0-dev1.sql b/db/sql/deploy/buildings_reference/functions/town_city@v4.0.0-dev1.sql new file mode 100644 index 00000000..7e955adf --- /dev/null +++ b/db/sql/deploy/buildings_reference/functions/town_city@v4.0.0-dev1.sql @@ -0,0 +1,158 @@ +-- Deploy nz-buildings:buildings_reference/functions/town_city to pg + +BEGIN; + +-------------------------------------------- +-- buildings_reference.town_city + +-- Functions + +-- town_city_intersect_polygon (id of the town/city that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer town_city_id + +-- town_city_delete_removed_areas (removed from table areas not in admin_byds) + -- params: + -- return: integer list of town_cities deleted + +-- town_city_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of outlines inserted + +-- town_city_update_areas(update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +-------------------------------------------- + +-- Functions: + +-- town_city_intersect_polygon (id of the town/city that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer town_city_id + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT town_city_id + FROM buildings_reference.town_city + WHERE ST_Intersects(shape, p_polygon_geometry) + ORDER BY ST_Area(ST_Intersection(p_polygon_geometry, shape)) DESC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_intersect_polygon(geometry) IS +'Return id of town/city with most overlap'; + +-- update town_city table functions: + +-- town_city_delete_removed_areas (removed from table areas not in admin_byds) + -- params: + -- return: integer list of town_cities deleted + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_delete_removed_areas() +RETURNS integer[] AS +$$ + + WITH delete_town AS ( + DELETE FROM buildings_reference.town_city + WHERE external_city_id NOT IN ( + SELECT DISTINCT city_id + FROM admin_bdys.nz_locality + WHERE city_id IS NOT NULL + ) + RETURNING * + ) + SELECT ARRAY(SELECT town_city_id FROM delete_town); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_delete_removed_areas() IS +'Function to delete from the buildings_reference town city table the areas that have been removed in the admin_bdys schema'; + +-- town_city_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of outlines inserted + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_insert_new_areas() +RETURNS integer[] AS +$$ + + WITH insert_town AS ( + INSERT INTO buildings_reference.town_city (external_city_id, name, shape) + SELECT + subquery.city_id + , subquery.city_name + , ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) + FROM ( + SELECT + city_id + , city_name + , ST_Multi(ST_Union(nzl.shape)) AS shape + FROM admin_bdys.nz_locality AS nzl + WHERE city_id != 0 + AND city_id NOT IN ( + SELECT external_city_id + FROM buildings_reference.town_city + ) + GROUP BY city_id, city_name + ) AS subquery + RETURNING * + ) + SELECT ARRAY( + SELECT town_city_id + FROM insert_town + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_insert_new_areas() IS +'Function to insert from the admin_bdys schema new areas not in the buildings_reference town city table'; + +-- town_city_update_areas(update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_update_areas() +RETURNS integer[] AS +$$ + + WITH update_town AS ( + UPDATE buildings_reference.town_city + SET + name = subquery.city_name + , shape = ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) + FROM ( + SELECT + city_id + , city_name + , ST_Multi(ST_Union(nzl.shape)) AS shape + FROM admin_bdys.nz_locality AS nzl + WHERE city_id != 0 + GROUP BY city_id, city_name + ) AS subquery + WHERE buildings_reference.town_city.external_city_id = subquery.city_id + AND ( NOT ST_Equals(ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193), buildings_reference.town_city.shape) + OR city_name != buildings_reference.town_city.name + ) + RETURNING * + ) + SELECT ARRAY( + SELECT town_city_id + FROM update_town + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_update_areas() IS +'Function to update the id, names and geometries of the town city'; + +COMMIT; diff --git a/db/sql/deploy/buildings_reference/update_suburb_locality_name_column.sql b/db/sql/deploy/buildings_reference/update_suburb_locality_name_column.sql deleted file mode 100644 index 935c15cb..00000000 --- a/db/sql/deploy/buildings_reference/update_suburb_locality_name_column.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Deploy nz-buildings:buildings_reference/update_suburb_locality_name_column to pg - -BEGIN; - -ALTER TABLE buildings_reference.suburb_locality -ADD COLUMN name varchar(100); - -UPDATE buildings_reference.suburb_locality -SET name = COALESCE(suburb_4th, suburb_3rd, suburb_2nd, suburb_1st); - -ALTER TABLE buildings_reference.suburb_locality -ALTER COLUMN name SET NOT NULL; - -COMMIT; diff --git a/db/sql/deploy/buildings_reference/update_suburb_locality_table.sql b/db/sql/deploy/buildings_reference/update_suburb_locality_table.sql new file mode 100644 index 00000000..bfad05a0 --- /dev/null +++ b/db/sql/deploy/buildings_reference/update_suburb_locality_table.sql @@ -0,0 +1,22 @@ +-- Deploy nz-buildings:buildings_reference/update_suburb_locality_name_column to pg + +BEGIN; + +ALTER TABLE buildings_reference.suburb_locality +ADD COLUMN suburb_locality varchar(100), +ADD COLUMN town_city varchar(100); + +-- update data for new column suburb_locality +UPDATE buildings_reference.suburb_locality +SET suburb_locality = COALESCE(suburb_4th, suburb_3rd, suburb_2nd, suburb_1st); + +ALTER TABLE buildings_reference.suburb_locality +ALTER COLUMN suburb_locality SET NOT NULL; + +-- update data for new column town_city +UPDATE buildings_reference.suburb_locality +SET town_city = town_city.name +FROM buildings_reference.town_city +WHERE ST_Within(suburb_locality.shape, ST_Buffer(town_city.shape, 1)); + +COMMIT; diff --git a/db/sql/revert/buildings_reference/drop_town_city.sql b/db/sql/revert/buildings_reference/drop_town_city.sql new file mode 100644 index 00000000..9f524f68 --- /dev/null +++ b/db/sql/revert/buildings_reference/drop_town_city.sql @@ -0,0 +1,28 @@ +-- Revert nz-buildings:buildings_reference/drop_town_city_table from pg + +BEGIN; + +CREATE TABLE IF NOT EXISTS buildings_reference.town_city ( + town_city_id serial PRIMARY KEY + , external_city_id integer + , name character varying(60) + , shape public.geometry(MultiPolygon, 2193) +); + +CREATE INDEX shx_town_city + ON buildings_reference.town_city USING gist (shape); + +COMMENT ON TABLE buildings_reference.town_city IS +'towns/cities of New Zealand'; + +COMMENT ON COLUMN buildings_reference.town_city.town_city_id IS +'Unique identifier for town_city.'; +COMMENT ON COLUMN buildings_reference.town_city.external_city_id IS +'The id given by the external source.'; +COMMENT ON COLUMN buildings_reference.town_city.name IS +'The name of the town/city.'; + +ALTER TABLE buildings_reference.reference_update_log +ADD COLUMN town_city boolean; + +COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/town_city.sql b/db/sql/revert/buildings_reference/functions/town_city.sql index dd2131cc..7e955adf 100644 --- a/db/sql/revert/buildings_reference/functions/town_city.sql +++ b/db/sql/revert/buildings_reference/functions/town_city.sql @@ -1,13 +1,158 @@ --- Revert nz-buildings:buildings_reference/functions/town_city from pg +-- Deploy nz-buildings:buildings_reference/functions/town_city to pg BEGIN; -DROP FUNCTION buildings_reference.town_city_intersect_polygon(geometry); +-------------------------------------------- +-- buildings_reference.town_city -DROP FUNCTION buildings_reference.town_city_delete_removed_areas(); +-- Functions -DROP FUNCTION buildings_reference.town_city_insert_new_areas(); +-- town_city_intersect_polygon (id of the town/city that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer town_city_id -DROP FUNCTION buildings_reference.town_city_update_areas(); +-- town_city_delete_removed_areas (removed from table areas not in admin_byds) + -- params: + -- return: integer list of town_cities deleted + +-- town_city_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of outlines inserted + +-- town_city_update_areas(update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +-------------------------------------------- + +-- Functions: + +-- town_city_intersect_polygon (id of the town/city that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer town_city_id + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT town_city_id + FROM buildings_reference.town_city + WHERE ST_Intersects(shape, p_polygon_geometry) + ORDER BY ST_Area(ST_Intersection(p_polygon_geometry, shape)) DESC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_intersect_polygon(geometry) IS +'Return id of town/city with most overlap'; + +-- update town_city table functions: + +-- town_city_delete_removed_areas (removed from table areas not in admin_byds) + -- params: + -- return: integer list of town_cities deleted + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_delete_removed_areas() +RETURNS integer[] AS +$$ + + WITH delete_town AS ( + DELETE FROM buildings_reference.town_city + WHERE external_city_id NOT IN ( + SELECT DISTINCT city_id + FROM admin_bdys.nz_locality + WHERE city_id IS NOT NULL + ) + RETURNING * + ) + SELECT ARRAY(SELECT town_city_id FROM delete_town); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_delete_removed_areas() IS +'Function to delete from the buildings_reference town city table the areas that have been removed in the admin_bdys schema'; + +-- town_city_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of outlines inserted + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_insert_new_areas() +RETURNS integer[] AS +$$ + + WITH insert_town AS ( + INSERT INTO buildings_reference.town_city (external_city_id, name, shape) + SELECT + subquery.city_id + , subquery.city_name + , ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) + FROM ( + SELECT + city_id + , city_name + , ST_Multi(ST_Union(nzl.shape)) AS shape + FROM admin_bdys.nz_locality AS nzl + WHERE city_id != 0 + AND city_id NOT IN ( + SELECT external_city_id + FROM buildings_reference.town_city + ) + GROUP BY city_id, city_name + ) AS subquery + RETURNING * + ) + SELECT ARRAY( + SELECT town_city_id + FROM insert_town + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_insert_new_areas() IS +'Function to insert from the admin_bdys schema new areas not in the buildings_reference town city table'; + +-- town_city_update_areas(update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +CREATE OR REPLACE FUNCTION buildings_reference.town_city_update_areas() +RETURNS integer[] AS +$$ + + WITH update_town AS ( + UPDATE buildings_reference.town_city + SET + name = subquery.city_name + , shape = ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193) + FROM ( + SELECT + city_id + , city_name + , ST_Multi(ST_Union(nzl.shape)) AS shape + FROM admin_bdys.nz_locality AS nzl + WHERE city_id != 0 + GROUP BY city_id, city_name + ) AS subquery + WHERE buildings_reference.town_city.external_city_id = subquery.city_id + AND ( NOT ST_Equals(ST_SetSRID(ST_Transform(subquery.shape, 2193), 2193), buildings_reference.town_city.shape) + OR city_name != buildings_reference.town_city.name + ) + RETURNING * + ) + SELECT ARRAY( + SELECT town_city_id + FROM update_town + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.town_city_update_areas() IS +'Function to update the id, names and geometries of the town city'; COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/town_city@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/town_city@v4.0.0-dev1.sql new file mode 100644 index 00000000..dd2131cc --- /dev/null +++ b/db/sql/revert/buildings_reference/functions/town_city@v4.0.0-dev1.sql @@ -0,0 +1,13 @@ +-- Revert nz-buildings:buildings_reference/functions/town_city from pg + +BEGIN; + +DROP FUNCTION buildings_reference.town_city_intersect_polygon(geometry); + +DROP FUNCTION buildings_reference.town_city_delete_removed_areas(); + +DROP FUNCTION buildings_reference.town_city_insert_new_areas(); + +DROP FUNCTION buildings_reference.town_city_update_areas(); + +COMMIT; diff --git a/db/sql/revert/buildings_reference/update_suburb_locality_name_column.sql b/db/sql/revert/buildings_reference/update_suburb_locality_table.sql similarity index 74% rename from db/sql/revert/buildings_reference/update_suburb_locality_name_column.sql rename to db/sql/revert/buildings_reference/update_suburb_locality_table.sql index cde5648c..aa156b88 100644 --- a/db/sql/revert/buildings_reference/update_suburb_locality_name_column.sql +++ b/db/sql/revert/buildings_reference/update_suburb_locality_table.sql @@ -3,6 +3,7 @@ BEGIN; ALTER TABLE buildings_reference.suburb_locality -DROP COLUMN name; +DROP COLUMN suburb_locality, +DROP COLUMN town_city; COMMIT; diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index bda98614..795dbe14 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -95,7 +95,9 @@ buildings/functions/add_names_and_uses_functions 2022-06-15T02:54:14Z Jan Ducnui buildings_bulk_load/functions/load_to_production [buildings_bulk_load/functions/load_to_production@v3.6.0-dev1] 2022-06-15T03:07:57Z Jan Ducnuigeen # Insert names and uses when loading bulk outlines into production @v4.0.0-dev1 2022-09-14T22:18:19Z Daniel Silk # Tag v4.0.0-dev1 -buildings_reference/update_suburb_locality_name_column 2024-07-18T03:44:07Z Yingting Chen # Update suburb_locality name column to match NZ Suburbs and Localities +buildings_reference/update_suburb_locality_table 2024-07-18T03:44:07Z Yingting Chen # Update suburb_locality name column to match NZ Suburbs and Localities buildings_reference/functions/suburb_locality_optimised [buildings_reference/functions/suburb_locality_optimised@v4.0.0-dev1] 2024-07-18T05:10:43Z Yingting Chen # Update suburb_locality name fields in functions buildings_lds/functions/populate_buildings_lds [buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1] 2024-07-18T05:45:55Z Yingting Chen # Update suburb_locality name column in populate_buildings_lds function buildings_reference/remove_suburb_locality_old_name_column 2024-07-18T06:26:12Z Yingting Chen # Remove suburb_locality old name columns from FENZ +buildings_reference/functions/town_city [buildings_reference/functions/town_city@v4.0.0-dev1] 2024-08-14T04:35:22Z Yingting Chen # Remove functions of town_city table. +buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. diff --git a/db/sql/verify/buildings_reference/drop_town_city.sql b/db/sql/verify/buildings_reference/drop_town_city.sql new file mode 100644 index 00000000..d4cd2452 --- /dev/null +++ b/db/sql/verify/buildings_reference/drop_town_city.sql @@ -0,0 +1,32 @@ +-- Verify nz-buildings:buildings_reference/drop_town_city_table on pg + +BEGIN; + +DO $$ +BEGIN + PERFORM TRUE + FROM pg_tables + WHERE schemaname = 'buildings_reference' + AND tablename = 'town_city'; + IF FOUND THEN + RAISE EXCEPTION 'Table buildings_reference.town_city exists but should have been removed'; + END IF; +END; +$$; + +DO $$ +BEGIN + PERFORM TRUE + FROM information_schema.columns + WHERE table_schema = 'buildings_reference' + AND table_name='reference_update_log' + AND column_name='town_city'; + IF FOUND THEN + RAISE EXCEPTION 'Column town_city in buildings_reference.reference_update_log exists but should have been removed'; + END IF; + +END; +$$; + + +ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/town_city.sql b/db/sql/verify/buildings_reference/functions/town_city.sql index 126c3e8c..88f89c06 100644 --- a/db/sql/verify/buildings_reference/functions/town_city.sql +++ b/db/sql/verify/buildings_reference/functions/town_city.sql @@ -2,12 +2,48 @@ BEGIN; -SELECT has_function_privilege('buildings_reference.town_city_intersect_polygon(geometry)', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'town_city_intersect_polygon' + AND pronargs = 1; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; -SELECT has_function_privilege('buildings_reference.town_city_delete_removed_areas()', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'town_city_delete_removed_areas' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; -SELECT has_function_privilege('buildings_reference.town_city_insert_new_areas()', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'town_city_insert_new_areas' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; -SELECT has_function_privilege('buildings_reference.town_city_update_areas()', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'town_city_update_areas' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/town_city@v4.0.0-dev1.sql b/db/sql/verify/buildings_reference/functions/town_city@v4.0.0-dev1.sql new file mode 100644 index 00000000..126c3e8c --- /dev/null +++ b/db/sql/verify/buildings_reference/functions/town_city@v4.0.0-dev1.sql @@ -0,0 +1,13 @@ +-- Verify nz-buildings:buildings_reference/functions/town_city on pg + +BEGIN; + +SELECT has_function_privilege('buildings_reference.town_city_intersect_polygon(geometry)', 'execute'); + +SELECT has_function_privilege('buildings_reference.town_city_delete_removed_areas()', 'execute'); + +SELECT has_function_privilege('buildings_reference.town_city_insert_new_areas()', 'execute'); + +SELECT has_function_privilege('buildings_reference.town_city_update_areas()', 'execute'); + +ROLLBACK; diff --git a/db/sql/verify/buildings_reference/update_suburb_locality_name_column.sql b/db/sql/verify/buildings_reference/update_suburb_locality_table.sql similarity index 82% rename from db/sql/verify/buildings_reference/update_suburb_locality_name_column.sql rename to db/sql/verify/buildings_reference/update_suburb_locality_table.sql index 90b66060..1fcb3e4f 100644 --- a/db/sql/verify/buildings_reference/update_suburb_locality_name_column.sql +++ b/db/sql/verify/buildings_reference/update_suburb_locality_table.sql @@ -2,7 +2,7 @@ BEGIN; -SELECT name +SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE FALSE; From 1ef1d2a4a054c3f53171d37935c98445e2006cbd Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 16:24:46 +1200 Subject: [PATCH 02/19] feat: allow null-value in TA in building_outline and bulk_load_outlines --- ...ilding_outlines_ta_not_null_constraint.sql | 8 +++++++ ...k_load_outlines_ta_not_null_constraint.sql | 8 +++++++ .../functions/populate_buildings_lds.sql | 18 +++++++--------- ...ilding_outlines_ta_not_null_constraint.sql | 8 +++++++ ...k_load_outlines_ta_not_null_constraint.sql | 8 +++++++ db/sql/sqitch.plan | 6 ++++-- ...ilding_outlines_ta_not_null_constraint.sql | 21 +++++++++++++++++++ ...k_load_outlines_ta_not_null_constraint.sql | 21 +++++++++++++++++++ .../functions/populate_buildings_lds.sql | 8 +++---- 9 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 db/sql/deploy/buildings/remove_building_outlines_ta_not_null_constraint.sql create mode 100644 db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql create mode 100644 db/sql/revert/buildings/remove_building_outlines_ta_not_null_constraint.sql create mode 100644 db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql create mode 100644 db/sql/verify/buildings/remove_building_outlines_ta_not_null_constraint.sql create mode 100644 db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql diff --git a/db/sql/deploy/buildings/remove_building_outlines_ta_not_null_constraint.sql b/db/sql/deploy/buildings/remove_building_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..cedf6fb6 --- /dev/null +++ b/db/sql/deploy/buildings/remove_building_outlines_ta_not_null_constraint.sql @@ -0,0 +1,8 @@ +-- Deploy nz-buildings:buildings/remove_building_outlines_ta_not_null_constraint to pg + +BEGIN; + +ALTER TABLE buildings.building_outlines +ALTER COLUMN territorial_authority_id DROP NOT NULL; + +COMMIT; diff --git a/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql b/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..a92ccbb8 --- /dev/null +++ b/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql @@ -0,0 +1,8 @@ +-- Deploy nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint to pg + +BEGIN; + +ALTER TABLE buildings_bulk_load.bulk_load_outlines +ALTER COLUMN territorial_authority_id DROP NOT NULL; + +COMMIT; diff --git a/db/sql/deploy/buildings_lds/functions/populate_buildings_lds.sql b/db/sql/deploy/buildings_lds/functions/populate_buildings_lds.sql index 89f05ba0..a7e7502e 100644 --- a/db/sql/deploy/buildings_lds/functions/populate_buildings_lds.sql +++ b/db/sql/deploy/buildings_lds/functions/populate_buildings_lds.sql @@ -31,9 +31,9 @@ $$ buildings.building_id , COALESCE(building_name.building_name, '') AS name , COALESCE(use.value, 'Unknown') AS use - , suburb_locality.name AS suburb_locality - , COALESCE(town_city.name, '') AS town_city - , territorial_authority.name AS territorial_authority + , suburb_locality.suburb_locality AS suburb_locality + , COALESCE(suburb_locality.town_city, '') AS town_city + , COALESCE(territorial_authority.name, 'Area Outside Territorial Authority') AS territorial_authority , capture_method.value AS capture_method , capture_source_group.value AS capture_source_group , LEFT(capture_source.external_source_id, 4)::integer AS capture_source_id @@ -55,8 +55,7 @@ $$ JOIN buildings_reference.nz_imagery_survey_index ON LEFT(capture_source.external_source_id, 4)::integer = nz_imagery_survey_index.imagery_survey_id JOIN buildings_common.capture_source_group USING (capture_source_group_id) JOIN buildings_reference.suburb_locality ON suburb_locality.suburb_locality_id = building_outlines.suburb_locality_id - LEFT JOIN buildings_reference.town_city ON town_city.town_city_id = building_outlines.town_city_id - JOIN buildings_reference.territorial_authority ON territorial_authority.territorial_authority_id = building_outlines.territorial_authority_id + LEFT JOIN buildings_reference.territorial_authority ON territorial_authority.territorial_authority_id = building_outlines.territorial_authority_id WHERE building_outlines.end_lifespan IS NULL AND buildings.end_lifespan IS NULL ORDER BY buildings.building_id @@ -147,9 +146,9 @@ $$ , buildings.building_id , COALESCE(building_name.building_name, '') AS name , COALESCE(use.value, 'Unknown') AS use - , suburb_locality.name AS suburb_locality - , COALESCE(town_city.name, '') AS town_city - , territorial_authority.name AS territorial_authority + , suburb_locality.suburb_locality AS suburb_locality + , COALESCE(suburb_locality.town_city, '') AS town_city + , COALESCE(territorial_authority.name, 'Area Outside Territorial Authority') AS territorial_authority , capture_method.value AS capture_method , capture_source_group.value AS capture_source_group , LEFT(capture_source.external_source_id, 4)::integer AS capture_source_id @@ -174,8 +173,7 @@ $$ JOIN buildings_reference.nz_imagery_survey_index ON LEFT(capture_source.external_source_id, 4)::integer = nz_imagery_survey_index.imagery_survey_id JOIN buildings_common.capture_source_group USING (capture_source_group_id) JOIN buildings_reference.suburb_locality ON suburb_locality.suburb_locality_id = building_outlines.suburb_locality_id - LEFT JOIN buildings_reference.town_city ON town_city.town_city_id = building_outlines.town_city_id - JOIN buildings_reference.territorial_authority ON territorial_authority.territorial_authority_id = building_outlines.territorial_authority_id + LEFT JOIN buildings_reference.territorial_authority ON territorial_authority.territorial_authority_id = building_outlines.territorial_authority_id LEFT JOIN deleted_in_production USING (building_outline_id) LEFT JOIN building_outline_lifecycle USING (building_outline_id) ORDER BY building_outlines.building_outline_id diff --git a/db/sql/revert/buildings/remove_building_outlines_ta_not_null_constraint.sql b/db/sql/revert/buildings/remove_building_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..c0787b51 --- /dev/null +++ b/db/sql/revert/buildings/remove_building_outlines_ta_not_null_constraint.sql @@ -0,0 +1,8 @@ +-- Revert nz-buildings:buildings/remove_building_outlines_ta_not_null_constraint from pg + +BEGIN; + +ALTER TABLE buildings.building_outlines +ALTER COLUMN territorial_authority_id SET NOT NULL; + +COMMIT; diff --git a/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql b/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..cf4fd0e0 --- /dev/null +++ b/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql @@ -0,0 +1,8 @@ +-- Revert nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint from pg + +BEGIN; + +ALTER TABLE buildings_bulk_load.bulk_load_outlines +ALTER COLUMN territorial_authority_id SET NOT NULL; + +COMMIT; diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index 795dbe14..6bae298b 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -97,7 +97,9 @@ buildings_bulk_load/functions/load_to_production [buildings_bulk_load/functions/ buildings_reference/update_suburb_locality_table 2024-07-18T03:44:07Z Yingting Chen # Update suburb_locality name column to match NZ Suburbs and Localities buildings_reference/functions/suburb_locality_optimised [buildings_reference/functions/suburb_locality_optimised@v4.0.0-dev1] 2024-07-18T05:10:43Z Yingting Chen # Update suburb_locality name fields in functions -buildings_lds/functions/populate_buildings_lds [buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1] 2024-07-18T05:45:55Z Yingting Chen # Update suburb_locality name column in populate_buildings_lds function -buildings_reference/remove_suburb_locality_old_name_column 2024-07-18T06:26:12Z Yingting Chen # Remove suburb_locality old name columns from FENZ +buildings/remove_building_outlines_ta_not_null_constraint 2024-08-07T02:50:08Z Yingting Chen # Remove NOT NULL constraint for territorial_authority_id column in building_outlines table. +buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint 2024-08-07T02:51:28Z Yingting Chen # Remove NOT NULL constraint for territorial_authority_id column in bulk_load_outlines table. +buildings_lds/functions/populate_buildings_lds [buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1] 2024-08-14T03:45:12Z Yingting Chen # Update suburb_locality name column in populate_buildings_lds function buildings_reference/functions/town_city [buildings_reference/functions/town_city@v4.0.0-dev1] 2024-08-14T04:35:22Z Yingting Chen # Remove functions of town_city table. +buildings_reference/remove_suburb_locality_old_name_column 2024-08-14T04:40:22Z Yingting Chen # Remove suburb_locality old name columns from FENZ buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. diff --git a/db/sql/verify/buildings/remove_building_outlines_ta_not_null_constraint.sql b/db/sql/verify/buildings/remove_building_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..cf0bc8e3 --- /dev/null +++ b/db/sql/verify/buildings/remove_building_outlines_ta_not_null_constraint.sql @@ -0,0 +1,21 @@ +-- Verify nz-buildings:buildings/remove_building_outlines_ta_not_null_constraint on pg + +BEGIN; + +DO $$ +DECLARE + v_is_nullable boolean; +BEGIN + SELECT is_nullable into v_is_nullable + FROM information_schema.columns + WHERE table_schema = 'buildings' + AND table_name = 'building_outlines' + AND column_name = 'territorial_authority_id'; + IF not v_is_nullable THEN + RAISE EXCEPTION 'NOT-NULL CONSTRAINT: Schema "buildings" table "buildings" ' + 'and column "territorial_authority_id" should not have not-null constraint'; + END IF; +END; +$$; + +ROLLBACK; diff --git a/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql b/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql new file mode 100644 index 00000000..7be3a8fd --- /dev/null +++ b/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint.sql @@ -0,0 +1,21 @@ +-- Verify nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint on pg + +BEGIN; + +DO $$ +DECLARE + v_is_nullable boolean; +BEGIN + SELECT is_nullable into v_is_nullable + FROM information_schema.columns + WHERE table_schema = 'buildings_bulk_load' + AND table_name = 'bulk_load_outlines' + AND column_name = 'territorial_authority_id'; + IF not v_is_nullable THEN + RAISE EXCEPTION 'NOT-NULL CONSTRAINT: Schema "buildings_bulk_load" table "bulk_load_outlines" ' + 'and column "territorial_authority_id" should not have not-null constraint'; + END IF; +END; +$$; + +ROLLBACK; diff --git a/db/sql/verify/buildings_lds/functions/populate_buildings_lds.sql b/db/sql/verify/buildings_lds/functions/populate_buildings_lds.sql index fe98a24c..2a7ec7e7 100644 --- a/db/sql/verify/buildings_lds/functions/populate_buildings_lds.sql +++ b/db/sql/verify/buildings_lds/functions/populate_buildings_lds.sql @@ -16,9 +16,9 @@ BEGIN PERFORM proname, proargnames, prosrc FROM pg_proc WHERE proname = 'nz_building_outlines_insert' - AND prosrc LIKE '%suburb_locality.name%'; + AND prosrc LIKE '%suburb_locality.suburb_locality%'; IF NOT FOUND THEN - RAISE EXCEPTION 'suburb_locality name not found.'; + RAISE EXCEPTION 'suburb_locality column not found.'; END IF; END $$; @@ -28,9 +28,9 @@ BEGIN PERFORM proname, proargnames, prosrc FROM pg_proc WHERE proname = 'nz_building_outlines_all_sources_insert' - AND prosrc LIKE '%suburb_locality.name%'; + AND prosrc LIKE '%suburb_locality.suburb_locality%'; IF NOT FOUND THEN - RAISE EXCEPTION 'suburb_locality name not found.'; + RAISE EXCEPTION 'suburb_locality column not found.'; END IF; END $$; From e4dd44546ff049aed29f386efbd03ba0e5a254e4 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 16:33:33 +1200 Subject: [PATCH 03/19] feat: remove town_city_id from building tables --- .../buildings/functions/building_outlines.sql | 59 +-- .../building_outlines@v4.0.0-dev1.sql | 350 +++++++++++++ ..._building_outlines_town_city_id_column.sql | 8 + .../functions/bulk_load_outlines.sql | 93 +--- .../bulk_load_outlines@v4.0.0-dev1.sql | 458 ++++++++++++++++ ...bulk_load_outlines_town_city_id_column.sql | 8 + .../functions/suburb_locality_optimised.sql | 140 +---- .../buildings/functions/building_outlines.sql | 38 +- .../building_outlines@v4.0.0-dev1.sql | 383 ++++++++++++++ ..._building_outlines_town_city_id_column.sql | 8 + .../functions/bulk_load_outlines.sql | 36 +- .../bulk_load_outlines@v4.0.0-dev1.sql | 491 ++++++++++++++++++ ...bulk_load_outlines_town_city_id_column.sql | 8 + .../functions/suburb_locality_optimised.sql | 6 - db/sql/sqitch.plan | 4 + .../buildings/functions/building_outlines.sql | 39 +- .../building_outlines@v4.0.0-dev1.sql | 35 ++ ..._building_outlines_town_city_id_column.sql | 20 + .../functions/bulk_load_outlines.sql | 57 +- .../bulk_load_outlines@v4.0.0-dev1.sql | 37 ++ ...bulk_load_outlines_town_city_id_column.sql | 20 + .../functions/suburb_locality_optimised.sql | 22 +- 22 files changed, 1962 insertions(+), 358 deletions(-) create mode 100644 db/sql/deploy/buildings/functions/building_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/deploy/buildings/remove_building_outlines_town_city_id_column.sql create mode 100644 db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql create mode 100644 db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/revert/buildings/remove_building_outlines_town_city_id_column.sql create mode 100644 db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql create mode 100644 db/sql/verify/buildings/functions/building_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/verify/buildings/remove_building_outlines_town_city_id_column.sql create mode 100644 db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql create mode 100644 db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql diff --git a/db/sql/deploy/buildings/functions/building_outlines.sql b/db/sql/deploy/buildings/functions/building_outlines.sql index 4c397b59..555becc5 100644 --- a/db/sql/deploy/buildings/functions/building_outlines.sql +++ b/db/sql/deploy/buildings/functions/building_outlines.sql @@ -2,13 +2,19 @@ BEGIN; +DROP FUNCTION buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry); + +DROP FUNCTION buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer); + +DROP FUNCTION IF EXISTS buildings.building_outlines_update_town_city(integer[]); + -------------------------------------------- -- buildings.building_outlines -- Functions: -- building_outlines_insert (add new entry to building outlines table) -- params: integer building_id, integer capture_method_id, integer capture_source_id - -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer lifecycle_stage_id, integer suburb_locality_id -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry -- return: new building_outline_id @@ -18,7 +24,7 @@ BEGIN; -- building_outlines_update_attributes (update the attributes of specified outline) -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, - -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- integer territorial_authority_id, timestamp begin_lifespan, -- shape geometry --return: number of outlines updated (should only be one) @@ -46,17 +52,13 @@ BEGIN; -- params: integer[] list of territorial_authorities buildings must be within -- return: count(integer) number of outlines updated --- building_outlines_update_town_city (Replace the town/city values with the intersection result) - -- params: integer[] list of town_city_ids building must be within - -- return: count(integer) number of outlines updated - -------------------------------------------- -- Functions -- building_outlines_insert (add new entry to building outlines table) -- params: integer building_id, integer capture_method_id, integer capture_source_id - -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer lifecycle_stage_id, integer suburb_locality_id -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry -- return: new building_outline_id @@ -66,7 +68,6 @@ CREATE OR REPLACE FUNCTION buildings.building_outlines_insert( , p_capture_source_id integer , p_lifecycle_stage_id integer , p_suburb_locality_id integer - , p_town_city_id integer , p_territorial_authority_id integer , p_shape geometry ) @@ -80,7 +81,6 @@ $$ , capture_source_id , lifecycle_stage_id , suburb_locality_id - , town_city_id , territorial_authority_id , begin_lifespan , shape @@ -92,7 +92,6 @@ $$ , p_capture_source_id , p_lifecycle_stage_id , p_suburb_locality_id - , p_town_city_id , p_territorial_authority_id , DEFAULT , p_shape @@ -102,7 +101,7 @@ $$ $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry) IS +COMMENT ON FUNCTION buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, geometry) IS 'Insert new building outline into table'; @@ -120,7 +119,6 @@ $$ , supplied.capture_source_id , 1 , supplied.suburb_locality_id - , supplied.town_city_id , supplied.territorial_authority_id , supplied.shape ) @@ -136,7 +134,7 @@ COMMENT ON FUNCTION buildings.building_outlines_insert_bulk(integer, integer) IS -- building_outlines_update_attributes (update the attributes of specified outline) -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, - -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- integer territorial_authority_id, timestamp begin_lifespan, -- shape geometry --return: number of outlines updated (should only be one) @@ -146,7 +144,6 @@ CREATE OR REPLACE FUNCTION buildings.building_outlines_update_attributes( , p_capture_source_id integer , p_lifecycle_stage_id integer , p_suburb_locality_id integer - , p_town_city_id integer , p_territorial_authority_id integer ) RETURNS integer AS @@ -159,8 +156,7 @@ $$ , capture_source_id = $3 , lifecycle_stage_id = $4 , suburb_locality_id = $5 - , town_city_id = $6 - , territorial_authority_id = $7 + , territorial_authority_id = $6 WHERE building_outline_id = $1 RETURNING * ) @@ -169,7 +165,7 @@ $$ $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +COMMENT ON FUNCTION buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer) IS 'Update attributes in building_outlines table'; @@ -318,33 +314,4 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings.building_outlines_update_territorial_authority(integer[]) IS 'Replace the TA values with the intersection result for all buildings in building_outlines'; --- building_outlines_update_town_city (Replace the town/city values with the intersection result) - -- params: integer[] list of town_city_ids building must be within - -- return: count(integer) number of outlines updated - -CREATE OR REPLACE FUNCTION buildings.building_outlines_update_town_city(integer[]) -RETURNS integer AS -$$ - - WITH update_town_city AS ( - UPDATE buildings.building_outlines outlines - SET town_city_id = town_city_intersect.town_city_intersect_polygon - FROM ( - SELECT - buildings_reference.town_city_intersect_polygon(outlines.shape) - , outlines.building_outline_id - FROM buildings.building_outlines outlines - ) town_city_intersect - WHERE outlines.building_outline_id = town_city_intersect.building_outline_id - AND town_city_id = ANY($1) - RETURNING * - ) - SELECT count(*)::integer FROM update_town_city; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings.building_outlines_update_town_city(integer[]) IS -'Replace the town/city values with the intersection result for all buildings in buildings.building_outlines'; - COMMIT; diff --git a/db/sql/deploy/buildings/functions/building_outlines@v4.0.0-dev1.sql b/db/sql/deploy/buildings/functions/building_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..4c397b59 --- /dev/null +++ b/db/sql/deploy/buildings/functions/building_outlines@v4.0.0-dev1.sql @@ -0,0 +1,350 @@ +-- Deploy nz-buildings:buildings/functions/building_outlines to pg + +BEGIN; + +-------------------------------------------- +-- buildings.building_outlines + +-- Functions: +-- building_outlines_insert (add new entry to building outlines table) + -- params: integer building_id, integer capture_method_id, integer capture_source_id + -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry + -- return: new building_outline_id + +-- building_outlines_insert_bulk (Create new added records in building outlines table) + -- params: integer building_outline_id, integer bulk_load_outline_id + -- return: building_outline_id + +-- building_outlines_update_attributes (update the attributes of specified outline) + -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, + -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- shape geometry + --return: number of outlines updated (should only be one) + +-- building_outlines_update_capture_method (update capture method attribute) + -- params integer building_outline_id, integer capture_method_id + -- return: integer count number of outlines updated + +-- building_outlines_update_end_lifespan (update the end lifespan attr of an outline) + -- params: integer[] + -- return: count of outlines updated + +-- building_outlines_update_modified_date (update the modified date attr of building to now) + -- params: integer, building_outline_id + -- return: number of outlines updated + +-- building_outlines_update_modified_date_by_building_id (update the modified date attr of building to now) + -- params: integer, building_id + -- return: number of outlines updated + +-- building outlines_update_shape (update the geometry of specified outline) + -- params: shape to update to geometry, integer building_outline_id + --return: number of outlines updated (should only be one) + +-- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +-- building_outlines_update_town_city (Replace the town/city values with the intersection result) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +-------------------------------------------- + +-- Functions + +-- building_outlines_insert (add new entry to building outlines table) + -- params: integer building_id, integer capture_method_id, integer capture_source_id + -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry + -- return: new building_outline_id + +CREATE OR REPLACE FUNCTION buildings.building_outlines_insert( + p_building_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_lifecycle_stage_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer + , p_shape geometry +) +RETURNS integer AS +$$ + + INSERT INTO buildings.building_outlines( + building_outline_id + , building_id + , capture_method_id + , capture_source_id + , lifecycle_stage_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + VALUES ( + DEFAULT -- sequence + , p_building_id + , p_capture_method_id + , p_capture_source_id + , p_lifecycle_stage_id + , p_suburb_locality_id + , p_town_city_id + , p_territorial_authority_id + , DEFAULT + , p_shape + ) + RETURNING building_outline_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry) IS +'Insert new building outline into table'; + + +-- building_outlines_insert_bulk (Create new added records in building outlines table) + -- params: integer building_outline_id, integer bulk_load_outline_id + -- return: building_outline_id + +CREATE OR REPLACE FUNCTION buildings.building_outlines_insert_bulk(integer, integer) +RETURNS integer AS +$$ + + SELECT buildings.building_outlines_insert ( + $1 + , supplied.capture_method_id + , supplied.capture_source_id + , 1 + , supplied.suburb_locality_id + , supplied.town_city_id + , supplied.territorial_authority_id + , supplied.shape + ) + FROM buildings_bulk_load.bulk_load_outlines supplied + WHERE supplied.bulk_load_outline_id = $2 + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_insert_bulk(integer, integer) IS +'Create new added records in building outlines table'; + + +-- building_outlines_update_attributes (update the attributes of specified outline) + -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, + -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- shape geometry + --return: number of outlines updated (should only be one) + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_attributes( + p_building_outline_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_lifecycle_stage_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer +) +RETURNS integer AS +$$ + + WITH update_attributes AS ( + UPDATE buildings.building_outlines + SET + capture_method_id = $2 + , capture_source_id = $3 + , lifecycle_stage_id = $4 + , suburb_locality_id = $5 + , town_city_id = $6 + , territorial_authority_id = $7 + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_attributes; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +'Update attributes in building_outlines table'; + + +-- building_outlines_update_capture_method (update capture method attribute) + -- params integer building_outline_id, integer capture_method_id + -- return: integer count number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_capture_method( + p_building_outline_id integer + , p_capture_method_id integer +) +RETURNS integer AS +$$ + + WITH update_capture_method AS( + UPDATE buildings.building_outlines + SET capture_method_id = $2 + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_capture_method; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_capture_method(integer, integer) IS +'Update capture method in building_outlines table'; + + +-- building_outlines_update_end_lifespan (update the end lifespan attr of an outline) + -- params: integer[] + -- return: count of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_end_lifespan(integer[]) +RETURNS integer AS +$$ + + WITH update_building_outlines AS ( + UPDATE buildings.building_outlines + SET end_lifespan = now() + WHERE building_outline_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_building_outlines; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_end_lifespan(integer[]) IS +'Update end_lifespan in building outlines table'; + +-- building_outlines_update_modified_date (update the modified date attr of building to now) + -- params: integer, building_outline_id + -- return: number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_modified_date(integer) + RETURNS integer AS +$$ + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET last_modified = now() + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ LANGUAGE sql; + +COMMENT ON FUNCTION buildings.building_outlines_update_modified_date(integer) IS +'Update modified_date of outline in building_outlines table'; + + +-- building_outlines_update_modified_date_by_building_id (update the modified date attr of building to now) + -- params: integer, building_id + -- return: number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_modified_date_by_building_id(integer) + RETURNS integer AS +$$ + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET last_modified = now() + WHERE building_outline_id in ( + SELECT building_outline_id + FROM buildings.building_outlines + WHERE building_id = $1 + AND end_lifespan is NULL + ) + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ LANGUAGE sql; + +COMMENT ON FUNCTION buildings.building_outlines_update_modified_date_by_building_id(integer) IS +'Update modified_date of outline in building_outlines table by building_id'; + +-- building outlines_update_shape (update the geometry of specified outline) + -- params: shape to update to geometry, integer building_outline_id + -- return: number of outlines updated (should only be one) + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_shape(geometry, integer) +RETURNS integer AS +$$ + + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET shape = $1 + WHERE building_outline_id = $2 + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_shape(geometry, integer) IS +'Update shape in building_outlines table'; + +-- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_territorial_authority(integer[]) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings.building_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.building_outline_id + FROM buildings.building_outlines outlines + ) territorial_authority_intersect + WHERE outlines.building_outline_id = territorial_authority_intersect.building_outline_id + AND territorial_authority_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_territorial_authority(integer[]) IS +'Replace the TA values with the intersection result for all buildings in building_outlines'; + +-- building_outlines_update_town_city (Replace the town/city values with the intersection result) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_town_city(integer[]) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings.building_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.building_outline_id + FROM buildings.building_outlines outlines + ) town_city_intersect + WHERE outlines.building_outline_id = town_city_intersect.building_outline_id + AND town_city_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_town_city(integer[]) IS +'Replace the town/city values with the intersection result for all buildings in buildings.building_outlines'; + +COMMIT; diff --git a/db/sql/deploy/buildings/remove_building_outlines_town_city_id_column.sql b/db/sql/deploy/buildings/remove_building_outlines_town_city_id_column.sql new file mode 100644 index 00000000..25483918 --- /dev/null +++ b/db/sql/deploy/buildings/remove_building_outlines_town_city_id_column.sql @@ -0,0 +1,8 @@ +-- Deploy nz-buildings:buildings/remove_building_outlines_town_city_id_column to pg + +BEGIN; + +ALTER TABLE buildings.building_outlines +DROP COLUMN town_city_id; + +COMMIT; diff --git a/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines.sql b/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines.sql index e7ca5597..09e54d5c 100644 --- a/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines.sql +++ b/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines.sql @@ -2,6 +2,12 @@ BEGIN; + +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry); +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer); +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_update_town_city(integer); +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]); + -------------------------------------------- -- buildings_bulk_load.bulk_load_outlines @@ -11,7 +17,7 @@ BEGIN; -- params: integer supplied_dataset_id, integer external_outline_id -- integer external_outline_id, integer bulk_load_status_id -- integer capture_method_id, integer suburb_locality_id - -- integer town_city_id, integer territorial_authority_id, + -- integer territorial_authority_id, -- geometry shape -- return: integer new bulk_load_outline_id @@ -27,7 +33,7 @@ BEGIN; -- bulk_load_outlines_update_attributes (update the attributes of an outlines) -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer -- capture_method_id, integer capture_source_id, integer suburb_locality_id - -- integer town_city_id, integer territorial_authority_id, geometry shape + -- integer territorial_authority_id, geometry shape -- return: count of number of outlines updated -- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) @@ -54,14 +60,6 @@ BEGIN; -- params: integer[] list of territorial_authorities buildings must be within -- return: count(integer) number of outlines updated --- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) - -- params: integer supplied_dataset_id - -- return: count(integer) number of outlines updated - --- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) - -- params: integer[] list of town_city_ids building must be within - -- return: count(integer) number of outlines updated - -------------------------------------------- -- Functions @@ -70,7 +68,7 @@ BEGIN; -- params: integer supplied_dataset_id, integer external_outline_id -- integer external_outline_id, integer bulk_load_status_id -- integer capture_method_id, integer suburb_locality_id - -- integer town_city_id, integer territorial_authority_id + -- integer territorial_authority_id -- geometry shape -- return: integer new bulk_load_outline_id @@ -81,7 +79,6 @@ CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_insert( , p_capture_method_id integer , p_capture_source_id integer , p_suburb_locality_id integer - , p_town_city_id integer , p_territorial_authority_id integer , p_shape geometry ) @@ -96,7 +93,6 @@ $$ , capture_method_id , capture_source_id , suburb_locality_id - , town_city_id , territorial_authority_id , begin_lifespan , shape @@ -109,7 +105,6 @@ $$ , p_capture_method_id , p_capture_source_id , p_suburb_locality_id - , p_town_city_id , p_territorial_authority_id , now() , p_shape @@ -119,7 +114,7 @@ $$ $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry) IS +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry) IS 'Insert new bulk load outline'; -- bulk_load_outlines_insert_supplied (insert supplied outlines into bulk_load_outlines) @@ -144,7 +139,6 @@ $$ , capture_method_id , capture_source_id , suburb_locality_id - , town_city_id , territorial_authority_id , begin_lifespan , shape @@ -156,7 +150,6 @@ $$ , p_capture_method_id , p_capture_source_id , buildings_reference.suburb_locality_intersect_polygon(shape) - , buildings_reference.town_city_intersect_polygon(shape) , buildings_reference.territorial_authority_grid_intersect_polygon(shape) , now() , shape @@ -203,7 +196,7 @@ COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_remove_small_building -- bulk_load_outlines_update_attributes (update the attributes of an outlines) -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer -- capture_method_id, integer capture_source_id, integer suburb_locality_id - -- integer town_city_id, integer territorial_authority_id, geometry shape + -- integer territorial_authority_id, geometry shape -- return: count of number of outlines updated CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes( @@ -212,7 +205,6 @@ CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_attribu , p_capture_method_id integer , p_capture_source_id integer , p_suburb_locality_id integer - , p_town_city_id integer , p_territorial_authority_id integer ) RETURNS integer AS @@ -225,8 +217,7 @@ $$ , capture_method_id = $3 , capture_source_id = $4 , suburb_locality_id = $5 - , town_city_id = $6 - , territorial_authority_id = $7 + , territorial_authority_id = $6 WHERE bulk_load_outline_id = $1 RETURNING * ) @@ -235,7 +226,7 @@ $$ $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer) IS 'Update attributes in bulk_load_outlines table'; -- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) @@ -397,62 +388,4 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[]) IS 'Replace the TA values with the intersection result for all buildings in bulk_load_outlines'; --- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) - -- params: integer supplied_dataset_id - -- return: count(integer) number of outlines updated - -CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) -RETURNS integer AS -$$ - - WITH update_town_city AS ( - UPDATE buildings_bulk_load.bulk_load_outlines outlines - SET town_city_id = town_city_intersect.town_city_intersect_polygon - FROM ( - SELECT - buildings_reference.town_city_intersect_polygon(outlines.shape) - , outlines.bulk_load_outline_id - FROM buildings_bulk_load.bulk_load_outlines outlines - ) town_city_intersect - WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id - AND outlines.supplied_dataset_id = $1 - RETURNING * - ) - SELECT count(*)::integer FROM update_town_city; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) IS -'Replace the town/city values with the intersection results for a supplied bulk loaded dataset'; - --- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) - -- params: integer[] list of town_city_ids building must be within - -- return: count(integer) number of outlines updated - -CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) -RETURNS integer AS -$$ - - WITH update_town_city AS ( - UPDATE buildings_bulk_load.bulk_load_outlines outlines - SET town_city_id = town_city_intersect.town_city_intersect_polygon - FROM ( - SELECT - buildings_reference.town_city_intersect_polygon(outlines.shape) - , outlines.bulk_load_outline_id - FROM buildings_bulk_load.bulk_load_outlines outlines - ) town_city_intersect - WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id - AND town_city_id = ANY($1) - RETURNING * - ) - SELECT count(*)::integer FROM update_town_city; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) IS -'Replace the town/city values with the intersection result for all buildings in buildings_bulk_load.bulk_load_outlines'; - COMMIT; diff --git a/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql b/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..e7ca5597 --- /dev/null +++ b/db/sql/deploy/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql @@ -0,0 +1,458 @@ +-- Deploy nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to pg + +BEGIN; + +-------------------------------------------- +-- buildings_bulk_load.bulk_load_outlines + +-- Functions: + +-- bulk_load_outlines_insert (insert new bulk load outline) + -- params: integer supplied_dataset_id, integer external_outline_id + -- integer external_outline_id, integer bulk_load_status_id + -- integer capture_method_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, + -- geometry shape + -- return: integer new bulk_load_outline_id + +-- bulk_load_outlines_insert_supplied (insert supplied outlines into bulk_load_outlines) + -- params: integer supplied_dataset_id, integer bulk_load_status_id + -- integer capture_method_id, integer capture_source_id + -- return: integer count of supplied outlines added + +-- bulk_load_outlines_remove_small_buildings (change bulk load status of buildings less than 10sqm) + -- params: integer supplied_dataset_id + -- return: number of small buildings that have been removed + +-- bulk_load_outlines_update_attributes (update the attributes of an outlines) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer + -- capture_method_id, integer capture_source_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, geometry shape + -- return: count of number of outlines updated + +-- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id + -- return: integer count of building outlines updated + +-- bulk_load_outlines_update_capture_method (Update capture method in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer capture_method_id + -- return: integer count of building outlines updated + +-- bulk_load_outlines_update_shape (update the shape of an outline) + -- params: geometry, integer bulk_load_outline_id + -- return: number of outlines with updated shapes + +-- bulk_load_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of building outlines updated + +-- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_all_territorial_authorities (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +-------------------------------------------- + +-- Functions + +-- bulk_load_outlines_insert (insert new bulk load outline) + -- params: integer supplied_dataset_id, integer external_outline_id + -- integer external_outline_id, integer bulk_load_status_id + -- integer capture_method_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id + -- geometry shape + -- return: integer new bulk_load_outline_id + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_insert( + p_supplied_dataset_id integer + , p_external_outline_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer + , p_shape geometry +) +RETURNS integer AS +$$ + + INSERT INTO buildings_bulk_load.bulk_load_outlines( + bulk_load_outline_id + , supplied_dataset_id + , external_outline_id + , bulk_load_status_id + , capture_method_id + , capture_source_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + VALUES ( + DEFAULT -- sequence + , p_supplied_dataset_id + , p_external_outline_id + , p_bulk_load_status_id + , p_capture_method_id + , p_capture_source_id + , p_suburb_locality_id + , p_town_city_id + , p_territorial_authority_id + , now() + , p_shape + ) + RETURNING bulk_load_outline_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry) IS +'Insert new bulk load outline'; + +-- bulk_load_outlines_insert_supplied (insert supplied outlines into bulk_load_outlines) + -- params: integer supplied_dataset_id, integer bulk_load_status_id + -- integer capture_method_id, integer capture_source_id + -- return: integer count of supplied outlines added + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_insert_supplied( + p_supplied_dataset_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer +) +RETURNS integer AS +$$ + + WITH insert_supplied AS ( + INSERT INTO buildings_bulk_load.bulk_load_outlines( + supplied_dataset_id + , external_outline_id + , bulk_load_status_id + , capture_method_id + , capture_source_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + SELECT + supplied_dataset_id + , external_outline_id + , p_bulk_load_status_id + , p_capture_method_id + , p_capture_source_id + , buildings_reference.suburb_locality_intersect_polygon(shape) + , buildings_reference.town_city_intersect_polygon(shape) + , buildings_reference.territorial_authority_grid_intersect_polygon(shape) + , now() + , shape + FROM buildings_bulk_load.supplied_outlines s + WHERE s.supplied_dataset_id = p_supplied_dataset_id + RETURNING * + ) + SELECT count(*)::integer FROM insert_supplied; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert_supplied(integer, integer, integer, integer) IS +'Insert supplied outlines into bulk load outlines'; + + +-- bulk_load_outlines_remove_small_buildings (change bulk load status of buildings less than 10sqm) + -- params: integer supplied_dataset_id + -- return: number of small buildings that have been removed + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer) +RETURNS integer AS +$$ + + WITH small_buildings AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET bulk_load_status_id = 3 + WHERE bulk_load_outline_id IN ( + SELECT bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines + WHERE ST_Area(shape) < 10 + ) + AND supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM small_buildings; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer) IS +'Update bulk load status in bulk_load_outlines table of outlines less than 10sqm'; + +-- bulk_load_outlines_update_attributes (update the attributes of an outlines) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer + -- capture_method_id, integer capture_source_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, geometry shape + -- return: count of number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes( + p_bulk_load_outline_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer +) +RETURNS integer AS +$$ + + WITH update_attributes AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET + bulk_load_status_id = $2 + , capture_method_id = $3 + , capture_source_id = $4 + , suburb_locality_id = $5 + , town_city_id = $6 + , territorial_authority_id = $7 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_attributes; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +'Update attributes in bulk_load_outlines table'; + +-- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id + -- return: integer count of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_bulk_load_status( + p_bulk_load_outline_id integer + , p_bulk_load_status_id integer +) +RETURNS integer AS +$$ + + WITH update_bulk_load_status AS( + UPDATE buildings_bulk_load.bulk_load_outlines + SET bulk_load_status_id = $2 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_bulk_load_status; + +$$ LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_bulk_load_status(integer, integer) IS +'Update bulk load status in bulk_load_outlines table'; + + +-- bulk_load_outlines_update_capture_method (Update capture method in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer capture_method_id + -- return: integer count of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_capture_method( + p_bulk_load_outline_id integer + , p_capture_method_id integer +) +RETURNS integer AS +$$ + + WITH update_capture_method AS( + UPDATE buildings_bulk_load.bulk_load_outlines + SET capture_method_id = $2 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_capture_method; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_capture_method(integer, integer) IS +'Update capture method in bulk_load_outlines table'; + +-- bulk_load_outlines_update_shape (update the shape of an outline) + -- params: geometry, integer bulk_load_outline_id + -- return: number of outlines with updated shapes + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_shape(geometry, integer) +RETURNS integer AS +$$ + + WITH update_shape AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET shape = $1 + WHERE bulk_load_outline_id = $2 + RETURNING * + ) + SELECT count(*)::integer FROM update_shape; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_shape(geometry, integer) IS +'Update shape in bulk_load_outlines table'; + +-- bulk_load_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_suburb(integer) +RETURNS integer AS +$$ + + WITH update_suburb AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon + FROM ( + SELECT + buildings_reference.suburb_locality_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) suburb_locality_intersect + WHERE outlines.bulk_load_outline_id = suburb_locality_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_suburb; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_suburb(integer) IS +'Replace suburb values with the intersection result of buildings from a supplied dataset in the bulk_load_outlines table'; + +-- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_territorial_authority(integer) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) territorial_authority_intersect + WHERE outlines.bulk_load_outline_id = territorial_authority_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_territorial_authority(integer) IS +'Replace the TA values with the intersection result'; + +-- bulk_load_outlines_update_all_territorial_authorities (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[]) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) territorial_authority_intersect + WHERE outlines.bulk_load_outline_id = territorial_authority_intersect.bulk_load_outline_id + AND territorial_authority_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[]) IS +'Replace the TA values with the intersection result for all buildings in bulk_load_outlines'; + +-- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) town_city_intersect + WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) IS +'Replace the town/city values with the intersection results for a supplied bulk loaded dataset'; + +-- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) town_city_intersect + WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id + AND town_city_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) IS +'Replace the town/city values with the intersection result for all buildings in buildings_bulk_load.bulk_load_outlines'; + +COMMIT; diff --git a/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql b/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql new file mode 100644 index 00000000..8405f874 --- /dev/null +++ b/db/sql/deploy/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql @@ -0,0 +1,8 @@ +-- Deploy nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column to pg + +BEGIN; + +ALTER TABLE buildings_bulk_load.bulk_load_outlines +DROP COLUMN town_city_id; + +COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality_optimised.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality_optimised.sql index 57176ef8..5a295107 100644 --- a/db/sql/deploy/buildings_reference/functions/suburb_locality_optimised.sql +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality_optimised.sql @@ -2,143 +2,7 @@ BEGIN; --- building_outlines_update_changed_and_deleted_suburb (replace suburb values with the intersection result) - -- params: - -- return: integer count of number of building outlines updated - -CREATE OR REPLACE FUNCTION buildings_reference.building_outlines_update_changed_and_deleted_suburb() -RETURNS void AS -$$ -BEGIN - -- Find new ids and geometry differences of changed - CREATE TEMP TABLE changed_geometries AS - SELECT - nzl.id AS new_external_id, - bsl.suburb_locality_id AS new_id, - ST_Difference(ST_Transform(nzl.shape, 2193),bsl.shape) AS shape - FROM - admin_bdys.nz_locality nzl, - buildings_reference.suburb_locality bsl - WHERE - bsl.external_suburb_locality_id = nzl.id - AND ( - NOT ST_Equals(ST_Transform(nzl.shape, 2193), bsl.shape) - ) - AND ( - NOT st_isempty(ST_Difference(ST_Transform(nzl.shape, 2193),bsl.shape) - ) - ); - - -- Update the changed suburbs - UPDATE buildings_reference.suburb_locality bsl - SET - name = COALESCE(nzl.suburb_4th, nzl.suburb_3rd, nzl.suburb_2nd, nzl.suburb_1st), - shape = ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193) - FROM - admin_bdys.nz_locality nzl - WHERE - bsl.external_suburb_locality_id = nzl.id - AND ( - NOT ST_Equals(ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193), bsl.shape) - OR bsl.name != COALESCE(nzl.suburb_4th, nzl.suburb_3rd, nzl.suburb_2nd, nzl.suburb_1st) - ); - - -- Remove deleted suburbs - DELETE FROM - buildings_reference.suburb_locality - WHERE - external_suburb_locality_id NOT IN ( - SELECT - id - FROM - admin_bdys.nz_locality - ); - - -- Updates building outlines where: - -- It's external id is an 'old id' - -- It Overlaps or is Within the difference polygon for the 'old id' - -- It overlaps the difference polygon by the largest proportion - -- The suburb with the most overlap is not the same as the old id - UPDATE - buildings.building_outlines b - SET - suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(b.shape), - last_modified = NOW() - FROM - changed_geometries cg - WHERE - (ST_Within(b.shape, cg.shape) OR ST_Overlaps(b.shape, cg.shape)) - AND buildings_reference.suburb_locality_intersect_polygon(b.shape) != b.suburb_locality_id; - - DISCARD TEMP; - -END; -$$ LANGUAGE plpgsql; - -COMMENT ON FUNCTION buildings_reference.building_outlines_update_changed_and_deleted_suburb() IS -'Replace suburb values with the intersection result of buildings in the building_outlines table'; - - --- building_outlines_update_added_suburb (replace suburb values with the intersection result) - -- params: - -- return: integer count of number of building outlines updated - -CREATE OR REPLACE FUNCTION buildings_reference.building_outlines_update_added_suburb() -RETURNS void AS -$$ -BEGIN - -- add new suburbs to buildings_reference.suburb_locality - -- (to get new suburb_locality_ids) - CREATE TEMP TABLE added_suburbs ( - suburb_locality_id integer - , external_suburb_locality_id integer - , name character varying(60) - , shape public.geometry(MultiPolygon, 2193) - ); - - WITH add_new_suburbs AS ( - INSERT INTO buildings_reference.suburb_locality ( - external_suburb_locality_id, name, shape - ) - SELECT - id, - COALESCE(suburb_4th, suburb_3rd, suburb_2nd, suburb_1st), - ST_Transform(shape, 2193) - FROM - admin_bdys.nz_locality - WHERE - type IN ('ISLAND','LOCALITY','PARK_RESERVE','SUBURB') - AND id NOT IN ( - SELECT - external_suburb_locality_id - FROM - buildings_reference.suburb_locality - ) RETURNING * - ) - - INSERT INTO added_suburbs - SELECT suburb_locality_id, external_suburb_locality_id, name, shape - FROM add_new_suburbs; - - -- update building outline suburb locality Id and last modified date where: - -- the building is within/overlaps the new suburb - -- The largest overlapping suburb has changed - UPDATE - buildings.building_outlines b - SET - suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(b.shape), - last_modified = NOW() - FROM - added_suburbs asb - WHERE - (ST_Within(b.shape, asb.shape) OR ST_Overlaps(b.shape, asb.shape)) - AND buildings_reference.suburb_locality_intersect_polygon(b.shape) != b.suburb_locality_id; - - DISCARD TEMP; -END; -$$ LANGUAGE plpgsql; - -COMMENT ON FUNCTION buildings_reference.building_outlines_update_added_suburb() IS -'Insert new suburb localities and replace old suburb values with the intersection result in the building_outlines table'; +DROP FUNCTION IF EXISTS buildings_reference.building_outlines_update_changed_and_deleted_suburb(); +DROP FUNCTION IF EXISTS buildings_reference.building_outlines_update_added_suburb(); COMMIT; diff --git a/db/sql/revert/buildings/functions/building_outlines.sql b/db/sql/revert/buildings/functions/building_outlines.sql index d409a61b..bfa2743e 100644 --- a/db/sql/revert/buildings/functions/building_outlines.sql +++ b/db/sql/revert/buildings/functions/building_outlines.sql @@ -1,7 +1,10 @@ --- Revert nz-buildings:buildings/functions/building_outlines to pg +-- Deploy nz-buildings:buildings/functions/building_outlines to pg BEGIN; +DROP FUNCTION IF EXISTS buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, geometry); +DROP FUNCTION IF EXISTS buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer); + -------------------------------------------- -- buildings.building_outlines @@ -42,10 +45,6 @@ BEGIN; -- params: shape to update to geometry, integer building_outline_id --return: number of outlines updated (should only be one) --- building_outlines_update_suburb (replace suburb values with the intersection result) - -- params: integer[] list of suburb localities building must be within - -- return: integer count of number of building outlines updated - -- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) -- params: integer[] list of territorial_authorities buildings must be within -- return: count(integer) number of outlines updated @@ -293,35 +292,6 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings.building_outlines_update_shape(geometry, integer) IS 'Update shape in building_outlines table'; --- building_outlines_update_suburb (replace suburb values with the intersection result) - -- params: integer[] list of suburb localities building must be within - -- return: integer count of number of building outlines updated - -CREATE OR REPLACE FUNCTION buildings.building_outlines_update_suburb(integer[]) -RETURNS integer AS -$$ - - WITH update_suburb AS ( - UPDATE buildings.building_outlines outlines - SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon - FROM ( - SELECT - buildings_reference.suburb_locality_intersect_polygon(outlines.shape) - , outlines.building_outline_id - FROM buildings.building_outlines outlines - ) suburb_locality_intersect - WHERE outlines.building_outline_id = suburb_locality_intersect.building_outline_id - AND suburb_locality_id = ANY($1) - RETURNING * - ) - SELECT count(*)::integer FROM update_suburb; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings.building_outlines_update_suburb(integer[]) IS -'Replace suburb values with the intersection result of buildings in the building_outlines table'; - -- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) -- params: integer[] list of territorial_authorities buildings must be within -- return: count(integer) number of outlines updated diff --git a/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql b/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..d409a61b --- /dev/null +++ b/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql @@ -0,0 +1,383 @@ +-- Revert nz-buildings:buildings/functions/building_outlines to pg + +BEGIN; + +-------------------------------------------- +-- buildings.building_outlines + +-- Functions: +-- building_outlines_insert (add new entry to building outlines table) + -- params: integer building_id, integer capture_method_id, integer capture_source_id + -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry + -- return: new building_outline_id + +-- building_outlines_insert_bulk (Create new added records in building outlines table) + -- params: integer building_outline_id, integer bulk_load_outline_id + -- return: building_outline_id + +-- building_outlines_update_attributes (update the attributes of specified outline) + -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, + -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- shape geometry + --return: number of outlines updated (should only be one) + +-- building_outlines_update_capture_method (update capture method attribute) + -- params integer building_outline_id, integer capture_method_id + -- return: integer count number of outlines updated + +-- building_outlines_update_end_lifespan (update the end lifespan attr of an outline) + -- params: integer[] + -- return: count of outlines updated + +-- building_outlines_update_modified_date (update the modified date attr of building to now) + -- params: integer, building_outline_id + -- return: number of outlines updated + +-- building_outlines_update_modified_date_by_building_id (update the modified date attr of building to now) + -- params: integer, building_id + -- return: number of outlines updated + +-- building outlines_update_shape (update the geometry of specified outline) + -- params: shape to update to geometry, integer building_outline_id + --return: number of outlines updated (should only be one) + +-- building_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer[] list of suburb localities building must be within + -- return: integer count of number of building outlines updated + +-- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +-- building_outlines_update_town_city (Replace the town/city values with the intersection result) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +-------------------------------------------- + +-- Functions + +-- building_outlines_insert (add new entry to building outlines table) + -- params: integer building_id, integer capture_method_id, integer capture_source_id + -- integer lifecycle_stage_id, integer suburb_locality_id, integer town_city_id + -- integer territorial_authority_id, timestamp begin_lifespan, shape geometry + -- return: new building_outline_id + +CREATE OR REPLACE FUNCTION buildings.building_outlines_insert( + p_building_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_lifecycle_stage_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer + , p_shape geometry +) +RETURNS integer AS +$$ + + INSERT INTO buildings.building_outlines( + building_outline_id + , building_id + , capture_method_id + , capture_source_id + , lifecycle_stage_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + VALUES ( + DEFAULT -- sequence + , p_building_id + , p_capture_method_id + , p_capture_source_id + , p_lifecycle_stage_id + , p_suburb_locality_id + , p_town_city_id + , p_territorial_authority_id + , DEFAULT + , p_shape + ) + RETURNING building_outline_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry) IS +'Insert new building outline into table'; + + +-- building_outlines_insert_bulk (Create new added records in building outlines table) + -- params: integer building_outline_id, integer bulk_load_outline_id + -- return: building_outline_id + +CREATE OR REPLACE FUNCTION buildings.building_outlines_insert_bulk(integer, integer) +RETURNS integer AS +$$ + + SELECT buildings.building_outlines_insert ( + $1 + , supplied.capture_method_id + , supplied.capture_source_id + , 1 + , supplied.suburb_locality_id + , supplied.town_city_id + , supplied.territorial_authority_id + , supplied.shape + ) + FROM buildings_bulk_load.bulk_load_outlines supplied + WHERE supplied.bulk_load_outline_id = $2 + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_insert_bulk(integer, integer) IS +'Create new added records in building outlines table'; + + +-- building_outlines_update_attributes (update the attributes of specified outline) + -- params: integer building_outline_id, integer capture_method_id, integer lifecycle_stage_id, + -- integer town_city_id, integer territorial_authority_id, timestamp begin_lifespan, + -- shape geometry + --return: number of outlines updated (should only be one) + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_attributes( + p_building_outline_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_lifecycle_stage_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer +) +RETURNS integer AS +$$ + + WITH update_attributes AS ( + UPDATE buildings.building_outlines + SET + capture_method_id = $2 + , capture_source_id = $3 + , lifecycle_stage_id = $4 + , suburb_locality_id = $5 + , town_city_id = $6 + , territorial_authority_id = $7 + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_attributes; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +'Update attributes in building_outlines table'; + + +-- building_outlines_update_capture_method (update capture method attribute) + -- params integer building_outline_id, integer capture_method_id + -- return: integer count number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_capture_method( + p_building_outline_id integer + , p_capture_method_id integer +) +RETURNS integer AS +$$ + + WITH update_capture_method AS( + UPDATE buildings.building_outlines + SET capture_method_id = $2 + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_capture_method; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_capture_method(integer, integer) IS +'Update capture method in building_outlines table'; + + +-- building_outlines_update_end_lifespan (update the end lifespan attr of an outline) + -- params: integer[] + -- return: count of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_end_lifespan(integer[]) +RETURNS integer AS +$$ + + WITH update_building_outlines AS ( + UPDATE buildings.building_outlines + SET end_lifespan = now() + WHERE building_outline_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_building_outlines; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_end_lifespan(integer[]) IS +'Update end_lifespan in building outlines table'; + +-- building_outlines_update_modified_date (update the modified date attr of building to now) + -- params: integer, building_outline_id + -- return: number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_modified_date(integer) + RETURNS integer AS +$$ + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET last_modified = now() + WHERE building_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ LANGUAGE sql; + +COMMENT ON FUNCTION buildings.building_outlines_update_modified_date(integer) IS +'Update modified_date of outline in building_outlines table'; + + +-- building_outlines_update_modified_date_by_building_id (update the modified date attr of building to now) + -- params: integer, building_id + -- return: number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_modified_date_by_building_id(integer) + RETURNS integer AS +$$ + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET last_modified = now() + WHERE building_outline_id in ( + SELECT building_outline_id + FROM buildings.building_outlines + WHERE building_id = $1 + AND end_lifespan is NULL + ) + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ LANGUAGE sql; + +COMMENT ON FUNCTION buildings.building_outlines_update_modified_date_by_building_id(integer) IS +'Update modified_date of outline in building_outlines table by building_id'; + +-- building outlines_update_shape (update the geometry of specified outline) + -- params: shape to update to geometry, integer building_outline_id + -- return: number of outlines updated (should only be one) + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_shape(geometry, integer) +RETURNS integer AS +$$ + + WITH update_buildings AS ( + UPDATE buildings.building_outlines + SET shape = $1 + WHERE building_outline_id = $2 + RETURNING * + ) + SELECT count(*)::integer FROM update_buildings; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_shape(geometry, integer) IS +'Update shape in building_outlines table'; + +-- building_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer[] list of suburb localities building must be within + -- return: integer count of number of building outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_suburb(integer[]) +RETURNS integer AS +$$ + + WITH update_suburb AS ( + UPDATE buildings.building_outlines outlines + SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon + FROM ( + SELECT + buildings_reference.suburb_locality_intersect_polygon(outlines.shape) + , outlines.building_outline_id + FROM buildings.building_outlines outlines + ) suburb_locality_intersect + WHERE outlines.building_outline_id = suburb_locality_intersect.building_outline_id + AND suburb_locality_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_suburb; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_suburb(integer[]) IS +'Replace suburb values with the intersection result of buildings in the building_outlines table'; + +-- building_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_territorial_authority(integer[]) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings.building_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.building_outline_id + FROM buildings.building_outlines outlines + ) territorial_authority_intersect + WHERE outlines.building_outline_id = territorial_authority_intersect.building_outline_id + AND territorial_authority_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_territorial_authority(integer[]) IS +'Replace the TA values with the intersection result for all buildings in building_outlines'; + +-- building_outlines_update_town_city (Replace the town/city values with the intersection result) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings.building_outlines_update_town_city(integer[]) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings.building_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.building_outline_id + FROM buildings.building_outlines outlines + ) town_city_intersect + WHERE outlines.building_outline_id = town_city_intersect.building_outline_id + AND town_city_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings.building_outlines_update_town_city(integer[]) IS +'Replace the town/city values with the intersection result for all buildings in buildings.building_outlines'; + +COMMIT; diff --git a/db/sql/revert/buildings/remove_building_outlines_town_city_id_column.sql b/db/sql/revert/buildings/remove_building_outlines_town_city_id_column.sql new file mode 100644 index 00000000..0fe7ac5d --- /dev/null +++ b/db/sql/revert/buildings/remove_building_outlines_town_city_id_column.sql @@ -0,0 +1,8 @@ +-- Revert nz-buildings:buildings/remove_building_outlines_town_city_id_column from pg + +BEGIN; + +ALTER TABLE buildings.building_outlines +ADD COLUMN town_city_id integer; + +COMMIT; diff --git a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql index 6884f7eb..7327a2d2 100644 --- a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql +++ b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql @@ -2,6 +2,9 @@ BEGIN; +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry); +DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer); + -------------------------------------------- -- buildings_bulk_load.bulk_load_outlines @@ -46,10 +49,6 @@ BEGIN; -- params: integer supplied_dataset_id -- return: count(integer) number of building outlines updated --- bulk_load_outlines_update_all_suburbs (replace all suburb values with the intersection result) - -- params: integer[] list of suburb localities building must be within - -- return: count(integer) number of building outlines updated - -- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) -- params: integer supplied_dataset_id -- return: count(integer) number of outlines updated @@ -343,35 +342,6 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_suburb(integer) IS 'Replace suburb values with the intersection result of buildings from a supplied dataset in the bulk_load_outlines table'; --- bulk_load_outlines_update_all_suburbs (replace all suburb values with the intersection result) - -- params: integer[] list of suburb localities building must be within - -- return: count(integer) number of building outlines updated - -CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_suburbs(integer[]) -RETURNS integer AS -$$ - - WITH update_suburb AS ( - UPDATE buildings_bulk_load.bulk_load_outlines outlines - SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon - FROM ( - SELECT - buildings_reference.suburb_locality_intersect_polygon(outlines.shape) - , outlines.bulk_load_outline_id - FROM buildings_bulk_load.bulk_load_outlines outlines - ) suburb_locality_intersect - WHERE outlines.bulk_load_outline_id = suburb_locality_intersect.bulk_load_outline_id - AND suburb_locality_id = ANY($1) - RETURNING * - ) - SELECT count(*)::integer FROM update_suburb; - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_suburbs(integer[]) IS -'Replace suburb values with the intersection result of all buildings in the bulk_load_outlines table'; - -- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) -- params: integer supplied_dataset_id -- return: count(integer) number of outlines updated diff --git a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..6884f7eb --- /dev/null +++ b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql @@ -0,0 +1,491 @@ +-- Deploy nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to pg + +BEGIN; + +-------------------------------------------- +-- buildings_bulk_load.bulk_load_outlines + +-- Functions: + +-- bulk_load_outlines_insert (insert new bulk load outline) + -- params: integer supplied_dataset_id, integer external_outline_id + -- integer external_outline_id, integer bulk_load_status_id + -- integer capture_method_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, + -- geometry shape + -- return: integer new bulk_load_outline_id + +-- bulk_load_outlines_insert_supplied (insert supplied outlines into bulk_load_outlines) + -- params: integer supplied_dataset_id, integer bulk_load_status_id + -- integer capture_method_id, integer capture_source_id + -- return: integer count of supplied outlines added + +-- bulk_load_outlines_remove_small_buildings (change bulk load status of buildings less than 10sqm) + -- params: integer supplied_dataset_id + -- return: number of small buildings that have been removed + +-- bulk_load_outlines_update_attributes (update the attributes of an outlines) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer + -- capture_method_id, integer capture_source_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, geometry shape + -- return: count of number of outlines updated + +-- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id + -- return: integer count of building outlines updated + +-- bulk_load_outlines_update_capture_method (Update capture method in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer capture_method_id + -- return: integer count of building outlines updated + +-- bulk_load_outlines_update_shape (update the shape of an outline) + -- params: geometry, integer bulk_load_outline_id + -- return: number of outlines with updated shapes + +-- bulk_load_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of building outlines updated + +-- bulk_load_outlines_update_all_suburbs (replace all suburb values with the intersection result) + -- params: integer[] list of suburb localities building must be within + -- return: count(integer) number of building outlines updated + +-- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_all_territorial_authorities (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +-- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +-------------------------------------------- + +-- Functions + +-- bulk_load_outlines_insert (insert new bulk load outline) + -- params: integer supplied_dataset_id, integer external_outline_id + -- integer external_outline_id, integer bulk_load_status_id + -- integer capture_method_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id + -- geometry shape + -- return: integer new bulk_load_outline_id + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_insert( + p_supplied_dataset_id integer + , p_external_outline_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer + , p_shape geometry +) +RETURNS integer AS +$$ + + INSERT INTO buildings_bulk_load.bulk_load_outlines( + bulk_load_outline_id + , supplied_dataset_id + , external_outline_id + , bulk_load_status_id + , capture_method_id + , capture_source_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + VALUES ( + DEFAULT -- sequence + , p_supplied_dataset_id + , p_external_outline_id + , p_bulk_load_status_id + , p_capture_method_id + , p_capture_source_id + , p_suburb_locality_id + , p_town_city_id + , p_territorial_authority_id + , now() + , p_shape + ) + RETURNING bulk_load_outline_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry) IS +'Insert new bulk load outline'; + +-- bulk_load_outlines_insert_supplied (insert supplied outlines into bulk_load_outlines) + -- params: integer supplied_dataset_id, integer bulk_load_status_id + -- integer capture_method_id, integer capture_source_id + -- return: integer count of supplied outlines added + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_insert_supplied( + p_supplied_dataset_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer +) +RETURNS integer AS +$$ + + WITH insert_supplied AS ( + INSERT INTO buildings_bulk_load.bulk_load_outlines( + supplied_dataset_id + , external_outline_id + , bulk_load_status_id + , capture_method_id + , capture_source_id + , suburb_locality_id + , town_city_id + , territorial_authority_id + , begin_lifespan + , shape + ) + SELECT + supplied_dataset_id + , external_outline_id + , p_bulk_load_status_id + , p_capture_method_id + , p_capture_source_id + , buildings_reference.suburb_locality_intersect_polygon(shape) + , buildings_reference.town_city_intersect_polygon(shape) + , buildings_reference.territorial_authority_grid_intersect_polygon(shape) + , now() + , shape + FROM buildings_bulk_load.supplied_outlines s + WHERE s.supplied_dataset_id = p_supplied_dataset_id + RETURNING * + ) + SELECT count(*)::integer FROM insert_supplied; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_insert_supplied(integer, integer, integer, integer) IS +'Insert supplied outlines into bulk load outlines'; + + +-- bulk_load_outlines_remove_small_buildings (change bulk load status of buildings less than 10sqm) + -- params: integer supplied_dataset_id + -- return: number of small buildings that have been removed + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer) +RETURNS integer AS +$$ + + WITH small_buildings AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET bulk_load_status_id = 3 + WHERE bulk_load_outline_id IN ( + SELECT bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines + WHERE ST_Area(shape) < 10 + ) + AND supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM small_buildings; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer) IS +'Update bulk load status in bulk_load_outlines table of outlines less than 10sqm'; + +-- bulk_load_outlines_update_attributes (update the attributes of an outlines) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id, integer + -- capture_method_id, integer capture_source_id, integer suburb_locality_id + -- integer town_city_id, integer territorial_authority_id, geometry shape + -- return: count of number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes( + p_bulk_load_outline_id integer + , p_bulk_load_status_id integer + , p_capture_method_id integer + , p_capture_source_id integer + , p_suburb_locality_id integer + , p_town_city_id integer + , p_territorial_authority_id integer +) +RETURNS integer AS +$$ + + WITH update_attributes AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET + bulk_load_status_id = $2 + , capture_method_id = $3 + , capture_source_id = $4 + , suburb_locality_id = $5 + , town_city_id = $6 + , territorial_authority_id = $7 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_attributes; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer) IS +'Update attributes in bulk_load_outlines table'; + +-- bulk_load_outlines_update_bulk_load_status (Update bulk load status in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer bulk_load_status_id + -- return: integer count of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_bulk_load_status( + p_bulk_load_outline_id integer + , p_bulk_load_status_id integer +) +RETURNS integer AS +$$ + + WITH update_bulk_load_status AS( + UPDATE buildings_bulk_load.bulk_load_outlines + SET bulk_load_status_id = $2 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_bulk_load_status; + +$$ LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_bulk_load_status(integer, integer) IS +'Update bulk load status in bulk_load_outlines table'; + + +-- bulk_load_outlines_update_capture_method (Update capture method in bulk_load_outlines table) + -- params: integer bulk_load_outline_id, integer capture_method_id + -- return: integer count of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_capture_method( + p_bulk_load_outline_id integer + , p_capture_method_id integer +) +RETURNS integer AS +$$ + + WITH update_capture_method AS( + UPDATE buildings_bulk_load.bulk_load_outlines + SET capture_method_id = $2 + WHERE bulk_load_outline_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_capture_method; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_capture_method(integer, integer) IS +'Update capture method in bulk_load_outlines table'; + +-- bulk_load_outlines_update_shape (update the shape of an outline) + -- params: geometry, integer bulk_load_outline_id + -- return: number of outlines with updated shapes + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_shape(geometry, integer) +RETURNS integer AS +$$ + + WITH update_shape AS ( + UPDATE buildings_bulk_load.bulk_load_outlines + SET shape = $1 + WHERE bulk_load_outline_id = $2 + RETURNING * + ) + SELECT count(*)::integer FROM update_shape; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_shape(geometry, integer) IS +'Update shape in bulk_load_outlines table'; + +-- bulk_load_outlines_update_suburb (replace suburb values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_suburb(integer) +RETURNS integer AS +$$ + + WITH update_suburb AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon + FROM ( + SELECT + buildings_reference.suburb_locality_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) suburb_locality_intersect + WHERE outlines.bulk_load_outline_id = suburb_locality_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_suburb; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_suburb(integer) IS +'Replace suburb values with the intersection result of buildings from a supplied dataset in the bulk_load_outlines table'; + +-- bulk_load_outlines_update_all_suburbs (replace all suburb values with the intersection result) + -- params: integer[] list of suburb localities building must be within + -- return: count(integer) number of building outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_suburbs(integer[]) +RETURNS integer AS +$$ + + WITH update_suburb AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET suburb_locality_id = suburb_locality_intersect.suburb_locality_intersect_polygon + FROM ( + SELECT + buildings_reference.suburb_locality_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) suburb_locality_intersect + WHERE outlines.bulk_load_outline_id = suburb_locality_intersect.bulk_load_outline_id + AND suburb_locality_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_suburb; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_suburbs(integer[]) IS +'Replace suburb values with the intersection result of all buildings in the bulk_load_outlines table'; + +-- bulk_load_outlines_update_territorial_authority (Replace the TA values with the intersection result) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_territorial_authority(integer) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) territorial_authority_intersect + WHERE outlines.bulk_load_outline_id = territorial_authority_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_territorial_authority(integer) IS +'Replace the TA values with the intersection result'; + +-- bulk_load_outlines_update_all_territorial_authorities (Replace the TA values with the intersection result) + -- params: integer[] list of territorial_authorities buildings must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[]) +RETURNS integer AS +$$ + + WITH update_territorial_auth AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET territorial_authority_id = territorial_authority_intersect.territorial_authority_intersect_polygon + FROM ( + SELECT + buildings_reference.territorial_authority_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) territorial_authority_intersect + WHERE outlines.bulk_load_outline_id = territorial_authority_intersect.bulk_load_outline_id + AND territorial_authority_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_territorial_auth; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[]) IS +'Replace the TA values with the intersection result for all buildings in bulk_load_outlines'; + +-- bulk_load_outlines_update_town_city (Replace the town/city values with the intersection) + -- params: integer supplied_dataset_id + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) town_city_intersect + WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id + AND outlines.supplied_dataset_id = $1 + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_town_city(integer) IS +'Replace the town/city values with the intersection results for a supplied bulk loaded dataset'; + +-- bulk_load_outlines_update_all_town_cities (Replace the town/city values with the intersection) + -- params: integer[] list of town_city_ids building must be within + -- return: count(integer) number of outlines updated + +CREATE OR REPLACE FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) +RETURNS integer AS +$$ + + WITH update_town_city AS ( + UPDATE buildings_bulk_load.bulk_load_outlines outlines + SET town_city_id = town_city_intersect.town_city_intersect_polygon + FROM ( + SELECT + buildings_reference.town_city_intersect_polygon(outlines.shape) + , outlines.bulk_load_outline_id + FROM buildings_bulk_load.bulk_load_outlines outlines + ) town_city_intersect + WHERE outlines.bulk_load_outline_id = town_city_intersect.bulk_load_outline_id + AND town_city_id = ANY($1) + RETURNING * + ) + SELECT count(*)::integer FROM update_town_city; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[]) IS +'Replace the town/city values with the intersection result for all buildings in buildings_bulk_load.bulk_load_outlines'; + +COMMIT; diff --git a/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql b/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql new file mode 100644 index 00000000..97e2d682 --- /dev/null +++ b/db/sql/revert/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql @@ -0,0 +1,8 @@ +-- Revert nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column from pg + +BEGIN; + +ALTER TABLE buildings_bulk_load.bulk_load_outlines +ADD COLUMN town_city_id integer; + +COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql b/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql index caffb8f4..dbfc7a4c 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql @@ -2,12 +2,6 @@ BEGIN; -DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_insert_new_areas(); -DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_update_suburb_locality(); -DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_delete_removed_areas(); -DROP FUNCTION IF EXISTS buildings.building_outlines_update_suburb(integer[]); -DROP FUNCTION IF EXISTS buildings_bulk_load.bulk_load_outlines_update_all_suburbs(integer[]); - -- building_outlines_update_changed_and_deleted_suburb (replace suburb values with the intersection result) -- params: -- return: integer count of number of building outlines updated diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index 6bae298b..77c0654e 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -100,6 +100,10 @@ buildings_reference/functions/suburb_locality_optimised [buildings_reference/fun buildings/remove_building_outlines_ta_not_null_constraint 2024-08-07T02:50:08Z Yingting Chen # Remove NOT NULL constraint for territorial_authority_id column in building_outlines table. buildings_bulk_load/remove_bulk_load_outlines_ta_not_null_constraint 2024-08-07T02:51:28Z Yingting Chen # Remove NOT NULL constraint for territorial_authority_id column in bulk_load_outlines table. buildings_lds/functions/populate_buildings_lds [buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1] 2024-08-14T03:45:12Z Yingting Chen # Update suburb_locality name column in populate_buildings_lds function +buildings/functions/building_outlines [buildings/functions/building_outlines@v4.0.0-dev1] 2024-08-14T03:47:12Z Yingting Chen # Remove town_city_id column in functions. +buildings/remove_building_outlines_town_city_id_column 2024-08-14T03:50:02Z Yingting Chen # Remove town_city_id column in building_outlines table +buildings_bulk_load/functions/bulk_load_outlines [buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1] 2024-08-14T04:27:25Z Yingting Chen # Remove town_city_id column in funct\nions. +buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column 2024-08-14T04:32:22Z Yingting Chen # Remove town_city_id column in bulk_load_outlines table buildings_reference/functions/town_city [buildings_reference/functions/town_city@v4.0.0-dev1] 2024-08-14T04:35:22Z Yingting Chen # Remove functions of town_city table. buildings_reference/remove_suburb_locality_old_name_column 2024-08-14T04:40:22Z Yingting Chen # Remove suburb_locality old name columns from FENZ buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. diff --git a/db/sql/verify/buildings/functions/building_outlines.sql b/db/sql/verify/buildings/functions/building_outlines.sql index d0547a5f..eeb37f9e 100644 --- a/db/sql/verify/buildings/functions/building_outlines.sql +++ b/db/sql/verify/buildings/functions/building_outlines.sql @@ -12,11 +12,11 @@ BEGIN END IF; END $$; -SELECT has_function_privilege('buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry)', 'execute'); +SELECT has_function_privilege('buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, geometry)', 'execute'); SELECT has_function_privilege('buildings.building_outlines_insert_bulk(integer, integer)', 'execute'); -SELECT has_function_privilege('buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer)', 'execute'); +SELECT has_function_privilege('buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer)', 'execute'); SELECT has_function_privilege('buildings.building_outlines_update_capture_method(integer, integer)', 'execute'); @@ -26,10 +26,41 @@ SELECT has_function_privilege('buildings.building_outlines_update_shape(geometry SELECT has_function_privilege('buildings.building_outlines_update_territorial_authority(integer[])', 'execute'); -SELECT has_function_privilege('buildings.building_outlines_update_town_city(integer[])', 'execute'); - SELECT has_function_privilege('buildings.building_outlines_update_modified_date(integer)', 'execute'); SELECT has_function_privilege('buildings.building_outlines_update_modified_date_by_building_id(integer)', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_insert' + AND pronargs = 8; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; + +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_update_attributes' + AND pronargs = 7; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; + +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_update_town_city' + AND pronargs = 1; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; + ROLLBACK; diff --git a/db/sql/verify/buildings/functions/building_outlines@v4.0.0-dev1.sql b/db/sql/verify/buildings/functions/building_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..d0547a5f --- /dev/null +++ b/db/sql/verify/buildings/functions/building_outlines@v4.0.0-dev1.sql @@ -0,0 +1,35 @@ +-- Verify nz-buildings:buildings/functions/building_outlines on pg + +BEGIN; + +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_update_suburb'; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; + +SELECT has_function_privilege('buildings.building_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_insert_bulk(integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_capture_method(integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_end_lifespan(integer[])', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_shape(geometry, integer)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_territorial_authority(integer[])', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_town_city(integer[])', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_modified_date(integer)', 'execute'); + +SELECT has_function_privilege('buildings.building_outlines_update_modified_date_by_building_id(integer)', 'execute'); + +ROLLBACK; diff --git a/db/sql/verify/buildings/remove_building_outlines_town_city_id_column.sql b/db/sql/verify/buildings/remove_building_outlines_town_city_id_column.sql new file mode 100644 index 00000000..56453844 --- /dev/null +++ b/db/sql/verify/buildings/remove_building_outlines_town_city_id_column.sql @@ -0,0 +1,20 @@ +-- Verify nz-buildings:buildings/remove_building_outlines_town_city_id_column on pg + +BEGIN; + +DO $$ +BEGIN + + PERFORM column_name + FROM information_schema.columns + WHERE table_schema = 'buildings' + AND table_name = 'building_outlines' + AND column_name = 'town_city'; + + IF FOUND THEN + RAISE EXCEPTION 'Dropped column town_city Found.'; + END IF; + +END $$; + +ROLLBACK; diff --git a/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines.sql b/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines.sql index 1f13b567..fb092536 100644 --- a/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines.sql +++ b/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines.sql @@ -2,23 +2,13 @@ BEGIN; -DO $$ -BEGIN - PERFORM * - FROM pg_proc - WHERE proname = 'bulk_load_outlines_update_all_suburbs'; - IF FOUND THEN - RAISE EXCEPTION 'Dropped function found.'; - END IF; -END $$; - -SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry)', 'execute'); +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, geometry)', 'execute'); SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_insert_supplied(integer, integer, integer, integer)', 'execute'); SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer)', 'execute'); -SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer)', 'execute'); +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer)', 'execute'); SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_capture_method(integer, integer)', 'execute'); @@ -30,8 +20,45 @@ SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_ter SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[])', 'execute'); -SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_town_city(integer)', 'execute'); - -SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[])', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'bulk_load_outlines_insert' + AND pronargs = 9; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'bulk_load_outlines_update_attributes' + AND pronargs = 7; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'bulk_load_outlines_update_town_city' + AND pronargs = 1; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'bulk_load_outlines_update_all_town_cities' + AND pronargs = 1; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; ROLLBACK; diff --git a/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql b/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql new file mode 100644 index 00000000..1f13b567 --- /dev/null +++ b/db/sql/verify/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql @@ -0,0 +1,37 @@ +-- Verify nz-buildings:buildings_bulk_load/functions/bulk_load_outlines on pg + +BEGIN; + +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'bulk_load_outlines_update_all_suburbs'; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_insert(integer, integer, integer, integer, integer, integer, integer, integer, geometry)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_insert_supplied(integer, integer, integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_remove_small_buildings(integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_attributes(integer, integer, integer, integer, integer, integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_capture_method(integer, integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_shape(geometry, integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_suburb(integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_territorial_authority(integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(integer[])', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_town_city(integer)', 'execute'); + +SELECT has_function_privilege('buildings_bulk_load.bulk_load_outlines_update_all_town_cities(integer[])', 'execute'); + +ROLLBACK; diff --git a/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql b/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql new file mode 100644 index 00000000..2391e42b --- /dev/null +++ b/db/sql/verify/buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column.sql @@ -0,0 +1,20 @@ +-- Verify nz-buildings:buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column on pg + +BEGIN; + +DO $$ +BEGIN + + PERFORM column_name + FROM information_schema.columns + WHERE table_schema = 'buildings_bulk_load' + AND table_name = 'bulk_load_outlines' + AND column_name = 'town_city'; + + IF FOUND THEN + RAISE EXCEPTION 'Dropped column town_city Found.'; + END IF; + +END $$; + +ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/suburb_locality_optimised.sql b/db/sql/verify/buildings_reference/functions/suburb_locality_optimised.sql index 05c5bbe4..89429895 100644 --- a/db/sql/verify/buildings_reference/functions/suburb_locality_optimised.sql +++ b/db/sql/verify/buildings_reference/functions/suburb_locality_optimised.sql @@ -2,8 +2,26 @@ BEGIN; -SELECT has_function_privilege('buildings_reference.building_outlines_update_changed_and_deleted_suburb()', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_update_changed_and_deleted_suburb' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; -SELECT has_function_privilege('buildings_reference.building_outlines_update_added_suburb()', 'execute'); +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'building_outlines_update_added_suburb' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; ROLLBACK; From c7c5e90a86b5588a4a8d647bec9b16c1df6dfda5 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 17:12:56 +1200 Subject: [PATCH 04/19] feat: update plugin to remove town_city_id --- buildings/gui/alter_building_relationships.py | 7 +- buildings/gui/bulk_load_changes.py | 72 +++++------------ buildings/gui/comparisons.py | 2 +- buildings/gui/edit_dialog.py | 6 ++ buildings/gui/production_changes.py | 77 ++++++------------- .../buildings_reference_select_statements.py | 60 ++++----------- .../tests/gui/test_processes_add_bulk_load.py | 10 +-- .../gui/test_processes_add_production.py | 10 +-- .../tests/gui/test_processes_comparison.py | 3 +- ...test_processes_comparison_not_intersect.py | 3 +- ...test_processes_edit_attribute_bulk_load.py | 46 +++++------ ...est_processes_edit_attribute_production.py | 47 ++++------- ...cesses_update_reference_data_admin_bdys.py | 33 +------- 13 files changed, 113 insertions(+), 263 deletions(-) diff --git a/buildings/gui/alter_building_relationships.py b/buildings/gui/alter_building_relationships.py index 46e6f710..45cf2a03 100644 --- a/buildings/gui/alter_building_relationships.py +++ b/buildings/gui/alter_building_relationships.py @@ -1487,15 +1487,15 @@ def copy_and_match_removed_building(self): suburb = self.db.execute_no_commit(sql, (building_outline_id,)) suburb = suburb.fetchall()[0][0] sql = buildings_select.building_outlines_town_city_id_by_building_outline_id - town_city = self.db.execute_no_commit(sql, (building_outline_id,)) - town_city = town_city.fetchall()[0][0] + # town_city = self.db.execute_no_commit(sql, (building_outline_id,)) + # town_city = town_city.fetchall()[0][0] sql = ( buildings_select.building_outlines_territorial_authority_id_by_building_outline ) territorial_auth = self.db.execute_no_commit(sql, (building_outline_id,)) territorial_auth = territorial_auth.fetchall()[0][0] # insert outline into building_bulk_load.bulk_load_outlines - sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s, %s)" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s)" bulk_load_id = self.db.execute_no_commit( sql, ( @@ -1505,7 +1505,6 @@ def copy_and_match_removed_building(self): capture_method, capture_source, suburb, - town_city, territorial_auth, geometry, ), diff --git a/buildings/gui/bulk_load_changes.py b/buildings/gui/bulk_load_changes.py index c4f2c8f3..563a1fbb 100644 --- a/buildings/gui/bulk_load_changes.py +++ b/buildings/gui/bulk_load_changes.py @@ -70,28 +70,18 @@ def populate_edit_comboboxes(self): self.edit_dialog.cmb_ta.addItem(name) self.edit_dialog.ids_ta.append(id_ta) - # populate suburb combobox + # populate suburb/town combobox result = self.edit_dialog.db.execute_return( reference_select.suburb_locality_intersect_geom, (self.edit_dialog.geom,), ) self.edit_dialog.ids_suburb = [] - for (id_suburb, name) in result.fetchall(): + for (id_suburb, suburb_locality, town_city) in result.fetchall(): if name is not None: - self.edit_dialog.cmb_suburb.addItem(name) + self.edit_dialog.cmb_suburb.addItem(suburb_locality) + self.edit_dialog.cmb_town.addItem(town_city) self.edit_dialog.ids_suburb.append(id_suburb) - # populate town combobox - result = self.edit_dialog.db.execute_return( - reference_select.town_city_intersect_geometry, (self.edit_dialog.geom,) - ) - self.edit_dialog.cmb_town.addItem("") - self.edit_dialog.ids_town = [None] - for (id_town, name) in result.fetchall(): - if name is not None: - self.edit_dialog.cmb_town.addItem(name) - self.edit_dialog.ids_town.append(id_town) - def get_comboboxes_values(self): # bulk load status @@ -138,21 +128,16 @@ def get_comboboxes_values(self): index = self.edit_dialog.cmb_suburb.currentIndex() suburb = self.edit_dialog.ids_suburb[index] - # town - index = self.edit_dialog.cmb_town.currentIndex() - town = self.edit_dialog.ids_town[index] - # territorial Authority index = self.edit_dialog.cmb_ta.currentIndex() t_a = self.edit_dialog.ids_ta[index] else: - capture_source_id, suburb, town, t_a = None, None, None, None + capture_source_id, suburb, t_a = None, None, None return ( bulk_load_status_id, capture_method_id, capture_source_id, suburb, - town, t_a, ) @@ -167,7 +152,7 @@ def enable_UI_functions(self): self.edit_dialog.cmb_ta.clear() self.edit_dialog.cmb_ta.setEnabled(1) self.edit_dialog.cmb_town.clear() - self.edit_dialog.cmb_town.setEnabled(1) + self.edit_dialog.cmb_town.setEnabled(0) self.edit_dialog.cmb_suburb.clear() self.edit_dialog.cmb_suburb.setEnabled(1) self.edit_dialog.btn_edit_save.setEnabled(1) @@ -241,12 +226,12 @@ def edit_save_clicked(self, commit_status): """When bulk load frame btn_edit_save clicked""" self.edit_dialog.db.open_cursor() - _, capture_method_id, capture_source_id, suburb, town, t_a = ( + _, capture_method_id, capture_source_id, suburb, t_a = ( self.get_comboboxes_values() ) # insert into bulk_load_outlines table - sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, NULL, 2, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, NULL, 2, %s, %s, %s, %s, %s);" result = self.edit_dialog.db.execute_no_commit( sql, ( @@ -254,7 +239,6 @@ def edit_save_clicked(self, commit_status): capture_method_id, capture_source_id, suburb, - town, t_a, self.edit_dialog.geom, ), @@ -429,17 +413,12 @@ def select_comboboxes_value(self): index = self.edit_dialog.ids_ta.index(result.fetchall()[0][0]) self.edit_dialog.cmb_ta.setCurrentIndex(index) - # town locality - sql = "SELECT buildings_reference.town_city_intersect_polygon(%s);" - result = self.edit_dialog.db.execute_return(sql, (self.edit_dialog.geom,)) - index = self.edit_dialog.ids_town.index(result.fetchall()[0][0]) - self.edit_dialog.cmb_town.setCurrentIndex(index) - # suburb locality sql = "SELECT buildings_reference.suburb_locality_intersect_polygon(%s);" result = self.edit_dialog.db.execute_return(sql, (self.edit_dialog.geom,)) index = self.edit_dialog.ids_suburb.index(result.fetchall()[0][0]) self.edit_dialog.cmb_suburb.setCurrentIndex(index) + self.edit_dialog.cmb_town.setCurrentIndex(index) class EditAttribute(BulkLoadChanges): @@ -477,7 +456,7 @@ def edit_save_clicked(self, commit_status): """When bulk load frame btn_edit_save clicked""" self.edit_dialog.db.open_cursor() - bulk_load_status_id, capture_method_id, capture_source_id, suburb, town, t_a = ( + bulk_load_status_id, capture_method_id, capture_source_id, suburb, t_a = ( self.get_comboboxes_values() ) @@ -525,7 +504,7 @@ def edit_save_clicked(self, commit_status): # remove outline from added table sql = "SELECT buildings_bulk_load.added_delete_bulk_load_outlines(%s);" self.edit_dialog.db.execute_no_commit(sql, (i,)) - sql = "SELECT buildings_bulk_load.bulk_load_outlines_update_attributes(%s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_update_attributes(%s, %s, %s, %s, %s, %s);" self.edit_dialog.db.execute_no_commit( sql, ( @@ -534,7 +513,6 @@ def edit_save_clicked(self, commit_status): capture_method_id, capture_source_id, suburb, - town, t_a, ), ) @@ -549,7 +527,7 @@ def edit_save_clicked(self, commit_status): sql = "SELECT buildings_bulk_load.delete_deleted_description(%s);" self.edit_dialog.db.execute_no_commit(sql, (i,)) # change attributes - sql = "SELECT buildings_bulk_load.bulk_load_outlines_update_attributes(%s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_update_attributes(%s, %s, %s, %s, %s, %s);" self.edit_dialog.db.execute_no_commit( sql, ( @@ -558,7 +536,6 @@ def edit_save_clicked(self, commit_status): capture_method_id, capture_source_id, suburb, - town, t_a, ), ) @@ -611,7 +588,6 @@ def is_correct_selections(self): ls.append(feature.attributes()[5]) ls.append(feature.attributes()[6]) ls.append(feature.attributes()[7]) - ls.append(feature.attributes()[8]) if ls not in feats: feats.append(ls) # if selected features have different attributes (not allowed) @@ -735,23 +711,16 @@ def select_comboboxes_value(self): # suburb result = self.edit_dialog.db.execute_return( - reference_select.suburb_locality_name_by_bulk_outline_id, + reference_select.suburb_locality_town_city_by_bulk_outline_id, (self.edit_dialog.bulk_load_outline_id,), ) - result = result.fetchall()[0][0] + result1, result2 = result.fetchall()[0] self.edit_dialog.cmb_suburb.setCurrentIndex( - self.edit_dialog.cmb_suburb.findText(result) + self.edit_dialog.cmb_suburb.findText(result1) ) - - # town city - result = self.edit_dialog.db.execute_return( - reference_select.town_city_name_by_bulk_outline_id, - (self.edit_dialog.bulk_load_outline_id,), - ) - result = result.fetchall() - if result: + if result2: self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText(result[0][0]) + self.edit_dialog.cmb_town.findText(result2) ) else: self.edit_dialog.cmb_town.setCurrentIndex(0) @@ -859,7 +828,7 @@ def edit_save_clicked(self, commit_status): """When bulk load frame btn_edit_save clicked""" self.edit_dialog.db.open_cursor() - _, capture_method_id, _, _, _, _ = self.get_comboboxes_values() + _, capture_method_id, _, _, _ = self.get_comboboxes_values() self.edit_dialog.edit_geometry_saved.emit(list(self.edit_dialog.geoms.keys())) @@ -868,9 +837,7 @@ def edit_save_clicked(self, commit_status): # insert into bulk_load_outlines table for qgsfId, geom in list(self.edit_dialog.split_geoms.items()): attributes = self.new_attrs[qgsfId] - if not attributes[7]: - attributes[7] = None - sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, NULL, 2, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, NULL, 2, %s, %s, %s, %s, %s);" result = self.edit_dialog.db.execute_no_commit( sql, ( @@ -879,7 +846,6 @@ def edit_save_clicked(self, commit_status): attributes[5], attributes[6], attributes[7], - attributes[8], geom, ), ) diff --git a/buildings/gui/comparisons.py b/buildings/gui/comparisons.py index 47c7358b..56e52704 100644 --- a/buildings/gui/comparisons.py +++ b/buildings/gui/comparisons.py @@ -54,7 +54,7 @@ def compare_outlines(self, commit_status): # insert new outline into existing subset extracts sql = "SELECT buildings_bulk_load.existing_subset_extracts_insert(%s, %s, %s);" result = self.db.execute_no_commit( - sql, (ls[0], self.current_dataset, ls[10]) + sql, (ls[0], self.current_dataset, ls[9]) ) else: # update supplied dataset id of existing outline diff --git a/buildings/gui/edit_dialog.py b/buildings/gui/edit_dialog.py index 26e6170b..aa758f0c 100644 --- a/buildings/gui/edit_dialog.py +++ b/buildings/gui/edit_dialog.py @@ -73,6 +73,7 @@ def __init__(self, parent_frame, parent=None): self.completer_box() self.cmb_status.currentIndexChanged.connect(self.enable_le_deletion_reason) + self.cmb_suburb.currentIndexChanged.connect(self.cmb_suburb_changed) self.rejected.connect(self.close_dialog) def init_dialog(self): @@ -324,6 +325,11 @@ def enable_le_deletion_reason(self): self.le_deletion_reason.setDisabled(1) self.le_deletion_reason.clear() + @pyqtSlot(int) + def cmb_suburb_changed(self, index): + """Update cmb_town with the index from cmb_suburb""" + self.cmb_town.setCurrentIndex(index) + @pyqtSlot(list) def liqa_on_edit_geometry_saved(self, ids): """Update LIQA when geometry edited""" diff --git a/buildings/gui/production_changes.py b/buildings/gui/production_changes.py index d628fa17..8ff398ee 100644 --- a/buildings/gui/production_changes.py +++ b/buildings/gui/production_changes.py @@ -4,6 +4,7 @@ # -*- coding: utf-8 -*-\ from collections import OrderedDict +from qgis.PyQt.QtCore import pyqtSlot from qgis.PyQt.QtWidgets import QToolButton, QMessageBox from qgis.core import QgsFeatureRequest from qgis.utils import Qgis, iface @@ -84,27 +85,17 @@ def populate_edit_comboboxes(self): self.edit_dialog.cmb_ta.addItem(name) self.edit_dialog.ids_ta.append(id_ta) - # populate suburb combobox + # populate suburb/town combobox result = self.edit_dialog.db.execute_return( reference_select.suburb_locality_intersect_geom, (self.edit_dialog.geom,) ) self.edit_dialog.ids_suburb = [] - for (id_suburb, name) in result.fetchall(): + for (id_suburb, suburb_locality, town_city) in result.fetchall(): if name is not None: - self.edit_dialog.cmb_suburb.addItem(name) + self.edit_dialog.cmb_suburb.addItem(suburb_locality) + self.edit_dialog.cmb_town.addItem(town_city) self.edit_dialog.ids_suburb.append(id_suburb) - # populate town combobox - result = self.edit_dialog.db.execute_return( - reference_select.town_city_intersect_geometry, (self.edit_dialog.geom,) - ) - self.edit_dialog.cmb_town.addItem("") - self.edit_dialog.ids_town = [None] - for (id_town, name) in result.fetchall(): - if name is not None: - self.edit_dialog.cmb_town.addItem(name) - self.edit_dialog.ids_town.append(id_town) - def get_comboboxes_values(self): """Returns values in comboboxes""" if self.edit_dialog.layout_capture_method.isVisible(): @@ -149,16 +140,12 @@ def get_comboboxes_values(self): index = self.edit_dialog.cmb_suburb.currentIndex() suburb = self.edit_dialog.ids_suburb[index] - # town - index = self.edit_dialog.cmb_town.currentIndex() - town = self.edit_dialog.ids_town[index] - # territorial Authority index = self.edit_dialog.cmb_ta.currentIndex() t_a = self.edit_dialog.ids_ta[index] else: - capture_source_id, lifecycle_stage_id, suburb, town, t_a = (None, None, None, None, None) - return (capture_method_id, capture_source_id, lifecycle_stage_id, suburb, town, t_a) + capture_source_id, lifecycle_stage_id, suburb, t_a = (None, None, None, None) + return (capture_method_id, capture_source_id, lifecycle_stage_id, suburb, t_a) def enable_UI_functions(self): """ @@ -173,7 +160,7 @@ def enable_UI_functions(self): self.edit_dialog.cmb_ta.clear() self.edit_dialog.cmb_ta.setEnabled(1) self.edit_dialog.cmb_town.clear() - self.edit_dialog.cmb_town.setEnabled(1) + self.edit_dialog.cmb_town.setEnabled(0) self.edit_dialog.cmb_suburb.clear() self.edit_dialog.cmb_suburb.setEnabled(1) self.edit_dialog.btn_edit_save.setEnabled(1) @@ -247,17 +234,17 @@ def edit_save_clicked(self, commit_status): """ self.edit_dialog.db.open_cursor() - capture_method_id, capture_source_id, lifecycle_stage_id, suburb, town, t_a = self.get_comboboxes_values() + capture_method_id, capture_source_id, lifecycle_stage_id, suburb, t_a = self.get_comboboxes_values() # insert into buildings sql = "SELECT buildings.buildings_insert();" result = self.edit_dialog.db.execute_no_commit(sql) building_id = result.fetchall()[0][0] # insert into building_outlines table - sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, %s, %s, %s, %s);" result = self.edit_dialog.db.execute_no_commit( sql, - (building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb, town, t_a, self.edit_dialog.geom), + (building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb, t_a, self.edit_dialog.geom), ) self.edit_dialog.outline_id = result.fetchall()[0][0] @@ -434,17 +421,12 @@ def select_comboboxes_value(self): index = self.edit_dialog.ids_ta.index(result.fetchall()[0][0]) self.edit_dialog.cmb_ta.setCurrentIndex(index) - # town locality - sql = "SELECT buildings_reference.town_city_intersect_polygon(%s);" - result = self.edit_dialog.db.execute_return(sql, (self.edit_dialog.geom,)) - index = self.edit_dialog.ids_town.index(result.fetchall()[0][0]) - self.edit_dialog.cmb_town.setCurrentIndex(index) - - # suburb locality + # suburb locality / town city sql = "SELECT buildings_reference.suburb_locality_intersect_polygon(%s);" result = self.edit_dialog.db.execute_return(sql, (self.edit_dialog.geom,)) index = self.edit_dialog.ids_suburb.index(result.fetchall()[0][0]) self.edit_dialog.cmb_suburb.setCurrentIndex(index) + self.edit_dialog.cmb_town.setCurrentIndex(index) class EditAttribute(ProductionChanges): @@ -487,13 +469,13 @@ def edit_save_clicked(self, commit_status): """ self.edit_dialog.db.open_cursor() - capture_method_id, capture_source_id, lifecycle_stage_id, suburb, town, t_a = self.get_comboboxes_values() + capture_method_id, capture_source_id, lifecycle_stage_id, suburb, t_a = self.get_comboboxes_values() if len(self.edit_dialog.ids) > 0: for i in self.edit_dialog.ids: - sql = "SELECT buildings.building_outlines_update_attributes(%s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings.building_outlines_update_attributes(%s, %s, %s, %s, %s, %s);" self.edit_dialog.db.execute_no_commit( - sql, (i, capture_method_id, capture_source_id, lifecycle_stage_id, suburb, town, t_a) + sql, (i, capture_method_id, capture_source_id, lifecycle_stage_id, suburb, t_a) ) sql = "SELECT buildings.building_outlines_update_modified_date(%s);" self.edit_dialog.db.execute_no_commit(sql, (i,)) @@ -647,7 +629,6 @@ def is_correct_selections(self): ls.append(feature.attributes()[4]) ls.append(feature.attributes()[5]) ls.append(feature.attributes()[6]) - ls.append(feature.attributes()[7]) if ls not in feats: feats.append(ls) # if selected features have different attributes (not allowed) @@ -708,18 +689,12 @@ def select_comboboxes_value(self): # suburb result = self.edit_dialog.db.execute_return( - reference_select.suburb_locality_name_by_building_outline_id, (self.edit_dialog.building_outline_id,) + reference_select.suburb_locality_town_city_by_building_outline_id, (self.edit_dialog.building_outline_id,) ) - result = result.fetchall()[0][0] - self.edit_dialog.cmb_suburb.setCurrentIndex(self.edit_dialog.cmb_suburb.findText(result)) - - # town city - result = self.edit_dialog.db.execute_return( - reference_select.town_city_name_by_building_outline_id, (self.edit_dialog.building_outline_id,) - ) - result = result.fetchall() - if result: - self.edit_dialog.cmb_town.setCurrentIndex(self.edit_dialog.cmb_town.findText(result[0][0])) + result1, result2 = result.fetchall()[0] + self.edit_dialog.cmb_suburb.setCurrentIndex(self.edit_dialog.cmb_suburb.findText(result1)) + if result2: + self.edit_dialog.cmb_town.setCurrentIndex(self.edit_dialog.cmb_town.findText(result2)) else: self.edit_dialog.cmb_town.setCurrentIndex(0) @@ -771,20 +746,18 @@ def edit_save_clicked(self, commit_status): """ self.edit_dialog.db.open_cursor() - capture_method_id, _, _, _, _, _ = self.get_comboboxes_values() + capture_method_id, _, _, _, _= self.get_comboboxes_values() if len(self.edit_dialog.split_geoms) > 0: for qgsfId, geom in list(self.edit_dialog.split_geoms.items()): attributes = self.new_attrs[qgsfId] - if not attributes[6]: - attributes[6] = None # New building sql = "SELECT buildings.buildings_insert();" result = self.edit_dialog.db.execute_no_commit(sql) building_id = result.fetchall()[0][0] # new building outline - sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, 1, %s, %s, %s, %s);" + sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, 1, %s, %s, %s);" result = self.edit_dialog.db.execute_no_commit( sql, ( @@ -793,7 +766,6 @@ def edit_save_clicked(self, commit_status): attributes[3], attributes[5], attributes[6], - attributes[7], geom ), ) @@ -809,7 +781,7 @@ def edit_save_clicked(self, commit_status): building_id = result.fetchall()[0][0] # new building outline - sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, 1, %s, %s, %s, %s);" + sql = "SELECT buildings.building_outlines_insert(%s, %s, %s, 1, %s, %s, %s);" result = self.edit_dialog.db.execute_no_commit( sql, ( @@ -818,7 +790,6 @@ def edit_save_clicked(self, commit_status): attributes[3], attributes[5], attributes[6], - attributes[7], self.edit_dialog.geoms[key] ), ) diff --git a/buildings/sql/buildings_reference_select_statements.py b/buildings/sql/buildings_reference_select_statements.py index 1e03f8cc..c50a8af7 100644 --- a/buildings/sql/buildings_reference_select_statements.py +++ b/buildings/sql/buildings_reference_select_statements.py @@ -15,9 +15,8 @@ - suburb_locality - suburb_locality_intersect_geom (geometry) - - suburb_locality_name - - suburb_locality_name_by_building_outline_id (building_outline_id) - - suburb_locality_name_by_bulk_outline_id (bulk_load_outline_id) + - suburb_locality_town_city_by_building_outline_id (building_outline_id) + - suburb_locality_town_city_by_bulk_outline_id (bulk_load_outline_id) - territorial_authority - territorial_authority_intersect_geom (geometry) @@ -94,30 +93,33 @@ WHERE external_{0}_points_id = %s; """ +# admin boundaries + +select_admin_bdy_id_by_external_id = """ +SELECT {0}_id +FROM buildings_reference.{0} +WHERE external_{0}_id = %s; +""" + # suburb locality suburb_locality_intersect_geom = """ -SELECT suburb_locality_id, name +SELECT suburb_locality_id, suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE shape && ST_Expand(%s::Geometry, 1000) -ORDER BY name; -""" - -suburb_locality_name = """ -SELECT DISTINCT name -FROM buildings_reference.suburb_locality; +ORDER BY suburb_locality; """ -suburb_locality_name_by_building_outline_id = """ -SELECT name +suburb_locality_town_city_by_building_outline_id = """ +SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality sl, buildings.building_outlines bo WHERE sl.suburb_locality_id = bo.suburb_locality_id AND bo.building_outline_id = %s; """ -suburb_locality_name_by_bulk_outline_id = """ -SELECT name +suburb_locality_town_city_by_bulk_outline_id = """ +SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality sl, buildings_bulk_load.bulk_load_outlines blo WHERE sl.suburb_locality_id = blo.suburb_locality_id @@ -159,33 +161,3 @@ refresh_ta_grid_view = """ REFRESH MATERIALIZED VIEW buildings_reference.territorial_authority_grid; """ - -# town city - -town_city_intersect_geometry = """ -SELECT town_city_id, name -FROM buildings_reference.town_city -WHERE ST_Intersects(shape, ST_Buffer(%s::Geometry, 1000)) -ORDER BY name -""" - -town_city_name = """ -SELECT DISTINCT name -FROM buildings_reference.town_city; -""" - -town_city_name_by_building_outline_id = """ -SELECT name -FROM buildings_reference.town_city tc, - buildings.building_outlines bo -WHERE tc.town_city_id = bo.town_city_id -AND bo.building_outline_id = %s; -""" - -town_city_name_by_bulk_outline_id = """ -SELECT name -FROM buildings_reference.town_city tc, - buildings_bulk_load.bulk_load_outlines blo -WHERE tc.town_city_id = blo.town_city_id -AND blo.bulk_load_outline_id = %s; -""" diff --git a/buildings/tests/gui/test_processes_add_bulk_load.py b/buildings/tests/gui/test_processes_add_bulk_load.py index 16d82f05..162c86b4 100644 --- a/buildings/tests/gui/test_processes_add_bulk_load.py +++ b/buildings/tests/gui/test_processes_add_bulk_load.py @@ -83,7 +83,7 @@ def test_ui_on_geometry_drawn(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEquals(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") self.assertEquals(self.edit_dialog.cmb_capture_source.currentText(), "1- Imagery One- NZ Aerial Imagery") @@ -117,7 +117,7 @@ def test_draw_circle_option(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEquals(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -149,7 +149,7 @@ def test_reset_clicked(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEquals(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -157,7 +157,6 @@ def test_reset_clicked(self): self.edit_dialog.cmb_capture_method.setCurrentIndex(1) self.edit_dialog.cmb_capture_source.setCurrentIndex(0) self.edit_dialog.cmb_ta.setCurrentIndex(1) - self.edit_dialog.cmb_town.setCurrentIndex(0) self.edit_dialog.cmb_suburb.setCurrentIndex(1) # click reset button self.edit_dialog.btn_edit_reset.click() @@ -211,13 +210,12 @@ def test_new_outline_insert(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEquals(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") # change indexes of comboboxes self.edit_dialog.cmb_capture_source.setCurrentIndex(0) self.edit_dialog.cmb_ta.setCurrentIndex(0) - self.edit_dialog.cmb_town.setCurrentIndex(0) self.edit_dialog.cmb_suburb.setCurrentIndex(0) self.edit_dialog.change_instance.edit_save_clicked(False) sql = "SELECT COUNT(bulk_load_outline_id) FROM buildings_bulk_load.bulk_load_outlines;" diff --git a/buildings/tests/gui/test_processes_add_production.py b/buildings/tests/gui/test_processes_add_production.py index 4d3646cc..f5ffc3fc 100644 --- a/buildings/tests/gui/test_processes_add_production.py +++ b/buildings/tests/gui/test_processes_add_production.py @@ -87,7 +87,7 @@ def test_ui_on_geometry_drawn(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertEqual(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -123,7 +123,7 @@ def test_draw_circle_option(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -154,7 +154,7 @@ def test_reset_clicked(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -162,7 +162,6 @@ def test_reset_clicked(self): self.edit_dialog.cmb_capture_method.setCurrentIndex(1) self.edit_dialog.cmb_capture_source.setCurrentIndex(0) self.edit_dialog.cmb_ta.setCurrentIndex(1) - self.edit_dialog.cmb_town.setCurrentIndex(0) self.edit_dialog.cmb_suburb.setCurrentIndex(1) self.edit_dialog.cmb_lifecycle_stage.setCurrentIndex(2) # click reset button @@ -216,7 +215,7 @@ def test_new_outline_insert(self): self.assertTrue(self.edit_dialog.cmb_capture_method.isEnabled()) self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertEqual(self.edit_dialog.cmb_capture_method.currentText(), "Trace Orthophotography") @@ -225,7 +224,6 @@ def test_new_outline_insert(self): self.edit_dialog.cmb_capture_source.setCurrentIndex(0) self.edit_dialog.cmb_lifecycle_stage.setCurrentIndex(2) self.edit_dialog.cmb_ta.setCurrentIndex(0) - self.edit_dialog.cmb_town.setCurrentIndex(0) self.edit_dialog.cmb_suburb.setCurrentIndex(0) self.edit_dialog.change_instance.edit_save_clicked(False) sql = "SELECT COUNT(building_outline_id) FROM buildings.building_outlines;" diff --git a/buildings/tests/gui/test_processes_comparison.py b/buildings/tests/gui/test_processes_comparison.py index f13df543..f471e9d5 100644 --- a/buildings/tests/gui/test_processes_comparison.py +++ b/buildings/tests/gui/test_processes_comparison.py @@ -158,7 +158,7 @@ def test_outline_add_during_qa(self): result = db._execute(sql) supplied_dataset_id = result.fetchall()[0][0] # Add one outline in both bulk_load_outlines and added table - sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s);" result = db._execute( sql, ( @@ -168,7 +168,6 @@ def test_outline_add_during_qa(self): 1, 1001, 101, - 1001, 10001, "0103000020910800000100000005000000EA7ABCBF6AA83C414C38B255343155417C46175878A83C413A28764134315541C18607A978A83C417A865C33323155412FBBAC106BA83C417A865C3332315541EA7ABCBF6AA83C414C38B25534315541", ), diff --git a/buildings/tests/gui/test_processes_comparison_not_intersect.py b/buildings/tests/gui/test_processes_comparison_not_intersect.py index 1beedf49..de929244 100644 --- a/buildings/tests/gui/test_processes_comparison_not_intersect.py +++ b/buildings/tests/gui/test_processes_comparison_not_intersect.py @@ -165,7 +165,7 @@ def test_add_during_qa(self): result = db._execute(sql) result = result.fetchall()[0][0] # Add one outline in both bulk_load_outlines and added table - sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s, %s);" + sql = "SELECT buildings_bulk_load.bulk_load_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s);" result = db._execute( sql, ( @@ -175,7 +175,6 @@ def test_add_during_qa(self): 1, 1001, 104, - 1004, 10001, "0103000020910800000100000005000000F311221BB7AA3C41046171A564315541D2712DB1CCAA3C41046171A56431554115066169CDAA3C41E20FFCA060315541751FEF95B7AA3C414353AFBF60315541F311221BB7AA3C41046171A564315541", ), diff --git a/buildings/tests/gui/test_processes_edit_attribute_bulk_load.py b/buildings/tests/gui/test_processes_edit_attribute_bulk_load.py index 22433b3d..162d0cae 100644 --- a/buildings/tests/gui/test_processes_edit_attribute_bulk_load.py +++ b/buildings/tests/gui/test_processes_edit_attribute_bulk_load.py @@ -108,7 +108,7 @@ def test_ui_on_geom_selected(self): self.assertFalse(self.edit_dialog.le_deletion_reason.isEnabled()) self.assertEqual(self.edit_dialog.le_deletion_reason.text(), "") self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_status.currentText(), "Supplied") @@ -123,6 +123,10 @@ def test_ui_on_geom_selected(self): self.assertEqual(self.edit_dialog.cmb_town.currentText(), "Wellington") self.assertEqual(self.edit_dialog.cmb_suburb.currentText(), "Aro Valley") + # test cmb_suburb trigger function in edit_dialog.py + self.edit_dialog.cmb_suburb.setCurrentIndex(self.edit_dialog.cmb_suburb.findText("Hokowhitu")) + self.assertEqual(self.edit_dialog.cmb_town.currentText(), "Palmerston North") + def test_select_geom_before_edit(self): """UI and Canvas behave correctly when geometry is selected before edits button clicked""" self.bulk_load_frame.edit_dialog.close() @@ -158,7 +162,7 @@ def test_select_geom_before_edit(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_status.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_status.currentText(), "Supplied") @@ -233,7 +237,7 @@ def test_select_multiple_geom_before_edit(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_status.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_status.currentText(), "Supplied") self.assertEqual( @@ -388,14 +392,11 @@ def test_save_clicked(self): self.edit_dialog.cmb_ta.setCurrentIndex( self.edit_dialog.cmb_ta.findText("Manawatu-Whanganui") ) - self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText("Palmerston North") - ) self.edit_dialog.cmb_suburb.setCurrentIndex( self.edit_dialog.cmb_suburb.findText("Hokowhitu") ) self.bulk_load_frame.change_instance.edit_save_clicked(False) - sql = "SELECT bulk_load_status_id, capture_method_id, suburb_locality_id, town_city_id, territorial_authority_id FROM buildings_bulk_load.bulk_load_outlines WHERE bulk_load_outline_id = %s" + sql = "SELECT bulk_load_status_id, capture_method_id, suburb_locality_id, territorial_authority_id FROM buildings_bulk_load.bulk_load_outlines WHERE bulk_load_outline_id = %s" result = db._execute(sql, (self.edit_dialog.bulk_load_outline_id,)) result = result.fetchall()[0] # status @@ -408,19 +409,15 @@ def test_save_clicked(self): capture_method = db._execute(sql, (result[1],)) capture_method = capture_method.fetchall()[0][0] self.assertEqual("Unknown", capture_method) - # suburb - sql = "SELECT name FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" + # suburb/town + sql = "SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" suburb = db._execute(sql, (result[2],)) - suburb = suburb.fetchall()[0][0] + suburb, town = suburb.fetchall()[0] self.assertEqual("Hokowhitu", suburb) - # town - sql = "SELECT name FROM buildings_reference.town_city WHERE town_city_id = %s;" - town_city = db._execute(sql, (result[3],)) - town_city = town_city.fetchall()[0][0] - self.assertEqual("Palmerston North", town_city) + self.assertEqual("Palmerston North", town) # territorial Authority sql = "SELECT name FROM buildings_reference.territorial_authority WHERE territorial_authority_id = %s;" - territorial_authority = db._execute(sql, (result[4],)) + territorial_authority = db._execute(sql, (result[3],)) territorial_authority = territorial_authority.fetchall()[0][0] self.assertEqual("Manawatu-Whanganui", territorial_authority) @@ -493,15 +490,12 @@ def test_edit_mutiple_attributes(self): self.edit_dialog.cmb_ta.setCurrentIndex( self.edit_dialog.cmb_ta.findText("Manawatu-Whanganui") ) - self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText("Palmerston North") - ) self.edit_dialog.cmb_suburb.setCurrentIndex( self.edit_dialog.cmb_suburb.findText("Hokowhitu") ) self.bulk_load_frame.change_instance.edit_save_clicked(False) for i in self.edit_dialog.ids: - sql = "SELECT bulk_load_status_id, capture_method_id, suburb_locality_id, town_city_id, territorial_authority_id FROM buildings_bulk_load.bulk_load_outlines WHERE bulk_load_outline_id = %s;" + sql = "SELECT bulk_load_status_id, capture_method_id, suburb_locality_id, territorial_authority_id FROM buildings_bulk_load.bulk_load_outlines WHERE bulk_load_outline_id = %s;" result = db._execute(sql, (i,)) result = result.fetchall()[0] # status @@ -514,16 +508,12 @@ def test_edit_mutiple_attributes(self): capture_method = db._execute(sql, (result[1],)) capture_method = capture_method.fetchall()[0][0] self.assertEqual("Unknown", capture_method) - # suburb - sql = "SELECT name FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" + # suburb/town + sql = "SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" suburb = db._execute(sql, (result[2],)) - suburb = suburb.fetchall()[0][0] + suburb, town = suburb.fetchall()[0] self.assertEqual("Hokowhitu", suburb) - # town - sql = "SELECT name FROM buildings_reference.town_city WHERE town_city_id = %s;" - town_city = db._execute(sql, (result[3],)) - town_city = town_city.fetchall()[0][0] - self.assertEqual("Palmerston North", town_city) + self.assertEqual("Palmerston North", town) # territorial Authority sql = "SELECT name FROM buildings_reference.territorial_authority WHERE territorial_authority_id = %s;" territorial_authority = db._execute(sql, (result[4],)) diff --git a/buildings/tests/gui/test_processes_edit_attribute_production.py b/buildings/tests/gui/test_processes_edit_attribute_production.py index b63c2ea7..42e4e885 100644 --- a/buildings/tests/gui/test_processes_edit_attribute_production.py +++ b/buildings/tests/gui/test_processes_edit_attribute_production.py @@ -88,7 +88,7 @@ def test_ui_on_geom_selected(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_lifecycle_stage.currentText(), "Current") @@ -178,16 +178,13 @@ def test_save_clicked(self): self.edit_dialog.cmb_ta.setCurrentIndex( self.edit_dialog.cmb_ta.findText("Manawatu-Whanganui") ) - self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText("Palmerston North") - ) self.edit_dialog.cmb_suburb.setCurrentIndex( self.edit_dialog.cmb_suburb.findText("Hokowhitu") ) self.edit_dialog.change_instance.edit_save_clicked(False) - sql = "SELECT lifecycle_stage_id, capture_method_id, suburb_locality_id, town_city_id, territorial_authority_id FROM buildings.building_outlines WHERE building_outline_id = %s" + sql = "SELECT lifecycle_stage_id, capture_method_id, suburb_locality_id, territorial_authority_id FROM buildings.building_outlines WHERE building_outline_id = %s" result = db._execute(sql, (self.edit_dialog.building_outline_id,)) result = result.fetchall()[0] # lifecycle_stage @@ -202,19 +199,15 @@ def test_save_clicked(self): capture_method = db._execute(sql, (result[1],)) capture_method = capture_method.fetchall()[0][0] self.assertEqual("Unknown", capture_method) - # suburb - sql = "SELECT name FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" + # suburb/town + sql = "SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" suburb = db._execute(sql, (result[2],)) - suburb = suburb.fetchall()[0][0] + suburb, town = suburb.fetchall()[0] self.assertEqual("Hokowhitu", suburb) - # town - sql = "SELECT name FROM buildings_reference.town_city WHERE town_city_id = %s;" - town_city = db._execute(sql, (result[3],)) - town_city = town_city.fetchall()[0][0] - self.assertEqual("Palmerston North", town_city) + self.assertEqual("Palmerston North", town) # territorial Authority sql = "SELECT name FROM buildings_reference.territorial_authority WHERE territorial_authority_id = %s;" - territorial_authority = db._execute(sql, (result[4],)) + territorial_authority = db._execute(sql, (result[3],)) territorial_authority = territorial_authority.fetchall()[0][0] self.assertEqual("Manawatu-Whanganui", territorial_authority) @@ -287,9 +280,6 @@ def test_edit_mutiple_attributes(self): self.edit_dialog.cmb_ta.setCurrentIndex( self.edit_dialog.cmb_ta.findText("Manawatu-Whanganui") ) - self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText("Palmerston North") - ) self.edit_dialog.cmb_suburb.setCurrentIndex( self.edit_dialog.cmb_suburb.findText("Hokowhitu") ) @@ -297,7 +287,7 @@ def test_edit_mutiple_attributes(self): self.edit_dialog.change_instance.edit_save_clicked(False) for i in self.edit_dialog.ids: - sql = "SELECT lifecycle_stage_id, capture_method_id, suburb_locality_id, town_city_id, territorial_authority_id FROM buildings.building_outlines WHERE building_outline_id = %s;" + sql = "SELECT lifecycle_stage_id, capture_method_id, suburb_locality_id, territorial_authority_id FROM buildings.building_outlines WHERE building_outline_id = %s;" result = db._execute(sql, (i,)) result = result.fetchall()[0] # lifecycle_stage @@ -310,19 +300,15 @@ def test_edit_mutiple_attributes(self): capture_method = db._execute(sql, (result[1],)) capture_method = capture_method.fetchall()[0][0] self.assertEqual("Unknown", capture_method) - # suburb - sql = "SELECT name FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" + # suburb/town + sql = "SELECT suburb_locality, town_city FROM buildings_reference.suburb_locality WHERE suburb_locality_id = %s;" suburb = db._execute(sql, (result[2],)) - suburb = suburb.fetchall()[0][0] + suburb, town = suburb.fetchall()[0] self.assertEqual("Hokowhitu", suburb) - # town - sql = "SELECT name FROM buildings_reference.town_city WHERE town_city_id = %s;" - town_city = db._execute(sql, (result[3],)) - town_city = town_city.fetchall()[0][0] - self.assertEqual("Palmerston North", town_city) + self.assertEqual("Palmerston North", town) # territorial Authority sql = "SELECT name FROM buildings_reference.territorial_authority WHERE territorial_authority_id = %s;" - territorial_authority = db._execute(sql, (result[4],)) + territorial_authority = db._execute(sql, (result[3],)) territorial_authority = territorial_authority.fetchall()[0][0] self.assertEqual("Manawatu-Whanganui", territorial_authority) self.assertEqual(len(self.edit_dialog.ids), 4) @@ -446,7 +432,7 @@ def test_select_geom_before_edit(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_lifecycle_stage.currentText(), "Current") @@ -521,7 +507,7 @@ def test_select_multiple_geom_before_edit(self): self.assertTrue(self.edit_dialog.cmb_capture_source.isEnabled()) self.assertTrue(self.edit_dialog.cmb_lifecycle_stage.isEnabled()) self.assertTrue(self.edit_dialog.cmb_ta.isEnabled()) - self.assertTrue(self.edit_dialog.cmb_town.isEnabled()) + self.assertFalse(self.edit_dialog.cmb_town.isEnabled()) self.assertTrue(self.edit_dialog.cmb_suburb.isEnabled()) self.assertEqual(self.edit_dialog.cmb_lifecycle_stage.currentText(), "Current") @@ -715,9 +701,6 @@ def test_modified_date_on_save(self): self.edit_dialog.cmb_ta.setCurrentIndex( self.edit_dialog.cmb_ta.findText("Manawatu-Whanganui") ) - self.edit_dialog.cmb_town.setCurrentIndex( - self.edit_dialog.cmb_town.findText("Palmerston North") - ) self.edit_dialog.cmb_suburb.setCurrentIndex( self.edit_dialog.cmb_suburb.findText("Hokowhitu") ) diff --git a/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py b/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py index 69aec1f5..c4a65e34 100644 --- a/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py +++ b/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py @@ -132,38 +132,7 @@ def tearDown(self): def test_town_city_table_update(self): """Check buildings_reference.town_city table updates correctly.""" - self.reference_frame.chbx_town.setChecked(True) - - btn_ok = self.reference_frame.msgbox.button(QMessageBox.Ok) - QTimer.singleShot(500, btn_ok.click) - - self.reference_frame.update_clicked(commit_status=False) - - # deleted town city - sql_removed = "SELECT count(*)::integer FROM buildings_reference.town_city WHERE external_city_id = 1002;" - result = db._execute(sql_removed) - count_removed = result.fetchone()[0] - self.assertEqual(count_removed, 0) - # new town city - sql_added = "SELECT count(*)::integer FROM buildings_reference.town_city WHERE external_city_id = 1003;" - result = db._execute(sql_added) - count_added = result.fetchone()[0] - self.assertEqual(count_added, 1) - # updated town city - sql_upated = "SELECT name FROM buildings_reference.town_city WHERE external_city_id = 1001;" - result = db._execute(sql_upated) - name_updated = result.fetchone()[0] - self.assertEqual(name_updated, "Wellington City") - # check bulk_load_outlines - sql_blo = "SELECT count(DISTINCT town_city_id)::integer FROM buildings_bulk_load.bulk_load_outlines;" - result = db._execute(sql_blo) - blo_town_update = result.fetchone()[0] - self.assertEqual(blo_town_update, 2) - # check building_outlines - sql_bo = "SELECT count(DISTINCT town_city_id)::integer FROM buildings.building_outlines;" - result = db._execute(sql_bo) - bo_town_update = result.fetchone()[0] - self.assertEqual(bo_town_update, 2) + pass # this is to be updated def test_territorial_authority_table_update(self): """Check buildings_reference.territorial_authority table updates correctly""" From c8afe8d7229d6bc5ba181c981efc5b89e6fcc1ec Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 17:44:28 +1200 Subject: [PATCH 05/19] feat: update reference_update_log --- .../functions/reference_update_log.sql | 5 +- .../reference_update_log@v4.0.0-dev1.sql | 49 +++++++++++++++++++ .../functions/reference_update_log.sql | 46 ++++++++++++++++- .../reference_update_log@v4.0.0-dev1.sql | 7 +++ db/sql/sqitch.plan | 1 + .../functions/reference_update_log.sql | 13 +++++ .../reference_update_log@v4.0.0-dev1.sql | 7 +++ 7 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 db/sql/deploy/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql create mode 100644 db/sql/revert/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql create mode 100644 db/sql/verify/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql diff --git a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql index f5d677e3..4181a57c 100644 --- a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql @@ -24,7 +24,7 @@ CREATE OR REPLACE FUNCTION buildings_reference.reference_update_log_insert_log(p RETURNS integer AS $$ - INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, town_city) + INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality) VALUES(CASE WHEN ('river' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('lake' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('pond' = ANY(p_list)) THEN True ELSE False END, @@ -35,8 +35,7 @@ $$ CASE WHEN ('capture_source_area' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('territorial_authority' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('territorial_authority_grid' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('town_city' = ANY(p_list)) THEN True ELSE False END + CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END ) RETURNING update_id; diff --git a/db/sql/deploy/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql b/db/sql/deploy/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql new file mode 100644 index 00000000..f5d677e3 --- /dev/null +++ b/db/sql/deploy/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql @@ -0,0 +1,49 @@ +-- Deploy nz-buildings:buildings_reference/functions/reference_update_log to pg + +BEGIN; + +-------------------------------------------- +-- buildings_reference.reference_update_log + +-- Functions + +-- reference_update_log_insert_log + -- params: list varchar the columns to be set as true + -- return: integer update_id + +-------------------------------------------- + +-- Functions + +-- reference_update_log_insert_log + -- params: list varchar the columns to be set as true + -- return: integer update_id + + +CREATE OR REPLACE FUNCTION buildings_reference.reference_update_log_insert_log(p_list varchar[]) +RETURNS integer AS +$$ + + INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, town_city) + VALUES(CASE WHEN ('river' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lake' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('pond' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('swamp' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lagoon' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('canal' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('coastlines_and_islands' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('capture_source_area' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('territorial_authority' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('territorial_authority_grid' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('town_city' = ANY(p_list)) THEN True ELSE False END + ) + RETURNING update_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.reference_update_log_insert_log(varchar[]) IS +'Insert new log into reference log table'; + +COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/reference_update_log.sql b/db/sql/revert/buildings_reference/functions/reference_update_log.sql index 16ff23a6..f5d677e3 100644 --- a/db/sql/revert/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/revert/buildings_reference/functions/reference_update_log.sql @@ -1,7 +1,49 @@ --- Revert nz-buildings:buildings_reference/functions/reference_update_log from pg +-- Deploy nz-buildings:buildings_reference/functions/reference_update_log to pg BEGIN; -DROP FUNCTION buildings_reference.reference_update_log_insert_log(varchar[]); +-------------------------------------------- +-- buildings_reference.reference_update_log + +-- Functions + +-- reference_update_log_insert_log + -- params: list varchar the columns to be set as true + -- return: integer update_id + +-------------------------------------------- + +-- Functions + +-- reference_update_log_insert_log + -- params: list varchar the columns to be set as true + -- return: integer update_id + + +CREATE OR REPLACE FUNCTION buildings_reference.reference_update_log_insert_log(p_list varchar[]) +RETURNS integer AS +$$ + + INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, town_city) + VALUES(CASE WHEN ('river' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lake' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('pond' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('swamp' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lagoon' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('canal' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('coastlines_and_islands' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('capture_source_area' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('territorial_authority' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('territorial_authority_grid' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('town_city' = ANY(p_list)) THEN True ELSE False END + ) + RETURNING update_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.reference_update_log_insert_log(varchar[]) IS +'Insert new log into reference log table'; COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql new file mode 100644 index 00000000..16ff23a6 --- /dev/null +++ b/db/sql/revert/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql @@ -0,0 +1,7 @@ +-- Revert nz-buildings:buildings_reference/functions/reference_update_log from pg + +BEGIN; + +DROP FUNCTION buildings_reference.reference_update_log_insert_log(varchar[]); + +COMMIT; diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index 77c0654e..d9c5413f 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -105,5 +105,6 @@ buildings/remove_building_outlines_town_city_id_column 2024-08-14T03:50:02Z Ying buildings_bulk_load/functions/bulk_load_outlines [buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1] 2024-08-14T04:27:25Z Yingting Chen # Remove town_city_id column in funct\nions. buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column 2024-08-14T04:32:22Z Yingting Chen # Remove town_city_id column in bulk_load_outlines table buildings_reference/functions/town_city [buildings_reference/functions/town_city@v4.0.0-dev1] 2024-08-14T04:35:22Z Yingting Chen # Remove functions of town_city table. +buildings_reference/functions/reference_update_log [buildings_reference/functions/reference_update_log@v4.0.0-dev1] 2024-08-14T04:38:22Z Yingting Chen # Remove town_city in reference_update_log update function. buildings_reference/remove_suburb_locality_old_name_column 2024-08-14T04:40:22Z Yingting Chen # Remove suburb_locality old name columns from FENZ buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. diff --git a/db/sql/verify/buildings_reference/functions/reference_update_log.sql b/db/sql/verify/buildings_reference/functions/reference_update_log.sql index f9ff449e..dbd3c2e1 100644 --- a/db/sql/verify/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/verify/buildings_reference/functions/reference_update_log.sql @@ -4,4 +4,17 @@ BEGIN; SELECT has_function_privilege('buildings_reference.reference_update_log_insert_log(varchar[])', 'execute'); +DO $$ +BEGIN + + PERFORM proname, proargnames, prosrc + FROM pg_proc + WHERE proname = 'reference_update_log_insert_log' + AND prosrc LIKE '%town_city%'; + IF FOUND THEN + RAISE EXCEPTION 'town_city found, should have been removed.'; + END IF; + +END $$; + ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql b/db/sql/verify/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql new file mode 100644 index 00000000..f9ff449e --- /dev/null +++ b/db/sql/verify/buildings_reference/functions/reference_update_log@v4.0.0-dev1.sql @@ -0,0 +1,7 @@ +-- Verify nz-buildings:buildings_reference/functions/reference_update_log on pg + +BEGIN; + +SELECT has_function_privilege('buildings_reference.reference_update_log_insert_log(varchar[])', 'execute'); + +ROLLBACK; From 0668506979eec8fba629d2809f7be0330303bbb8 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 30 Aug 2024 17:46:42 +1200 Subject: [PATCH 06/19] feat: update test and test data --- db/tests/admin_boundary_functions.pg | 21 +- db/tests/buildings_lds_populate.pg | 16 +- db/tests/testdata/db/buildings.sql | 252 +++++++++--------- db/tests/testdata/db/buildings_bulk_load.sql | 194 +++++++------- db/tests/testdata/db/buildings_reference.sql | 15 +- .../testdata/insert_test_data_publish_lds.sql | 48 ++-- db/tests/testdata/plugin/buildings.sql | 66 ++--- .../testdata/plugin/buildings_bulk_load.sql | 132 ++++----- .../testdata/plugin/buildings_reference.sql | 13 +- 9 files changed, 364 insertions(+), 393 deletions(-) diff --git a/db/tests/admin_boundary_functions.pg b/db/tests/admin_boundary_functions.pg index 4470dd2f..83afd71e 100644 --- a/db/tests/admin_boundary_functions.pg +++ b/db/tests/admin_boundary_functions.pg @@ -15,7 +15,7 @@ \set ON_ERROR_STOP true BEGIN; -SELECT plan(11); +SELECT plan(8); -- Tests @@ -50,25 +50,6 @@ SELECT results_eq( 'Check suburb_locality_id of bulk load outlines table after bulk_load_outlines_update_suburb function has run' ); ---Town City------------------- -SELECT results_eq( - $$SELECT buildings_reference.town_city_intersect_polygon('01060000209108000001000000010300000001000000050000000000000028A83C41000000C0263155410000000028A83C410000000019315541000000008CA83C410000000019315541000000008CA83C41000000C0263155410000000028A83C41000000C026315541');$$, - $$VALUES (1001)$$, - 'town_city_intersect_polygon not returning correct town_city_id value when building intersects town_city polygon' -); - -SELECT results_eq( - $$SELECT buildings_reference.town_city_intersect_polygon('01030000209108000001000000050000003460F2F8D9A93C417F87C576D7305541D6ECEDF2DAA93C41C1E8E623D0305541569A5626FCA93C4112AFE4A0D030554170F46338F9A93C412EC1C7F9D63055413460F2F8D9A93C417F87C576D7305541');$$, - $$VALUES (NULL::integer)$$, - 'town_city_intersect_polygon not returning correct town_city_id value when building is outside town_city polygon' -); - -SELECT results_eq( - $$SELECT town_city_id from buildings_bulk_load.bulk_load_outlines blo WHERE blo.supplied_dataset_id = 3;$$, - $$VALUES (1001)$$, - 'Check town_city_id of bulk load outlines table after bulk_load_outlines_update_town_city function has run' -); - --Territorial Authority------------------------- SELECT results_eq( $$SELECT buildings_reference.territorial_authority_intersect_polygon('01060000209108000001000000010300000001000000050000000000000028A83C41000000C0263155410000000028A83C410000000019315541000000008CA83C410000000019315541000000008CA83C41000000C0263155410000000028A83C41000000C026315541');$$, diff --git a/db/tests/buildings_lds_populate.pg b/db/tests/buildings_lds_populate.pg index 264b96a4..ce1ca3c1 100644 --- a/db/tests/buildings_lds_populate.pg +++ b/db/tests/buildings_lds_populate.pg @@ -83,12 +83,12 @@ SELECT results_eq( (10081, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), (10082, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), (10083, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18001, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18002, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18003, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18004, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18005, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), - (18006, '', 'Unknown', 'Hokowhitu', '', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18001, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18002, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18003, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18004, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18005, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), + (18006, '', 'Unknown', 'Hokowhitu', 'Palmerston North', 'Manawatu-Whanganui', 'Feature Extraction', 'NZ Aerial Imagery'), (1000000, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000001, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000002, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), @@ -118,10 +118,10 @@ SELECT results_eq( (1000026, '', 'Unknown', 'Aro Valley', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000027, '', 'Unknown', 'Aro Valley', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000028, '', 'Unknown', 'Aro Valley', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), - (1000029, '', 'Unknown', 'Kelburn', '', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), + (1000029, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000030, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1000031, '', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), - (1000032, '', 'Unknown', 'Test Island', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), + (1000032, '', 'Unknown', 'Test Island', '', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1500001, '', 'Unknown', 'Aro Valley', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1500003, 'Name Added', 'Unknown', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), (1500004, '', 'Abattoir', 'Kelburn', 'Wellington', 'Wellington', 'Feature Extraction', 'NZ Aerial Imagery'), diff --git a/db/tests/testdata/db/buildings.sql b/db/tests/testdata/db/buildings.sql index a5bd0e54..16e7444c 100644 --- a/db/tests/testdata/db/buildings.sql +++ b/db/tests/testdata/db/buildings.sql @@ -129,132 +129,132 @@ INSERT INTO buildings.buildings (building_id, begin_lifespan, end_lifespan) VALU -- buildings.building_outlines -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1004, 10004, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1006, 10006, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000001, 1000001, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000002, 10001, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1001, 10001, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000003, 10005, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1005, 10005, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000004, 10003, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1003, 10003, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000005, 10002, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1002, 10002, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000007, 1000003, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1032, 10032, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1033, 10033, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000008, 1000004, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000009, 1000005, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000010, 1000006, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000011, 1000007, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000012, 1000008, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000013, 1000009, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1031, 10031, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000014, 1000010, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000015, 1000011, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000016, 1000012, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000017, 1000013, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000018, 1000014, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1030, 10030, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000019, 1000015, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000020, 1000016, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000021, 1000017, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000022, 1000018, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1029, 10029, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000023, 1000019, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000024, 1000020, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000025, 1000021, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1028, 10028, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000026, 1000022, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000027, 1000023, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1027, 10027, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000028, 1000024, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000D0000005A224B267DA83C41687E9882F63055419B4A3361D7A83C411C7F5B8AF630554138504B9FD7A83C4116D17205EF3055414167668ECDA83C417ED2F814EF3055414167668ECDA83C418608A06AF1305541543CE7A3C0A83C412C88BE66F1305541BC3D6DB3C0A83C41342A30DFF23055418D64F52196A83C41B22661B8F230554149DFBEE795A83C41565D05C9EC305541068BD2BB8CA83C416DBDFDC9EC3055419F894CAC8CA83C41E1CCE0D6EE305541EE1927C97CA83C41E1CCE0D6EE3055415A224B267DA83C41687E9882F6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1021, 10021, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000006000000BEBC5B497EA83C41D6A394F7F330554124BEE1587EA83C4141DBC15CF63055410F0C77C78CA83C41E75AE058F6305541DA07E5988CA83C41E532F115EF30554121B7430B7EA83C41D8B14C0AEF305541BEBC5B497EA83C41D6A394F7F3305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1022, 10022, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000001E28EFFD8DA83C418EDAFE54F630554146C3FE36B1A83C41D892055FF630554159303D24B1A83C4154F67632F33055415025E3DE8DA83C419791C62DF33055411E28EFFD8DA83C418EDAFE54F6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1023, 10023, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000DB6ABBE6B2A83C41643F8D44F63055417FB0E545D6A83C41F5DB8464F63055414CB3F164D6A83C417AB7E8D0F4305541F99BCED0B2A83C41E0C042ACF4305541DB6ABBE6B2A83C41643F8D44F6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1024, 10024, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000B62669EE8DA83C41E18965D8F23055417AD0BF4495A83C41880984D4F230554144CC2D1695A83C41D8824302ED3055418122D7BF8DA83C41D7824302ED305541B62669EE8DA83C41E18965D8F2305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1025, 10025, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000081FB5E73CEA83C41692FA677F43055417EB0E545D6A83C4110AFC473F43055411AB6FD83D6A83C413639CC5BEF30554182FB5E73CEA83C413639CC5BEF30554181FB5E73CEA83C41692FA677F4305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1026, 10026, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000008000000536B3295C1A83C41A492144AF43055413376221BCDA83C41FAEBFF46F43055419FD53CD0CCA83C416B6C6792F130554179D3EBA7C1A83C41C4EC4896F1305541AC28168FC1A83C41131EB12FF3305541F9D4E1FAB2A83C41FB063C30F3305541E175A8FCB2A83C4129F4A242F4305541536B3295C1A83C41A492144AF4305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000029, 1000025, 5, 1001, 1, 103, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1016, 10016, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1017, 10017, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1018, 10018, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1019, 10019, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1020, 10020, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000030, 1000026, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1012, 10012, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1013, 10013, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1014, 10014, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1015, 10015, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000031, 1000027, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1009, 10009, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1010, 10010, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1011, 10011, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000032, 1000028, 5, 1001, 1, 102, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1007, 10007, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1008, 10008, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1034, 10034, 5, 1001, 1, 101, 1001, 10001, '2018-01-01 09:00:00', NULL, '010300002091080000010000000500000059AE79D94CA83C41C482B9960B31554159AE79D94CA83C410747313805315541826067316BA83C410747313805315541826067316BA83C41B2940BA90B31554159AE79D94CA83C41C482B9960B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1035, 10035, 5, 1001, 1, 101, 1001, 10001, '2018-01-01 09:00:00', NULL, '0103000020910800000100000007000000E768BF4E11A83C41F74A09740F315541E768BF4E11A83C411D305C2606315541C659FE1839A83C411D305C2606315541C659FE1839A83C415EEBDCF0083155417DC631E61BA83C415EEBDCF0083155417DC631E61BA83C410939B7610F315541E768BF4E11A83C41F74A09740F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1036, 10036, 5, 1001, 1, 101, 1001, 10001, '2018-01-01 09:00:00', NULL, '010300002091080000010000000500000011F3E2044DA83C415D8BBEB516315541621AADA95BA83C415D8BBEB516315541621AADA95BA83C41F2BAF16D1231554111F3E2044DA83C41F2BAF16D1231554111F3E2044DA83C415D8BBEB516315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1037, 10037, 5, 1001, 1, 101, 1001, 10001, '2018-01-01 09:00:00', NULL, '0103000020910800000100000005000000975CAF9068A83C41BE5B019516315541F25E2B1C78A83C410E3E968616315541F25E2B1C78A83C41F34F5E3012315541975CAF9068A83C41F34F5E3012315541975CAF9068A83C41BE5B019516315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000033, 1000029, 5, 1001, 1, 101, NULL, 10001, '2019-05-30 14:50:01.236765', NULL, '0103000020910800000100000005000000000000009FB33A4100000080BCB35441000000009FB33A4100000080AEB3544100000000D8B33A4100000080AEB3544100000000D8B33A4100000080BCB35441000000009FB33A4100000080BCB35441', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1038, 10038, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000000437733CA6AA3C41319198124D315541BE4A5FD0ABAA3C413E36B0E94B3155418E7CB9BA9AAA3C41FCC5CD74463155415EDA703D95AA3C41233A38A3473155410437733CA6AA3C41319198124D315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1069, 10069, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000007000000CF7C28986AAA3C41766A1687F330554109F3BFCC71AA3C419E013991F3305541A40CCDD878AA3C419B4A4375F4305541A28A79707DAA3C41B32D5F70F2305541855F031F75AA3C4155706A3AF13055417F4EE3836AAA3C410C775140F1305541CF7C28986AAA3C41766A1687F3305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1070, 10070, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000005CA3AD3A6BAA3C41F932AEF9F8305541CDC4379974AA3C418F6CB77FF93055419E4C57FE75AA3C413D6C4DF0F7305541741CAE3D6BAA3C41102E7A56F7305541ED71AF666AAA3C413495EE46F8305541A780CEC86BAA3C41CA99B85AF83055415CA3AD3A6BAA3C41F932AEF9F8305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1071, 10071, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000BF1112BDC4AA3C41748DBED6FC305541EA62EDB8CFAA3C41D364572DFD3055419E506A9BD0AA3C412537B461FB30554173FF8E9FC5AA3C41C65F1B0BFB305541BF1112BDC4AA3C41748DBED6FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1072, 10072, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000047326B8DBAAA3C412843B941F63055417F7F37E8BFAA3C41D883F64DF6305541A1847B29C0AA3C41D65F1A85F43055416937AFCEBAAA3C41261FDD78F430554147326B8DBAAA3C412843B941F6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1077, 10077, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000013000000AB04D8DFC4AA3C41FDF3D3C511315541AB04D8DFC4AA3C410C2875CD0F315541406D89F8CAAA3C410C2875CD0F315541406D89F8CAAA3C4101952F0E0E315541122173FBC3AA3C4101952F0E0E315541122173FBC3AA3C410349DF140B315541A69C78D2CAAA3C410349DF140B315541A69C78D2CAAA3C41EB5B50D109315541D4D53A11D1AA3C41EB5B50D109315541D4D53A11D1AA3C412A7D631E0B315541368A761FD6AA3C412A7D631E0B315541368A761FD6AA3C412B57BBA109315541F764E6B1E4AA3C412B57BBA109315541F764E6B1E4AA3C41DC27AFC90B315541C83E7831DFAA3C41DC27AFC90B315541C83E7831DFAA3C41CEE0B9030D315541F764E6B1E4AA3C41CEE0B9030D315541F764E6B1E4AA3C41B18BCBB211315541AB04D8DFC4AA3C41FDF3D3C511315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1039, 10039, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000DDEBE631C3AA3C41ACA3AE3E563155410A4D1250C3AA3C410DBA6B4456315541E7722070C3AA3C4181F07A49563155411CE9D291C3AA3C41A86BD24D563155419208E8B4C3AA3C41DCB569515631554155771BD9C3AA3C4130D039545631554194AD26FEC3AA3C41863F3D5656315541117FC123C4AA3C41B5177057563155418AA7A249C4AA3C41ED02D05756315541D859806FC4AA3C4147465C5756315541DCCF1095C4AA3C4136C315565631554178D90ABAC4AA3C41EAF5FE5356315541FA6B26DEC4AA3C4161F01B51563155410E2E1D01C5AA3C416352724D563155419F00AB22C5AA3C41C33E0949563155413D848E42C5AA3C414C4DE943563155416E978960C5AA3C41097A1C3E563155412BD1617CC5AA3C41EC11AE375631554147F1E095C5AA3C41A19CAA3056315541CB4AD5ACC5AA3C4156C41F29563155419B2412C1C5AA3C41DF3A1C2156315541351170D2C5AA3C41529DAF1856315541053ACDE0C5AA3C417455EA0F5631554157A30DECC5AA3C41C379DD0656315541AF601BF4C5AA3C4133AC9AFD553155416BC1E6F8C5AA3C41D4F733F455315541496E66FAC5AA3C41B6ADBBEA55315541B27B97F8C5AA3C41234144E1553155416C6F7DF3C5AA3C41A123E0D7553155413D3A22EBC5AA3C413AA1A1CE55315541192496DFC5AA3C419ABC9AC55531554120ACEFD0C5AA3C41150CDDBC55315541A15D4BBFC5AA3C41719779B455315541C497CBAAC5AA3C4189B680AC55315541BA4A9893C5AA3C41B2F101A55531554145AADE79C5AA3C414EE30B9E553155411AD5D05DC5AA3C41471BAC9755315541ED73A53FC5AA3C41E604EF9155315541104E971FC5AA3C4172CEDF8C55315541D5100B14C5AA3C414EE3478B55315541496A1DF3C4AA3C413150068755315541B3DEDAD0C4AA3C4171627C8355315541524D83ADC4AA3C41FBB2B08055315541CA995889C4AA3C411978A87E5531554184319E64C4AA3C41A57B677D55315541AB8D983FC4AA3C411A14F07C55315541D8B38C1AC4AA3C410620437D553155410CB5BFF5C3AA3C41A204607E55315541592D76D1C3AA3C41C6AE44805531554131C3F3ADC3AA3C41DC96ED82553155416BAA7A8BC3AA3C4172C7558655315541F2274B6AC3AA3C4187E6768A55315541211AA34AC3AA3C413241498F55315541B285BD2CC3AA3C414ADAC39455315541AB27D210C3AA3C41D57ADC9A55315541D70C15F7C2AA3C4151C587A155315541D631B6DFC2AA3C41BA4AB9A8553155414E28E1CAC2AA3C41F1A163B0553155411BC7BCB8C2AA3C417A8078B855315541F4E06AA9C2AA3C4136D5E8C0553155415D05089DC2AA3C419CE4A4C9553155411F4CAB93C2AA3C41DC659CD2553155415529668DC2AA3C4171A1BEDB553155418D4D448AC2AA3C410990FAE455315541CB8F4B8AC2AA3C4187FA3EEE553155414FE27B8DC2AA3C41EF997AF7553155419053CF93C2AA3C41A4379C0056315541FF173A9DC2AA3C4198CD92095631554154A1AAA9C2AA3C41DBA54D12563155419BBE09B9C2AA3C41F979BC1A5631554151C73ACBC2AA3C412291CF225631554117D11BE0C2AA3C41A7DD772A5631554118EF85F7C2AA3C41C918A731563155415C7A4D11C3AA3C41A3DD4F38563155412763422DC3AA3C41F1C1653E56315541DDEBE631C3AA3C41ACA3AE3E56315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1040, 10040, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000CF801F64B0AA3C411FB2B148543155411BF2F078B9AA3C4164B00339533155411B23C001ADAA3C41F516498E4C315541CFB1EEECA3AA3C41B018F79D4D315541CF801F64B0AA3C411FB2B14854315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1041, 10041, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000900000004B783E7AAAA3C41E24B74F35B315541FFCA8C91C8AA3C41A9CB58E95C3155416F37779DB8AA3C41770127A15331554102BA71FDAFAA3C416D98578E543155410540CBB2B5AA3C41B3FD94E057315541EC5A10D7B6AA3C41841203C657315541AFC46ED7B7AA3C4178AAF05858315541C65434ABACAA3C416ADE6F085831554104B783E7AAAA3C41E24B74F35B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1042, 10042, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B0000006B7284E5C6AA3C4150719CAC583155412862F00FC7AA3C41584D1DB258315541DE271E3CC7AA3C41842CACB6583155415BB0B769C7AA3C416D2D40BA5831554117246498C7AA3C416657D2BC58315541AD93C8C7C7AA3C4127A85DBE5831554131A988F7C7AA3C417D1DDFBE58315541605C4727C8AA3C4128BB55BE5831554179A7A756C8AA3C41D88CC2BC58315541F53C4D85C8AA3C4119A428BA58315541833ADDB2C8AA3C4137128DB65831554168DBFEDEC8AA3C41B9DEF6B15831554118245C09C9AA3C4147F96EAC58315541AF8AA231C9AA3C417A2800A65831554124978357C9AA3C41DFF4B69E58315541797CB57AC9AA3C416990A19658315541DAA8F39AC9AA3C41FEBACF8D583155414E4AFFB7C9AA3C4186A35284583155410ACA9FD1C9AA3C41B0C63C7A58315541013AA3E7C9AA3C41C1CAA16F58315541AFB6DEF9C9AA3C41535996645831554153BA2E08CAAA3C4134F72F595831554162627712CAAA3C4145DA844D5831554166A5A418CAAA3C415FBEAB4158315541BD7AAA1ACAAA3C41FEB8BB35583155416CF18418CAAA3C41330CCC29583155412B383812CAAA3C416CF9F31D583155410395D007CAAA3C4118944A1258315541A84D62F9C9AA3C41AA94E60658315541867F09E7C9AA3C41712CDEFB57315541BEE9E9D0C9AA3C4145DA46F15731554187A62EB7C9AA3C419F4035E7573155411BD8099AC9AA3C418CFDBCDD573155416E46B479C9AA3C412C84F0D45731554199F06C56C9AA3C411FF9E0CC57315541E4927830C9AA3C41B7109EC5573155418A1F2108C9AA3C41D3F035BF57315541A22FB5DDC8AA3C41CA14B5B957315541EC6987B1C8AA3C419F3526B5573155418633A6A2C8AA3C413F67DCB357315541E2EDBD77C8AA3C418BC6D6B15731554158FA544CC8AA3C419D67AAB0573155410AFEAF20C8AA3C41602559B0573155410DFD13F5C7AA3C416D80E3B0573155418BEDC5C9C7AA3C41E99D48B257315541B0490A9FC7AA3C41254986B457315541FBA42475C7AA3C41F2F698B757315541D83F574CC7AA3C415DCB7BBB57315541F39FE224C7AA3C4134A128C057315541B62905FFC6AA3C41F31398C55731554176BDFADAC6AA3C41308BC1CB573155415759FCB8C6AA3C417B489BD2573155415CBE3F99C6AA3C41A4761ADA57315541571CF77BC6AA3C41C03A33E257315541E4C15061C6AA3C4121C7D8EA573155411BD37649C6AA3C41776FFDF357315541C5078F34C6AA3C4169BE92FD57315541A66EBA22C6AA3C41718C890758315541CE391514C6AA3C410618D21158315541F891B608C6AA3C41241E5C1C58315541CD71B000C6AA3C416EF41627583155418B890FFCC5AA3C413BA3F13158315541DE2ADBFAC5AA3C418200DB3C58315541AA3D15FDC5AA3C4127CBC14758315541263CBA02C6AA3C41EBC59452583155417139C10BC6AA3C4104D3425D583155411FEF1B18C6AA3C41150FBB6758315541E7D3B627C6AA3C41BCEBEC7158315541A93A793AC6AA3C41064AC87B5831554131794550C6AA3C4194933D85583155415917F968C6AA3C41ABD33D8E5831554167056D84C6AA3C417DCEBA9658315541F7D975A2C6AA3C41DC17A79E583155416A16E4C2C6AA3C415B28F6A5583155416B7284E5C6AA3C4150719CAC58315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1043, 10043, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C00000092C71545C1AA3C4111BE3B0C55315541A8E88265C1AA3C4123BE951355315541E18E6088C1AA3C416FB5331A5531554152CC6AADC1AA3C4182BF082055315541947659D4C1AA3C41907F0925553155418AB3E0FCC1AA3C4134362C2955315541D58CB126C2AA3C41C0D4682C553155410A8A7A51C2AA3C41C70CB92E553155415F4FE87CC2AA3C41835C183055315541F03FA6A8C2AA3C416717843055315541A5225FD4C2AA3C419C6BFB2F5531554122C8BDFFC2AA3C416D637F2E5531554108B16D2AC3AA3C413CE3122C5531554138B21B54C3AA3C4100A4BA28553155416197767CC3AA3C41F7297D245531554162C02FA3C3AA3C41E6B7621F55315541A3BBFBC7C3AA3C41473F751955315541B4D792EAC3AA3C418C4CC012553155413CB0B10AC4AA3C41DEF0500B55315541ABB01928C4AA3C4199A8350355315541B28D9142C4AA3C410B3F7EFA5431554128B6E559C4AA3C41AFAF3BF15431554137B6E86DC4AA3C411E0580E754315541C690737EC4AA3C41E1355EDD54315541F70A668BC4AA3C418EFFE9D2543155413CEBA694C4AA3C4140C037C854315541012A249AC4AA3C41EB4E5CBD54315541BC15D39BC4AA3C41C7D26CB2543155419066B099C4AA3C411A9A7EA754315541D645C093C4AA3C41BAF0A69C5431554112450E8AC4AA3C4181F6FA91543155412248AD7CC4AA3C4135768F8754315541D35FB76BC4AA3C41EBBC787D54315541B8974D57C4AA3C41A072CA73543155413EB5973FC4AA3C41DA73976A5431554150EAC324C4AA3C41D6ACF161543155419A7B0607C4AA3C41A9F6E95954315541855A99E6C3AA3C4198F68F52543155411F8F6CC9C3AA3C41CFFAF14C5431554139C0A3A7C3AA3C4142B7134654315541D9E19683C3AA3C415697F83F54315541FB308C5DC3AA3C417C80AC3A54315541A5CBCD35C3AA3C41BDC4393654315541A020A90CC3AA3C41C20EA93254315541F9586EE2C2AA3C41CD500130543155417ABB6FB7C2AA3C412EB7472E54315541450C018CC2AA3C41519E7F2D543155416DEA7660C2AA3C41058CAA2D54315541E0292635C2AA3C41AA2CC82E54315541242F630AC2AA3C41CA53D63054315541424A81E0C1AA3C413800D13354315541B514D2B7C1AA3C411664B2375431554109D3A490C1AA3C41ECEF723C54315541FDD8456BC1AA3C41886109425431554110F6FD47C1AA3C41EDD56A485431554189E71127C1AA3C41ABDE8A4F543155419CD1C108C1AA3C41EF995B575431554193C348EDC0AA3C41A9CDCD5F54315541E343DCD4C0AA3C413605D1685431554151E8ABBFC0AA3C416DB153725431554155F9E0ADC0AA3C41CE4A437C5431554194219E9FC0AA3C418F758C86543155419629FF94C0AA3C4179271B915431554145C3188EC0AA3C41D9CEDA9B54315541A35FF88AC0AA3C419B7AB6A6543155417516A48BC0AA3C41110399B15431554133991A90C0AA3C4134336DBC5431554187355398C0AA3C41EEF11DC75431554141E73DA4C0AA3C41266B96D154315541B876C3B3C0AA3C417F38C2DB5431554112A6C5C6C0AA3C41F5888DE554315541826C1FDDC0AA3C417847E5EE54315541133EA5F6C0AA3C412840B7F7543155410E612513C1AA3C41D543F2FF543155415A11F330C1AA3C41831033075531554192C71545C1AA3C4111BE3B0C55315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1044, 10044, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D00000043CB9991C0AA3C414A75E8C24D315541F111CEC7C0AA3C41A4FBF9C94D31554186624400C1AA3C41D245D6CF4D31554144BB8E3AC1AA3C41C6E871D44D315541F18A3B76C1AA3C4130EAC3D74D3155416B8DD6B2C1AA3C4107D2C5D94D315541B0AEE9EFC1AA3C4107B773DA4D3155415BF0FD2CC2AA3C415F46CCD94D3155415C529C69C2AA3C414CC6D0D74D315541F7B94EA5C2AA3C419B1385D44D31554127D8A0DFC2AA3C41019AEFCF4D3155413F0C2118C3AA3C41DA4719CA4D315541B941614EC3AA3C418B7C0DC34D315541CAC5F781C3AA3C417AF2D9BA4D315541E51580B2C3AA3C411DA48EB14D315541E0A39BDFC3AA3C4135AD3DA74D315541268DF208C4AA3C411327FB9B4D3155410447342EC4AA3C41E401DD8F4D3155410A3B184FC4AA3C4185D9FA824D31554174545E6BC4AA3C41E4C76D754D3155412B7DCF82C4AA3C41BF3350674D315541FA083E95C4AA3C41909DBD584D315541A20E86A2C4AA3C41A569D2494D315541FEAD8DAAC4AA3C4106A9AB3A4D315541FE4145ADC4AA3C41B5E0662B4D315541607FA7AAC4AA3C413FD0211C4D3155413D7FB9A2C4AA3C41BF37FA0C4D3155414EB48A95C4AA3C41E39D0DFE4C315541E8CD3483C4AA3C41571679EF4C3155414C85DB6BC4AA3C41460959E14C3155413858AC4FC4AA3C41F2FBC8D34C315541CC2FDE2EC4AA3C41EE5AE3C64C31554158F6B009C4AA3C41DD46C1BA4C315541B61A6DE0C3AA3C4169637AAF4C315541590263B3C3AA3C4117A924A54C315541726DEA82C3AA3C41953AD49B4C315541F8CB614FC3AA3C419E3D9B934C31554174852D19C3AA3C4144B7898C4C3155417695A40BC3AA3C41C20D008B4C31554128D5DBD5C2AA3C41AA89F6834C315541FA6CD39DC2AA3C4128E21F7E4C3155413C88F863C2AA3C41587787794C31554195DFBB28C2AA3C41343D36764C31554131DC90ECC1AA3C4157AA32744C31554125B8ECAFC1AA3C4136AB80734C3155413C994573C1AA3C41A59A21744C31554179AB1137C1AA3C41123F14764C315541B639C6FBC0AA3C4101CD54794C3155417DCAD6C1C0AA3C414DEEDC7D4C315541363EB489C0AA3C41BCCEA3834C31554108F3CB53C0AA3C41FC2C9E8A4C31554175F08620C0AA3C419470BE924C315541FA1949F0BFAA3C4198C4F49B4C315541256D70C3BFAA3C412E362FA64C315541AE49549ABFAA3C41D8D759B14C31554106C84475BFAA3C410DE85EBD4C315541CF1C8A54BFAA3C41B8FB26CA4C3155416F0C6438BFAA3C41CB2B99D74C315541946E0921BFAA3C41D7459BE54C31554128C3A70EBFAA3C41FBFE11F44C315541C1DA6201BFAA3C413029E1024D315541238F54F9BEAA3C41FEE9EB114D315541CB928CF6BEAA3C410CF314214D315541855010F9BEAA3C41BBBA3E304D31554139E2DA00BFAA3C4137B64B3F4D315541CC19DD0DBFAA3C41A8921E4E4D315541289FFD1FBFAA3C416B6E9A5C4D315541E3201937BFAA3C417D11A36A4D315541E3990253BFAA3C4148241D784D31554141A88373BFAA3C41ED64EE844D31554129F85C98BFAA3C418CDAFD904D315541ABBE46C1BFAA3C41CC05349C4D3155415245F1EDBFAA3C41AA0E7BA64D315541FC85051EC0AA3C4109EFBEAF4D315541A6D42551C0AA3C41D799EDB74D31554152D5257DC0AA3C41CE77CBBD4D31554143CB9991C0AA3C414A75E8C24D315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1045, 10045, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000090000004B81FD28B8AA3C414DA3C52C4E31554150CAFF8FB4AA3C41E1D28E9B4E315541369F4AE7B5AA3C414DD6EC4D4F3155411320D098B3AA3C41E426F4944F315541F77774C6BBAA3C410CC2C3D4533155419D05EBF7BEAA3C412AA26E725331554186AB036EC0AA3C4131F2CD3454315541FD530524C3AA3C41DE9152E1533155414B81FD28B8AA3C414DA3C52C4E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1066, 10066, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000D0000007A669813A4AA3C4148C8AD38F4305541A1A032FCB0AA3C4136306EC5F4305541B60E5A3CB1AA3C4107974A67F4305541DFFA5FB7B2AA3C418E586F77F4305541BDDC5C9DB3AA3C41C5EBF325F3305541D705BB1FB9AA3C415D270662F3305541A63B6781BAAA3C41A13C0C5BF1305541A8369BF5B1AA3C41A725DDFDF030554117ECFEABB1AA3C41A118E169F1305541F7B2E090A0AA3C41887D5CAFF03055414F2A55D49EAA3C415DCEAE3BF3305541FF184195A4AA3C41611B6B7AF33055417A669813A4AA3C4148C8AD38F4305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1067, 10067, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000008D8E43908EAA3C417E75DFE7EA3055413BBC573AA0AA3C41C3767C65EB30554143A6DD63A1AA3C4132280FC8E83055419578C9B98FAA3C41ED26724AE83055418D8E43908EAA3C417E75DFE7EA305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1046, 10046, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B000000F063F57FC5AA3C41F1A75DF24C315541E625BDA2C5AA3C4150C184F54C315541233970C6C5AA3C41D014F2F74C31554112B7D0EAC5AA3C410D6DA1F94C315541228C9F0FC6AA3C4124DE8FFA4C3155417EE59C34C6AA3C419CCABBFA4C315541A19F8859C6AA3C413EE624FA4C3155418DB5227EC6AA3C41C536CCF84C31554107B02BA2C6AA3C41D511B4F64C3155412A1365C5C6AA3C411019E0F34C31554144CB91E7C6AA3C41CF3355F04C3155415F967608C7AA3C419A8619EC4C3155411B6BDA27C7AA3C417D6834E74C3155417CDB8645C7AA3C415556AEE14C315541E2734861C7AA3C4113E490DB4C3155414913EF7AC7AA3C4127ACE6D44C3155417E3F4E92C7AA3C410D3DBBCD4C315541D0713DA7C7AA3C415F051BC64C315541AF5D98B9C7AA3C412B3E13BE4C315541402F3FC9C7AA3C4118D4B1B54C31554110C316D6C7AA3C41404F05AD4C31554165D408E0C7AA3C41E0B91CA44C3155417D2404E7C7AA3C417286079B4C3155414198FCEAC7AA3C41BC74D5914C315541164DEBEBC7AA3C41A47696884C3155413FA5CEE9C7AA3C4176945A7F4C315541164AAAE4C7AA3C4108D131764C3155414F2687DCC7AA3C411B0E2C6D4C315541B85573D1C7AA3C41B2F058644C315541B70D82C3C7AA3C411DC6C75B4C315541137BCBB2C7AA3C41156987534C31554105996C9FC7AA3C417E28A64B4C315541E1FD8689C7AA3C4118AE31444C31554186A14071C7AA3C4128E7363D4C315541769BC356C7AA3C41E1EDC1364C315541AAD93D3AC7AA3C4172F4DD304C315541E8082A1AC7AA3C41C3DC682B4C315541C4684EF8C6AA3C415403AC264C31554184F0ECD4C6AA3C4121A3B0224C315541EF8E4AB0C6AA3C41407E7E1F4C31554118A4AE8AC6AA3C41A8CE1B1D4C31554117766264C6AA3C41253A8D1B4C315541A0A2B03DC6AA3C4155C9D51A4C315541898DE416C6AA3C419EE1F61A4C31554154CD49F0C5AA3C417D42F01B4C3155410B992BCAC5AA3C411506C01D4C3155417534D4A4C5AA3C41DBA462204C3155414B608C80C5AA3C4167FCD2234C3155414ACC9A5DC5AA3C4195590A284C315541488D433CC5AA3C416C85002D4C3155418598C71CC5AA3C4146D5AB324C3155414F4564FFC4AA3C41783D01394C31554165D552E4C4AA3C410567F43F4C315541BE05C8CBC4AA3C418DC777474C31554101A7F3B5C4AA3C41BDBB7C4F4C315541434100A3C4AA3C41C6A3F3574C31554177C01293C4AA3C41D601CC604C315541CA2C4A86C4AA3C413C9AF4694C3155416A6EBF7CC4AA3C41F1945B734C3155418A1C8576C4AA3C4172A0EE7C4C3155414B59A773C4AA3C4145159B864C3155416EBA2B74C4AA3C41951A4E904C315541EB3D1178C4AA3C41A2CAF4994C315541494C507FC4AA3C41B5577CA34C31554136C7DA89C4AA3C41DA30D2AC4C31554190259C97C4AA3C41E525E4B54C315541209A79A8C4AA3C41E58AA0BE4C315541A44952BCC4AA3C41A55AF6C64C315541E288FFD2C4AA3C41D657D5CE4C315541A82955ECC4AA3C41A42C2ED64C315541DECF2108C5AA3C419E88F2DC4C31554128522F26C5AA3C41883C15E34C315541EA224346C5AA3C4137548AE84C3155410FC31E68C5AA3C41A72D47ED4C315541F063F57FC5AA3C41F1A75DF24C315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1078, 10078, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000CE0DBBFC55AA3C417563E680103155418E7144137CAA3C41B44A1E6A103155418E7144137CAA3C41ED79C86107315541CE0DBBFC55AA3C41ED79C86107315541CE0DBBFC55AA3C417563E68010315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1047, 10047, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D0000007E1884BAC1AA3C41C70D43404C315541CE7601F6C1AA3C414F13EA464C31554187979633C2AA3C41E9C83E4C4C315541707FCB72C2AA3C41AFCB36504C315541240925B3C2AA3C412060CA524C315541A6D425F4C2AA3C413181F4534C315541D43C4F35C3AA3C4102EAB2534C315541DC4C2276C3AA3C41611A06524C31554187B820B6C3AA3C41C355F14E4C3155415AD1CDF4C3AA3C41EA9C7A4A4C315541D77AAF31C4AA3C4140A2AA444C315541E9164F6CC4AA3C41C0B88C3D4C3155413B6E3AA4C4AA3C4124BE2E354C315541048E04D9C4AA3C41AAFFA02B4C315541479C460AC5AA3C41641AF6204C315541CAA0A037C5AA3C41EAD642154C315541AC3FBA60C5AA3C4107019E084C31554185654385C5AA3C41093B20FB4B31554141E3F4A4C5AA3C4106CEE3EC4B31554137F990BFC5AA3C417D7604DE4B3155419ECFE3D4C5AA3C414E2E9FCE4B315541B6DAC3E4C5AA3C4149F4D1BE4B3155417D2C12EFC5AA3C41E791BBAE4B315541C0B0BAF3C5AA3C41FC5E7B9E4B3155413054B4F2C5AA3C41F004318E4B315541AA1501ECC5AA3C41EE40FC7D4B3155410803AEDFC5AA3C410EA6FC6D4B315541CD1FD3CDC5AA3C41CF5F515E4B315541FC3493B6C5AA3C417AF5184F4B315541288F1B9AC5AA3C416B0E71404B315541B5A4A378C5AA3C41963876324B315541A3AA6C52C5AA3C41AFB043254B3155418915C127C5AA3C411E2DF3184B315541A407F4F8C4AA3C41F3AB9C0D4B31554119B060C6C4AA3C41454456034B3155414A986990C4AA3C41CFFA33FA4A3155413DE47757C4AA3C41609B47F24A3155414A8FCF36C4AA3C4112716FEE4A3155411DD5E1FCC3AA3C41567DD1E64A3155413FBD84C0C3AA3C41EE147EE04A31554112E32D82C3AA3C41E58A81DB4A31554179BB5642C3AA3C416896E5D74A315541ECA77B01C3AA3C41883FB1D54A31554193041BC0C2AA3C41E6D1E8D44A3155417531B47EC2AA3C41E9D38DD54A3155412F9BC63DC2AA3C4112049FD74A315541A4C1D0FDC1AA3C41765B18DB4A31554132424FBFC1AA3C414115F3DF4A315541F3E4BB82C1AA3C4147BC25E64A31554125AF8C48C1AA3C41373DA4ED4A31554102FD3211C1AA3C4138FE5FF64A315541F4A51ADDC0AA3C4162FB47004B3155412F29A9ACC0AA3C41C6E7480B4B315541BFE83C80C0AA3C411A534D174B3155414D712C58C0AA3C4195D33D244B315541B1D1C534C0AA3C41673301324B315541C2024E16C0AA3C41E7A17C404B315541F96000FDBFAA3C41DFE7934F4B315541FE380EE9BFAA3C416A9E295F4B315541DE669EDABFAA3C415B681F6F4B3155418C0BCDD1BFAA3C413E2D567F4B315541D854ABCEBFAA3C411456AE8F4B315541E25C3FD1BFAA3C41D10A08A04B315541B11D84D9BFAA3C41627043B04B315541197B69E7BFAA3C41C5E640C04B3155414262D4FABFAA3C41A246E1CF4B3155415DFE9E13C0AA3C41F21D06DF4B31554145029931C0AA3C4170EB91ED4B31554149068854C0AA3C41EE5768FB4B315541F1FA277CC0AA3C41B16D6E084C31554156AC2BA8C0AA3C41E3CC8A144C315541D3593DD8C0AA3C4109DDA51F4C315541955BFF0BC1AA3C41E6FAA9294C315541DADA0C43C1AA3C41CDA283324C3155410795FA7CC1AA3C417E96213A4C315541F8723CB7C1AA3C41C70D43404C3155417E1884BAC1AA3C41C70D43404C315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1048, 10048, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000003312A9CA9FAA3C41C248B7E2453155411FE91D199CAA3C41B791D799463155410B3C7B6FB0AA3C412DCEFB294D3155414A650621B4AA3C413785DB724C3155413312A9CA9FAA3C41C248B7E245315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1049, 10049, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004A00000049547F15C3AA3C41CBFB55B54A31554185398B54C3AA3C412D7AE7B94A3155413B6AF194C3AA3C4176D914BD4A315541476E34D6C3AA3C41F5E8D7BE4A3155412C1FD517C4AA3C41DF392DBF4A315541BA9F5359C4AA3C41FD2514BE4A3155418855309AC4AA3C41E9D08EBB4A31554195E1ECD9C4AA3C41EC23A2B74A315541E8150D18C5AA3C4178C455B24A31554129E81754C5AA3C414005B4AB4A3155412F5D988DC5AA3C41F1D1C9A34A315541D36C1EC4C5AA3C413796A69A4A3155418FDC3FF7C5AA3C41A61F5C904A315541D90D9926C6AA3C41107BFE844A315541E9C0CD51C6AA3C4144CDA3784A31554115C88978C6AA3C413328646B4A31554191AB819AC6AA3C41DC5B595D4A315541643D73B7C6AA3C4110C49E4E4A315541191926CFC6AA3C410D13513F4A315541A3126CE1C6AA3C41BE198E2F4A315541C88F21EEC6AA3C41868D741F4A315541EFCD2DF5C6AA3C4183CC230F4A315541981183F6C6AA3C414AA0BBFE49315541E2C11EF2C6AA3C4126005CEE49315541926D09E8C6AA3C41B3D224DE49315541A0B956D8C6AA3C41B0AF35CE49315541FA3B25C3C6AA3C419BA2ADBE49315541F03E9EA8C6AA3C410BEEAAAF49315541B271F588C6AA3C41C9D04AA149315541CB826864C6AA3C41E04CA99349315541B2A83E3BC6AA3C41F1F0E086493155412F16C80DC6AA3C419FA40A7B49315541015F5DDCC5AA3C41DB773D7049315541E7CA5EA7C5AA3C410F768E66493155418B99336FC5AA3C41317D105E49315541313A4934C5AA3C41BC18D4564931554111B06F29C5AA3C419247AA55493155419C22B8EAC4AA3C419D91B1504931554198FB81AAC4AA3C41D2881B4D493155418F554A69C4AA3C41CF29EF4A4931554100419027C4AA3C4197B0304A4931554170CCD3E5C3AA3C413E90E14A49315541150B95A4C3AA3C413370004D49315541DA1A5364C3AA3C41B32E895049315541C62D8B25C3AA3C4116E9745549315541AC94B7E8C2AA3C41FB08BA5B4931554120D24EAEC2AA3C4111574C6349315541EDB2C276C2AA3C41F6121D6C49315541F86F7F42C2AA3C41DC0F1B764931554182DCEA11C2AA3C41EBD53281493155410C9F63E5C1AA3C4170C84E8D49315541967840BDC1AA3C41A84F579A493155418B9CCF99C1AA3C41130733A8493155418F17567BC1AA3C4191EEC6B6493155419F490F62C1AA3C41399FF6C549315541A3712C4EC1AA3C419682A4D549315541A14ED43FC1AA3C41620CB2E54931554193D22237C1AA3C41DAF5FFF549315541B5ED2834C1AA3C41FD7A6E064A3155414F6CEC36C1AA3C412198DD164A315541F8EB673FC1AA3C4183482D274A31554123E68A4DC1AA3C4187C43D374A31554185CF3961C1AA3C41CCBFEF464A315541184F4E7AC1AA3C4112A624564A3155419C879798C1AA3C41B5D6BE644A3155412F77DABBC1AA3C418DDEA1724A3155419B6AD2E3C1AA3C413FAFB27F4A31554105833110C2AA3C411DD4D78B4A315541EC4CA140C2AA3C4185A3F9964A315541F869C374C2AA3C41226D02A14A315541A64732ACC2AA3C4125A4DEA94A3155419EE581E6C2AA3C4164057DB14A315541F92FAD09C3AA3C41CBFB55B54A31554149547F15C3AA3C41CBFB55B54A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1050, 10050, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D000000BF8E49ECC3AA3C414610C02349315541FBA76524C4AA3C41D404992A493155413537AE5EC4AA3C412F5332304931554163AEB19AC4AA3C41F012813449315541C820FBD7C4AA3C417ADF7C37493155414D261316C5AA3C41C9E81F39493155418CC48054C5AA3C415CFE6639493155412C5ACA92C5AA3C41BF955138493155414E8C76D0C5AA3C416CCBE1354931554199320D0DC6AA3C41BB5E1C32493155413F411848C6AA3C419BA8082D49315541B8AF2481C6AA3C41518DB026493155418357C3B7C6AA3C411769201F493155414ACE89EBC6AA3C4132F86616493155413A34131CC7AA3C410E3A950C49315541A3F80049C7AA3C413250BE01493155418892FB71C7AA3C411259F7F548315541BA2AB396C7AA3C41CE4657E9483155413A38E0B6C7AA3C4164B2F6DB48315541460A44D2C7AA3C4115ACEFCD48315541DC43A9E8C7AA3C4146885DBF48315541B542E4F9C7AA3C417BAA5CB0483155410875D305C8AA3C41E24D0AA148315541199A5F0CC8AA3C41804C84914831554166F07B0DC8AA3C41FCE4E88148315541F24D2609C8AA3C41897F567248315541A72467FFC7AA3C410073EB6248315541E37151F0C7AA3C416EC9C55348315541629902DCC7AA3C41C4050345483155413A2CA2C2C7AA3C4131EABF3648315541509B61A4C7AA3C413340182948315541BDD77B81C7AA3C4181A2261C4831554130DF345AC7AA3C410549041048315541BF37D92EC7AA3C41EBD7C804483155416B5BBDFFC6AA3C417C318AFA473155412F123DCDC6AA3C41654B5CF147315541005946C5C6AA3C41658C0FF047315541223EA892C6AA3C415B5CA5E6473155416933F35CC6AA3C410FB05EDE473155412CDC8F24C6AA3C4173A74BD7473155411215ECE9C5AA3C41DE0A7AD147315541A81D7AADC5AA3C41AF30F5CC4731554142BAAF6FC5AA3C41B4E6C5C947315541C84D0531C5AA3C415C61F2C74731554157F0F4F1C4AA3C41A62F7EC747315541DE7FF9B2C4AA3C41D0336AC84731554105B28D74C4AA3C411EA2B4CA4731554171242B37C4AA3C41F20359CE47315541367049FBC3AA3C41CB4050D34731554122405DC1C3AA3C41D5AB90D947315541666ED789C3AA3C41EF160EE147315541D3272455C3AA3C4167EAB9E947315541EF19AA23C3AA3C41534183F347315541D8A9C9F5C2AA3C417E0A57FE47315541D239DCCBC2AA3C41922D200A483155417F7933A6C2AA3C414AB4C7164831554179C81885C2AA3C41F8F6342448315541E0A5CC68C2AA3C41C7CC4D3248315541B6338651C2AA3C418EBEF64048315541CECA723FC2AA3C41683C135048315541E5A2B532C2AA3C4142D5855F48315541AE8D672BC2AA3C416070306F48315541ABC69629C2AA3C41BC87F47E4831554155D7462DC2AA3C41DB63B38E483155418C907036C2AA3C4151574E9E4831554108180245C2AA3C41B6FAA6AD483155413E0BDF58C2AA3C41C5679FBC4831554165B7E071C2AA3C41CA731ACB48315541CF63D68FC2AA3C4139E8FBD848315541B0B185B2C2AA3C41D3B928E6483155415F0DABD9C2AA3C41563D87F2483155410B32FA04C3AA3C415159FFFD483155415CBE1E34C3AA3C415EB57A08493155413AD9BC66C3AA3C4172E5E41149315541F3E3719CC3AA3C41B4912B1A49315541303BD5D4C3AA3C415A9A3E2149315541BF8E49ECC3AA3C414610C02349315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1051, 10051, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000EC56E803C5AA3C41B9E3E89747315541D17DD63BC5AA3C41320D1A9F47315541B5071076C5AA3C41EC3A0CA547315541E98323B2C5AA3C4133D7B3A94731554125E69BEFC5AA3C4164D007AD47315541656B012EC6AA3C4190AA01AF47315541C181DA6CC6AA3C41388C9DAF47315541D8B6ACABC6AA3C419145DAAE4731554188A5FDE9C6AA3C412853B9AC4731554159E45327C7AA3C41A6DA3EA9473155418BF23763C7AA3C41FBA271A4473155414820359DC7AA3C410D075B9E473155417D72DAD4C7AA3C4194E3069747315541F27EBB09C8AA3C41C77F838E47315541323F713BC8AA3C41D571E1844731554160D99A69C8AA3C415D7E337A47315541ED5CDE93C8AA3C4101748E6E473155417572E9B9C8AA3C41C902096247315541C4FA71DBC8AA3C41D98FBB5447315541D1A036F8C8AA3C411506C04647315541B957FF0FC9AA3C419CA3313847315541A8C89D22C9AA3C419AC42C29473155416DADED2FC9AA3C4100ACCE19473155414716D537C9AA3C41BB4A350A47315541BD9C443AC9AA3C4124057FFA463155414D823737C9AA3C41D377CAEA463155417FB8B32EC9AA3C41273C36DB4631554178D6C920C9AA3C4173ACE0CB46315541C9F7940DC9AA3C41E6A8E7BC463155413C883AF5C8AA3C41775D68AE463155412FFAE9D7C8AA3C41EA087FA046315541FA6ADCB5C8AA3C41CDC54693463155413333548FC8AA3C41C755D9864631554151659C64C8AA3C413CEF4E7B463155410F3C0836C8AA3C414E0EBE70463155410077F203C8AA3C41F7483B674631554142ABBCCEC7AA3C41D826D95E463155419526E7A5C7AA3C414969725946315541BCD3196EC7AA3C4122DB1C5246315541C54DF433C7AA3C410BB5054C46315541CCDEE7F7C6AA3C41D3D4384746315541A98469BAC6AA3C41AB94BF4346315541F60EF17BC6AA3C4113B9A041463155418333F83CC6AA3C41B863E040463155411AA3F9FDC5AA3C415E0B8041463155416E1970BFC5AA3C41F7787E4346315541DB6DD581C5AA3C41F6C9D74646315541AEA6A145C5AA3C411A78854B46315541180F4A0BC5AA3C41EC657E5146315541005240D3C4AA3C418DF0B65846315541BD9DF19DC4AA3C4180062161463155412BCEC56BC4AA3C41EA42AC6A463155412EA31E3DC4AA3C418B0D467546315541C4015712C4AA3C4124BFD980463155413143C2EBC3AA3C417CC9508D463155416A92ABC9C3AA3C4167E3929A46315541A45955ACC3AA3C411E3886A84631554172C1F893C3AA3C4191990FB7463155419140C580C3AA3C415AB512C646315541C63FE072C3AA3C41D84B72D54631554191D1646AC3AA3C414F6910E546315541267C6367C3AA3C412CA0CEF446315541BD1AE269C3AA3C413B448E044731554122D1DB71C3AA3C41B1A63014473155411E15417FC3AA3C419651972347315541ACCDF791C3AA3C415643A43247315541F684DBA9C3AA3C4147293A414731554178AFBDC6C3AA3C4182983C4F47315541460766E8C3AA3C419D45905C47315541C1F8920EC4AA3C4177391B69473155417223FA38C4AA3C414104C57447315541D4E94867C4AA3C419BEC767F4731554135132599C4AA3C41401C1C8947315541E27A2DCEC4AA3C4172C8A1914731554138E92AFDC4AA3C41B9E3E89747315541EC56E803C5AA3C41B9E3E89747315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1052, 10052, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B0000002CB36BE9C8AA3C414739D8D044315541A0D534E1C8AA3C41B8B494CF443155419125D685C8AA3C41CEA069C64431554165D9BC4CC8AA3C4124D2F8C244315541D8FFAD12C8AA3C41F525C0C044315541FA0A14D8C7AA3C41E1AEC3BF44315541076C5A9DC7AA3C41C93B05C044315541F4CDEC62C7AA3C41835484C144315541F5503629C7AA3C41A33A3EC44431554107C5A0F0C6AA3C41A6EE2DC84431554180E893B9C6AA3C41FE384CCD44315541CBA97484C6AA3C4143B78FD344315541346EA451C6AA3C419FEDECDA44315541B75F8021C6AA3C41A25B56E344315541B7C160F4C5AA3C411195BCEC44315541424F98CAC5AA3C41525E0EF744315541BCA373A4C5AA3C41C4CB3802453155411CAE3882C5AA3C41BE64270E4531554196302664C5AA3C41C548C41A45315541004E734AC5AA3C41E057F8274531554155244F35C5AA3C41FB5CAB35453155414D76E024C5AA3C41173AC44345315541B9644519C5AA3C41A516295245315541FF369312C5AA3C41A18EBF6045315541A933D610C5AA3C412DE36C6F45315541ED8A1114C5AA3C41662B167E45315541CC4F3F1CC5AA3C41E785A08C4531554150835029C5AA3C41EF49F19A4531554190302D3BC5AA3C417838EEA8453155417797B451C5AA3C41FDAB7DB6453155412E6ABD6CC5AA3C41DBC786C3453155419917168CC5AA3C41AAA5F1CF45315541F12685AFC5AA3C412E81A7DB453155411EA1C9D6C5AA3C41FAE192E64531554185879B01C6AA3C41E9C29FF0453155410D58AC2FC6AA3C41C5B6BBF94531554152D90B61C6AA3C411D57840246315541D12D4B95C6AA3C413602310A463155417E8A04CCC6AA3C4143C4B210463155418050CD04C7AA3C41D5EFFC1546315541B8DD363FC7AA3C419636051A46315541D663CF7AC7AA3C4144BDC31C463155417EC622B7C7AA3C413B2B331E46315541EE7CBBF3C7AA3C418EB4501E46315541A9772330C8AA3C41B11F1C1D46315541D405E56BC8AA3C41DAC5971A463155410ABB8BA6C8AA3C416F8EC816463155410A52A5DFC8AA3C4180E5B511463155412A8BC216C9AA3C4138AD690B46315541F404784BC9AA3C41B52AF003463155412D0E5F7DC9AA3C4113EE57FB45315541D46C16ACC9AA3C411BB6B1F1453155415F1C43D7C9AA3C41834F10E745315541C0FE90FEC9AA3C417C7088DB453155414B80B321CAAA3C412B9030CF45315541B02C6640CAAA3C4101BB20C245315541E2346D5ACAAA3C41D56372B4453155412CE3956FCAAA3C41553240A64531554103FEB67FCAAA3C4107CFA59745315541E718B18ACAAA3C417FADBF8845315541C3D06E90CAAA3C41E0D4AA79453155410EF6E490CAAA3C4144A7846A453155419AA2128CCAAA3C4195A86A5B453155413E3B0182CAAA3C410B457A4C45315541935DC472CAAA3C41B397D03D45315541D5B9795ECAAA3C41F3318A2F45315541B7D84845CAAA3C41B5E3C22145315541ACCE6227CAAA3C41388595144531554123DC0105CAAA3C41F4C21B084531554118FC68DEC9AA3C4140EB6DFC44315541E561E3B3C9AA3C415DBFA2F1443155419DE5C385C9AA3C41C546CFE74431554184646454C9AA3C416DA606DF44315541DA0F2520C9AA3C4154FB59D7443155412CB36BE9C8AA3C414739D8D044315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1073, 10073, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000011000000C8F8B8D4B4AA3C4170B3A42EF0305541848AA39BBBAA3C410E451D5DF0305541DAB38734BCAA3C41EF395EF8EE30554106F5C5DABDAA3C41AE9BAD03EF30554169FA806FBEAA3C4175E4A3A8ED305541D00D66A2BDAA3C41FA7425A3ED305541A6D75FD7BDAA3C41B3488927ED3055417ECA5604BAAA3C410FE64F0DED3055416C9B223ABAAA3C413DA9C98FEC305541D648A256B8AA3C414F39D682EC30554149DB0FDEB8AA3C41588ED646EB3055418CDD07EDB1AA3C41F7323D17EB30554172541049B1AA3C41711DD495EC3055410DB8E16DABAA3C416302AC6DEC305541866DC6EEAAAA3C418E054196ED3055419C826696B5AA3C41FEBC50DFED305541C8F8B8D4B4AA3C4170B3A42EF0305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1074, 10074, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000C0000003D09B615CFAA3C4179349387ED305541BF6A3BEAC6AA3C41118D0869ED30554147201E81C6AA3C4152B2EB2AEF3055413969A5C6CDAA3C4108B81A46EF305541DAA239F7CDAA3C4147FB2F76EE305541E31AFDC8CEAA3C41D3254079EE305541E4E51BBED0AA3C417D853183EE30554129D06524D0AA3C41AE4D6267F0305541A51AB0A0DEAA3C412B10F6B0F0305541438BCD99DFAA3C413DBA3FA0ED305541E5746428CFAA3C414798BA4CED3055413D09B615CFAA3C4179349387ED305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1075, 10075, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000069892AEAAAAA3C41C188E690FD305541DCBD2E32BFAA3C41A4868BBFFC305541E4D479DCBDAA3C41BD50E6ADFA30554171A07594A9AA3C41DA52417FFB30554169892AEAAAAA3C41C188E690FD305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1076, 10076, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000D1A3770299AA3C41223BAC8D12315541D1A3770299AA3C416C06D678063155419A744E2C9DAA3C416C06D678063155419A744E2C9DAA3C41FC06288412315541D1A3770299AA3C41223BAC8D12315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1079, 10079, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000A74CACD7B0AA3C41410DF5A37A315541352794C5B5AA3C41CDB41D0D7B315541D7ABAC9BB6AA3C4154518B6C7A31554149D1C4ADB1AA3C41C8A962037A315541A74CACD7B0AA3C41410DF5A37A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1053, 10053, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000CB7D38CDBFAA3C41956B444845315541039F1700C0AA3C41EDA32E4D4531554190D67B34C0AA3C41FE4FF850453155416E11FF69C0AA3C418A0E9A5345315541120D39A0C0AA3C41EABE0E5545315541F022C0D6C0AA3C41F78A5355453155417F162A0DC1AA3C41A3EC675445315541BEE30C43C1AA3C4115AF4D5245315541EA8DFF77C1AA3C41D5EA084F4531554180EC9AABC1AA3C414DFE9F4A453155418F737ADDC1AA3C41E5801B4545315541D8F73C0DC2AA3C41AA32863E45315541666C853AC2AA3C4109E7EC36453155413B97FB64C2AA3C411C6C5E2E453155411FBE4C8CC2AA3C41976DEB2445315541B0462CB0C2AA3C417E54A61A45315541B34C54D0C2AA3C411023A30F453155417A2986ECC2AA3C410A4EF7034531554186EE8A04C3AA3C419E92B9F74431554111D03318C3AA3C4150CA01EB4431554154805A27C3AA3C416DBCE8DD44315541847AE131C3AA3C41B5ED87D044315541DC3BB437C3AA3C41CC6EF9C244315541106CC738C3AA3C4154A957B544315541EBF21835C3AA3C41712CBDA74431554187FCAF2CC3AA3C412179449A44315541B4EB9C1FC3AA3C4196CE078D443155419239F90DC3AA3C41E6F6208044315541F143E7F7C2AA3C412D15A97344315541DA0A92DDC2AA3C411074B8674431554157DC2CBFC2AA3C41F756665C44315541A3F0F29CC2AA3C4142CCC85144315541BAF62677C2AA3C418982F447443155412992124EC2AA3C4165A0FC3E443155419ECC0522C2AA3C41E49EF23644315541887856F3C1AA3C41B227E62F44315541D58A5FC2C1AA3C416FF6E429443155419D69808FC1AA3C410CBEFA2444315541E5311C5BC1AA3C41FC11312144315541D3BEFB56C1AA3C41C4FAF1204431554154712523C1AA3C413A13E41D443155417F0173EEC0AA3C4154EEF61B44315541EEC648B9C0AA3C41F5362E1B4431554163FC0B84C0AA3C41636B8B1B44315541DC00224FC0AA3C411EDA0D1D44315541F994EF1AC0AA3C4156A3B21F44315541361CD8E7BFAA3C4158BE7423443155412EDF3CB6BFAA3C413E034D28443155418C527C86BFAA3C417738322E443155410463F158BFAA3C413E241935443155418AC8F22DBFAA3C4134A2F43C443155418B60D205BFAA3C414FBCB54544315541E892DCE0BEAA3C413EC74B4F44315541DABF57BFBEAA3C414B82A45944315541DEB983A1BEAA3C41F039AC6444315541194D9987BEAA3C419FED4D7044315541C6D1C971BEAA3C417C77737C443155419FCF3E60BEAA3C4199B6058944315541FCAD1953BEAA3C412ABBEC95443155416C74734ABEAA3C41DEF30FA344315541E19A5C46BEAA3C41CE5C56B044315541D2EADC46BEAA3C410CAFA6BD44315541CF6FF34BBEAA3C41DE90E7CA44315541D5799655BEAA3C41D3C5FFD74431554144AFB363BEAA3C41FD5ED6E44431554149303076BEAA3C415EEA52F144315541D8C9E88CBEAA3C4166A15DFD443155414C38B2A7BEAA3C414896DF08453155419B7A59C6BEAA3C41A4DFC21345315541A532A4E8BEAA3C4135C2F21D45315541F014510EBFAA3C4143D85B2745315541D1641837BFAA3C41B536EC2F45315541A07CAC62BFAA3C41098F933745315541E661BA90BFAA3C417F4E433E453155418F3DF7B7BFAA3C411D092C4545315541CB7D38CDBFAA3C41956B444845315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1054, 10054, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000049000000BC9756ABBAAA3C415EDC82AF44315541097FAFD5BAAA3C416188BFB4443155412A89B201BBAA3C411FE40AB9443155414EF6092FBBAA3C41BC915CBC443155419D6F5D5DBBAA3C41C419AEBE443155412BB3528CBBAA3C41E3F7FABF44315541D0438EBBBBAA3C417EA340C044315541251BB4EABBAA3C41E6947EBF443155418C5D6819BCAA3C412346B6BD44315541320C5047BCAA3C414530EBBA4431554163B71174BCAA3C4186C422B744315541DC2B569FBCAA3C419F6164B244315541401DC9C8BCAA3C41A745B9AC4431554101CA19F0BCAA3C41C97B2CA6443155411399FB14BDAA3C41F9C6CA9E44315541EBAE2637BDAA3C41E188A296443155413E795856BDAA3C4128A6C38D4431554130315472BDAA3C411E673F8444315541F451E38ABDAA3C416056287A44315541D501D69FBDAA3C41981C926F44315541CE7003B1BDAA3C41105A91644431554141274ABEBDAA3C41C77E3B59443155418B4790C7BDAA3C4168A0A64D44315541DEBFC3CCBDAA3C41854FE941443155414B6EDACDBDAA3C41666B1A3644315541EA33D2CABDAA3C4191F5502A44315541DCF8B0C3BDAA3C41F7E4A31E4431554165A184B8BDAA3C4143F929134431554169F262A9BDAA3C41778EF90744315541CC666996BDAA3C41597128FD43315541ECF6BC7FBDAA3C41FFB4CBF24331554177CF8965BDAA3C41CF89F7E84331554134FC0248BDAA3C410B16BFDF43315541D6036227BDAA3C419F5034D743315541F078E603BDAA3C410BDE67CF43315541CA7CD5DDBCAA3C4104F068C843315541D33979B5BCAA3C41DD2745C243315541DF9786A0BCAA3C41812A89BF4331554125315275BCAA3C41414A28BB43315541D13CC248BCAA3C41CFC2BBB7433155419AEA2C1BBCAA3C4155334AB5433155418C63EAECBBAA3C41CD55D8B343315541BD1F54BEBBAA3C416DF568B3433155412A39C48FBBAA3C41C0E9FCB343315541E8BD9461BBAA3C41851493B543315541CC001F34BBAA3C41386428B84331554153EEBA07BBAA3C41D6D9B7BB433155412461BEDCBAAA3C418E923AC0433155417D7C7CB3BAAA3C4111D5A7C543315541CE0B458CBAAA3C418122F5CB4331554107E86367BAAA3C419A4A16D343315541A4642045BAAA3C416E83FDDA433155419AC6BC25BAAA3C41F5839BE343315541D0C27509BAAA3C419BA1DFEC433155415C0A82F0B9AA3C419DF0B7F64331554126DF11DBB9AA3C419A66110144315541C9B74EC9B9AA3C4145FFD70B443155418EEE5ABBB9AA3C4161E3F61644315541A47F51B1B9AA3C41DB90582244315541A1D445ABB9AA3C418604E72D44315541659E43A9B9AA3C4190E48B3944315541D7BF4EABB9AA3C41BAAB304544315541F44463B1B9AA3C411DD5BE5044315541676B75BBB9AA3C415C07205C4431554100B971C9B9AA3C414D403E67443155411E213DDBB9AA3C4113FF0372443155415D39B5F0B9AA3C41156E5C7C44315541DE7BB009BAAA3C41288B3386443155412198FE25BAAA3C41104E768F4431554177CF6845BAAA3C41C3CD129844315541E45FB267BAAA3C417D62F89F443155410BF9988CBAAA3C417BC617A744315541BC9756ABBAAA3C415EDC82AF44315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1055, 10055, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004A0000009FD44DCBB5AA3C41BEA9443E4431554164A9DCF2B5AA3C41D3C80043443155413102F01DB6AA3C417196AD4844315541BCDFD34AB6AA3C419896644D4431554126CC3079B6AA3C41B4991C51443155411073ACA8B6AA3C41F760CE53443155414251EAD8B6AA3C4165AC745544315541B0698C09B7AA3C4148450C56443155415AFB333AB7AA3C414F04945544315541D83A826AB7AA3C41AED30C5444315541140B199AB7AA3C4196AD795144315541FBB39BC8B7AA3C414896DF4D44315541B397AFF5B7AA3C415192454944315541BFE2FC20B8AA3C41C498B443443155417B372F4AB8AA3C41F781373D443155418252F670B8AA3C4134F2DA35443155418DA60695B8AA3C414141AD2D4431554141F019B6B8AA3C414A5EBE244431554194BEEFD3B8AA3C41CAB01F1B44315541CFF04DEEB8AA3C41F5F6E3104431554147270105B9AA3C41B7201F0644315541E427DD17B9AA3C415F29E6FA433155415334BD26B9AA3C4145EE4EEF4331554133518431B9AA3C418A0470E343315541EC7E1D38B9AA3C41FE8C60D743315541A4E27B3AB9AA3C41E20638CB4331554193DE9A38B9AA3C4178220EBF43315541101C7E32B9AA3C418E92FAB243315541DC833128B9AA3C417FDE14A743315541A526C919B9AA3C415034749B433155419B166107B9AA3C41623B2F904331554167301DF1B8AA3C419FE85B854331554136D528D7B8AA3C4170530F7B433155415596B6B9B8AA3C41AE8C5D714331554189D2FF98B8AA3C41AB7759684331554181464475B8AA3C413EA5146043315541AD90C94EB8AA3C41A9319F5843315541FCAFEF40B8AA3C41249D3F564331554102228A16B8AA3C416BC6985043315541B3605EEAB7AA3C41FCB7DE4B433155412AE3BEBCB7AA3C41FB441A48433155413FD6008EB7AA3C41E475524543315541517E7B5EB7AA3C41C47B8C43433155415D93872EB7AA3C4111A6CB4243315541689C7EFEB6AA3C41D45C1143433155410E47BACEB6AA3C41E81D5D44433155413DC1939FB6AA3C41F87DAC464331554149126371B6AA3C41DD2CFB494331554128767E44B6AA3C41ECFD424E4331554110BD3919B6AA3C414BF37B53433155411CAFE5EFB5AA3C41F24C9C59433155419D74CFC8B5AA3C41C19A986043315541D60640A4B5AA3C4117D263684331554196A77B82B5AA3C41FF65EF70433155415F61C163B5AA3C4144622B7A433155414A924A48B5AA3C417C8906844331554182804A30B5AA3C4108756E8E43315541F0FAED1BB5AA3C416EB74F9943315541DE045B0BB5AA3C41C80096A4433155412B90B0FEB4AA3C4177442CB043315541E34106F6B4AA3C4191E0FCBB43315541D2476CF1B4AA3C4141C6F1C7433155411F39EBF0B4AA3C410AA3F4D343315541E00684F4B4AA3C412F0AEFDF4331554198F92FFCB4AA3C41E09ECAEB433155411DBFE007B5AA3C41C53D71F743315541C9838017B5AA3C418426CD02443155413D1CF22AB5AA3C411624C90D44315541923B1142B5AA3C41A3B4501844315541F7B6B25CB5AA3C41A32F50224431554164D6A47AB5AA3C41AEEAB42B44315541B4B1AF9BB5AA3C412F5C6D3444315541589895BFB5AA3C414F3C693C443155419FD44DCBB5AA3C41BEA9443E44315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1056, 10056, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000015000000EB666F38E8AA3C4142A1D61F57315541EDFD3E54EDAA3C41132F4B3A50315541B06BFFE0DDAA3C41AB2A2E834F315541847913D5D8AA3C41334B465356315541E733C1ACDEAA3C41F1DA8498563155414B2C0073DCAA3C416BD8AF9959315541FD3F1C07D0AA3C419B4178065931554139FA0CFCD2AA3C418FAC9908553155414C4B72F8D3AA3C419F8AA15C503155417A2B9EB4CFAA3C413CDA3A4E503155411ED576B8CEAA3C41644C0DF9543155412FC48758CBAA3C4192491BB05931554117936954DDAA3C4192FF0D7E5A315541601DC7DCDDAA3C4189C087BF59315541BDAA5069E2AA3C4142CB9FF359315541A9522FFAE2AA3C4147C4372959315541D071C112E2AA3C41A87CDD1E5931554138096BBBE2AA3C413071373358315541CBCBED02E2AA3C41A9B5F62A58315541977F80EDE2AA3C419D363AE356315541EB666F38E8AA3C4142A1D61F57315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1057, 10057, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000006F765261D7AA3C41052D8911673155414ED1B25BD7AA3C418E019D5367315541FBCCF60EDBAA3C4149E6A658673155413432654FDBAA3C41A5BF956364315541D97CD81DD2AA3C4149EA105764315541C2BC09E3D1AA3C41593C0E0A673155416F765261D7AA3C41052D891167315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1058, 10058, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000003F0000005CEE27DAC6AA3C41BAC6212E6B3155410E56B5C8C6AA3C411E7F10256B315541807C2AB4C6AA3C414A5F691C6B3155418C67AF9CC6AA3C410C433D146B315541DDD67182C6AA3C4177169C0C6B3155415BEAA465C6AA3C41F1B694056B315541ACBE8046C6AA3C4141D634FF6A3155412B004225C6AA3C41B8DF88F96A31554143742902C6AA3C4151E09BF46A3155412B82C5F4C5AA3C41AABF18F36A315541E8142678C4AA3C41F65F0AF26A315541ED0D2158C4AA3C41CD2AE4F56A315541C68E8435C4AA3C4130E106FB6A315541CF1DD414C4AA3C416DA6E5006B315541786B4FF6C3AA3C41990A75076B31554163ED31DAC3AA3C41BA45A80E6B315541766AB2C0C3AA3C41A55071166B3155417E9002AAC3AA3C415000C11E6B315541E0924E96C3AA3C41402387276B315541DDD4BC85C3AA3C4152A1B2306B315541EA9E6D78C3AA3C41DB9C313A6B31554119DF7A6EC3AA3C418F95F1436B31554148F7F767C3AA3C41788CDF4D6B3155415C97F164C3AA3C410929E8576B315541F2A36D65C3AA3C41D4DEF7616B3155411C2B6B69C3AA3C418713FB6B6B3155411367E270C3AA3C413A45DE756B315541CCCBC47BC3AA3C415A308E7F6B3155418324FD89C3AA3C412FF5F7886B315541D1BC6F9BC3AA3C41D53C09926B3155415F96FAAFC3AA3C419F5CB09A6B31554128AB75C7C3AA3C41DD78DCA26B315541D73BB3E1C3AA3C4172A57DAA6B315541842880FEC3AA3C41F80485B16B3155413354A41DC4AA3C41B3E5E4B76B315541B412E33EC4AA3C4131DC90BD6B3155419C9EFB61C4AA3C4198DB7DC26B315541E896A986C4AA3C41194BA2C66B3155410A85A5ACC4AA3C41A118F6C96B315541D967A5D3C4AA3C4195C872CC6B3155417D435DFBC4AA3C417E8213CE6B315541C3B57F23C5AA3C41791AD5CE6B315541EE8CBE4BC5AA3C415E17B6CE6B315541BA5FCB73C5AA3C4189B5B6CD6B3155418826589BC5AA3C418CE6D8CB6B315541DBD217C2C5AA3C41684D20C96B3155415AE6BEE7C5AA3C412F3792C56B315541C704040CC6AA3C411C9135C16B3155411984A02EC6AA3C41B9DA12BC6B31554110F5504FC6AA3C41861534B66B31554167A7D56DC6AA3C415BB1A4AF6B3155417C25F389C6AA3C412F7671A86B31554169A872A3C6AA3C41446BA8A06B315541618222BAC6AA3C41A3BB58986B315541FF7FD6CDC6AA3C41B498928F6B315541023E68DEC6AA3C41A11A67866B315541F573B7EBC6AA3C410E1FE87C6B315541C633AAF5C6AA3C41652628736B315541971B2DFCC6AA3C41712F3A696B315541837B33FFC6AA3C41E092315F6B315541ED6EB7FEC6AA3C4115DD21556B315541F2D1C1FDC6AA3C415BAABB516B3155415CEE27DAC6AA3C41BAC6212E6B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1059, 10059, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000013000000E77B1D96B2AA3C41AD6256E56A315541B39EB5DCD7AA3C413AEED0FF6A315541A46B470AD8AA3C41D0543C6167315541235A3C23D3AA3C41A1C1605D673155418E5A1FFFD2AA3C41224BAE3B6A3155411D17FEA6BBAA3C41D8C34F296A315541B38982AFBBAA3C41C5E61F7C693155415DD86084B8AA3C41FCA1A17969315541819564A2B8AA3C413F9C55176731554102A2FD8EC0AA3C4152EE002067315541D3126D90C0AA3C4152171F76673155411B9DD255D0AA3C41B173EA7167315541EB62264CD0AA3C41DCD58C2D6531554177C4F882C1AA3C4108377E31653155419B3B3C94C1AA3C419F7403356431554140321D22B8AA3C415FFDAD2A64315541FBA6B81BB8AA3C41AF5F2C8864315541CF8570E6B2AA3C41323C138464315541E77B1D96B2AA3C41AD6256E56A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1060, 10060, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000B00000098990440AAAA3C41CFA65F8A72315541F3FF4F0BB7AA3C41126B2F126D3155416B4A70C2ADAA3C417865B0B66B315541070508F0A7AA3C417392D6336E3155417143846E99AA3C414B3AED146C3155413254284493AA3C4188D9ACB76E315541665A0FE8A2AA3C4125820A01713155417D51CCA49DAA3C4183D8FE40733155417A858937AFAA3C4189991ED175315541187D81A9B3AA3C415250A3EA7331554198990440AAAA3C41CFA65F8A72315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1061, 10061, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000700000003D1B41EC8AA3C41F330DF347031554147F0B7BCC2AA3C419D8EF8BE723155412E46136FCAAA3C41EF4700C473315541E2F75F2ED7AA3C41B9E775C06D31554196B886ACCEAA3C416631F19F6C3155419EE7364FC7AA3C41F23362197031554103D1B41EC8AA3C41F330DF3470315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1062, 10062, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000001A00000070F7E6DEBDAA3C410F91E4F41E3155411B5FDE0BC0AA3C411E48C30C1F31554185965442C0AA3C41D0E256BD1E315541732D9CABC6AA3C410D7BCE6315315541EB4DF3C2B6AA3C410D9643B514315541705B7CFCB2AA3C416D09B1361A3155415743A0539FAA3C41E960FF5E193155412625355A8EAA3C41F8EC10203231554195CD4502A6AA3C41049D9C23333155415961E19F9FAA3C4158BE19733C315541A4000F62B4AA3C41C4DED9563D3155412FE5D799B7AA3C41EB947FA5383155416678FDE8B9AA3C41D04DD5BE38315541652DECA4BCAA3C416F9BABD634315541F49A47E6BAAA3C411FFD27C734315541AA65E76EC0AA3C41F07ADF1C2D31554192FBA902D0AA3C41C6E7C6C72D31554172AF8248CFAA3C41953840D72E315541141946C2E2AA3C41D12AEDAC2F3155414FF344D0E3AA3C4139D72E232E31554106E7DF26DDAA3C41273918DA2D315541C3A23B26E1AA3C414A70B20528315541383701AAC4AA3C411B472CCD26315541C5F43147C3AA3C4149869AD228315541A73EF373B7AA3C419652DD502831554170F7E6DEBDAA3C410F91E4F41E315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1063, 10063, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000A5AFCEB66FAA3C41AC40FA76F6305541DD42509576AA3C4108A32893F6305541D59EC3F676AA3C418BEF1917F5305541950B421870AA3C412F8DEBFAF4305541A5AFCEB66FAA3C41AC40FA76F6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1064, 10064, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000F0000002F58AA2278AA3C41A966EC1EF83055410262228D77AA3C4190AAC128F93055412CC5037675AA3C410D97F115F930554180E6710875AA3C417E06BCD8F9305541A433C00176AA3C4134C77FE1F93055412D4616F374AA3C4123DFADC2FB3055410ECDA61A77AA3C41E1F311D6FB305541EC1E75EA76AA3C41399BBF2BFC305541B0C421217CAA3C410DADAB5AFC305541632EDA527CAA3C41EC624702FC3055410602DC407EAA3C415D73A513FC305541ABDAB87A7FAA3C41A50EABE5F93055416D681AAA7CAA3C41A17C55CCF93055418F967A807DAA3C41DBB8384FF83055412F58AA2278AA3C41A966EC1EF8305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1065, 10065, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000001D11876E98AA3C41F9C79396F330554102E055179BAA3C4133A6629DF33055410DCCD7259BAA3C41EBA2B642F3305541025873BC9BAA3C411E313844F3305541E2C16CD49BAA3C416C5B61AEF23055410767029598AA3C41FEEE10A6F23055411D11876E98AA3C41F9C79396F3305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1068, 10068, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000026CD2FC5A6AA3C4135F07BDCE8305541C1BF4497A1AA3C418EB3F627EA30554178CA00BCA5AA3C413CB62531EB305541DDD7EBE9AAAA3C41E3F2AAE5E930554126CD2FC5A6AA3C4135F07BDCE8305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1080, 10080, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000461CCACAC4AA3C416AFA0D907B315541E2312F3BC7AA3C41617DAF497C315541DDFE6AE8C9AA3C41A776A1B97B31554142E90578C7AA3C41B0F3FFFF7A315541461CCACAC4AA3C416AFA0D907B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1081, 10081, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000091B17D7B67AA3C4155905697E6305541B26160B96AAA3C41308AB9C1E6305541E3FB46486BAA3C41A9FCDB12E630554113EC600968AA3C416CC36BE8E530554191B17D7B67AA3C4155905697E6305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1082, 10082, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000B0000008954EFE300AB3C41EC0C09A64431554197F4332D00AB3C4199BB37CD45315541799387F004AB3C41C2DF64FC453155419139FA9A04AB3C41C7FC97864631554101DF42C709AB3C413DB4D4B94631554159FEEAE108AB3C41B3F94E2C483155410597B2C40EAB3C41EF449B66483155415ECE631D0FAB3C41B29E55D7473155411B808C8413AB3C4120DCF10248315541F4E67B1D15AB3C410F715B6E453155418954EFE300AB3C41EC0C09A644315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1083, 10083, 5, 1001, 1, 104, 1002, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000001200000094FD129A0BAB3C411B303EE7443155414B7089E90EAB3C414E8BB1C73F3155415DE4A7FD11AB3C41410BD7D23A315541B57C455627AB3C41318DFAA63B315541F56663D22AAB3C4161E1B00A3631554151BCBDB303AB3C415D06EB8534315541F924940104AB3C412FF4990834315541E79E8DD1FAAA3C41CC744BAD333155416C48462DFAAA3C413095C7B5343155417DFEC635F7AA3C41B0AD4B983431554124E40EECF4AA3C4115434A47383155417C7B5FB9F8AA3C411718136D383155416BAFA6E1F5AA3C4181AFB0003D315541A5A5DB0CF2AA3C4145899DDA3C315541599EB1F9F0AA3C4122989F953E315541F1D7EB85F9AA3C41C7B720F33E3155415B23DA3BF6AA3C41E181540A4431554194FD129A0BAB3C411B303EE744315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1801, 18001, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000009000000A15070860CAB3C41AE0CF9E72C31554165D1602912AB3C41128213362C3155412584473E13AB3C413B2073C22C3155419A8A05FE1AAB3C415DF5E0CD2B3155416C7F0A3E16AB3C417DB17165293155412C1FB5CC0EAB3C418F2659502A31554170B5F6C30FAB3C41BD82B1CD2A3155417D8E9DD209AB3C4126C341892B315541A15070860CAB3C41AE0CF9E72C315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1802, 18002, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000008E5134C6FEAA3C41A4BE1CC5233155413B932E5303AB3C419C0CC45524315541A3EEF59410AB3C41E06A83A91D31554102ADFB070CAB3C41E61CDC181D3155418E5134C6FEAA3C41A4BE1CC523315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1803, 18003, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000002679B8AF03AB3C41E822D558243155411D387DE707AB3C418DADE2DE243155417571818B10AB3C418F434D85203155417AB2BC530CAB3C41E8B83FFF1F3155412679B8AF03AB3C41E822D55824315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1804, 18004, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000E98381D8F8AA3C41D5454CAF233155414D22583BFCAA3C41502FCC1E24315541FA7EB05905AB3C41A0968BB01F31554195E0D9F601AB3C4125AD0B411F315541E98381D8F8AA3C41D5454CAF23315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1805, 18005, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000070C9E46B0DAB3C4137D4856322315541D0EAC83211AB3C41C79978D722315541F0A829AF13AB3C4131B0CC8B213155418F8745E80FAB3C41A1EAD9172131554170C9E46B0DAB3C4137D4856322315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1806, 18006, 5, 1001, 1, 104, 1004, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000003E34AD6B01AB3C41CB4ED2131F3155419411572906AB3C419A016DAD1F315541C6EDCAA00BAB3C418C8E56FA1C3155416C1021E306AB3C41BDDBBB601C3155413E34AD6B01AB3C41CB4ED2131F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000000, 1000000, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541', '2019-06-11 15:15:17.497342'); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000006, 1000002, 5, 1001, 1, 101, 1001, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000036, 1000030, 5, 1001, 1, 101, 1001, 10001, '2020-01-28 15:29:32', NULL, '01030000209108000001000000050000008AA13A5BACA93C414227A7D5AF3155418AA13A5BACA93C416B9C8E5CAC315541CF072FE2C0A93C41E1C0D369AC315541F7751AADC0A93C412E7031F0AF3155418AA13A5BACA93C414227A7D5AF315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000037, 1000031, 5, 1001, 1, 101, 1001, 10001, '2020-01-31 08:48:16.836979', NULL, '01030000209108000001000000050000002F02D344AFA93C4180AEA44DA8315541C1D7B600B0A93C41736D2300A5315541055058C897A93C41B17159EDA4315541F871083297A93C41A0B03F44A83155412F02D344AFA93C4180AEA44DA8315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000041, 1000032, 5, 1001, 1, 107, 1001, 10001, '2020-01-31 08:48:16', NULL, '01030000209108000001000000050000005810FD2AA6A93C4180851028A03155415810FD2AA6A93C4164663F449C315541354DAAF98EA93C41266209579C3155412F5E82AE8EA93C414281DA3AA03155415810FD2AA6A93C4180851028A0315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1004, 10004, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1006, 10006, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000001, 1000001, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000002, 10001, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1001, 10001, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000003, 10005, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1005, 10005, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000004, 10003, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1003, 10003, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000005, 10002, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1002, 10002, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000007, 1000003, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1032, 10032, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1033, 10033, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000008, 1000004, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000009, 1000005, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000010, 1000006, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000011, 1000007, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000012, 1000008, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000013, 1000009, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1031, 10031, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000014, 1000010, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000015, 1000011, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000016, 1000012, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000017, 1000013, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000018, 1000014, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1030, 10030, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000019, 1000015, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000020, 1000016, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000021, 1000017, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000022, 1000018, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1029, 10029, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000023, 1000019, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000024, 1000020, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000025, 1000021, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1028, 10028, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000026, 1000022, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000027, 1000023, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1027, 10027, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000028, 1000024, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000D0000005A224B267DA83C41687E9882F63055419B4A3361D7A83C411C7F5B8AF630554138504B9FD7A83C4116D17205EF3055414167668ECDA83C417ED2F814EF3055414167668ECDA83C418608A06AF1305541543CE7A3C0A83C412C88BE66F1305541BC3D6DB3C0A83C41342A30DFF23055418D64F52196A83C41B22661B8F230554149DFBEE795A83C41565D05C9EC305541068BD2BB8CA83C416DBDFDC9EC3055419F894CAC8CA83C41E1CCE0D6EE305541EE1927C97CA83C41E1CCE0D6EE3055415A224B267DA83C41687E9882F6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1021, 10021, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000006000000BEBC5B497EA83C41D6A394F7F330554124BEE1587EA83C4141DBC15CF63055410F0C77C78CA83C41E75AE058F6305541DA07E5988CA83C41E532F115EF30554121B7430B7EA83C41D8B14C0AEF305541BEBC5B497EA83C41D6A394F7F3305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1022, 10022, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000001E28EFFD8DA83C418EDAFE54F630554146C3FE36B1A83C41D892055FF630554159303D24B1A83C4154F67632F33055415025E3DE8DA83C419791C62DF33055411E28EFFD8DA83C418EDAFE54F6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1023, 10023, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000DB6ABBE6B2A83C41643F8D44F63055417FB0E545D6A83C41F5DB8464F63055414CB3F164D6A83C417AB7E8D0F4305541F99BCED0B2A83C41E0C042ACF4305541DB6ABBE6B2A83C41643F8D44F6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1024, 10024, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000B62669EE8DA83C41E18965D8F23055417AD0BF4495A83C41880984D4F230554144CC2D1695A83C41D8824302ED3055418122D7BF8DA83C41D7824302ED305541B62669EE8DA83C41E18965D8F2305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1025, 10025, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000081FB5E73CEA83C41692FA677F43055417EB0E545D6A83C4110AFC473F43055411AB6FD83D6A83C413639CC5BEF30554182FB5E73CEA83C413639CC5BEF30554181FB5E73CEA83C41692FA677F4305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1026, 10026, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000008000000536B3295C1A83C41A492144AF43055413376221BCDA83C41FAEBFF46F43055419FD53CD0CCA83C416B6C6792F130554179D3EBA7C1A83C41C4EC4896F1305541AC28168FC1A83C41131EB12FF3305541F9D4E1FAB2A83C41FB063C30F3305541E175A8FCB2A83C4129F4A242F4305541536B3295C1A83C41A492144AF4305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000029, 1000025, 5, 1001, 1, 103, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1016, 10016, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1017, 10017, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1018, 10018, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1019, 10019, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1020, 10020, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000030, 1000026, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1012, 10012, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1013, 10013, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1014, 10014, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1015, 10015, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000031, 1000027, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1009, 10009, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1010, 10010, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1011, 10011, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000032, 1000028, 5, 1001, 1, 102, 10001, '2019-05-30 14:50:00.066082', NULL, '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1007, 10007, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1008, 10008, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', '2019-05-30 14:50:00.066082', '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1034, 10034, 5, 1001, 1, 101, 10001, '2018-01-01 09:00:00', NULL, '010300002091080000010000000500000059AE79D94CA83C41C482B9960B31554159AE79D94CA83C410747313805315541826067316BA83C410747313805315541826067316BA83C41B2940BA90B31554159AE79D94CA83C41C482B9960B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1035, 10035, 5, 1001, 1, 101, 10001, '2018-01-01 09:00:00', NULL, '0103000020910800000100000007000000E768BF4E11A83C41F74A09740F315541E768BF4E11A83C411D305C2606315541C659FE1839A83C411D305C2606315541C659FE1839A83C415EEBDCF0083155417DC631E61BA83C415EEBDCF0083155417DC631E61BA83C410939B7610F315541E768BF4E11A83C41F74A09740F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1036, 10036, 5, 1001, 1, 101, 10001, '2018-01-01 09:00:00', NULL, '010300002091080000010000000500000011F3E2044DA83C415D8BBEB516315541621AADA95BA83C415D8BBEB516315541621AADA95BA83C41F2BAF16D1231554111F3E2044DA83C41F2BAF16D1231554111F3E2044DA83C415D8BBEB516315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1037, 10037, 5, 1001, 1, 101, 10001, '2018-01-01 09:00:00', NULL, '0103000020910800000100000005000000975CAF9068A83C41BE5B019516315541F25E2B1C78A83C410E3E968616315541F25E2B1C78A83C41F34F5E3012315541975CAF9068A83C41F34F5E3012315541975CAF9068A83C41BE5B019516315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000033, 1000029, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:01.236765', NULL, '0103000020910800000100000005000000000000009FB33A4100000080BCB35441000000009FB33A4100000080AEB3544100000000D8B33A4100000080AEB3544100000000D8B33A4100000080BCB35441000000009FB33A4100000080BCB35441', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1038, 10038, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000000437733CA6AA3C41319198124D315541BE4A5FD0ABAA3C413E36B0E94B3155418E7CB9BA9AAA3C41FCC5CD74463155415EDA703D95AA3C41233A38A3473155410437733CA6AA3C41319198124D315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1069, 10069, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000007000000CF7C28986AAA3C41766A1687F330554109F3BFCC71AA3C419E013991F3305541A40CCDD878AA3C419B4A4375F4305541A28A79707DAA3C41B32D5F70F2305541855F031F75AA3C4155706A3AF13055417F4EE3836AAA3C410C775140F1305541CF7C28986AAA3C41766A1687F3305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1070, 10070, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000005CA3AD3A6BAA3C41F932AEF9F8305541CDC4379974AA3C418F6CB77FF93055419E4C57FE75AA3C413D6C4DF0F7305541741CAE3D6BAA3C41102E7A56F7305541ED71AF666AAA3C413495EE46F8305541A780CEC86BAA3C41CA99B85AF83055415CA3AD3A6BAA3C41F932AEF9F8305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1071, 10071, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000BF1112BDC4AA3C41748DBED6FC305541EA62EDB8CFAA3C41D364572DFD3055419E506A9BD0AA3C412537B461FB30554173FF8E9FC5AA3C41C65F1B0BFB305541BF1112BDC4AA3C41748DBED6FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1072, 10072, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000047326B8DBAAA3C412843B941F63055417F7F37E8BFAA3C41D883F64DF6305541A1847B29C0AA3C41D65F1A85F43055416937AFCEBAAA3C41261FDD78F430554147326B8DBAAA3C412843B941F6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1077, 10077, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000013000000AB04D8DFC4AA3C41FDF3D3C511315541AB04D8DFC4AA3C410C2875CD0F315541406D89F8CAAA3C410C2875CD0F315541406D89F8CAAA3C4101952F0E0E315541122173FBC3AA3C4101952F0E0E315541122173FBC3AA3C410349DF140B315541A69C78D2CAAA3C410349DF140B315541A69C78D2CAAA3C41EB5B50D109315541D4D53A11D1AA3C41EB5B50D109315541D4D53A11D1AA3C412A7D631E0B315541368A761FD6AA3C412A7D631E0B315541368A761FD6AA3C412B57BBA109315541F764E6B1E4AA3C412B57BBA109315541F764E6B1E4AA3C41DC27AFC90B315541C83E7831DFAA3C41DC27AFC90B315541C83E7831DFAA3C41CEE0B9030D315541F764E6B1E4AA3C41CEE0B9030D315541F764E6B1E4AA3C41B18BCBB211315541AB04D8DFC4AA3C41FDF3D3C511315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1039, 10039, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000DDEBE631C3AA3C41ACA3AE3E563155410A4D1250C3AA3C410DBA6B4456315541E7722070C3AA3C4181F07A49563155411CE9D291C3AA3C41A86BD24D563155419208E8B4C3AA3C41DCB569515631554155771BD9C3AA3C4130D039545631554194AD26FEC3AA3C41863F3D5656315541117FC123C4AA3C41B5177057563155418AA7A249C4AA3C41ED02D05756315541D859806FC4AA3C4147465C5756315541DCCF1095C4AA3C4136C315565631554178D90ABAC4AA3C41EAF5FE5356315541FA6B26DEC4AA3C4161F01B51563155410E2E1D01C5AA3C416352724D563155419F00AB22C5AA3C41C33E0949563155413D848E42C5AA3C414C4DE943563155416E978960C5AA3C41097A1C3E563155412BD1617CC5AA3C41EC11AE375631554147F1E095C5AA3C41A19CAA3056315541CB4AD5ACC5AA3C4156C41F29563155419B2412C1C5AA3C41DF3A1C2156315541351170D2C5AA3C41529DAF1856315541053ACDE0C5AA3C417455EA0F5631554157A30DECC5AA3C41C379DD0656315541AF601BF4C5AA3C4133AC9AFD553155416BC1E6F8C5AA3C41D4F733F455315541496E66FAC5AA3C41B6ADBBEA55315541B27B97F8C5AA3C41234144E1553155416C6F7DF3C5AA3C41A123E0D7553155413D3A22EBC5AA3C413AA1A1CE55315541192496DFC5AA3C419ABC9AC55531554120ACEFD0C5AA3C41150CDDBC55315541A15D4BBFC5AA3C41719779B455315541C497CBAAC5AA3C4189B680AC55315541BA4A9893C5AA3C41B2F101A55531554145AADE79C5AA3C414EE30B9E553155411AD5D05DC5AA3C41471BAC9755315541ED73A53FC5AA3C41E604EF9155315541104E971FC5AA3C4172CEDF8C55315541D5100B14C5AA3C414EE3478B55315541496A1DF3C4AA3C413150068755315541B3DEDAD0C4AA3C4171627C8355315541524D83ADC4AA3C41FBB2B08055315541CA995889C4AA3C411978A87E5531554184319E64C4AA3C41A57B677D55315541AB8D983FC4AA3C411A14F07C55315541D8B38C1AC4AA3C410620437D553155410CB5BFF5C3AA3C41A204607E55315541592D76D1C3AA3C41C6AE44805531554131C3F3ADC3AA3C41DC96ED82553155416BAA7A8BC3AA3C4172C7558655315541F2274B6AC3AA3C4187E6768A55315541211AA34AC3AA3C413241498F55315541B285BD2CC3AA3C414ADAC39455315541AB27D210C3AA3C41D57ADC9A55315541D70C15F7C2AA3C4151C587A155315541D631B6DFC2AA3C41BA4AB9A8553155414E28E1CAC2AA3C41F1A163B0553155411BC7BCB8C2AA3C417A8078B855315541F4E06AA9C2AA3C4136D5E8C0553155415D05089DC2AA3C419CE4A4C9553155411F4CAB93C2AA3C41DC659CD2553155415529668DC2AA3C4171A1BEDB553155418D4D448AC2AA3C410990FAE455315541CB8F4B8AC2AA3C4187FA3EEE553155414FE27B8DC2AA3C41EF997AF7553155419053CF93C2AA3C41A4379C0056315541FF173A9DC2AA3C4198CD92095631554154A1AAA9C2AA3C41DBA54D12563155419BBE09B9C2AA3C41F979BC1A5631554151C73ACBC2AA3C412291CF225631554117D11BE0C2AA3C41A7DD772A5631554118EF85F7C2AA3C41C918A731563155415C7A4D11C3AA3C41A3DD4F38563155412763422DC3AA3C41F1C1653E56315541DDEBE631C3AA3C41ACA3AE3E56315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1040, 10040, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000CF801F64B0AA3C411FB2B148543155411BF2F078B9AA3C4164B00339533155411B23C001ADAA3C41F516498E4C315541CFB1EEECA3AA3C41B018F79D4D315541CF801F64B0AA3C411FB2B14854315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1041, 10041, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000900000004B783E7AAAA3C41E24B74F35B315541FFCA8C91C8AA3C41A9CB58E95C3155416F37779DB8AA3C41770127A15331554102BA71FDAFAA3C416D98578E543155410540CBB2B5AA3C41B3FD94E057315541EC5A10D7B6AA3C41841203C657315541AFC46ED7B7AA3C4178AAF05858315541C65434ABACAA3C416ADE6F085831554104B783E7AAAA3C41E24B74F35B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1042, 10042, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B0000006B7284E5C6AA3C4150719CAC583155412862F00FC7AA3C41584D1DB258315541DE271E3CC7AA3C41842CACB6583155415BB0B769C7AA3C416D2D40BA5831554117246498C7AA3C416657D2BC58315541AD93C8C7C7AA3C4127A85DBE5831554131A988F7C7AA3C417D1DDFBE58315541605C4727C8AA3C4128BB55BE5831554179A7A756C8AA3C41D88CC2BC58315541F53C4D85C8AA3C4119A428BA58315541833ADDB2C8AA3C4137128DB65831554168DBFEDEC8AA3C41B9DEF6B15831554118245C09C9AA3C4147F96EAC58315541AF8AA231C9AA3C417A2800A65831554124978357C9AA3C41DFF4B69E58315541797CB57AC9AA3C416990A19658315541DAA8F39AC9AA3C41FEBACF8D583155414E4AFFB7C9AA3C4186A35284583155410ACA9FD1C9AA3C41B0C63C7A58315541013AA3E7C9AA3C41C1CAA16F58315541AFB6DEF9C9AA3C41535996645831554153BA2E08CAAA3C4134F72F595831554162627712CAAA3C4145DA844D5831554166A5A418CAAA3C415FBEAB4158315541BD7AAA1ACAAA3C41FEB8BB35583155416CF18418CAAA3C41330CCC29583155412B383812CAAA3C416CF9F31D583155410395D007CAAA3C4118944A1258315541A84D62F9C9AA3C41AA94E60658315541867F09E7C9AA3C41712CDEFB57315541BEE9E9D0C9AA3C4145DA46F15731554187A62EB7C9AA3C419F4035E7573155411BD8099AC9AA3C418CFDBCDD573155416E46B479C9AA3C412C84F0D45731554199F06C56C9AA3C411FF9E0CC57315541E4927830C9AA3C41B7109EC5573155418A1F2108C9AA3C41D3F035BF57315541A22FB5DDC8AA3C41CA14B5B957315541EC6987B1C8AA3C419F3526B5573155418633A6A2C8AA3C413F67DCB357315541E2EDBD77C8AA3C418BC6D6B15731554158FA544CC8AA3C419D67AAB0573155410AFEAF20C8AA3C41602559B0573155410DFD13F5C7AA3C416D80E3B0573155418BEDC5C9C7AA3C41E99D48B257315541B0490A9FC7AA3C41254986B457315541FBA42475C7AA3C41F2F698B757315541D83F574CC7AA3C415DCB7BBB57315541F39FE224C7AA3C4134A128C057315541B62905FFC6AA3C41F31398C55731554176BDFADAC6AA3C41308BC1CB573155415759FCB8C6AA3C417B489BD2573155415CBE3F99C6AA3C41A4761ADA57315541571CF77BC6AA3C41C03A33E257315541E4C15061C6AA3C4121C7D8EA573155411BD37649C6AA3C41776FFDF357315541C5078F34C6AA3C4169BE92FD57315541A66EBA22C6AA3C41718C890758315541CE391514C6AA3C410618D21158315541F891B608C6AA3C41241E5C1C58315541CD71B000C6AA3C416EF41627583155418B890FFCC5AA3C413BA3F13158315541DE2ADBFAC5AA3C418200DB3C58315541AA3D15FDC5AA3C4127CBC14758315541263CBA02C6AA3C41EBC59452583155417139C10BC6AA3C4104D3425D583155411FEF1B18C6AA3C41150FBB6758315541E7D3B627C6AA3C41BCEBEC7158315541A93A793AC6AA3C41064AC87B5831554131794550C6AA3C4194933D85583155415917F968C6AA3C41ABD33D8E5831554167056D84C6AA3C417DCEBA9658315541F7D975A2C6AA3C41DC17A79E583155416A16E4C2C6AA3C415B28F6A5583155416B7284E5C6AA3C4150719CAC58315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1043, 10043, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C00000092C71545C1AA3C4111BE3B0C55315541A8E88265C1AA3C4123BE951355315541E18E6088C1AA3C416FB5331A5531554152CC6AADC1AA3C4182BF082055315541947659D4C1AA3C41907F0925553155418AB3E0FCC1AA3C4134362C2955315541D58CB126C2AA3C41C0D4682C553155410A8A7A51C2AA3C41C70CB92E553155415F4FE87CC2AA3C41835C183055315541F03FA6A8C2AA3C416717843055315541A5225FD4C2AA3C419C6BFB2F5531554122C8BDFFC2AA3C416D637F2E5531554108B16D2AC3AA3C413CE3122C5531554138B21B54C3AA3C4100A4BA28553155416197767CC3AA3C41F7297D245531554162C02FA3C3AA3C41E6B7621F55315541A3BBFBC7C3AA3C41473F751955315541B4D792EAC3AA3C418C4CC012553155413CB0B10AC4AA3C41DEF0500B55315541ABB01928C4AA3C4199A8350355315541B28D9142C4AA3C410B3F7EFA5431554128B6E559C4AA3C41AFAF3BF15431554137B6E86DC4AA3C411E0580E754315541C690737EC4AA3C41E1355EDD54315541F70A668BC4AA3C418EFFE9D2543155413CEBA694C4AA3C4140C037C854315541012A249AC4AA3C41EB4E5CBD54315541BC15D39BC4AA3C41C7D26CB2543155419066B099C4AA3C411A9A7EA754315541D645C093C4AA3C41BAF0A69C5431554112450E8AC4AA3C4181F6FA91543155412248AD7CC4AA3C4135768F8754315541D35FB76BC4AA3C41EBBC787D54315541B8974D57C4AA3C41A072CA73543155413EB5973FC4AA3C41DA73976A5431554150EAC324C4AA3C41D6ACF161543155419A7B0607C4AA3C41A9F6E95954315541855A99E6C3AA3C4198F68F52543155411F8F6CC9C3AA3C41CFFAF14C5431554139C0A3A7C3AA3C4142B7134654315541D9E19683C3AA3C415697F83F54315541FB308C5DC3AA3C417C80AC3A54315541A5CBCD35C3AA3C41BDC4393654315541A020A90CC3AA3C41C20EA93254315541F9586EE2C2AA3C41CD500130543155417ABB6FB7C2AA3C412EB7472E54315541450C018CC2AA3C41519E7F2D543155416DEA7660C2AA3C41058CAA2D54315541E0292635C2AA3C41AA2CC82E54315541242F630AC2AA3C41CA53D63054315541424A81E0C1AA3C413800D13354315541B514D2B7C1AA3C411664B2375431554109D3A490C1AA3C41ECEF723C54315541FDD8456BC1AA3C41886109425431554110F6FD47C1AA3C41EDD56A485431554189E71127C1AA3C41ABDE8A4F543155419CD1C108C1AA3C41EF995B575431554193C348EDC0AA3C41A9CDCD5F54315541E343DCD4C0AA3C413605D1685431554151E8ABBFC0AA3C416DB153725431554155F9E0ADC0AA3C41CE4A437C5431554194219E9FC0AA3C418F758C86543155419629FF94C0AA3C4179271B915431554145C3188EC0AA3C41D9CEDA9B54315541A35FF88AC0AA3C419B7AB6A6543155417516A48BC0AA3C41110399B15431554133991A90C0AA3C4134336DBC5431554187355398C0AA3C41EEF11DC75431554141E73DA4C0AA3C41266B96D154315541B876C3B3C0AA3C417F38C2DB5431554112A6C5C6C0AA3C41F5888DE554315541826C1FDDC0AA3C417847E5EE54315541133EA5F6C0AA3C412840B7F7543155410E612513C1AA3C41D543F2FF543155415A11F330C1AA3C41831033075531554192C71545C1AA3C4111BE3B0C55315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1044, 10044, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D00000043CB9991C0AA3C414A75E8C24D315541F111CEC7C0AA3C41A4FBF9C94D31554186624400C1AA3C41D245D6CF4D31554144BB8E3AC1AA3C41C6E871D44D315541F18A3B76C1AA3C4130EAC3D74D3155416B8DD6B2C1AA3C4107D2C5D94D315541B0AEE9EFC1AA3C4107B773DA4D3155415BF0FD2CC2AA3C415F46CCD94D3155415C529C69C2AA3C414CC6D0D74D315541F7B94EA5C2AA3C419B1385D44D31554127D8A0DFC2AA3C41019AEFCF4D3155413F0C2118C3AA3C41DA4719CA4D315541B941614EC3AA3C418B7C0DC34D315541CAC5F781C3AA3C417AF2D9BA4D315541E51580B2C3AA3C411DA48EB14D315541E0A39BDFC3AA3C4135AD3DA74D315541268DF208C4AA3C411327FB9B4D3155410447342EC4AA3C41E401DD8F4D3155410A3B184FC4AA3C4185D9FA824D31554174545E6BC4AA3C41E4C76D754D3155412B7DCF82C4AA3C41BF3350674D315541FA083E95C4AA3C41909DBD584D315541A20E86A2C4AA3C41A569D2494D315541FEAD8DAAC4AA3C4106A9AB3A4D315541FE4145ADC4AA3C41B5E0662B4D315541607FA7AAC4AA3C413FD0211C4D3155413D7FB9A2C4AA3C41BF37FA0C4D3155414EB48A95C4AA3C41E39D0DFE4C315541E8CD3483C4AA3C41571679EF4C3155414C85DB6BC4AA3C41460959E14C3155413858AC4FC4AA3C41F2FBC8D34C315541CC2FDE2EC4AA3C41EE5AE3C64C31554158F6B009C4AA3C41DD46C1BA4C315541B61A6DE0C3AA3C4169637AAF4C315541590263B3C3AA3C4117A924A54C315541726DEA82C3AA3C41953AD49B4C315541F8CB614FC3AA3C419E3D9B934C31554174852D19C3AA3C4144B7898C4C3155417695A40BC3AA3C41C20D008B4C31554128D5DBD5C2AA3C41AA89F6834C315541FA6CD39DC2AA3C4128E21F7E4C3155413C88F863C2AA3C41587787794C31554195DFBB28C2AA3C41343D36764C31554131DC90ECC1AA3C4157AA32744C31554125B8ECAFC1AA3C4136AB80734C3155413C994573C1AA3C41A59A21744C31554179AB1137C1AA3C41123F14764C315541B639C6FBC0AA3C4101CD54794C3155417DCAD6C1C0AA3C414DEEDC7D4C315541363EB489C0AA3C41BCCEA3834C31554108F3CB53C0AA3C41FC2C9E8A4C31554175F08620C0AA3C419470BE924C315541FA1949F0BFAA3C4198C4F49B4C315541256D70C3BFAA3C412E362FA64C315541AE49549ABFAA3C41D8D759B14C31554106C84475BFAA3C410DE85EBD4C315541CF1C8A54BFAA3C41B8FB26CA4C3155416F0C6438BFAA3C41CB2B99D74C315541946E0921BFAA3C41D7459BE54C31554128C3A70EBFAA3C41FBFE11F44C315541C1DA6201BFAA3C413029E1024D315541238F54F9BEAA3C41FEE9EB114D315541CB928CF6BEAA3C410CF314214D315541855010F9BEAA3C41BBBA3E304D31554139E2DA00BFAA3C4137B64B3F4D315541CC19DD0DBFAA3C41A8921E4E4D315541289FFD1FBFAA3C416B6E9A5C4D315541E3201937BFAA3C417D11A36A4D315541E3990253BFAA3C4148241D784D31554141A88373BFAA3C41ED64EE844D31554129F85C98BFAA3C418CDAFD904D315541ABBE46C1BFAA3C41CC05349C4D3155415245F1EDBFAA3C41AA0E7BA64D315541FC85051EC0AA3C4109EFBEAF4D315541A6D42551C0AA3C41D799EDB74D31554152D5257DC0AA3C41CE77CBBD4D31554143CB9991C0AA3C414A75E8C24D315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1045, 10045, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000090000004B81FD28B8AA3C414DA3C52C4E31554150CAFF8FB4AA3C41E1D28E9B4E315541369F4AE7B5AA3C414DD6EC4D4F3155411320D098B3AA3C41E426F4944F315541F77774C6BBAA3C410CC2C3D4533155419D05EBF7BEAA3C412AA26E725331554186AB036EC0AA3C4131F2CD3454315541FD530524C3AA3C41DE9152E1533155414B81FD28B8AA3C414DA3C52C4E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1066, 10066, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000D0000007A669813A4AA3C4148C8AD38F4305541A1A032FCB0AA3C4136306EC5F4305541B60E5A3CB1AA3C4107974A67F4305541DFFA5FB7B2AA3C418E586F77F4305541BDDC5C9DB3AA3C41C5EBF325F3305541D705BB1FB9AA3C415D270662F3305541A63B6781BAAA3C41A13C0C5BF1305541A8369BF5B1AA3C41A725DDFDF030554117ECFEABB1AA3C41A118E169F1305541F7B2E090A0AA3C41887D5CAFF03055414F2A55D49EAA3C415DCEAE3BF3305541FF184195A4AA3C41611B6B7AF33055417A669813A4AA3C4148C8AD38F4305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1067, 10067, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000008D8E43908EAA3C417E75DFE7EA3055413BBC573AA0AA3C41C3767C65EB30554143A6DD63A1AA3C4132280FC8E83055419578C9B98FAA3C41ED26724AE83055418D8E43908EAA3C417E75DFE7EA305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1046, 10046, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B000000F063F57FC5AA3C41F1A75DF24C315541E625BDA2C5AA3C4150C184F54C315541233970C6C5AA3C41D014F2F74C31554112B7D0EAC5AA3C410D6DA1F94C315541228C9F0FC6AA3C4124DE8FFA4C3155417EE59C34C6AA3C419CCABBFA4C315541A19F8859C6AA3C413EE624FA4C3155418DB5227EC6AA3C41C536CCF84C31554107B02BA2C6AA3C41D511B4F64C3155412A1365C5C6AA3C411019E0F34C31554144CB91E7C6AA3C41CF3355F04C3155415F967608C7AA3C419A8619EC4C3155411B6BDA27C7AA3C417D6834E74C3155417CDB8645C7AA3C415556AEE14C315541E2734861C7AA3C4113E490DB4C3155414913EF7AC7AA3C4127ACE6D44C3155417E3F4E92C7AA3C410D3DBBCD4C315541D0713DA7C7AA3C415F051BC64C315541AF5D98B9C7AA3C412B3E13BE4C315541402F3FC9C7AA3C4118D4B1B54C31554110C316D6C7AA3C41404F05AD4C31554165D408E0C7AA3C41E0B91CA44C3155417D2404E7C7AA3C417286079B4C3155414198FCEAC7AA3C41BC74D5914C315541164DEBEBC7AA3C41A47696884C3155413FA5CEE9C7AA3C4176945A7F4C315541164AAAE4C7AA3C4108D131764C3155414F2687DCC7AA3C411B0E2C6D4C315541B85573D1C7AA3C41B2F058644C315541B70D82C3C7AA3C411DC6C75B4C315541137BCBB2C7AA3C41156987534C31554105996C9FC7AA3C417E28A64B4C315541E1FD8689C7AA3C4118AE31444C31554186A14071C7AA3C4128E7363D4C315541769BC356C7AA3C41E1EDC1364C315541AAD93D3AC7AA3C4172F4DD304C315541E8082A1AC7AA3C41C3DC682B4C315541C4684EF8C6AA3C415403AC264C31554184F0ECD4C6AA3C4121A3B0224C315541EF8E4AB0C6AA3C41407E7E1F4C31554118A4AE8AC6AA3C41A8CE1B1D4C31554117766264C6AA3C41253A8D1B4C315541A0A2B03DC6AA3C4155C9D51A4C315541898DE416C6AA3C419EE1F61A4C31554154CD49F0C5AA3C417D42F01B4C3155410B992BCAC5AA3C411506C01D4C3155417534D4A4C5AA3C41DBA462204C3155414B608C80C5AA3C4167FCD2234C3155414ACC9A5DC5AA3C4195590A284C315541488D433CC5AA3C416C85002D4C3155418598C71CC5AA3C4146D5AB324C3155414F4564FFC4AA3C41783D01394C31554165D552E4C4AA3C410567F43F4C315541BE05C8CBC4AA3C418DC777474C31554101A7F3B5C4AA3C41BDBB7C4F4C315541434100A3C4AA3C41C6A3F3574C31554177C01293C4AA3C41D601CC604C315541CA2C4A86C4AA3C413C9AF4694C3155416A6EBF7CC4AA3C41F1945B734C3155418A1C8576C4AA3C4172A0EE7C4C3155414B59A773C4AA3C4145159B864C3155416EBA2B74C4AA3C41951A4E904C315541EB3D1178C4AA3C41A2CAF4994C315541494C507FC4AA3C41B5577CA34C31554136C7DA89C4AA3C41DA30D2AC4C31554190259C97C4AA3C41E525E4B54C315541209A79A8C4AA3C41E58AA0BE4C315541A44952BCC4AA3C41A55AF6C64C315541E288FFD2C4AA3C41D657D5CE4C315541A82955ECC4AA3C41A42C2ED64C315541DECF2108C5AA3C419E88F2DC4C31554128522F26C5AA3C41883C15E34C315541EA224346C5AA3C4137548AE84C3155410FC31E68C5AA3C41A72D47ED4C315541F063F57FC5AA3C41F1A75DF24C315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1078, 10078, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000CE0DBBFC55AA3C417563E680103155418E7144137CAA3C41B44A1E6A103155418E7144137CAA3C41ED79C86107315541CE0DBBFC55AA3C41ED79C86107315541CE0DBBFC55AA3C417563E68010315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1047, 10047, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D0000007E1884BAC1AA3C41C70D43404C315541CE7601F6C1AA3C414F13EA464C31554187979633C2AA3C41E9C83E4C4C315541707FCB72C2AA3C41AFCB36504C315541240925B3C2AA3C412060CA524C315541A6D425F4C2AA3C413181F4534C315541D43C4F35C3AA3C4102EAB2534C315541DC4C2276C3AA3C41611A06524C31554187B820B6C3AA3C41C355F14E4C3155415AD1CDF4C3AA3C41EA9C7A4A4C315541D77AAF31C4AA3C4140A2AA444C315541E9164F6CC4AA3C41C0B88C3D4C3155413B6E3AA4C4AA3C4124BE2E354C315541048E04D9C4AA3C41AAFFA02B4C315541479C460AC5AA3C41641AF6204C315541CAA0A037C5AA3C41EAD642154C315541AC3FBA60C5AA3C4107019E084C31554185654385C5AA3C41093B20FB4B31554141E3F4A4C5AA3C4106CEE3EC4B31554137F990BFC5AA3C417D7604DE4B3155419ECFE3D4C5AA3C414E2E9FCE4B315541B6DAC3E4C5AA3C4149F4D1BE4B3155417D2C12EFC5AA3C41E791BBAE4B315541C0B0BAF3C5AA3C41FC5E7B9E4B3155413054B4F2C5AA3C41F004318E4B315541AA1501ECC5AA3C41EE40FC7D4B3155410803AEDFC5AA3C410EA6FC6D4B315541CD1FD3CDC5AA3C41CF5F515E4B315541FC3493B6C5AA3C417AF5184F4B315541288F1B9AC5AA3C416B0E71404B315541B5A4A378C5AA3C41963876324B315541A3AA6C52C5AA3C41AFB043254B3155418915C127C5AA3C411E2DF3184B315541A407F4F8C4AA3C41F3AB9C0D4B31554119B060C6C4AA3C41454456034B3155414A986990C4AA3C41CFFA33FA4A3155413DE47757C4AA3C41609B47F24A3155414A8FCF36C4AA3C4112716FEE4A3155411DD5E1FCC3AA3C41567DD1E64A3155413FBD84C0C3AA3C41EE147EE04A31554112E32D82C3AA3C41E58A81DB4A31554179BB5642C3AA3C416896E5D74A315541ECA77B01C3AA3C41883FB1D54A31554193041BC0C2AA3C41E6D1E8D44A3155417531B47EC2AA3C41E9D38DD54A3155412F9BC63DC2AA3C4112049FD74A315541A4C1D0FDC1AA3C41765B18DB4A31554132424FBFC1AA3C414115F3DF4A315541F3E4BB82C1AA3C4147BC25E64A31554125AF8C48C1AA3C41373DA4ED4A31554102FD3211C1AA3C4138FE5FF64A315541F4A51ADDC0AA3C4162FB47004B3155412F29A9ACC0AA3C41C6E7480B4B315541BFE83C80C0AA3C411A534D174B3155414D712C58C0AA3C4195D33D244B315541B1D1C534C0AA3C41673301324B315541C2024E16C0AA3C41E7A17C404B315541F96000FDBFAA3C41DFE7934F4B315541FE380EE9BFAA3C416A9E295F4B315541DE669EDABFAA3C415B681F6F4B3155418C0BCDD1BFAA3C413E2D567F4B315541D854ABCEBFAA3C411456AE8F4B315541E25C3FD1BFAA3C41D10A08A04B315541B11D84D9BFAA3C41627043B04B315541197B69E7BFAA3C41C5E640C04B3155414262D4FABFAA3C41A246E1CF4B3155415DFE9E13C0AA3C41F21D06DF4B31554145029931C0AA3C4170EB91ED4B31554149068854C0AA3C41EE5768FB4B315541F1FA277CC0AA3C41B16D6E084C31554156AC2BA8C0AA3C41E3CC8A144C315541D3593DD8C0AA3C4109DDA51F4C315541955BFF0BC1AA3C41E6FAA9294C315541DADA0C43C1AA3C41CDA283324C3155410795FA7CC1AA3C417E96213A4C315541F8723CB7C1AA3C41C70D43404C3155417E1884BAC1AA3C41C70D43404C315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1048, 10048, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000003312A9CA9FAA3C41C248B7E2453155411FE91D199CAA3C41B791D799463155410B3C7B6FB0AA3C412DCEFB294D3155414A650621B4AA3C413785DB724C3155413312A9CA9FAA3C41C248B7E245315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1049, 10049, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004A00000049547F15C3AA3C41CBFB55B54A31554185398B54C3AA3C412D7AE7B94A3155413B6AF194C3AA3C4176D914BD4A315541476E34D6C3AA3C41F5E8D7BE4A3155412C1FD517C4AA3C41DF392DBF4A315541BA9F5359C4AA3C41FD2514BE4A3155418855309AC4AA3C41E9D08EBB4A31554195E1ECD9C4AA3C41EC23A2B74A315541E8150D18C5AA3C4178C455B24A31554129E81754C5AA3C414005B4AB4A3155412F5D988DC5AA3C41F1D1C9A34A315541D36C1EC4C5AA3C413796A69A4A3155418FDC3FF7C5AA3C41A61F5C904A315541D90D9926C6AA3C41107BFE844A315541E9C0CD51C6AA3C4144CDA3784A31554115C88978C6AA3C413328646B4A31554191AB819AC6AA3C41DC5B595D4A315541643D73B7C6AA3C4110C49E4E4A315541191926CFC6AA3C410D13513F4A315541A3126CE1C6AA3C41BE198E2F4A315541C88F21EEC6AA3C41868D741F4A315541EFCD2DF5C6AA3C4183CC230F4A315541981183F6C6AA3C414AA0BBFE49315541E2C11EF2C6AA3C4126005CEE49315541926D09E8C6AA3C41B3D224DE49315541A0B956D8C6AA3C41B0AF35CE49315541FA3B25C3C6AA3C419BA2ADBE49315541F03E9EA8C6AA3C410BEEAAAF49315541B271F588C6AA3C41C9D04AA149315541CB826864C6AA3C41E04CA99349315541B2A83E3BC6AA3C41F1F0E086493155412F16C80DC6AA3C419FA40A7B49315541015F5DDCC5AA3C41DB773D7049315541E7CA5EA7C5AA3C410F768E66493155418B99336FC5AA3C41317D105E49315541313A4934C5AA3C41BC18D4564931554111B06F29C5AA3C419247AA55493155419C22B8EAC4AA3C419D91B1504931554198FB81AAC4AA3C41D2881B4D493155418F554A69C4AA3C41CF29EF4A4931554100419027C4AA3C4197B0304A4931554170CCD3E5C3AA3C413E90E14A49315541150B95A4C3AA3C413370004D49315541DA1A5364C3AA3C41B32E895049315541C62D8B25C3AA3C4116E9745549315541AC94B7E8C2AA3C41FB08BA5B4931554120D24EAEC2AA3C4111574C6349315541EDB2C276C2AA3C41F6121D6C49315541F86F7F42C2AA3C41DC0F1B764931554182DCEA11C2AA3C41EBD53281493155410C9F63E5C1AA3C4170C84E8D49315541967840BDC1AA3C41A84F579A493155418B9CCF99C1AA3C41130733A8493155418F17567BC1AA3C4191EEC6B6493155419F490F62C1AA3C41399FF6C549315541A3712C4EC1AA3C419682A4D549315541A14ED43FC1AA3C41620CB2E54931554193D22237C1AA3C41DAF5FFF549315541B5ED2834C1AA3C41FD7A6E064A3155414F6CEC36C1AA3C412198DD164A315541F8EB673FC1AA3C4183482D274A31554123E68A4DC1AA3C4187C43D374A31554185CF3961C1AA3C41CCBFEF464A315541184F4E7AC1AA3C4112A624564A3155419C879798C1AA3C41B5D6BE644A3155412F77DABBC1AA3C418DDEA1724A3155419B6AD2E3C1AA3C413FAFB27F4A31554105833110C2AA3C411DD4D78B4A315541EC4CA140C2AA3C4185A3F9964A315541F869C374C2AA3C41226D02A14A315541A64732ACC2AA3C4125A4DEA94A3155419EE581E6C2AA3C4164057DB14A315541F92FAD09C3AA3C41CBFB55B54A31554149547F15C3AA3C41CBFB55B54A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1050, 10050, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004D000000BF8E49ECC3AA3C414610C02349315541FBA76524C4AA3C41D404992A493155413537AE5EC4AA3C412F5332304931554163AEB19AC4AA3C41F012813449315541C820FBD7C4AA3C417ADF7C37493155414D261316C5AA3C41C9E81F39493155418CC48054C5AA3C415CFE6639493155412C5ACA92C5AA3C41BF955138493155414E8C76D0C5AA3C416CCBE1354931554199320D0DC6AA3C41BB5E1C32493155413F411848C6AA3C419BA8082D49315541B8AF2481C6AA3C41518DB026493155418357C3B7C6AA3C411769201F493155414ACE89EBC6AA3C4132F86616493155413A34131CC7AA3C410E3A950C49315541A3F80049C7AA3C413250BE01493155418892FB71C7AA3C411259F7F548315541BA2AB396C7AA3C41CE4657E9483155413A38E0B6C7AA3C4164B2F6DB48315541460A44D2C7AA3C4115ACEFCD48315541DC43A9E8C7AA3C4146885DBF48315541B542E4F9C7AA3C417BAA5CB0483155410875D305C8AA3C41E24D0AA148315541199A5F0CC8AA3C41804C84914831554166F07B0DC8AA3C41FCE4E88148315541F24D2609C8AA3C41897F567248315541A72467FFC7AA3C410073EB6248315541E37151F0C7AA3C416EC9C55348315541629902DCC7AA3C41C4050345483155413A2CA2C2C7AA3C4131EABF3648315541509B61A4C7AA3C413340182948315541BDD77B81C7AA3C4181A2261C4831554130DF345AC7AA3C410549041048315541BF37D92EC7AA3C41EBD7C804483155416B5BBDFFC6AA3C417C318AFA473155412F123DCDC6AA3C41654B5CF147315541005946C5C6AA3C41658C0FF047315541223EA892C6AA3C415B5CA5E6473155416933F35CC6AA3C410FB05EDE473155412CDC8F24C6AA3C4173A74BD7473155411215ECE9C5AA3C41DE0A7AD147315541A81D7AADC5AA3C41AF30F5CC4731554142BAAF6FC5AA3C41B4E6C5C947315541C84D0531C5AA3C415C61F2C74731554157F0F4F1C4AA3C41A62F7EC747315541DE7FF9B2C4AA3C41D0336AC84731554105B28D74C4AA3C411EA2B4CA4731554171242B37C4AA3C41F20359CE47315541367049FBC3AA3C41CB4050D34731554122405DC1C3AA3C41D5AB90D947315541666ED789C3AA3C41EF160EE147315541D3272455C3AA3C4167EAB9E947315541EF19AA23C3AA3C41534183F347315541D8A9C9F5C2AA3C417E0A57FE47315541D239DCCBC2AA3C41922D200A483155417F7933A6C2AA3C414AB4C7164831554179C81885C2AA3C41F8F6342448315541E0A5CC68C2AA3C41C7CC4D3248315541B6338651C2AA3C418EBEF64048315541CECA723FC2AA3C41683C135048315541E5A2B532C2AA3C4142D5855F48315541AE8D672BC2AA3C416070306F48315541ABC69629C2AA3C41BC87F47E4831554155D7462DC2AA3C41DB63B38E483155418C907036C2AA3C4151574E9E4831554108180245C2AA3C41B6FAA6AD483155413E0BDF58C2AA3C41C5679FBC4831554165B7E071C2AA3C41CA731ACB48315541CF63D68FC2AA3C4139E8FBD848315541B0B185B2C2AA3C41D3B928E6483155415F0DABD9C2AA3C41563D87F2483155410B32FA04C3AA3C415159FFFD483155415CBE1E34C3AA3C415EB57A08493155413AD9BC66C3AA3C4172E5E41149315541F3E3719CC3AA3C41B4912B1A49315541303BD5D4C3AA3C415A9A3E2149315541BF8E49ECC3AA3C414610C02349315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1051, 10051, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000EC56E803C5AA3C41B9E3E89747315541D17DD63BC5AA3C41320D1A9F47315541B5071076C5AA3C41EC3A0CA547315541E98323B2C5AA3C4133D7B3A94731554125E69BEFC5AA3C4164D007AD47315541656B012EC6AA3C4190AA01AF47315541C181DA6CC6AA3C41388C9DAF47315541D8B6ACABC6AA3C419145DAAE4731554188A5FDE9C6AA3C412853B9AC4731554159E45327C7AA3C41A6DA3EA9473155418BF23763C7AA3C41FBA271A4473155414820359DC7AA3C410D075B9E473155417D72DAD4C7AA3C4194E3069747315541F27EBB09C8AA3C41C77F838E47315541323F713BC8AA3C41D571E1844731554160D99A69C8AA3C415D7E337A47315541ED5CDE93C8AA3C4101748E6E473155417572E9B9C8AA3C41C902096247315541C4FA71DBC8AA3C41D98FBB5447315541D1A036F8C8AA3C411506C04647315541B957FF0FC9AA3C419CA3313847315541A8C89D22C9AA3C419AC42C29473155416DADED2FC9AA3C4100ACCE19473155414716D537C9AA3C41BB4A350A47315541BD9C443AC9AA3C4124057FFA463155414D823737C9AA3C41D377CAEA463155417FB8B32EC9AA3C41273C36DB4631554178D6C920C9AA3C4173ACE0CB46315541C9F7940DC9AA3C41E6A8E7BC463155413C883AF5C8AA3C41775D68AE463155412FFAE9D7C8AA3C41EA087FA046315541FA6ADCB5C8AA3C41CDC54693463155413333548FC8AA3C41C755D9864631554151659C64C8AA3C413CEF4E7B463155410F3C0836C8AA3C414E0EBE70463155410077F203C8AA3C41F7483B674631554142ABBCCEC7AA3C41D826D95E463155419526E7A5C7AA3C414969725946315541BCD3196EC7AA3C4122DB1C5246315541C54DF433C7AA3C410BB5054C46315541CCDEE7F7C6AA3C41D3D4384746315541A98469BAC6AA3C41AB94BF4346315541F60EF17BC6AA3C4113B9A041463155418333F83CC6AA3C41B863E040463155411AA3F9FDC5AA3C415E0B8041463155416E1970BFC5AA3C41F7787E4346315541DB6DD581C5AA3C41F6C9D74646315541AEA6A145C5AA3C411A78854B46315541180F4A0BC5AA3C41EC657E5146315541005240D3C4AA3C418DF0B65846315541BD9DF19DC4AA3C4180062161463155412BCEC56BC4AA3C41EA42AC6A463155412EA31E3DC4AA3C418B0D467546315541C4015712C4AA3C4124BFD980463155413143C2EBC3AA3C417CC9508D463155416A92ABC9C3AA3C4167E3929A46315541A45955ACC3AA3C411E3886A84631554172C1F893C3AA3C4191990FB7463155419140C580C3AA3C415AB512C646315541C63FE072C3AA3C41D84B72D54631554191D1646AC3AA3C414F6910E546315541267C6367C3AA3C412CA0CEF446315541BD1AE269C3AA3C413B448E044731554122D1DB71C3AA3C41B1A63014473155411E15417FC3AA3C419651972347315541ACCDF791C3AA3C415643A43247315541F684DBA9C3AA3C4147293A414731554178AFBDC6C3AA3C4182983C4F47315541460766E8C3AA3C419D45905C47315541C1F8920EC4AA3C4177391B69473155417223FA38C4AA3C414104C57447315541D4E94867C4AA3C419BEC767F4731554135132599C4AA3C41401C1C8947315541E27A2DCEC4AA3C4172C8A1914731554138E92AFDC4AA3C41B9E3E89747315541EC56E803C5AA3C41B9E3E89747315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1052, 10052, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004B0000002CB36BE9C8AA3C414739D8D044315541A0D534E1C8AA3C41B8B494CF443155419125D685C8AA3C41CEA069C64431554165D9BC4CC8AA3C4124D2F8C244315541D8FFAD12C8AA3C41F525C0C044315541FA0A14D8C7AA3C41E1AEC3BF44315541076C5A9DC7AA3C41C93B05C044315541F4CDEC62C7AA3C41835484C144315541F5503629C7AA3C41A33A3EC44431554107C5A0F0C6AA3C41A6EE2DC84431554180E893B9C6AA3C41FE384CCD44315541CBA97484C6AA3C4143B78FD344315541346EA451C6AA3C419FEDECDA44315541B75F8021C6AA3C41A25B56E344315541B7C160F4C5AA3C411195BCEC44315541424F98CAC5AA3C41525E0EF744315541BCA373A4C5AA3C41C4CB3802453155411CAE3882C5AA3C41BE64270E4531554196302664C5AA3C41C548C41A45315541004E734AC5AA3C41E057F8274531554155244F35C5AA3C41FB5CAB35453155414D76E024C5AA3C41173AC44345315541B9644519C5AA3C41A516295245315541FF369312C5AA3C41A18EBF6045315541A933D610C5AA3C412DE36C6F45315541ED8A1114C5AA3C41662B167E45315541CC4F3F1CC5AA3C41E785A08C4531554150835029C5AA3C41EF49F19A4531554190302D3BC5AA3C417838EEA8453155417797B451C5AA3C41FDAB7DB6453155412E6ABD6CC5AA3C41DBC786C3453155419917168CC5AA3C41AAA5F1CF45315541F12685AFC5AA3C412E81A7DB453155411EA1C9D6C5AA3C41FAE192E64531554185879B01C6AA3C41E9C29FF0453155410D58AC2FC6AA3C41C5B6BBF94531554152D90B61C6AA3C411D57840246315541D12D4B95C6AA3C413602310A463155417E8A04CCC6AA3C4143C4B210463155418050CD04C7AA3C41D5EFFC1546315541B8DD363FC7AA3C419636051A46315541D663CF7AC7AA3C4144BDC31C463155417EC622B7C7AA3C413B2B331E46315541EE7CBBF3C7AA3C418EB4501E46315541A9772330C8AA3C41B11F1C1D46315541D405E56BC8AA3C41DAC5971A463155410ABB8BA6C8AA3C416F8EC816463155410A52A5DFC8AA3C4180E5B511463155412A8BC216C9AA3C4138AD690B46315541F404784BC9AA3C41B52AF003463155412D0E5F7DC9AA3C4113EE57FB45315541D46C16ACC9AA3C411BB6B1F1453155415F1C43D7C9AA3C41834F10E745315541C0FE90FEC9AA3C417C7088DB453155414B80B321CAAA3C412B9030CF45315541B02C6640CAAA3C4101BB20C245315541E2346D5ACAAA3C41D56372B4453155412CE3956FCAAA3C41553240A64531554103FEB67FCAAA3C4107CFA59745315541E718B18ACAAA3C417FADBF8845315541C3D06E90CAAA3C41E0D4AA79453155410EF6E490CAAA3C4144A7846A453155419AA2128CCAAA3C4195A86A5B453155413E3B0182CAAA3C410B457A4C45315541935DC472CAAA3C41B397D03D45315541D5B9795ECAAA3C41F3318A2F45315541B7D84845CAAA3C41B5E3C22145315541ACCE6227CAAA3C41388595144531554123DC0105CAAA3C41F4C21B084531554118FC68DEC9AA3C4140EB6DFC44315541E561E3B3C9AA3C415DBFA2F1443155419DE5C385C9AA3C41C546CFE74431554184646454C9AA3C416DA606DF44315541DA0F2520C9AA3C4154FB59D7443155412CB36BE9C8AA3C414739D8D044315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1073, 10073, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000011000000C8F8B8D4B4AA3C4170B3A42EF0305541848AA39BBBAA3C410E451D5DF0305541DAB38734BCAA3C41EF395EF8EE30554106F5C5DABDAA3C41AE9BAD03EF30554169FA806FBEAA3C4175E4A3A8ED305541D00D66A2BDAA3C41FA7425A3ED305541A6D75FD7BDAA3C41B3488927ED3055417ECA5604BAAA3C410FE64F0DED3055416C9B223ABAAA3C413DA9C98FEC305541D648A256B8AA3C414F39D682EC30554149DB0FDEB8AA3C41588ED646EB3055418CDD07EDB1AA3C41F7323D17EB30554172541049B1AA3C41711DD495EC3055410DB8E16DABAA3C416302AC6DEC305541866DC6EEAAAA3C418E054196ED3055419C826696B5AA3C41FEBC50DFED305541C8F8B8D4B4AA3C4170B3A42EF0305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1074, 10074, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000C0000003D09B615CFAA3C4179349387ED305541BF6A3BEAC6AA3C41118D0869ED30554147201E81C6AA3C4152B2EB2AEF3055413969A5C6CDAA3C4108B81A46EF305541DAA239F7CDAA3C4147FB2F76EE305541E31AFDC8CEAA3C41D3254079EE305541E4E51BBED0AA3C417D853183EE30554129D06524D0AA3C41AE4D6267F0305541A51AB0A0DEAA3C412B10F6B0F0305541438BCD99DFAA3C413DBA3FA0ED305541E5746428CFAA3C414798BA4CED3055413D09B615CFAA3C4179349387ED305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1075, 10075, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000069892AEAAAAA3C41C188E690FD305541DCBD2E32BFAA3C41A4868BBFFC305541E4D479DCBDAA3C41BD50E6ADFA30554171A07594A9AA3C41DA52417FFB30554169892AEAAAAA3C41C188E690FD305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1076, 10076, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000D1A3770299AA3C41223BAC8D12315541D1A3770299AA3C416C06D678063155419A744E2C9DAA3C416C06D678063155419A744E2C9DAA3C41FC06288412315541D1A3770299AA3C41223BAC8D12315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1079, 10079, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000A74CACD7B0AA3C41410DF5A37A315541352794C5B5AA3C41CDB41D0D7B315541D7ABAC9BB6AA3C4154518B6C7A31554149D1C4ADB1AA3C41C8A962037A315541A74CACD7B0AA3C41410DF5A37A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1053, 10053, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004C000000CB7D38CDBFAA3C41956B444845315541039F1700C0AA3C41EDA32E4D4531554190D67B34C0AA3C41FE4FF850453155416E11FF69C0AA3C418A0E9A5345315541120D39A0C0AA3C41EABE0E5545315541F022C0D6C0AA3C41F78A5355453155417F162A0DC1AA3C41A3EC675445315541BEE30C43C1AA3C4115AF4D5245315541EA8DFF77C1AA3C41D5EA084F4531554180EC9AABC1AA3C414DFE9F4A453155418F737ADDC1AA3C41E5801B4545315541D8F73C0DC2AA3C41AA32863E45315541666C853AC2AA3C4109E7EC36453155413B97FB64C2AA3C411C6C5E2E453155411FBE4C8CC2AA3C41976DEB2445315541B0462CB0C2AA3C417E54A61A45315541B34C54D0C2AA3C411023A30F453155417A2986ECC2AA3C410A4EF7034531554186EE8A04C3AA3C419E92B9F74431554111D03318C3AA3C4150CA01EB4431554154805A27C3AA3C416DBCE8DD44315541847AE131C3AA3C41B5ED87D044315541DC3BB437C3AA3C41CC6EF9C244315541106CC738C3AA3C4154A957B544315541EBF21835C3AA3C41712CBDA74431554187FCAF2CC3AA3C412179449A44315541B4EB9C1FC3AA3C4196CE078D443155419239F90DC3AA3C41E6F6208044315541F143E7F7C2AA3C412D15A97344315541DA0A92DDC2AA3C411074B8674431554157DC2CBFC2AA3C41F756665C44315541A3F0F29CC2AA3C4142CCC85144315541BAF62677C2AA3C418982F447443155412992124EC2AA3C4165A0FC3E443155419ECC0522C2AA3C41E49EF23644315541887856F3C1AA3C41B227E62F44315541D58A5FC2C1AA3C416FF6E429443155419D69808FC1AA3C410CBEFA2444315541E5311C5BC1AA3C41FC11312144315541D3BEFB56C1AA3C41C4FAF1204431554154712523C1AA3C413A13E41D443155417F0173EEC0AA3C4154EEF61B44315541EEC648B9C0AA3C41F5362E1B4431554163FC0B84C0AA3C41636B8B1B44315541DC00224FC0AA3C411EDA0D1D44315541F994EF1AC0AA3C4156A3B21F44315541361CD8E7BFAA3C4158BE7423443155412EDF3CB6BFAA3C413E034D28443155418C527C86BFAA3C417738322E443155410463F158BFAA3C413E241935443155418AC8F22DBFAA3C4134A2F43C443155418B60D205BFAA3C414FBCB54544315541E892DCE0BEAA3C413EC74B4F44315541DABF57BFBEAA3C414B82A45944315541DEB983A1BEAA3C41F039AC6444315541194D9987BEAA3C419FED4D7044315541C6D1C971BEAA3C417C77737C443155419FCF3E60BEAA3C4199B6058944315541FCAD1953BEAA3C412ABBEC95443155416C74734ABEAA3C41DEF30FA344315541E19A5C46BEAA3C41CE5C56B044315541D2EADC46BEAA3C410CAFA6BD44315541CF6FF34BBEAA3C41DE90E7CA44315541D5799655BEAA3C41D3C5FFD74431554144AFB363BEAA3C41FD5ED6E44431554149303076BEAA3C415EEA52F144315541D8C9E88CBEAA3C4166A15DFD443155414C38B2A7BEAA3C414896DF08453155419B7A59C6BEAA3C41A4DFC21345315541A532A4E8BEAA3C4135C2F21D45315541F014510EBFAA3C4143D85B2745315541D1641837BFAA3C41B536EC2F45315541A07CAC62BFAA3C41098F933745315541E661BA90BFAA3C417F4E433E453155418F3DF7B7BFAA3C411D092C4545315541CB7D38CDBFAA3C41956B444845315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1054, 10054, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000049000000BC9756ABBAAA3C415EDC82AF44315541097FAFD5BAAA3C416188BFB4443155412A89B201BBAA3C411FE40AB9443155414EF6092FBBAA3C41BC915CBC443155419D6F5D5DBBAA3C41C419AEBE443155412BB3528CBBAA3C41E3F7FABF44315541D0438EBBBBAA3C417EA340C044315541251BB4EABBAA3C41E6947EBF443155418C5D6819BCAA3C412346B6BD44315541320C5047BCAA3C414530EBBA4431554163B71174BCAA3C4186C422B744315541DC2B569FBCAA3C419F6164B244315541401DC9C8BCAA3C41A745B9AC4431554101CA19F0BCAA3C41C97B2CA6443155411399FB14BDAA3C41F9C6CA9E44315541EBAE2637BDAA3C41E188A296443155413E795856BDAA3C4128A6C38D4431554130315472BDAA3C411E673F8444315541F451E38ABDAA3C416056287A44315541D501D69FBDAA3C41981C926F44315541CE7003B1BDAA3C41105A91644431554141274ABEBDAA3C41C77E3B59443155418B4790C7BDAA3C4168A0A64D44315541DEBFC3CCBDAA3C41854FE941443155414B6EDACDBDAA3C41666B1A3644315541EA33D2CABDAA3C4191F5502A44315541DCF8B0C3BDAA3C41F7E4A31E4431554165A184B8BDAA3C4143F929134431554169F262A9BDAA3C41778EF90744315541CC666996BDAA3C41597128FD43315541ECF6BC7FBDAA3C41FFB4CBF24331554177CF8965BDAA3C41CF89F7E84331554134FC0248BDAA3C410B16BFDF43315541D6036227BDAA3C419F5034D743315541F078E603BDAA3C410BDE67CF43315541CA7CD5DDBCAA3C4104F068C843315541D33979B5BCAA3C41DD2745C243315541DF9786A0BCAA3C41812A89BF4331554125315275BCAA3C41414A28BB43315541D13CC248BCAA3C41CFC2BBB7433155419AEA2C1BBCAA3C4155334AB5433155418C63EAECBBAA3C41CD55D8B343315541BD1F54BEBBAA3C416DF568B3433155412A39C48FBBAA3C41C0E9FCB343315541E8BD9461BBAA3C41851493B543315541CC001F34BBAA3C41386428B84331554153EEBA07BBAA3C41D6D9B7BB433155412461BEDCBAAA3C418E923AC0433155417D7C7CB3BAAA3C4111D5A7C543315541CE0B458CBAAA3C418122F5CB4331554107E86367BAAA3C419A4A16D343315541A4642045BAAA3C416E83FDDA433155419AC6BC25BAAA3C41F5839BE343315541D0C27509BAAA3C419BA1DFEC433155415C0A82F0B9AA3C419DF0B7F64331554126DF11DBB9AA3C419A66110144315541C9B74EC9B9AA3C4145FFD70B443155418EEE5ABBB9AA3C4161E3F61644315541A47F51B1B9AA3C41DB90582244315541A1D445ABB9AA3C418604E72D44315541659E43A9B9AA3C4190E48B3944315541D7BF4EABB9AA3C41BAAB304544315541F44463B1B9AA3C411DD5BE5044315541676B75BBB9AA3C415C07205C4431554100B971C9B9AA3C414D403E67443155411E213DDBB9AA3C4113FF0372443155415D39B5F0B9AA3C41156E5C7C44315541DE7BB009BAAA3C41288B3386443155412198FE25BAAA3C41104E768F4431554177CF6845BAAA3C41C3CD129844315541E45FB267BAAA3C417D62F89F443155410BF9988CBAAA3C417BC617A744315541BC9756ABBAAA3C415EDC82AF44315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1055, 10055, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000004A0000009FD44DCBB5AA3C41BEA9443E4431554164A9DCF2B5AA3C41D3C80043443155413102F01DB6AA3C417196AD4844315541BCDFD34AB6AA3C419896644D4431554126CC3079B6AA3C41B4991C51443155411073ACA8B6AA3C41F760CE53443155414251EAD8B6AA3C4165AC745544315541B0698C09B7AA3C4148450C56443155415AFB333AB7AA3C414F04945544315541D83A826AB7AA3C41AED30C5444315541140B199AB7AA3C4196AD795144315541FBB39BC8B7AA3C414896DF4D44315541B397AFF5B7AA3C415192454944315541BFE2FC20B8AA3C41C498B443443155417B372F4AB8AA3C41F781373D443155418252F670B8AA3C4134F2DA35443155418DA60695B8AA3C414141AD2D4431554141F019B6B8AA3C414A5EBE244431554194BEEFD3B8AA3C41CAB01F1B44315541CFF04DEEB8AA3C41F5F6E3104431554147270105B9AA3C41B7201F0644315541E427DD17B9AA3C415F29E6FA433155415334BD26B9AA3C4145EE4EEF4331554133518431B9AA3C418A0470E343315541EC7E1D38B9AA3C41FE8C60D743315541A4E27B3AB9AA3C41E20638CB4331554193DE9A38B9AA3C4178220EBF43315541101C7E32B9AA3C418E92FAB243315541DC833128B9AA3C417FDE14A743315541A526C919B9AA3C415034749B433155419B166107B9AA3C41623B2F904331554167301DF1B8AA3C419FE85B854331554136D528D7B8AA3C4170530F7B433155415596B6B9B8AA3C41AE8C5D714331554189D2FF98B8AA3C41AB7759684331554181464475B8AA3C413EA5146043315541AD90C94EB8AA3C41A9319F5843315541FCAFEF40B8AA3C41249D3F564331554102228A16B8AA3C416BC6985043315541B3605EEAB7AA3C41FCB7DE4B433155412AE3BEBCB7AA3C41FB441A48433155413FD6008EB7AA3C41E475524543315541517E7B5EB7AA3C41C47B8C43433155415D93872EB7AA3C4111A6CB4243315541689C7EFEB6AA3C41D45C1143433155410E47BACEB6AA3C41E81D5D44433155413DC1939FB6AA3C41F87DAC464331554149126371B6AA3C41DD2CFB494331554128767E44B6AA3C41ECFD424E4331554110BD3919B6AA3C414BF37B53433155411CAFE5EFB5AA3C41F24C9C59433155419D74CFC8B5AA3C41C19A986043315541D60640A4B5AA3C4117D263684331554196A77B82B5AA3C41FF65EF70433155415F61C163B5AA3C4144622B7A433155414A924A48B5AA3C417C8906844331554182804A30B5AA3C4108756E8E43315541F0FAED1BB5AA3C416EB74F9943315541DE045B0BB5AA3C41C80096A4433155412B90B0FEB4AA3C4177442CB043315541E34106F6B4AA3C4191E0FCBB43315541D2476CF1B4AA3C4141C6F1C7433155411F39EBF0B4AA3C410AA3F4D343315541E00684F4B4AA3C412F0AEFDF4331554198F92FFCB4AA3C41E09ECAEB433155411DBFE007B5AA3C41C53D71F743315541C9838017B5AA3C418426CD02443155413D1CF22AB5AA3C411624C90D44315541923B1142B5AA3C41A3B4501844315541F7B6B25CB5AA3C41A32F50224431554164D6A47AB5AA3C41AEEAB42B44315541B4B1AF9BB5AA3C412F5C6D3444315541589895BFB5AA3C414F3C693C443155419FD44DCBB5AA3C41BEA9443E44315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1056, 10056, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000015000000EB666F38E8AA3C4142A1D61F57315541EDFD3E54EDAA3C41132F4B3A50315541B06BFFE0DDAA3C41AB2A2E834F315541847913D5D8AA3C41334B465356315541E733C1ACDEAA3C41F1DA8498563155414B2C0073DCAA3C416BD8AF9959315541FD3F1C07D0AA3C419B4178065931554139FA0CFCD2AA3C418FAC9908553155414C4B72F8D3AA3C419F8AA15C503155417A2B9EB4CFAA3C413CDA3A4E503155411ED576B8CEAA3C41644C0DF9543155412FC48758CBAA3C4192491BB05931554117936954DDAA3C4192FF0D7E5A315541601DC7DCDDAA3C4189C087BF59315541BDAA5069E2AA3C4142CB9FF359315541A9522FFAE2AA3C4147C4372959315541D071C112E2AA3C41A87CDD1E5931554138096BBBE2AA3C413071373358315541CBCBED02E2AA3C41A9B5F62A58315541977F80EDE2AA3C419D363AE356315541EB666F38E8AA3C4142A1D61F57315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1057, 10057, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000006F765261D7AA3C41052D8911673155414ED1B25BD7AA3C418E019D5367315541FBCCF60EDBAA3C4149E6A658673155413432654FDBAA3C41A5BF956364315541D97CD81DD2AA3C4149EA105764315541C2BC09E3D1AA3C41593C0E0A673155416F765261D7AA3C41052D891167315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1058, 10058, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000003F0000005CEE27DAC6AA3C41BAC6212E6B3155410E56B5C8C6AA3C411E7F10256B315541807C2AB4C6AA3C414A5F691C6B3155418C67AF9CC6AA3C410C433D146B315541DDD67182C6AA3C4177169C0C6B3155415BEAA465C6AA3C41F1B694056B315541ACBE8046C6AA3C4141D634FF6A3155412B004225C6AA3C41B8DF88F96A31554143742902C6AA3C4151E09BF46A3155412B82C5F4C5AA3C41AABF18F36A315541E8142678C4AA3C41F65F0AF26A315541ED0D2158C4AA3C41CD2AE4F56A315541C68E8435C4AA3C4130E106FB6A315541CF1DD414C4AA3C416DA6E5006B315541786B4FF6C3AA3C41990A75076B31554163ED31DAC3AA3C41BA45A80E6B315541766AB2C0C3AA3C41A55071166B3155417E9002AAC3AA3C415000C11E6B315541E0924E96C3AA3C41402387276B315541DDD4BC85C3AA3C4152A1B2306B315541EA9E6D78C3AA3C41DB9C313A6B31554119DF7A6EC3AA3C418F95F1436B31554148F7F767C3AA3C41788CDF4D6B3155415C97F164C3AA3C410929E8576B315541F2A36D65C3AA3C41D4DEF7616B3155411C2B6B69C3AA3C418713FB6B6B3155411367E270C3AA3C413A45DE756B315541CCCBC47BC3AA3C415A308E7F6B3155418324FD89C3AA3C412FF5F7886B315541D1BC6F9BC3AA3C41D53C09926B3155415F96FAAFC3AA3C419F5CB09A6B31554128AB75C7C3AA3C41DD78DCA26B315541D73BB3E1C3AA3C4172A57DAA6B315541842880FEC3AA3C41F80485B16B3155413354A41DC4AA3C41B3E5E4B76B315541B412E33EC4AA3C4131DC90BD6B3155419C9EFB61C4AA3C4198DB7DC26B315541E896A986C4AA3C41194BA2C66B3155410A85A5ACC4AA3C41A118F6C96B315541D967A5D3C4AA3C4195C872CC6B3155417D435DFBC4AA3C417E8213CE6B315541C3B57F23C5AA3C41791AD5CE6B315541EE8CBE4BC5AA3C415E17B6CE6B315541BA5FCB73C5AA3C4189B5B6CD6B3155418826589BC5AA3C418CE6D8CB6B315541DBD217C2C5AA3C41684D20C96B3155415AE6BEE7C5AA3C412F3792C56B315541C704040CC6AA3C411C9135C16B3155411984A02EC6AA3C41B9DA12BC6B31554110F5504FC6AA3C41861534B66B31554167A7D56DC6AA3C415BB1A4AF6B3155417C25F389C6AA3C412F7671A86B31554169A872A3C6AA3C41446BA8A06B315541618222BAC6AA3C41A3BB58986B315541FF7FD6CDC6AA3C41B498928F6B315541023E68DEC6AA3C41A11A67866B315541F573B7EBC6AA3C410E1FE87C6B315541C633AAF5C6AA3C41652628736B315541971B2DFCC6AA3C41712F3A696B315541837B33FFC6AA3C41E092315F6B315541ED6EB7FEC6AA3C4115DD21556B315541F2D1C1FDC6AA3C415BAABB516B3155415CEE27DAC6AA3C41BAC6212E6B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1059, 10059, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000013000000E77B1D96B2AA3C41AD6256E56A315541B39EB5DCD7AA3C413AEED0FF6A315541A46B470AD8AA3C41D0543C6167315541235A3C23D3AA3C41A1C1605D673155418E5A1FFFD2AA3C41224BAE3B6A3155411D17FEA6BBAA3C41D8C34F296A315541B38982AFBBAA3C41C5E61F7C693155415DD86084B8AA3C41FCA1A17969315541819564A2B8AA3C413F9C55176731554102A2FD8EC0AA3C4152EE002067315541D3126D90C0AA3C4152171F76673155411B9DD255D0AA3C41B173EA7167315541EB62264CD0AA3C41DCD58C2D6531554177C4F882C1AA3C4108377E31653155419B3B3C94C1AA3C419F7403356431554140321D22B8AA3C415FFDAD2A64315541FBA6B81BB8AA3C41AF5F2C8864315541CF8570E6B2AA3C41323C138464315541E77B1D96B2AA3C41AD6256E56A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1060, 10060, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000B00000098990440AAAA3C41CFA65F8A72315541F3FF4F0BB7AA3C41126B2F126D3155416B4A70C2ADAA3C417865B0B66B315541070508F0A7AA3C417392D6336E3155417143846E99AA3C414B3AED146C3155413254284493AA3C4188D9ACB76E315541665A0FE8A2AA3C4125820A01713155417D51CCA49DAA3C4183D8FE40733155417A858937AFAA3C4189991ED175315541187D81A9B3AA3C415250A3EA7331554198990440AAAA3C41CFA65F8A72315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1061, 10061, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000700000003D1B41EC8AA3C41F330DF347031554147F0B7BCC2AA3C419D8EF8BE723155412E46136FCAAA3C41EF4700C473315541E2F75F2ED7AA3C41B9E775C06D31554196B886ACCEAA3C416631F19F6C3155419EE7364FC7AA3C41F23362197031554103D1B41EC8AA3C41F330DF3470315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1062, 10062, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000001A00000070F7E6DEBDAA3C410F91E4F41E3155411B5FDE0BC0AA3C411E48C30C1F31554185965442C0AA3C41D0E256BD1E315541732D9CABC6AA3C410D7BCE6315315541EB4DF3C2B6AA3C410D9643B514315541705B7CFCB2AA3C416D09B1361A3155415743A0539FAA3C41E960FF5E193155412625355A8EAA3C41F8EC10203231554195CD4502A6AA3C41049D9C23333155415961E19F9FAA3C4158BE19733C315541A4000F62B4AA3C41C4DED9563D3155412FE5D799B7AA3C41EB947FA5383155416678FDE8B9AA3C41D04DD5BE38315541652DECA4BCAA3C416F9BABD634315541F49A47E6BAAA3C411FFD27C734315541AA65E76EC0AA3C41F07ADF1C2D31554192FBA902D0AA3C41C6E7C6C72D31554172AF8248CFAA3C41953840D72E315541141946C2E2AA3C41D12AEDAC2F3155414FF344D0E3AA3C4139D72E232E31554106E7DF26DDAA3C41273918DA2D315541C3A23B26E1AA3C414A70B20528315541383701AAC4AA3C411B472CCD26315541C5F43147C3AA3C4149869AD228315541A73EF373B7AA3C419652DD502831554170F7E6DEBDAA3C410F91E4F41E315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1063, 10063, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000A5AFCEB66FAA3C41AC40FA76F6305541DD42509576AA3C4108A32893F6305541D59EC3F676AA3C418BEF1917F5305541950B421870AA3C412F8DEBFAF4305541A5AFCEB66FAA3C41AC40FA76F6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1064, 10064, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000F0000002F58AA2278AA3C41A966EC1EF83055410262228D77AA3C4190AAC128F93055412CC5037675AA3C410D97F115F930554180E6710875AA3C417E06BCD8F9305541A433C00176AA3C4134C77FE1F93055412D4616F374AA3C4123DFADC2FB3055410ECDA61A77AA3C41E1F311D6FB305541EC1E75EA76AA3C41399BBF2BFC305541B0C421217CAA3C410DADAB5AFC305541632EDA527CAA3C41EC624702FC3055410602DC407EAA3C415D73A513FC305541ABDAB87A7FAA3C41A50EABE5F93055416D681AAA7CAA3C41A17C55CCF93055418F967A807DAA3C41DBB8384FF83055412F58AA2278AA3C41A966EC1EF8305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1065, 10065, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000070000001D11876E98AA3C41F9C79396F330554102E055179BAA3C4133A6629DF33055410DCCD7259BAA3C41EBA2B642F3305541025873BC9BAA3C411E313844F3305541E2C16CD49BAA3C416C5B61AEF23055410767029598AA3C41FEEE10A6F23055411D11876E98AA3C41F9C79396F3305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1068, 10068, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000026CD2FC5A6AA3C4135F07BDCE8305541C1BF4497A1AA3C418EB3F627EA30554178CA00BCA5AA3C413CB62531EB305541DDD7EBE9AAAA3C41E3F2AAE5E930554126CD2FC5A6AA3C4135F07BDCE8305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1080, 10080, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000461CCACAC4AA3C416AFA0D907B315541E2312F3BC7AA3C41617DAF497C315541DDFE6AE8C9AA3C41A776A1B97B31554142E90578C7AA3C41B0F3FFFF7A315541461CCACAC4AA3C416AFA0D907B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1081, 10081, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000091B17D7B67AA3C4155905697E6305541B26160B96AAA3C41308AB9C1E6305541E3FB46486BAA3C41A9FCDB12E630554113EC600968AA3C416CC36BE8E530554191B17D7B67AA3C4155905697E6305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1082, 10082, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000B0000008954EFE300AB3C41EC0C09A64431554197F4332D00AB3C4199BB37CD45315541799387F004AB3C41C2DF64FC453155419139FA9A04AB3C41C7FC97864631554101DF42C709AB3C413DB4D4B94631554159FEEAE108AB3C41B3F94E2C483155410597B2C40EAB3C41EF449B66483155415ECE631D0FAB3C41B29E55D7473155411B808C8413AB3C4120DCF10248315541F4E67B1D15AB3C410F715B6E453155418954EFE300AB3C41EC0C09A644315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1083, 10083, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000001200000094FD129A0BAB3C411B303EE7443155414B7089E90EAB3C414E8BB1C73F3155415DE4A7FD11AB3C41410BD7D23A315541B57C455627AB3C41318DFAA63B315541F56663D22AAB3C4161E1B00A3631554151BCBDB303AB3C415D06EB8534315541F924940104AB3C412FF4990834315541E79E8DD1FAAA3C41CC744BAD333155416C48462DFAAA3C413095C7B5343155417DFEC635F7AA3C41B0AD4B983431554124E40EECF4AA3C4115434A47383155417C7B5FB9F8AA3C411718136D383155416BAFA6E1F5AA3C4181AFB0003D315541A5A5DB0CF2AA3C4145899DDA3C315541599EB1F9F0AA3C4122989F953E315541F1D7EB85F9AA3C41C7B720F33E3155415B23DA3BF6AA3C41E181540A4431554194FD129A0BAB3C411B303EE744315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1801, 18001, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000009000000A15070860CAB3C41AE0CF9E72C31554165D1602912AB3C41128213362C3155412584473E13AB3C413B2073C22C3155419A8A05FE1AAB3C415DF5E0CD2B3155416C7F0A3E16AB3C417DB17165293155412C1FB5CC0EAB3C418F2659502A31554170B5F6C30FAB3C41BD82B1CD2A3155417D8E9DD209AB3C4126C341892B315541A15070860CAB3C41AE0CF9E72C315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1802, 18002, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000008E5134C6FEAA3C41A4BE1CC5233155413B932E5303AB3C419C0CC45524315541A3EEF59410AB3C41E06A83A91D31554102ADFB070CAB3C41E61CDC181D3155418E5134C6FEAA3C41A4BE1CC523315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1803, 18003, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000002679B8AF03AB3C41E822D558243155411D387DE707AB3C418DADE2DE243155417571818B10AB3C418F434D85203155417AB2BC530CAB3C41E8B83FFF1F3155412679B8AF03AB3C41E822D55824315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1804, 18004, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '0103000020910800000100000005000000E98381D8F8AA3C41D5454CAF233155414D22583BFCAA3C41502FCC1E24315541FA7EB05905AB3C41A0968BB01F31554195E0D9F601AB3C4125AD0B411F315541E98381D8F8AA3C41D5454CAF23315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1805, 18005, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '010300002091080000010000000500000070C9E46B0DAB3C4137D4856322315541D0EAC83211AB3C41C79978D722315541F0A829AF13AB3C4131B0CC8B213155418F8745E80FAB3C41A1EAD9172131554170C9E46B0DAB3C4137D4856322315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1806, 18006, 5, 1001, 1, 104, 10002, '2018-02-02 09:00:00', NULL, '01030000209108000001000000050000003E34AD6B01AB3C41CB4ED2131F3155419411572906AB3C419A016DAD1F315541C6EDCAA00BAB3C418C8E56FA1C3155416C1021E306AB3C41BDDBBB601C3155413E34AD6B01AB3C41CB4ED2131F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000000, 1000000, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541', '2019-06-11 15:15:17.497342'); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000006, 1000002, 5, 1001, 1, 101, 10001, '2019-05-30 14:50:00.066082', NULL, '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000036, 1000030, 5, 1001, 1, 101, 10001, '2020-01-28 15:29:32', NULL, '01030000209108000001000000050000008AA13A5BACA93C414227A7D5AF3155418AA13A5BACA93C416B9C8E5CAC315541CF072FE2C0A93C41E1C0D369AC315541F7751AADC0A93C412E7031F0AF3155418AA13A5BACA93C414227A7D5AF315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000037, 1000031, 5, 1001, 1, 101, 10001, '2020-01-31 08:48:16.836979', NULL, '01030000209108000001000000050000002F02D344AFA93C4180AEA44DA8315541C1D7B600B0A93C41736D2300A5315541055058C897A93C41B17159EDA4315541F871083297A93C41A0B03F44A83155412F02D344AFA93C4180AEA44DA8315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1000041, 1000032, 5, 1001, 1, 107, 10001, '2020-01-31 08:48:16', NULL, '01030000209108000001000000050000005810FD2AA6A93C4180851028A03155415810FD2AA6A93C4164663F449C315541354DAAF98EA93C41266209579C3155412F5E82AE8EA93C414281DA3AA03155415810FD2AA6A93C4180851028A0315541', NULL); -- buildings.building_use diff --git a/db/tests/testdata/db/buildings_bulk_load.sql b/db/tests/testdata/db/buildings_bulk_load.sql index 0a958a10..ecf02cae 100644 --- a/db/tests/testdata/db/buildings_bulk_load.sql +++ b/db/tests/testdata/db/buildings_bulk_load.sql @@ -11,103 +11,103 @@ INSERT INTO buildings_bulk_load.supplied_datasets (supplied_dataset_id, descript -- buildings_bulk_load.bulk_load_outlines -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2001, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2002, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2003, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2004, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2005, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2006, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2007, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2008, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2009, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000D0000005A224B267DA83C41687E9882F63055419B4A3361D7A83C411C7F5B8AF630554138504B9FD7A83C4116D17205EF3055414167668ECDA83C417ED2F814EF3055414167668ECDA83C418608A06AF1305541543CE7A3C0A83C412C88BE66F1305541BC3D6DB3C0A83C41342A30DFF23055418D64F52196A83C41B22661B8F230554149DFBEE795A83C41565D05C9EC305541068BD2BB8CA83C416DBDFDC9EC3055419F894CAC8CA83C41E1CCE0D6EE305541EE1927C97CA83C41E1CCE0D6EE3055415A224B267DA83C41687E9882F6305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2010, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2011, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2012, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2013, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2014, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2015, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2016, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2017, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2018, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2019, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2020, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2021, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2022, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2023, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2024, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2025, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2026, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2027, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2028, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2029, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2030, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2031, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2032, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2033, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2034, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.910185', '010300002091080000010000000500000021318A090EA83C413B6659B51931554121318A090EA83C419A83A4A51431554143E87BC41DA83C41412D529C14315541A941C5E91DA83C4194BCABBE1931554121318A090EA83C413B6659B519315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2035, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.910185', '01030000209108000001000000050000009116537F40A83C415C2EAD301831554113C8A7D981A83C415C2EAD301831554113C8A7D981A83C41D69FD76D0F3155419116537F40A83C41D69FD76D0F3155419116537F40A83C415C2EAD3018315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2036, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:49:59.910185', '01030000209108000001000000070000005847509D0EA83C4166FFC8A30E315541F9664A5919A83C41C155948F0E315541F9664A5919A83C4135521F3F083155419F5C0E8034A83C4135521F3F083155419F5C0E8034A83C416FD0E416053155415847509D0EA83C416FD0E416053155415847509D0EA83C4166FFC8A30E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1000000, 3, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-05-30 14:50:00.416863', '010300002091080000010000000500000008247ADF76A93C41203492F8263155418BEE6ABAA9A93C414BD3F7EB263155414A4F05C7A9A93C41227DE4CA1C315541CD3F76A076A93C4106D73FE71C31554108247ADF76A93C41203492F826315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2061, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000080000004A2D2BB16BAA3C412358C27EEC3055412A7DF79372AA3C41228635C8EC305541409DC4FC6DAA3C41B260A13BED3055415DAE82766FAA3C41D143EC6BEE305541D6999D5F75AA3C4140CCF7FBED3055411FDDF1C377AA3C41E5BFA1D0EA305541FAEAE1546DAA3C419B69A352EA3055414A2D2BB16BAA3C412358C27EEC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2062, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000067062E4E5DAA3C4119C24EF2F1305541B8A8FB1264AA3C41BEC70F40F2305541B460C83865AA3C413435D7A6F030554162BEFA735EAA3C418F2F1659F030554167062E4E5DAA3C4119C24EF2F1305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2037, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000B0D020FCB3AA3C41F06BA23C3C3155416C702A79B5AA3C41A21446233A3155413663C9AAB5AA3C4183AA4BDD393155418B15DA4CB7AA3C4159CED2EF39315541872E4DBEB7AA3C417197D44F39315541327C3C1CB6AA3C419C734D3D39315541FA1A177FB6AA3C41F4A0E4B1383155418D0DBC5AB9AA3C414C7751D23831554152E15BDCBBAA3C41D3A1764935315541BFEEB600B9AA3C4170CB0929353155411785D9ECB9AA3C418BF706DC33315541E120294AA7AA3C41DB54990833315541C0B61B81A0AA3C41B8C9499A3C315541F61ACC23B3AA3C41736CB76D3D315541B0D020FCB3AA3C41F06BA23C3C315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2038, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000E4BD8B64A0AA3C41FEB735C6343155414E9274C0A4AA3C4152E19BF534315541CECE37F1A5AA3C4198252C353331554164FA4E95A1AA3C4143FCC50533315541E4BD8B64A0AA3C41FEB735C634315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2039, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000180000009A2929F0ABAA3C4199DFC077233155410556482CB2AA3C41D293EA531A315541BF4E24179FAA3C414922A483193155410C0808BE92AA3C41D9FCAC9D2B315541541FC47391AA3C417CD49DED3131554194441F17BAAA3C4151FDA0B93331554120B615C1BEAA3C4147CB207F2D315541E16D73D2A5AA3C417217026F2C315541CA754B2CA6AA3C4169294DEB2B315541999815B7DBAA3C415CB9AE332E315541240BFBABDFAA3C417161D366283155410471FD20C5AA3C41FA0B2045273155413669229CC3AA3C41FA292B7F29315541CF0261F4B4AA3C4194F436DF283155412CFA7DD2B5AA3C417E899B9927315541E4D7727AA9AA3C417584E112273155414FFC2099A9AA3C41B8B9E7E526315541A85B6E30B1AA3C41D0CAA23927315541B572AB7FB5AA3C41F3FF6AC726315541FC73B04DB8AA3C4102C307E626315541AF8EA960BAAA3C41EC49A6DB2331554164CC7E29B4AA3C4175A2CF9723315541D1063F03B4AA3C41B9E5E1CF233155419A2929F0ABAA3C4199DFC07723315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2040, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000F2E0E237AEAA3C41832CA04F23315541261A6F01BAAA3C413D81FBD923315541B19DDB4BBDAA3C41A475BC711F315541A42C1684B1AA3C41A60B00E51E315541F2E0E237AEAA3C41832CA04F23315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2041, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000002EF2FE89B1AA3C41A849B9E91E31554189FD6FB7BEAA3C41A09BC67E1F315541937CFEBDC5AA3C4107FF882516315541AAC35F97B8AA3C41E5F06787153155412EF2FE89B1AA3C41A849B9E91E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2042, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B00000021871454D8AA3C414473996B56315541A9015AB4DEAA3C418D7874BC56315541D1587FF2DDAA3C41A95B0BB157315541C4558E50E2AA3C4131966DE8573155415115111BE3AA3C41649EEAE856315541C6F7C5ABE7AA3C41EC1ECF22573155411680EB20EDAA3C410BC4004050315541AD23791AE1AA3C415BA182A74F31554132F20505E1AA3C41CBF892C24F3155417FF46EBCDDAA3C41375BEF984F31554121871454D8AA3C414473996B56315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2043, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000E830808FBEAA3C41DD853FE84D315541E9DF0557C4AA3C41DE5040264E31554159B06415C5AA3C41E738560A4D315541693F29FFC7AA3C41910F97294D315541977DECBDC8AA3C417E30170D4C315541BD1B0B35C6AA3C4154CAE5F14B3155412A7E6301CBAA3C41750BF8C944315541F2A1FAD8C4AA3C41E8CFE78744315541E830808FBEAA3C41DD853FE84D315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2044, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000006000000F3A609C9BFAA3C419D54EA8E453155417DCCC5ECC0AA3C4111ABDEB145315541C042A42FC3AA3C41AC73E9834431554171AAD605B6AA3C412A0A28F0423155410434F8C2B3AA3C418F411D1E44315541F3A609C9BFAA3C419D54EA8E45315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2045, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000D5287F2CB0AA3C4116B2C6644D315541A0225E8CB4AA3C418E97AA8F4C31554134B1E98E9FAA3C41C5EFDAAA4531554169B70A2F9BAA3C41430AF77F46315541D5287F2CB0AA3C4116B2C6644D315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2046, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000090000008F9F32DBBAAA3C41BC41931254315541CCCADDF6BEAA3C411EF30BA25331554185AA5ED5C3AA3C41C3FB247A5631554183891E15C7AA3C4183B32521563155414C07A10FB9AA3C411B7E7BF04D31554144390B40B4AA3C41DA1243744E3155413D098D90B5AA3C41B8E3D1384F315541E0CCB704B3AA3C41D6E5907E4F3155418F9F32DBBAAA3C41BC41931254315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2047, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000057D543BC8AA3C4132FBE3035D3155416FBFD78DC2AA3C410947770A5931554160E2551FADAA3C419683EE135831554170713B88AAAA3C416C823FAE5B315541057D543BC8AA3C4132FBE3035D315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2048, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000080000009B7A599BACAA3C414D3B08744C315541C57ABCD09AAA3C4108BE3198463155416ECD2D6794AA3C412D93E1CE4731554192B64CDDA4AA3C41C0E67F3E4D315541A0E63FB8A3AA3C4151516F5C4D315541B254CDDEAFAA3C4171C52A73543155416D288CE5B8AA3C4148891F87533155419B7A599BACAA3C414D3B08744C315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2049, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000005D74ECB8C6AA3C41B896683E6A3155415ABD1EBCC6AA3C410FB2D1E76A31554119643FE7CCAA3C4153FAF4E56A3155411C1B0DE4CCAA3C41F1DE8B3C6A3155415D74ECB8C6AA3C41B896683E6A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2050, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000001D00000014735211AEAA3C41C4E79218713155418CE6331FB0AA3C4108EF425C713155415696CF6AB1AA3C41647D3DBB70315541DE22EE5CAFAA3C4120768D7770315541A79B1FA1B6AA3C41B22149F06C315541833CB3D4ADAA3C41FBAA5ECE6B315541B33A8360A9AA3C418DBF04F86D3155415C20FF1BA8AA3C41D8C83FCE6D315541EDB0B243A7AA3C41805C47376E31554115CFF22B9FAA3C4137309E2C6D315541BDED19809FAA3C41BB58C1036D315541FAA534E499AA3C41F7DFEF4A6C31554177DAD8F293AA3C41AF72AC2D6F3155412314F8D9A2AA3C41279BBA187131554174C46BC0A1AA3C412B15739671315541E12B15A2A0AA3C416FD9E16F71315541A8B1F7869CAA3C41D1E59155733155419BC5CDECA4AA3C41DB015172743155414AE3A37EA6AA3C410E72AEBE73315541629AD0C9A8AA3C4198D36B0E7431554166D7418BAAAA3C410C35B32D733155415F70387BA8AA3C41AE8D23EA723155415164EF06A9AA3C4187A32DA2723155414095475FAAAA3C41795656D272315541F2088F13ABAA3C41DFBE12747231554119C91E4CADAA3C41282141BD72315541FB019343AEAA3C41DDB11845723155415BC1A132ACAA3C41EBC703017231554114735211AEAA3C41C4E7921871315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2051, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000048000000D73B928FDEAA3C415528FB6966315541F412C664DEAA3C41A00C3E6966315541AFADE139DEAA3C4148627069663155412A9D380FDEAA3C4128C7916A6631554144FF1DE5DDAA3C417D07A06C6631554108DCE3BBDDAA3C41E521976F663155414986DA93DDAA3C41834F717366315541F1FE4F6DDDAA3C41D80E277866315541005D8F48DDAA3C41C832AF7D663155416A3BE025DDAA3C413CF4FE8366315541D72D8605DDAA3C4135070A8B66315541F03BC0E7DCAA3C41ADB2C29266315541E367C8CCDCAA3C418FEB199B66315541533CD3B4DCAA3C41BB71FFA366315541FB660FA0DCAA3C41D4EF61AD66315541455CA58EDCAA3C41191D2FB766315541430AB780DCAA3C41D3E053C166315541E6945F76DCAA3C41C077BCCB66315541AD22B36FDCAA3C41569A54D666315541DAB3BE6CDCAA3C418FA407E1663155417B0A886DDCAA3C41E0BDC0EB66315541F89D0D72DCAA3C4102026BF6663155414C9F467ADCAA3C417BA9F10067315541EF082386DCAA3C414A32400B6731554166BF8B95DCAA3C41BA87421567315541B9BC62A8DCAA3C419029E51E673155417B4C83BEDCAA3C410C521528673155414A52C2D7DCAA3C41721AC130673155412E9EEEF3DCAA3C41D69DD738673155410D4CD112DDAA3C41501A494067315541932F2E34DDAA3C41530F0747673155414448C457DDAA3C412D5A044D67315541AB404E7DDDAA3C418D4F355267315541BEF582A4DDAA3C413BD28F5667315541A40416CDDDAA3C41BB660B5A673155415960B8F6DDAA3C411344A15C67315541B3EA1821DEAA3C41A1604C5E673155419613E54BDEAA3C41567C095F67315541DA78C976DEAA3C41AD26D75E673155415F8972A1DEAA3C41CEC1B55D6731554145278DCBDEAA3C417981A75B67315541824AC7F4DEAA3C411167B0586731554141A0D01CDFAA3C417339D6546731554199275B43DFAA3C411E7A2050673155418AC91B68DFAA3C412D56984A6731554120EBCA8ADFAA3C41BA94484467315541B3F824ABDFAA3C41C1813D3D673155419AEAEAC8DFAA3C4149D6843567315541A7BEE2E3DFAA3C41679D2D2D6731554137EAD7FBDFAA3C413B174824673155418FBF9B10E0AA3C412199E51A6731554144CA0522E0AA3C41DD6B181167315541471CF42FE0AA3C4123A8F30667315541A4914B3AE0AA3C4136118BFC66315541DD03F840E0AA3C41A0EEF2F166315541AF72EC43E0AA3C4167E43FE7663155410F1C2343E0AA3C4116CB86DC6631554192889D3EE0AA3C41F486DCD1663155413E876436E0AA3C417BDF55C7663155419B1D882AE0AA3C41AC5607BD6631554123671F1BE0AA3C413C0105B366315541D1694808E0AA3C41665F62A9663155410FDA27F2DFAA3C41EA3632A0663155413FD4E8D8DFAA3C41846E8697663155415C88BCBCDFAA3C411FEB6F8F663155417CDAD99DDFAA3C41A66EFE8766315541F7F67C7CDFAA3C41A37940816631554146DEE658DFAA3C41C92E437B66315541DFE55C33DFAA3C416939127666315541CC30280CDFAA3C41BBB6B771663155416A483FF5DEAA3C413D37A16F66315541D73B928FDEAA3C415528FB6966315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2052, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000069DC4036B2AA3C41CD2428BB75315541F1170EADB4AA3C41848EA90D763155414548DD87B6AA3C414D8DC62A75315541BD0C1011B4AA3C41A12345D87431554169DC4036B2AA3C41CD2428BB75315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2053, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B0000004392F68AC0AA3C41E031DB477331554197EC8EEAC4AA3C41A8BFC5D97331554120C4DFC6C2AA3C4182A36AE0743155410551B5D8C6AA3C41E6BF326875315541913D4AADD6AA3C415C50C4D06D3155415C64AF6CCEAA3C41EFA46EBD6C31554150196253C7AA3C41F12AED24703155414413AC5AC8AA3C4176A13D477031554110B50AC7C2AA3C4189CFDDF37231554117ADED8EC1AA3C41465A30CB723155414392F68AC0AA3C41E031DB4773315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2054, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000A7DA3CB2C0AA3C417DBD8E666731554157F4A090D0AA3C41CDA34D7667315541EB360BB6D0AA3C419431FC1A653155410BEF729AC9AA3C4148B4EE13653155410E03C8A0C9AA3C41A0D2D2AD643155411E356885C7AA3C4136A1BBAB643155418CDB687FC7AA3C41B426710C65315541ACD7FCD7C0AA3C411AEFD60565315541A7DA3CB2C0AA3C417DBD8E6667315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2055, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000001400000000E3F8BAD7AA3C4132EEA1FC6831554100E3F8BAD7AA3C414AFD6739683155419744AC98D8AA3C414AFD6739683155419744AC98D8AA3C419EE2C0C76731554152CD51E5D7AA3C419EE2C0C76731554152CD51E5D7AA3C411077F3906731554103541F5CDBAA3C411077F39067315541C44D9972DBAA3C4116BFCC4A6431554158B0A620D1AA3C414CCB824664315541B4F9EA06D1AA3C417C5C3E2165315541DDF6F375D7AA3C4168A7AE2465315541F3C3AD81D7AA3C410496D86B67315541601E95D1D3AA3C410496D86B67315541601E95D1D3AA3C4132EEA1FC68315541B7A8A205D3AA3C4145CD80FF68315541B7A8A205D3AA3C41910851AE693155414039E195D1AA3C41910851AE693155414039E195D1AA3C41F846DFF76A31554100E3F8BAD7AA3C41F846DFF76A31554100E3F8BAD7AA3C4132EEA1FC68315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2056, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B000000C8A30A59C2AA3C41A2AB1BE66A315541C8A30A59C2AA3C41A81A3F2B6A315541E4A70E48BBAA3C41A81A3F2B6A315541E4A70E48BBAA3C416FB95D8269315541A027D0BAB5AA3C416FB95D8269315541A027D0BAB5AA3C41778905346A31554163292F4AB6AA3C41778905346A31554163292F4AB6AA3C41013408776A315541473A6630B8AA3C41013408776A315541473A6630B8AA3C4149758FE26A315541C8A30A59C2AA3C41A2AB1BE66A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2057, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000E5ABB0916BAA3C41F4D64743F9305541D01AC7DC76AA3C417FF3BFC6F9305541D919DC1378AA3C419454C868F8305541711076E16CAA3C41D6C589C9F7305541E5ABB0916BAA3C41F4D64743F9305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2058, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000070000003CF406C666AA3C410F6E24DEE83055414D3BDF6D6CAA3C413314F41FE9305541A9289CA56CAA3C41D44D50D3E830554150256FC676AA3C414F592B49E9305541C44E5A8678AA3C414D0048E1E63055410E0BAFBD68AA3C41AE4E9D29E63055413CF406C666AA3C410F6E24DEE8305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2059, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000002A0000005A9F961958AA3C41192CFEDBE6305541E8AC19A060AA3C4185DBEB44E73055410E6613DB60AA3C413AD140F8E63055419DA810F660AA3C412BC735F4E6305541B9513B1061AA3C41608ED7EFE6305541D95E832961AA3C4108D328EBE63055411858D94161AA3C4192722CE6E6305541B0592E5961AA3C41F079E5E0E6305541131D746F61AA3C41B82357DBE6305541A9019D8461AA3C412AD684D5E630554126159C9861AA3C411B2172CFE6305541761B65AB61AA3C41C8BB22C9E63055413796ECBC61AA3C4191829AC2E6305541C7CB27CD61AA3C419A74DDBBE6305541CCCD0CDC61AA3C415AB1EFB4E6305541507F92E961AA3C411576D5ADE63055414D9AB0F561AA3C41451B93A6E6305541C1B45F0062AA3C41F1112D9FE63055413845990962AA3C41F3E0A797E6305541C7A6571162AA3C4137220890E6305541871C961762AA3C41E77F5288E630554174D4501C62AA3C4191B18B80E6305541C9E9841F62AA3C414779B878E6305541C266302162AA3C41B1A0DD70E6305541D245522162AA3C4122F6FF68E63055413F72EA1F62AA3C41A7492461E630554131C8F91C62AA3C41166A4F59E63055412B14821862AA3C411B228651E6305541F311861262AA3C414935CD49E6305541E36A090B62AA3C41325D2942E6305541ACB3100262AA3C4183469F3AE63055418969A1F761AA3C41278E3333E6305541E6EEC1EB61AA3C4172BEEA2BE6305541728779DE61AA3C415E4CC924E6305541B353D0CF61AA3C41D094D31DE6305541094CCFBF61AA3C41E8D90D17E6305541333B80AE61AA3C416E407C10E630554151B8ED9B61AA3C4141CD220AE6305541976AD04362AA3C41D7EFC157E530554177B0549359AA3C41906B52F9E43055415457633F59AA3C411DA2A4FFE53055415A9F961958AA3C41192CFEDBE6305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2060, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000006000000B4D7745064AA3C4154E533F4E9305541BA1FA82A63AA3C41DF776C8DEB3055415E4DF81967AA3C4128CE68A2EB3055413DBB2B3A6BAA3C41EB531ED9EB3055418EDF0D596CAA3C419C69A352EA305541B4D7745064AA3C4154E533F4E9305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2063, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000800000032EEF9ED69AA3C41C8AD78DFF33055419DA28B2072AA3C41C8AD78DFF33055411914202575AA3C4140621A34F43055419068E70E75AA3C41A186CCFFF430554150780CB179AA3C413FE3E207F5305541A6A0510D7AAA3C41339C13BAF13055410CF1EE2C6AAA3C41F7685D9EF130554132EEF9ED69AA3C41C8AD78DFF3305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2064, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000089D900816FAA3C412664B9B8F6305541E208A7D177AA3C41DF5D7DD5F63055410662982578AA3C419D214151F5305541AC32F2D46FAA3C41E4277D34F530554189D900816FAA3C412664B9B8F6305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2065, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B81383CD8CAA3C416DA4D8C3E630554170DE367C85AA3C419DFECD87E63055415F22441085AA3C4130BA4D5AE7305541A05790618CAA3C41FF5F5896E7305541B81383CD8CAA3C416DA4D8C3E6305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2066, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000ED892AA580AA3C411CF24FDAEA3055412EDD31EE7FAA3C41B82AEAD2EB30554146141D1189AA3C415746813EEC305541FEC015C889AA3C41BA0DE745EB305541ED892AA580AA3C411CF24FDAEA305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2067, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000140000004D1841B68DAA3C412D4F8EBEEA3055411A557EDA9FAA3C41B4A4179DEB3055416AEC91DBA0AA3C416A72C64DEA305541CFEDA16DA4AA3C4149DD1694EB305541DE11BA07ABAA3C4184F2C66CEA305541CB667A6AA6AA3C413C1057CFE8305541A53B0897A5AA3C41DC2919F5E830554116D58ADFA4AA3C41AB79E0B4E83055418D13BAA3A1AA3C411977B348E9305541C34B4610A2AA3C41C1F31DBBE8305541688C4F6499AA3C41EF64BE50E83055418C988F8D99AA3C41D169F01AE83055410EE5414597AA3C41F2F4F0FEE7305541D345971F97AA3C41A2481230E83055410A739BF094AA3C41CC6A4915E83055418EB1151195AA3C419DBEECEAE73055414C5FE9FA91AA3C4145F40FC5E7305541945560CE91AA3C4101DE26FFE7305541F4B48FE38FAA3C417B34A2E7E73055414D1841B68DAA3C412D4F8EBEEA305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2068, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000CCC64C9398AA3C417836DC4BE4305541F0C044B197AA3C419CF35811E73055415D86AB55A5AA3C4156EDE256E7305541C8EB1C3BA6AA3C4145C4B086E4305541B350E395A1AA3C4157E0026FE4305541BB325DAFA1AA3C4117690B1FE43055415FE079739FAA3C41D44CA813E4305541C99E96569FAA3C410230556EE4305541CCC64C9398AA3C417836DC4BE4305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2069, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B000000299021D7CDAA3C410391E34DED305541810273C9CDAA3C4185D9D58AED305541C72FD3DDC5AA3C4146F4626EED305541ED0DA679C5AA3C41825CA02CEF305541CE9CAA9FCCAA3C418E7C4D46EF305541D3D0B878CCAA3C414266C8F3EF3055410C80D3B6CFAA3C4191FF6DFFEF305541DE7C6E9ECFAA3C41A5B0186CF030554106215E05DEAA3C410390D39FF0305541AC9F90B6DEAA3C417F447E8AED305541299021D7CDAA3C410391E34DED305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2070, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B451778D6AAA3C4139DE4BB8FA3055412212801A6AAA3C411A6AE76AFB30554164E604B16FAA3C414F1D74A4FB305541F125FC2370AA3C416E91D8F1FA305541B451778D6AAA3C4139DE4BB8FA305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2071, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000D0000005162D19AAAAA3C41B613FEBDFD305541067E8508BFAA3C4162E4A7D2FC305541AA59B77FBDAA3C4159CE17B1FA305541C0374A0FB8AA3C41978EC0EFFA3055416EA04EEAB7AA3C41FD1F63BCFA305541D40AFDBFB2AA3C417B3CE4F7FA3055410B35E1EAB2AA3C4113777633FB305541E093CAD6B0AA3C419B1F684BFB305541891DD6A8B0AA3C41AE97940BFB305541AD830FE4ADAA3C4185B0792BFB3055411558AA1CAEAA3C418BD7177AFB305541F52E9222A9AA3C41C0686DB3FB3055415162D19AAAAA3C41B613FEBDFD305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2072, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000416383ACCEAA3C41880A8770FD305541F829D13CD0AA3C41D5D80882FB30554126D7B407C4AA3C413639EBE3FA30554178106777C2AA3C41EA6A69D2FC305541416383ACCEAA3C41880A8770FD305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2073, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000B6BC47B79EAA3C41B3C92DC6F23055419C42F163A3AA3C41ABB9D600F330554177AA1FD8A2AA3C41E38E1BB3F3305541E6893995A7AA3C4185C992EEF3305541BFA65B2FA7AA3C41FB177470F43055410EC7C996AFAA3C41E06EEAD9F4305541090D0FFCAFAA3C4199B5CB58F4305541C88C1D37B1AA3C417B5C3D68F430554127CABC59B2AA3C419E54B2F5F230554147489C29B8AA3C419FADA13EF3305541A56A46A7B9AA3C41645B0258F130554131D61C47B1AA3C418238E7EEF0305541974053DBB0AA3C417C0A5578F13055418B515D5FA0AA3C41F1AB78A9F0305541B6BC47B79EAA3C41B3C92DC6F2305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2074, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000090000004F7A0712BAAA3C41D8CC3225F63055417E3715B1BEAA3C411F913767F6305541A3843D47BEAA3C41D9BFC2DDF630554113AF652BC2AA3C41EE8F5915F7305541A84798E6C3AA3C4154EFF724F5305541300A77C3BFAA3C412F82DDE9F43055419D4FAC1AC0AA3C4175343188F430554161A597BABBAA3C413E0DB049F43055414F7A0712BAAA3C41D8CC3225F6305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2075, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000277514B698AA3C41AD4E4E92F2305541F2A0DBC497AA3C41CD85CDB9F3305541E3F54DB09AAA3C413117F0DFF330554111CA86A19BAA3C4113E070B8F2305541277514B698AA3C41AD4E4E92F2305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2076, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B21A488F84AA3C41FEA57A5CE8305541F8139C598AAA3C41686DB5A1E8305541255D09E48AAA3C41260076E8E7305541EC63B51985AA3C41BA383BA3E7305541B21A488F84AA3C41FEA57A5CE8305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2077, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000007AB499FB7EAA3C4153EDCF85E53055410C82166E7EAA3C411C47BC6DE6305541B840FA6982AA3C41962AA194E630554126737DF782AA3C41CDD0B4ACE53055417AB499FB7EAA3C4153EDCF85E5305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2078, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000130000007A3E502BB0AA3C414EF5308CEC3055412E6FA1F5A9AA3C412A716242EC30554118A075DFA8AA3C41107ED8B8ED305541FE239D9BB3AA3C411A457038EE305541AC93FED6B3AA3C4155CC80E8ED3055417FAE5269B5AA3C419CC22EFBED30554103FBD3C2B3AA3C41EE02ED33F03055418CF17DF7BAAA3C41E5289289F03055415E63BB19BCAA3C410CFCDC02EF305541650AB359BDAA3C418B06B811EF305541C21FCF5DBEAA3C41933892B3ED3055419E6CA83DBDAA3C41AA5631A6ED30554179458EA0BDAA3C410E9F0F21ED30554181CCD49BB9AA3C41EB7E4CF1EC3055415F45ADDFB9AA3C412FDCF795EC30554149C33259B7AA3C413400F477EC3055417C26BB1CB8AA3C41FC66BC70EB305541AF67A73AB1AA3C4161DBEC1EEB3055417A3E502BB0AA3C414EF5308CEC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2079, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000BE6EBAE084AA3C4134544689E8305541D22D756584AA3C418D352E42E930554171B1C2BD89AA3C416070317BE930554154F207398AAA3C41058F49C2E8305541BE6EBAE084AA3C4134544689E8305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2080, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000009E0256B698AA3C41731E686C0D3155419E0256B698AA3C416C06D6780631554122599123B2AA3C416C06D6780631554122599123B2AA3C410082DB4F0D3155419E0256B698AA3C41731E686C0D315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2081, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000001234C7B9C4AA3C41D7BF4FBC113155411234C7B9C4AA3C41B8A7DAC6083155419035F7D7E4AA3C41B8A7DAC6083155419035F7D7E4AA3C41D7BF4FBC113155411234C7B9C4AA3C41D7BF4FBC11315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2082, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000AEBFFF0769AA3C41B34A1E6A1031554186B0EAAD75AA3C41E72AD21A0F315541B62F1BEB7AAA3C41B16E57F10B31554186B0EAAD75AA3C417BB2DCC708315541AEBFFF0769AA3C41AF92907807315541D6CE14625CAA3C417BB2DCC708315541A64FE42457AA3C41B16E57F10B315541D6CE14625CAA3C41E72AD21A0F315541AEBFFF0769AA3C41B34A1E6A10315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2083, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000008000000563924FAC5AA3C418482C8B47B315541F27F9F02C5AA3C41EDB780FB7B315541F504FA80C7AA3C41088524877C31554162631FD1C9AA3C417F45F5DD7B31554104EF8BE9C5AA3C41D45D8D207B3155413E46E0C6B1AA3C41FD79F7637A315541255CDE77B1AA3C418714F0EA7A315541563924FAC5AA3C418482C8B47B315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2084, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000027683A58AFAA3C41D9360E0D75315541BAB9883AB1AA3C41BFE8935675315541589B5972B2AA3C4134B5BBD674315541025B159AB0AA3C419DCABD8E7431554127683A58AFAA3C41D9360E0D75315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2085, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000EA6AF74BFFAA3C412D7A2AA145315541161BDFDC04AB3C4150AE11CC45315541827BD6B504AB3C41E46D501B463155414912B7E309AB3C4165CE214446315541B3F69C1509AB3C4159FB8DE647315541BCE2B42F0EAB3C41AF70C30E483155417DE7227B0EAB3C41EFC5A0754731554173EA721B14AB3C41B606F8A147315541647B9B8F15AB3C417B4A6CAE44315541FA6E5BE908AB3C41E44DBB4A4431554183A0B1C308AB3C4175D53197443155419DBFBE4705AB3C41FF4ABC7B443155412BCFD85A05AB3C416CA0F454443155414530530400AB3C41CAECE22A44315541EA6AF74BFFAA3C412D7A2AA145315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2086, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000007247DF41F8AA3C41F98D2A62433155414BCF8F0A0CAB3C417580534844315541F435078E0FAB3C4115C8ED673F3155411D02E1C3FBAA3C410B77CB833E3155417247DF41F8AA3C41F98D2A6243315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2087, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000700000009EF471603AB3C41AC40560F34315541B587C6A9FBAA3C41852CA7483E31554117566A350FAB3C41CF58172C3F315541E1CB9BE612AB3C41053725473A315541F7CC519A26AB3C4165AB672C3B3155416CFC67792AAB3C41F229A9D93531554109EF471603AB3C41AC40560F34315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2088, 4, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000E000000B587C6A9FBAA3C41852CA7483E31554109EF471603AB3C41AC40560F343155417341A06403AB3C415BCF9CA333315541C4B59BBBF8AA3C4191F7902733315541DAA75155F5AA3C41DACA36D437315541504C12BDF8AA3C4152D2D6FB3731554172497B78F7AA3C414C7626BA39315541706A2566F5AA3C4141490BA239315541ECC17CA6F4AA3C41F53093A93A31554184FE76CCF6AA3C41E4ED92C23A3155412229DC70F5AA3C4151D387A03C31554126B57256F2AA3C4169C26B7C3C31554183D3D65EF1AA3C41AF18E2D03D315541B587C6A9FBAA3C41852CA7483E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2089, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000866F9D8514AB3C41E3B9B31B2D3155410341A3BB1BAB3C412DB867582C3155410D41818016AB3C4165A3474129315541F9797B4A0FAB3C41B0A793042A315541866F9D8514AB3C41E3B9B31B2D315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2090, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '010300002091080000010000000500000071E344A00CAB3C412C3FEBAC2C315541032E95E311AB3C41BEF338292C3155418E1506BD0FAB3C41E08831C92A31554123CEB5790AAB3C412AD5E34C2B31554171E344A00CAB3C412C3FEBAC2C315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2091, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000080A2F4B0AAB3C4101CD3FDA2A315541CD8FF8050FAB3C41468240792A3155413E4E32EC0DAB3C41EFA06B9D29315541E3C9683109AB3C412DEC6AFE29315541080A2F4B0AAB3C4101CD3FDA2A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2092, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000FCBDBF2900AB3C410FF3252C1F3155410555BE0105AB3C41210DB1C31F31554140A5DF3B0AAB3C416A535E171D3155410807E16305AB3C41B23AD37F1C315541FCBDBF2900AB3C410FF3252C1F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2093, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '01030000209108000001000000060000000555BE0105AB3C41210DB1C31F315541FCBDBF2900AB3C410FF3252C1F3155417B26FB78F7AA3C410962E69D233155418EB1F950FCAA3C41517E713524315541B3380D66FDAA3C4157F2BEA7233155410555BE0105AB3C41210DB1C31F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2094, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '010300002091080000010000000700000095425EC402AB3C419988B44F243155415910BF8F0BAB3C412D5658D01F315541AAC2309A0FAB3C4109E653BF1D31554140A5DF3B0AAB3C416A535E171D3155410555BE0105AB3C41210DB1C31F315541B3380D66FDAA3C4157F2BEA72331554195425EC402AB3C419988B44F24315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2095, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000E9CCD47619AB3C414272E374203155413F928CEB28AB3C412B6FE86419315541092C4C501DAB3C41C85F80CE173155415E9994DB0DAB3C41215B7BDE1E315541E9CCD47619AB3C414272E37420315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2096, 6, NULL, 1, 5, 1001, 104, 1004, 10002, '2019-05-30 14:50:01.504054', '01030000209108000001000000090000005910BF8F0BAB3C412D5658D01F31554195425EC402AB3C419988B44F24315541EFD8D78907AB3C41763DFCE424315541A4D8A7890CAB3C41377A7C5622315541A2B646C610AB3C41037B0ADB2231554186078DEC12AB3C412F11A1C1213155412FBC426A0FAB3C41F1B1D853213155411C488D0F11AB3C41D5A9657C203155415910BF8F0BAB3C412D5658D01F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2001, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2002, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2003, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2004, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2005, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2006, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2007, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2008, 1, NULL, 1, 5, 1001, 103, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2009, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000D0000005A224B267DA83C41687E9882F63055419B4A3361D7A83C411C7F5B8AF630554138504B9FD7A83C4116D17205EF3055414167668ECDA83C417ED2F814EF3055414167668ECDA83C418608A06AF1305541543CE7A3C0A83C412C88BE66F1305541BC3D6DB3C0A83C41342A30DFF23055418D64F52196A83C41B22661B8F230554149DFBEE795A83C41565D05C9EC305541068BD2BB8CA83C416DBDFDC9EC3055419F894CAC8CA83C41E1CCE0D6EE305541EE1927C97CA83C41E1CCE0D6EE3055415A224B267DA83C41687E9882F6305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2010, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2011, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2012, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2013, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2014, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2015, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2016, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2017, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2018, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2019, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2020, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2021, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2022, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2023, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2024, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2025, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2026, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2027, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2028, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2029, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2030, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2031, 1, NULL, 1, 5, 1001, 102, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2032, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2033, 1, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.906113', '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2034, 2, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.910185', '010300002091080000010000000500000021318A090EA83C413B6659B51931554121318A090EA83C419A83A4A51431554143E87BC41DA83C41412D529C14315541A941C5E91DA83C4194BCABBE1931554121318A090EA83C413B6659B519315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2035, 2, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.910185', '01030000209108000001000000050000009116537F40A83C415C2EAD301831554113C8A7D981A83C415C2EAD301831554113C8A7D981A83C41D69FD76D0F3155419116537F40A83C41D69FD76D0F3155419116537F40A83C415C2EAD3018315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2036, 2, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:49:59.910185', '01030000209108000001000000070000005847509D0EA83C4166FFC8A30E315541F9664A5919A83C41C155948F0E315541F9664A5919A83C4135521F3F083155419F5C0E8034A83C4135521F3F083155419F5C0E8034A83C416FD0E416053155415847509D0EA83C416FD0E416053155415847509D0EA83C4166FFC8A30E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1000000, 3, NULL, 1, 5, 1001, 101, 10001, '2019-05-30 14:50:00.416863', '010300002091080000010000000500000008247ADF76A93C41203492F8263155418BEE6ABAA9A93C414BD3F7EB263155414A4F05C7A9A93C41227DE4CA1C315541CD3F76A076A93C4106D73FE71C31554108247ADF76A93C41203492F826315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2061, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000080000004A2D2BB16BAA3C412358C27EEC3055412A7DF79372AA3C41228635C8EC305541409DC4FC6DAA3C41B260A13BED3055415DAE82766FAA3C41D143EC6BEE305541D6999D5F75AA3C4140CCF7FBED3055411FDDF1C377AA3C41E5BFA1D0EA305541FAEAE1546DAA3C419B69A352EA3055414A2D2BB16BAA3C412358C27EEC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2062, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000067062E4E5DAA3C4119C24EF2F1305541B8A8FB1264AA3C41BEC70F40F2305541B460C83865AA3C413435D7A6F030554162BEFA735EAA3C418F2F1659F030554167062E4E5DAA3C4119C24EF2F1305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2037, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000B0D020FCB3AA3C41F06BA23C3C3155416C702A79B5AA3C41A21446233A3155413663C9AAB5AA3C4183AA4BDD393155418B15DA4CB7AA3C4159CED2EF39315541872E4DBEB7AA3C417197D44F39315541327C3C1CB6AA3C419C734D3D39315541FA1A177FB6AA3C41F4A0E4B1383155418D0DBC5AB9AA3C414C7751D23831554152E15BDCBBAA3C41D3A1764935315541BFEEB600B9AA3C4170CB0929353155411785D9ECB9AA3C418BF706DC33315541E120294AA7AA3C41DB54990833315541C0B61B81A0AA3C41B8C9499A3C315541F61ACC23B3AA3C41736CB76D3D315541B0D020FCB3AA3C41F06BA23C3C315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2038, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000E4BD8B64A0AA3C41FEB735C6343155414E9274C0A4AA3C4152E19BF534315541CECE37F1A5AA3C4198252C353331554164FA4E95A1AA3C4143FCC50533315541E4BD8B64A0AA3C41FEB735C634315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2039, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000180000009A2929F0ABAA3C4199DFC077233155410556482CB2AA3C41D293EA531A315541BF4E24179FAA3C414922A483193155410C0808BE92AA3C41D9FCAC9D2B315541541FC47391AA3C417CD49DED3131554194441F17BAAA3C4151FDA0B93331554120B615C1BEAA3C4147CB207F2D315541E16D73D2A5AA3C417217026F2C315541CA754B2CA6AA3C4169294DEB2B315541999815B7DBAA3C415CB9AE332E315541240BFBABDFAA3C417161D366283155410471FD20C5AA3C41FA0B2045273155413669229CC3AA3C41FA292B7F29315541CF0261F4B4AA3C4194F436DF283155412CFA7DD2B5AA3C417E899B9927315541E4D7727AA9AA3C417584E112273155414FFC2099A9AA3C41B8B9E7E526315541A85B6E30B1AA3C41D0CAA23927315541B572AB7FB5AA3C41F3FF6AC726315541FC73B04DB8AA3C4102C307E626315541AF8EA960BAAA3C41EC49A6DB2331554164CC7E29B4AA3C4175A2CF9723315541D1063F03B4AA3C41B9E5E1CF233155419A2929F0ABAA3C4199DFC07723315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2040, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000F2E0E237AEAA3C41832CA04F23315541261A6F01BAAA3C413D81FBD923315541B19DDB4BBDAA3C41A475BC711F315541A42C1684B1AA3C41A60B00E51E315541F2E0E237AEAA3C41832CA04F23315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2041, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000002EF2FE89B1AA3C41A849B9E91E31554189FD6FB7BEAA3C41A09BC67E1F315541937CFEBDC5AA3C4107FF882516315541AAC35F97B8AA3C41E5F06787153155412EF2FE89B1AA3C41A849B9E91E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2042, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B00000021871454D8AA3C414473996B56315541A9015AB4DEAA3C418D7874BC56315541D1587FF2DDAA3C41A95B0BB157315541C4558E50E2AA3C4131966DE8573155415115111BE3AA3C41649EEAE856315541C6F7C5ABE7AA3C41EC1ECF22573155411680EB20EDAA3C410BC4004050315541AD23791AE1AA3C415BA182A74F31554132F20505E1AA3C41CBF892C24F3155417FF46EBCDDAA3C41375BEF984F31554121871454D8AA3C414473996B56315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2043, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000E830808FBEAA3C41DD853FE84D315541E9DF0557C4AA3C41DE5040264E31554159B06415C5AA3C41E738560A4D315541693F29FFC7AA3C41910F97294D315541977DECBDC8AA3C417E30170D4C315541BD1B0B35C6AA3C4154CAE5F14B3155412A7E6301CBAA3C41750BF8C944315541F2A1FAD8C4AA3C41E8CFE78744315541E830808FBEAA3C41DD853FE84D315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2044, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000006000000F3A609C9BFAA3C419D54EA8E453155417DCCC5ECC0AA3C4111ABDEB145315541C042A42FC3AA3C41AC73E9834431554171AAD605B6AA3C412A0A28F0423155410434F8C2B3AA3C418F411D1E44315541F3A609C9BFAA3C419D54EA8E45315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2045, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000D5287F2CB0AA3C4116B2C6644D315541A0225E8CB4AA3C418E97AA8F4C31554134B1E98E9FAA3C41C5EFDAAA4531554169B70A2F9BAA3C41430AF77F46315541D5287F2CB0AA3C4116B2C6644D315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2046, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000090000008F9F32DBBAAA3C41BC41931254315541CCCADDF6BEAA3C411EF30BA25331554185AA5ED5C3AA3C41C3FB247A5631554183891E15C7AA3C4183B32521563155414C07A10FB9AA3C411B7E7BF04D31554144390B40B4AA3C41DA1243744E3155413D098D90B5AA3C41B8E3D1384F315541E0CCB704B3AA3C41D6E5907E4F3155418F9F32DBBAAA3C41BC41931254315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2047, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000057D543BC8AA3C4132FBE3035D3155416FBFD78DC2AA3C410947770A5931554160E2551FADAA3C419683EE135831554170713B88AAAA3C416C823FAE5B315541057D543BC8AA3C4132FBE3035D315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2048, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000080000009B7A599BACAA3C414D3B08744C315541C57ABCD09AAA3C4108BE3198463155416ECD2D6794AA3C412D93E1CE4731554192B64CDDA4AA3C41C0E67F3E4D315541A0E63FB8A3AA3C4151516F5C4D315541B254CDDEAFAA3C4171C52A73543155416D288CE5B8AA3C4148891F87533155419B7A599BACAA3C414D3B08744C315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2049, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000005D74ECB8C6AA3C41B896683E6A3155415ABD1EBCC6AA3C410FB2D1E76A31554119643FE7CCAA3C4153FAF4E56A3155411C1B0DE4CCAA3C41F1DE8B3C6A3155415D74ECB8C6AA3C41B896683E6A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2050, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000001D00000014735211AEAA3C41C4E79218713155418CE6331FB0AA3C4108EF425C713155415696CF6AB1AA3C41647D3DBB70315541DE22EE5CAFAA3C4120768D7770315541A79B1FA1B6AA3C41B22149F06C315541833CB3D4ADAA3C41FBAA5ECE6B315541B33A8360A9AA3C418DBF04F86D3155415C20FF1BA8AA3C41D8C83FCE6D315541EDB0B243A7AA3C41805C47376E31554115CFF22B9FAA3C4137309E2C6D315541BDED19809FAA3C41BB58C1036D315541FAA534E499AA3C41F7DFEF4A6C31554177DAD8F293AA3C41AF72AC2D6F3155412314F8D9A2AA3C41279BBA187131554174C46BC0A1AA3C412B15739671315541E12B15A2A0AA3C416FD9E16F71315541A8B1F7869CAA3C41D1E59155733155419BC5CDECA4AA3C41DB015172743155414AE3A37EA6AA3C410E72AEBE73315541629AD0C9A8AA3C4198D36B0E7431554166D7418BAAAA3C410C35B32D733155415F70387BA8AA3C41AE8D23EA723155415164EF06A9AA3C4187A32DA2723155414095475FAAAA3C41795656D272315541F2088F13ABAA3C41DFBE12747231554119C91E4CADAA3C41282141BD72315541FB019343AEAA3C41DDB11845723155415BC1A132ACAA3C41EBC703017231554114735211AEAA3C41C4E7921871315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2051, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000048000000D73B928FDEAA3C415528FB6966315541F412C664DEAA3C41A00C3E6966315541AFADE139DEAA3C4148627069663155412A9D380FDEAA3C4128C7916A6631554144FF1DE5DDAA3C417D07A06C6631554108DCE3BBDDAA3C41E521976F663155414986DA93DDAA3C41834F717366315541F1FE4F6DDDAA3C41D80E277866315541005D8F48DDAA3C41C832AF7D663155416A3BE025DDAA3C413CF4FE8366315541D72D8605DDAA3C4135070A8B66315541F03BC0E7DCAA3C41ADB2C29266315541E367C8CCDCAA3C418FEB199B66315541533CD3B4DCAA3C41BB71FFA366315541FB660FA0DCAA3C41D4EF61AD66315541455CA58EDCAA3C41191D2FB766315541430AB780DCAA3C41D3E053C166315541E6945F76DCAA3C41C077BCCB66315541AD22B36FDCAA3C41569A54D666315541DAB3BE6CDCAA3C418FA407E1663155417B0A886DDCAA3C41E0BDC0EB66315541F89D0D72DCAA3C4102026BF6663155414C9F467ADCAA3C417BA9F10067315541EF082386DCAA3C414A32400B6731554166BF8B95DCAA3C41BA87421567315541B9BC62A8DCAA3C419029E51E673155417B4C83BEDCAA3C410C521528673155414A52C2D7DCAA3C41721AC130673155412E9EEEF3DCAA3C41D69DD738673155410D4CD112DDAA3C41501A494067315541932F2E34DDAA3C41530F0747673155414448C457DDAA3C412D5A044D67315541AB404E7DDDAA3C418D4F355267315541BEF582A4DDAA3C413BD28F5667315541A40416CDDDAA3C41BB660B5A673155415960B8F6DDAA3C411344A15C67315541B3EA1821DEAA3C41A1604C5E673155419613E54BDEAA3C41567C095F67315541DA78C976DEAA3C41AD26D75E673155415F8972A1DEAA3C41CEC1B55D6731554145278DCBDEAA3C417981A75B67315541824AC7F4DEAA3C411167B0586731554141A0D01CDFAA3C417339D6546731554199275B43DFAA3C411E7A2050673155418AC91B68DFAA3C412D56984A6731554120EBCA8ADFAA3C41BA94484467315541B3F824ABDFAA3C41C1813D3D673155419AEAEAC8DFAA3C4149D6843567315541A7BEE2E3DFAA3C41679D2D2D6731554137EAD7FBDFAA3C413B174824673155418FBF9B10E0AA3C412199E51A6731554144CA0522E0AA3C41DD6B181167315541471CF42FE0AA3C4123A8F30667315541A4914B3AE0AA3C4136118BFC66315541DD03F840E0AA3C41A0EEF2F166315541AF72EC43E0AA3C4167E43FE7663155410F1C2343E0AA3C4116CB86DC6631554192889D3EE0AA3C41F486DCD1663155413E876436E0AA3C417BDF55C7663155419B1D882AE0AA3C41AC5607BD6631554123671F1BE0AA3C413C0105B366315541D1694808E0AA3C41665F62A9663155410FDA27F2DFAA3C41EA3632A0663155413FD4E8D8DFAA3C41846E8697663155415C88BCBCDFAA3C411FEB6F8F663155417CDAD99DDFAA3C41A66EFE8766315541F7F67C7CDFAA3C41A37940816631554146DEE658DFAA3C41C92E437B66315541DFE55C33DFAA3C416939127666315541CC30280CDFAA3C41BBB6B771663155416A483FF5DEAA3C413D37A16F66315541D73B928FDEAA3C415528FB6966315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2052, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000069DC4036B2AA3C41CD2428BB75315541F1170EADB4AA3C41848EA90D763155414548DD87B6AA3C414D8DC62A75315541BD0C1011B4AA3C41A12345D87431554169DC4036B2AA3C41CD2428BB75315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2053, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B0000004392F68AC0AA3C41E031DB477331554197EC8EEAC4AA3C41A8BFC5D97331554120C4DFC6C2AA3C4182A36AE0743155410551B5D8C6AA3C41E6BF326875315541913D4AADD6AA3C415C50C4D06D3155415C64AF6CCEAA3C41EFA46EBD6C31554150196253C7AA3C41F12AED24703155414413AC5AC8AA3C4176A13D477031554110B50AC7C2AA3C4189CFDDF37231554117ADED8EC1AA3C41465A30CB723155414392F68AC0AA3C41E031DB4773315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2054, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000A7DA3CB2C0AA3C417DBD8E666731554157F4A090D0AA3C41CDA34D7667315541EB360BB6D0AA3C419431FC1A653155410BEF729AC9AA3C4148B4EE13653155410E03C8A0C9AA3C41A0D2D2AD643155411E356885C7AA3C4136A1BBAB643155418CDB687FC7AA3C41B426710C65315541ACD7FCD7C0AA3C411AEFD60565315541A7DA3CB2C0AA3C417DBD8E6667315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2055, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000001400000000E3F8BAD7AA3C4132EEA1FC6831554100E3F8BAD7AA3C414AFD6739683155419744AC98D8AA3C414AFD6739683155419744AC98D8AA3C419EE2C0C76731554152CD51E5D7AA3C419EE2C0C76731554152CD51E5D7AA3C411077F3906731554103541F5CDBAA3C411077F39067315541C44D9972DBAA3C4116BFCC4A6431554158B0A620D1AA3C414CCB824664315541B4F9EA06D1AA3C417C5C3E2165315541DDF6F375D7AA3C4168A7AE2465315541F3C3AD81D7AA3C410496D86B67315541601E95D1D3AA3C410496D86B67315541601E95D1D3AA3C4132EEA1FC68315541B7A8A205D3AA3C4145CD80FF68315541B7A8A205D3AA3C41910851AE693155414039E195D1AA3C41910851AE693155414039E195D1AA3C41F846DFF76A31554100E3F8BAD7AA3C41F846DFF76A31554100E3F8BAD7AA3C4132EEA1FC68315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2056, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B000000C8A30A59C2AA3C41A2AB1BE66A315541C8A30A59C2AA3C41A81A3F2B6A315541E4A70E48BBAA3C41A81A3F2B6A315541E4A70E48BBAA3C416FB95D8269315541A027D0BAB5AA3C416FB95D8269315541A027D0BAB5AA3C41778905346A31554163292F4AB6AA3C41778905346A31554163292F4AB6AA3C41013408776A315541473A6630B8AA3C41013408776A315541473A6630B8AA3C4149758FE26A315541C8A30A59C2AA3C41A2AB1BE66A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2057, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000E5ABB0916BAA3C41F4D64743F9305541D01AC7DC76AA3C417FF3BFC6F9305541D919DC1378AA3C419454C868F8305541711076E16CAA3C41D6C589C9F7305541E5ABB0916BAA3C41F4D64743F9305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2058, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000070000003CF406C666AA3C410F6E24DEE83055414D3BDF6D6CAA3C413314F41FE9305541A9289CA56CAA3C41D44D50D3E830554150256FC676AA3C414F592B49E9305541C44E5A8678AA3C414D0048E1E63055410E0BAFBD68AA3C41AE4E9D29E63055413CF406C666AA3C410F6E24DEE8305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2059, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000002A0000005A9F961958AA3C41192CFEDBE6305541E8AC19A060AA3C4185DBEB44E73055410E6613DB60AA3C413AD140F8E63055419DA810F660AA3C412BC735F4E6305541B9513B1061AA3C41608ED7EFE6305541D95E832961AA3C4108D328EBE63055411858D94161AA3C4192722CE6E6305541B0592E5961AA3C41F079E5E0E6305541131D746F61AA3C41B82357DBE6305541A9019D8461AA3C412AD684D5E630554126159C9861AA3C411B2172CFE6305541761B65AB61AA3C41C8BB22C9E63055413796ECBC61AA3C4191829AC2E6305541C7CB27CD61AA3C419A74DDBBE6305541CCCD0CDC61AA3C415AB1EFB4E6305541507F92E961AA3C411576D5ADE63055414D9AB0F561AA3C41451B93A6E6305541C1B45F0062AA3C41F1112D9FE63055413845990962AA3C41F3E0A797E6305541C7A6571162AA3C4137220890E6305541871C961762AA3C41E77F5288E630554174D4501C62AA3C4191B18B80E6305541C9E9841F62AA3C414779B878E6305541C266302162AA3C41B1A0DD70E6305541D245522162AA3C4122F6FF68E63055413F72EA1F62AA3C41A7492461E630554131C8F91C62AA3C41166A4F59E63055412B14821862AA3C411B228651E6305541F311861262AA3C414935CD49E6305541E36A090B62AA3C41325D2942E6305541ACB3100262AA3C4183469F3AE63055418969A1F761AA3C41278E3333E6305541E6EEC1EB61AA3C4172BEEA2BE6305541728779DE61AA3C415E4CC924E6305541B353D0CF61AA3C41D094D31DE6305541094CCFBF61AA3C41E8D90D17E6305541333B80AE61AA3C416E407C10E630554151B8ED9B61AA3C4141CD220AE6305541976AD04362AA3C41D7EFC157E530554177B0549359AA3C41906B52F9E43055415457633F59AA3C411DA2A4FFE53055415A9F961958AA3C41192CFEDBE6305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2060, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000006000000B4D7745064AA3C4154E533F4E9305541BA1FA82A63AA3C41DF776C8DEB3055415E4DF81967AA3C4128CE68A2EB3055413DBB2B3A6BAA3C41EB531ED9EB3055418EDF0D596CAA3C419C69A352EA305541B4D7745064AA3C4154E533F4E9305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2063, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000800000032EEF9ED69AA3C41C8AD78DFF33055419DA28B2072AA3C41C8AD78DFF33055411914202575AA3C4140621A34F43055419068E70E75AA3C41A186CCFFF430554150780CB179AA3C413FE3E207F5305541A6A0510D7AAA3C41339C13BAF13055410CF1EE2C6AAA3C41F7685D9EF130554132EEF9ED69AA3C41C8AD78DFF3305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2064, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000089D900816FAA3C412664B9B8F6305541E208A7D177AA3C41DF5D7DD5F63055410662982578AA3C419D214151F5305541AC32F2D46FAA3C41E4277D34F530554189D900816FAA3C412664B9B8F6305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2065, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B81383CD8CAA3C416DA4D8C3E630554170DE367C85AA3C419DFECD87E63055415F22441085AA3C4130BA4D5AE7305541A05790618CAA3C41FF5F5896E7305541B81383CD8CAA3C416DA4D8C3E6305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2066, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000ED892AA580AA3C411CF24FDAEA3055412EDD31EE7FAA3C41B82AEAD2EB30554146141D1189AA3C415746813EEC305541FEC015C889AA3C41BA0DE745EB305541ED892AA580AA3C411CF24FDAEA305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2067, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000140000004D1841B68DAA3C412D4F8EBEEA3055411A557EDA9FAA3C41B4A4179DEB3055416AEC91DBA0AA3C416A72C64DEA305541CFEDA16DA4AA3C4149DD1694EB305541DE11BA07ABAA3C4184F2C66CEA305541CB667A6AA6AA3C413C1057CFE8305541A53B0897A5AA3C41DC2919F5E830554116D58ADFA4AA3C41AB79E0B4E83055418D13BAA3A1AA3C411977B348E9305541C34B4610A2AA3C41C1F31DBBE8305541688C4F6499AA3C41EF64BE50E83055418C988F8D99AA3C41D169F01AE83055410EE5414597AA3C41F2F4F0FEE7305541D345971F97AA3C41A2481230E83055410A739BF094AA3C41CC6A4915E83055418EB1151195AA3C419DBEECEAE73055414C5FE9FA91AA3C4145F40FC5E7305541945560CE91AA3C4101DE26FFE7305541F4B48FE38FAA3C417B34A2E7E73055414D1841B68DAA3C412D4F8EBEEA305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2068, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000CCC64C9398AA3C417836DC4BE4305541F0C044B197AA3C419CF35811E73055415D86AB55A5AA3C4156EDE256E7305541C8EB1C3BA6AA3C4145C4B086E4305541B350E395A1AA3C4157E0026FE4305541BB325DAFA1AA3C4117690B1FE43055415FE079739FAA3C41D44CA813E4305541C99E96569FAA3C410230556EE4305541CCC64C9398AA3C417836DC4BE4305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2069, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000B000000299021D7CDAA3C410391E34DED305541810273C9CDAA3C4185D9D58AED305541C72FD3DDC5AA3C4146F4626EED305541ED0DA679C5AA3C41825CA02CEF305541CE9CAA9FCCAA3C418E7C4D46EF305541D3D0B878CCAA3C414266C8F3EF3055410C80D3B6CFAA3C4191FF6DFFEF305541DE7C6E9ECFAA3C41A5B0186CF030554106215E05DEAA3C410390D39FF0305541AC9F90B6DEAA3C417F447E8AED305541299021D7CDAA3C410391E34DED305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2070, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B451778D6AAA3C4139DE4BB8FA3055412212801A6AAA3C411A6AE76AFB30554164E604B16FAA3C414F1D74A4FB305541F125FC2370AA3C416E91D8F1FA305541B451778D6AAA3C4139DE4BB8FA305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2071, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000D0000005162D19AAAAA3C41B613FEBDFD305541067E8508BFAA3C4162E4A7D2FC305541AA59B77FBDAA3C4159CE17B1FA305541C0374A0FB8AA3C41978EC0EFFA3055416EA04EEAB7AA3C41FD1F63BCFA305541D40AFDBFB2AA3C417B3CE4F7FA3055410B35E1EAB2AA3C4113777633FB305541E093CAD6B0AA3C419B1F684BFB305541891DD6A8B0AA3C41AE97940BFB305541AD830FE4ADAA3C4185B0792BFB3055411558AA1CAEAA3C418BD7177AFB305541F52E9222A9AA3C41C0686DB3FB3055415162D19AAAAA3C41B613FEBDFD305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2072, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000416383ACCEAA3C41880A8770FD305541F829D13CD0AA3C41D5D80882FB30554126D7B407C4AA3C413639EBE3FA30554178106777C2AA3C41EA6A69D2FC305541416383ACCEAA3C41880A8770FD305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2073, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000B6BC47B79EAA3C41B3C92DC6F23055419C42F163A3AA3C41ABB9D600F330554177AA1FD8A2AA3C41E38E1BB3F3305541E6893995A7AA3C4185C992EEF3305541BFA65B2FA7AA3C41FB177470F43055410EC7C996AFAA3C41E06EEAD9F4305541090D0FFCAFAA3C4199B5CB58F4305541C88C1D37B1AA3C417B5C3D68F430554127CABC59B2AA3C419E54B2F5F230554147489C29B8AA3C419FADA13EF3305541A56A46A7B9AA3C41645B0258F130554131D61C47B1AA3C418238E7EEF0305541974053DBB0AA3C417C0A5578F13055418B515D5FA0AA3C41F1AB78A9F0305541B6BC47B79EAA3C41B3C92DC6F2305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2074, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000090000004F7A0712BAAA3C41D8CC3225F63055417E3715B1BEAA3C411F913767F6305541A3843D47BEAA3C41D9BFC2DDF630554113AF652BC2AA3C41EE8F5915F7305541A84798E6C3AA3C4154EFF724F5305541300A77C3BFAA3C412F82DDE9F43055419D4FAC1AC0AA3C4175343188F430554161A597BABBAA3C413E0DB049F43055414F7A0712BAAA3C41D8CC3225F6305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2075, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000277514B698AA3C41AD4E4E92F2305541F2A0DBC497AA3C41CD85CDB9F3305541E3F54DB09AAA3C413117F0DFF330554111CA86A19BAA3C4113E070B8F2305541277514B698AA3C41AD4E4E92F2305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2076, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000B21A488F84AA3C41FEA57A5CE8305541F8139C598AAA3C41686DB5A1E8305541255D09E48AAA3C41260076E8E7305541EC63B51985AA3C41BA383BA3E7305541B21A488F84AA3C41FEA57A5CE8305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2077, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000007AB499FB7EAA3C4153EDCF85E53055410C82166E7EAA3C411C47BC6DE6305541B840FA6982AA3C41962AA194E630554126737DF782AA3C41CDD0B4ACE53055417AB499FB7EAA3C4153EDCF85E5305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2078, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000130000007A3E502BB0AA3C414EF5308CEC3055412E6FA1F5A9AA3C412A716242EC30554118A075DFA8AA3C41107ED8B8ED305541FE239D9BB3AA3C411A457038EE305541AC93FED6B3AA3C4155CC80E8ED3055417FAE5269B5AA3C419CC22EFBED30554103FBD3C2B3AA3C41EE02ED33F03055418CF17DF7BAAA3C41E5289289F03055415E63BB19BCAA3C410CFCDC02EF305541650AB359BDAA3C418B06B811EF305541C21FCF5DBEAA3C41933892B3ED3055419E6CA83DBDAA3C41AA5631A6ED30554179458EA0BDAA3C410E9F0F21ED30554181CCD49BB9AA3C41EB7E4CF1EC3055415F45ADDFB9AA3C412FDCF795EC30554149C33259B7AA3C413400F477EC3055417C26BB1CB8AA3C41FC66BC70EB305541AF67A73AB1AA3C4161DBEC1EEB3055417A3E502BB0AA3C414EF5308CEC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2079, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000005000000BE6EBAE084AA3C4134544689E8305541D22D756584AA3C418D352E42E930554171B1C2BD89AA3C416070317BE930554154F207398AAA3C41058F49C2E8305541BE6EBAE084AA3C4134544689E8305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2080, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000009E0256B698AA3C41731E686C0D3155419E0256B698AA3C416C06D6780631554122599123B2AA3C416C06D6780631554122599123B2AA3C410082DB4F0D3155419E0256B698AA3C41731E686C0D315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2081, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000001234C7B9C4AA3C41D7BF4FBC113155411234C7B9C4AA3C41B8A7DAC6083155419035F7D7E4AA3C41B8A7DAC6083155419035F7D7E4AA3C41D7BF4FBC113155411234C7B9C4AA3C41D7BF4FBC11315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2082, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000009000000AEBFFF0769AA3C41B34A1E6A1031554186B0EAAD75AA3C41E72AD21A0F315541B62F1BEB7AAA3C41B16E57F10B31554186B0EAAD75AA3C417BB2DCC708315541AEBFFF0769AA3C41AF92907807315541D6CE14625CAA3C417BB2DCC708315541A64FE42457AA3C41B16E57F10B315541D6CE14625CAA3C41E72AD21A0F315541AEBFFF0769AA3C41B34A1E6A10315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2083, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '0103000020910800000100000008000000563924FAC5AA3C418482C8B47B315541F27F9F02C5AA3C41EDB780FB7B315541F504FA80C7AA3C41088524877C31554162631FD1C9AA3C417F45F5DD7B31554104EF8BE9C5AA3C41D45D8D207B3155413E46E0C6B1AA3C41FD79F7637A315541255CDE77B1AA3C418714F0EA7A315541563924FAC5AA3C418482C8B47B315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2084, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000500000027683A58AFAA3C41D9360E0D75315541BAB9883AB1AA3C41BFE8935675315541589B5972B2AA3C4134B5BBD674315541025B159AB0AA3C419DCABD8E7431554127683A58AFAA3C41D9360E0D75315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2085, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000F000000EA6AF74BFFAA3C412D7A2AA145315541161BDFDC04AB3C4150AE11CC45315541827BD6B504AB3C41E46D501B463155414912B7E309AB3C4165CE214446315541B3F69C1509AB3C4159FB8DE647315541BCE2B42F0EAB3C41AF70C30E483155417DE7227B0EAB3C41EFC5A0754731554173EA721B14AB3C41B606F8A147315541647B9B8F15AB3C417B4A6CAE44315541FA6E5BE908AB3C41E44DBB4A4431554183A0B1C308AB3C4175D53197443155419DBFBE4705AB3C41FF4ABC7B443155412BCFD85A05AB3C416CA0F454443155414530530400AB3C41CAECE22A44315541EA6AF74BFFAA3C412D7A2AA145315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2086, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '01030000209108000001000000050000007247DF41F8AA3C41F98D2A62433155414BCF8F0A0CAB3C417580534844315541F435078E0FAB3C4115C8ED673F3155411D02E1C3FBAA3C410B77CB833E3155417247DF41F8AA3C41F98D2A6243315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2087, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000700000009EF471603AB3C41AC40560F34315541B587C6A9FBAA3C41852CA7483E31554117566A350FAB3C41CF58172C3F315541E1CB9BE612AB3C41053725473A315541F7CC519A26AB3C4165AB672C3B3155416CFC67792AAB3C41F229A9D93531554109EF471603AB3C41AC40560F34315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2088, 4, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.326778', '010300002091080000010000000E000000B587C6A9FBAA3C41852CA7483E31554109EF471603AB3C41AC40560F343155417341A06403AB3C415BCF9CA333315541C4B59BBBF8AA3C4191F7902733315541DAA75155F5AA3C41DACA36D437315541504C12BDF8AA3C4152D2D6FB3731554172497B78F7AA3C414C7626BA39315541706A2566F5AA3C4141490BA239315541ECC17CA6F4AA3C41F53093A93A31554184FE76CCF6AA3C41E4ED92C23A3155412229DC70F5AA3C4151D387A03C31554126B57256F2AA3C4169C26B7C3C31554183D3D65EF1AA3C41AF18E2D03D315541B587C6A9FBAA3C41852CA7483E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2089, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000866F9D8514AB3C41E3B9B31B2D3155410341A3BB1BAB3C412DB867582C3155410D41818016AB3C4165A3474129315541F9797B4A0FAB3C41B0A793042A315541866F9D8514AB3C41E3B9B31B2D315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2090, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '010300002091080000010000000500000071E344A00CAB3C412C3FEBAC2C315541032E95E311AB3C41BEF338292C3155418E1506BD0FAB3C41E08831C92A31554123CEB5790AAB3C412AD5E34C2B31554171E344A00CAB3C412C3FEBAC2C315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2091, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000080A2F4B0AAB3C4101CD3FDA2A315541CD8FF8050FAB3C41468240792A3155413E4E32EC0DAB3C41EFA06B9D29315541E3C9683109AB3C412DEC6AFE29315541080A2F4B0AAB3C4101CD3FDA2A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2092, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000FCBDBF2900AB3C410FF3252C1F3155410555BE0105AB3C41210DB1C31F31554140A5DF3B0AAB3C416A535E171D3155410807E16305AB3C41B23AD37F1C315541FCBDBF2900AB3C410FF3252C1F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2093, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '01030000209108000001000000060000000555BE0105AB3C41210DB1C31F315541FCBDBF2900AB3C410FF3252C1F3155417B26FB78F7AA3C410962E69D233155418EB1F950FCAA3C41517E713524315541B3380D66FDAA3C4157F2BEA7233155410555BE0105AB3C41210DB1C31F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2094, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '010300002091080000010000000700000095425EC402AB3C419988B44F243155415910BF8F0BAB3C412D5658D01F315541AAC2309A0FAB3C4109E653BF1D31554140A5DF3B0AAB3C416A535E171D3155410555BE0105AB3C41210DB1C31F315541B3380D66FDAA3C4157F2BEA72331554195425EC402AB3C419988B44F24315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2095, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '0103000020910800000100000005000000E9CCD47619AB3C414272E374203155413F928CEB28AB3C412B6FE86419315541092C4C501DAB3C41C85F80CE173155415E9994DB0DAB3C41215B7BDE1E315541E9CCD47619AB3C414272E37420315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2096, 6, NULL, 1, 5, 1001, 104, 10002, '2019-05-30 14:50:01.504054', '01030000209108000001000000090000005910BF8F0BAB3C412D5658D01F31554195425EC402AB3C419988B44F24315541EFD8D78907AB3C41763DFCE424315541A4D8A7890CAB3C41377A7C5622315541A2B646C610AB3C41037B0ADB2231554186078DEC12AB3C412F11A1C1213155412FBC426A0FAB3C41F1B1D853213155411C488D0F11AB3C41D5A9657C203155415910BF8F0BAB3C412D5658D01F315541'); -- buildings_bulk_load.added diff --git a/db/tests/testdata/db/buildings_reference.sql b/db/tests/testdata/db/buildings_reference.sql index 1cc37994..5fb448ad 100644 --- a/db/tests/testdata/db/buildings_reference.sql +++ b/db/tests/testdata/db/buildings_reference.sql @@ -47,11 +47,11 @@ INSERT INTO buildings_reference.river_polygons (river_polygon_id, external_river -- buildings_reference.suburb_locality -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (101, 101, 'Kelburn', '010600002091080000010000000103000000010000000500000066CEB1BCE2A93C41897FD94E1E315541B8C07DEFDDA73C4153A0BCF81F315541EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B31554166CEB1BCE2A93C41897FD94E1E315541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (102, 102, 'Aro Valley', '010600002091080000010000000103000000010000000500000062B26B4CADA83C419541DA4D1F31554157B126DEADA83C415EEB31D0EC30554130ECB486DFA73C417A89315EED305541B8C07DEFDDA73C4153A0BCF81F31554162B26B4CADA83C419541DA4D1F315541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (103, 103, 'Newtown', '010600002091080000010000000103000000010000000500000057B126DEADA83C415EEB31D0EC30554162B26B4CADA83C419541DA4D1F31554166CEB1BCE2A93C41897FD94E1E315541E08618B0E4A93C41AD1B4CFAEB30554157B126DEADA83C415EEB31D0EC305541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (104, 104, 'Hokowhitu', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (107, 107, 'Test Island', '0106000020910800000100000001030000000100000005000000529CA67245A93C416CC0358DB1315541BB6C28D49BA93C4124914C0CB2315541C9D567C7A2A93C4180CF6FD28B315541AEB1EB2E47A93C417A11C4A58B315541529CA67245A93C416CC0358DB1315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (101, 101, 'Kelburn', 'Wellington', '010600002091080000010000000103000000010000000500000066CEB1BCE2A93C41897FD94E1E315541B8C07DEFDDA73C4153A0BCF81F315541EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B31554166CEB1BCE2A93C41897FD94E1E315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (102, 102, 'Aro Valley', 'Wellington', '010600002091080000010000000103000000010000000500000062B26B4CADA83C419541DA4D1F31554157B126DEADA83C415EEB31D0EC30554130ECB486DFA73C417A89315EED305541B8C07DEFDDA73C4153A0BCF81F31554162B26B4CADA83C419541DA4D1F315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (103, 103, 'Newtown', 'Wellington', '010600002091080000010000000103000000010000000500000057B126DEADA83C415EEB31D0EC30554162B26B4CADA83C419541DA4D1F31554166CEB1BCE2A93C41897FD94E1E315541E08618B0E4A93C41AD1B4CFAEB30554157B126DEADA83C415EEB31D0EC305541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (104, 104, 'Hokowhitu', 'Palmerston North', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (107, 107, 'Test Island', '', '0106000020910800000100000001030000000100000005000000529CA67245A93C416CC0358DB1315541BB6C28D49BA93C4124914C0CB2315541C9D567C7A2A93C4180CF6FD28B315541AEB1EB2E47A93C417A11C4A58B315541529CA67245A93C416CC0358DB1315541'); -- buildings_reference.swamp_polygons @@ -63,11 +63,6 @@ INSERT INTO buildings_reference.swamp_polygons (swamp_polygon_id, external_swamp INSERT INTO buildings_reference.territorial_authority (territorial_authority_id, external_territorial_authority_id, name, shape) VALUES (10002, 10002, 'Manawatu-Whanganui', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); INSERT INTO buildings_reference.territorial_authority (territorial_authority_id, external_territorial_authority_id, name, shape) VALUES (10001, 10001, 'Wellington', '0106000020910800000100000001030000000100000007000000652E991C93A73C411D143F0A86315541365AC9A1C6A73C41D290699ED3315541B4EDA920F9A93C415A63FDC3D33155419BAA7B1333AA3C411D1A1C7F863155419BC2EFE634AA3C411A459E65DA30554165460DF094A73C411A4B7BDADA305541652E991C93A73C411D143F0A86315541'); --- buildings_reference.town_city - -INSERT INTO buildings_reference.town_city (town_city_id, external_city_id, name, shape) VALUES (1001, 1001, 'Wellington', '0106000020910800000100000001030000000100000005000000EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B315541E08618B0E4A93C41AD1B4CFAEB30554130ECB486DFA73C417A89315EED305541EBBFD613DBA73C41E6696DE47A315541'); -INSERT INTO buildings_reference.town_city (town_city_id, external_city_id, name, shape) VALUES (1002, 1002, 'Palmerston North', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); - -- buildings_reference.nz_imagery_survey_index INSERT INTO buildings_reference.nz_imagery_survey_index (imagery_survey_id, name, imagery_id, index_id, set_order, ground_sample_distance, accuracy, supplier, licensor, flown_from, flown_to, shape) VALUES (1, 'Imagery One', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2016-01-01', '2016-02-01', '0106000020910800000100000001030000000100000005000000652E991C93A73C411D143F0A863155419BAA7B1333AA3C411D1A1C7F863155419BC2EFE634AA3C411A459E65DA30554165460DF094A73C411A4B7BDADA305541652E991C93A73C411D143F0A86315541'); diff --git a/db/tests/testdata/insert_test_data_publish_lds.sql b/db/tests/testdata/insert_test_data_publish_lds.sql index 78dc62aa..df53605a 100644 --- a/db/tests/testdata/insert_test_data_publish_lds.sql +++ b/db/tests/testdata/insert_test_data_publish_lds.sql @@ -61,30 +61,30 @@ VALUES (1500001, '2017-01-01 09:00:00 GMT+12', NULL), -- Building Outlines -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape) -VALUES (150001, 1500001, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00 GMT+12', '2018-01-01 09:00:00 GMT+12', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'), - (160001, 1500001, 5, 1001, 1, 102, 1001, 10001, '2018-01-01 09:00:00 GMT+12', NULL, '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'), - (150002, 1500002, 5, 1001, 1, 102, 1001, 10001, '2017-01-02 09:00:00 GMT+12', '2018-01-02 09:00:00 GMT+12', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'), - (150003, 1500003, 5, 1001, 1, 101, 1001, 10001, '2017-01-03 09:00:00 GMT+12', NULL, '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541'), - (150004, 1500004, 5, 1001, 1, 101, 1001, 10001, '2017-01-04 09:00:00 GMT+12', NULL, '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541'), - (150005, 1500005, 5, 1001, 1, 101, 1001, 10001, '2017-01-05 09:00:00 GMT+12', NULL, '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541'), - (150006, 1500006, 5, 1001, 1, 102, 1001, 10001, '2017-01-06 09:00:00 GMT+12', NULL, '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541'), - (150007, 1500007, 5, 1001, 1, 102, 1001, 10001, '2017-01-07 09:00:00 GMT+12', NULL, '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541'), - (150008, 1500008, 5, 1001, 1, 103, 1001, 10001, '2017-01-08 09:00:00 GMT+12', NULL, '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541'), - (150009, 1500009, 5, 1001, 1, 102, 1001, 10001, '2017-01-09 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541'), - (150010, 1500010, 5, 1001, 1, 102, 1001, 10001, '2017-01-10 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541'), - (150011, 1500011, 5, 1001, 1, 103, 1001, 10001, '2017-01-11 09:00:00 GMT+12', NULL, '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541'), - (150012, 1500012, 5, 1001, 1, 102, 1001, 10001, '2017-01-12 09:00:00 GMT+12', NULL, '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541'), - (150013, 1500013, 5, 1001, 1, 103, 1001, 10001, '2017-01-13 09:00:00 GMT+12', NULL, '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541'), - (150014, 1500014, 5, 1001, 1, 102, 1001, 10001, '2017-01-14 09:00:00 GMT+12', NULL, '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541'), - (150015, 1500015, 5, 1001, 1, 103, 1001, 10001, '2017-01-15 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541'), - (150016, 1500016, 5, 1001, 1, 102, 1001, 10001, '2017-01-16 09:00:00 GMT+12', NULL, '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541'), - (150017, 1500017, 5, 1001, 1, 102, 1001, 10001, '2017-01-17 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541'), - (150018, 1500018, 5, 1001, 1, 103, 1001, 10001, '2017-01-18 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541'), - (150019, 1500019, 5, 1001, 1, 103, 1001, 10001, '2017-01-19 09:00:00 GMT+12', NULL, '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541'), - (150020, 1500020, 5, 1001, 1, 103, 1001, 10001, '2017-01-20 09:00:00 GMT+12', '2018-01-20 09:00:00 GMT+12', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541'), - (150021, 1500021, 5, 1001, 1, 102, 1001, 10001, '2017-01-21 09:00:00 GMT+12', NULL, '0103000020910800000100000006000000BEBC5B497EA83C41D6A394F7F330554124BEE1587EA83C4141DBC15CF63055410F0C77C78CA83C41E75AE058F6305541DA07E5988CA83C41E532F115EF30554121B7430B7EA83C41D8B14C0AEF305541BEBC5B497EA83C41D6A394F7F3305541'), - (150022, 1500022, 5, 1001, 1, 102, 1001, 10001, '2017-01-22 09:00:00 GMT+12', '2018-01-22 09:00:00 GMT+12', '01030000209108000001000000050000001E28EFFD8DA83C418EDAFE54F630554146C3FE36B1A83C41D892055FF630554159303D24B1A83C4154F67632F33055415025E3DE8DA83C419791C62DF33055411E28EFFD8DA83C418EDAFE54F6305541'); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape) +VALUES (150001, 1500001, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00 GMT+12', '2018-01-01 09:00:00 GMT+12', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'), + (160001, 1500001, 5, 1001, 1, 102, 10001, '2018-01-01 09:00:00 GMT+12', NULL, '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'), + (150002, 1500002, 5, 1001, 1, 102, 10001, '2017-01-02 09:00:00 GMT+12', '2018-01-02 09:00:00 GMT+12', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'), + (150003, 1500003, 5, 1001, 1, 101, 10001, '2017-01-03 09:00:00 GMT+12', NULL, '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541'), + (150004, 1500004, 5, 1001, 1, 101, 10001, '2017-01-04 09:00:00 GMT+12', NULL, '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541'), + (150005, 1500005, 5, 1001, 1, 101, 10001, '2017-01-05 09:00:00 GMT+12', NULL, '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541'), + (150006, 1500006, 5, 1001, 1, 102, 10001, '2017-01-06 09:00:00 GMT+12', NULL, '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541'), + (150007, 1500007, 5, 1001, 1, 102, 10001, '2017-01-07 09:00:00 GMT+12', NULL, '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541'), + (150008, 1500008, 5, 1001, 1, 103, 10001, '2017-01-08 09:00:00 GMT+12', NULL, '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541'), + (150009, 1500009, 5, 1001, 1, 102, 10001, '2017-01-09 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541'), + (150010, 1500010, 5, 1001, 1, 102, 10001, '2017-01-10 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541'), + (150011, 1500011, 5, 1001, 1, 103, 10001, '2017-01-11 09:00:00 GMT+12', NULL, '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541'), + (150012, 1500012, 5, 1001, 1, 102, 10001, '2017-01-12 09:00:00 GMT+12', NULL, '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541'), + (150013, 1500013, 5, 1001, 1, 103, 10001, '2017-01-13 09:00:00 GMT+12', NULL, '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541'), + (150014, 1500014, 5, 1001, 1, 102, 10001, '2017-01-14 09:00:00 GMT+12', NULL, '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541'), + (150015, 1500015, 5, 1001, 1, 103, 10001, '2017-01-15 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541'), + (150016, 1500016, 5, 1001, 1, 102, 10001, '2017-01-16 09:00:00 GMT+12', NULL, '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541'), + (150017, 1500017, 5, 1001, 1, 102, 10001, '2017-01-17 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541'), + (150018, 1500018, 5, 1001, 1, 103, 10001, '2017-01-18 09:00:00 GMT+12', NULL, '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541'), + (150019, 1500019, 5, 1001, 1, 103, 10001, '2017-01-19 09:00:00 GMT+12', NULL, '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541'), + (150020, 1500020, 5, 1001, 1, 103, 10001, '2017-01-20 09:00:00 GMT+12', '2018-01-20 09:00:00 GMT+12', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541'), + (150021, 1500021, 5, 1001, 1, 102, 10001, '2017-01-21 09:00:00 GMT+12', NULL, '0103000020910800000100000006000000BEBC5B497EA83C41D6A394F7F330554124BEE1587EA83C4141DBC15CF63055410F0C77C78CA83C41E75AE058F6305541DA07E5988CA83C41E532F115EF30554121B7430B7EA83C41D8B14C0AEF305541BEBC5B497EA83C41D6A394F7F3305541'), + (150022, 1500022, 5, 1001, 1, 102, 10001, '2017-01-22 09:00:00 GMT+12', '2018-01-22 09:00:00 GMT+12', '01030000209108000001000000050000001E28EFFD8DA83C418EDAFE54F630554146C3FE36B1A83C41D892055FF630554159303D24B1A83C4154F67632F33055415025E3DE8DA83C419791C62DF33055411E28EFFD8DA83C418EDAFE54F6305541'); -- Building Name diff --git a/db/tests/testdata/plugin/buildings.sql b/db/tests/testdata/plugin/buildings.sql index 1be3dad4..5aee3f96 100644 --- a/db/tests/testdata/plugin/buildings.sql +++ b/db/tests/testdata/plugin/buildings.sql @@ -48,39 +48,39 @@ INSERT INTO buildings.building_name (building_name_id, building_id, building_nam -- buildings.building_outlines -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1001, 10001, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1002, 10002, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1003, 10003, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1004, 10004, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1005, 10005, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1006, 10006, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1007, 10007, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1008, 10008, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1009, 10009, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1010, 10010, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1011, 10011, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1012, 10012, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1013, 10013, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1014, 10014, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1015, 10015, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1016, 10016, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1017, 10017, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1018, 10018, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1019, 10019, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1020, 10020, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1021, 10021, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000006000000E6BBDD5281A83C410FD98FADEC3055414CBD636281A83C417A10BD12EF305541370BF9D08FA83C412090DB0EEF305541020767A28FA83C411E68ECCBE730554149B6C51481A83C4111E747C0E7305541E6BBDD5281A83C410FD98FADEC305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1022, 10022, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004627710791A83C41C70FFA0AEF3055416EC28040B4A83C4111C80015EF305541812FBF2DB4A83C418D2B72E8EB305541782465E890A83C41D0C6C1E3EB3055414627710791A83C41C70FFA0AEF305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1023, 10023, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000036A3DF0B5A83C419D7488FAEE305541A7AF674FD9A83C412E11801AEF30554174B2736ED9A83C41B3ECE386ED305541219B50DAB5A83C4119F63D62ED305541036A3DF0B5A83C419D7488FAEE305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1024, 10024, 5, 1001, 1, 102, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000DE25EBF790A83C411ABF608EEB305541A2CF414E98A83C41C13E7F8AEB3055416CCBAF1F98A83C4111B83EB8E5305541A92159C990A83C4110B83EB8E5305541DE25EBF790A83C411ABF608EEB305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1025, 10025, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000A9FAE07CD1A83C41A264A12DED305541A6AF674FD9A83C4149E4BF29ED30554142B57F8DD9A83C416F6EC711E8305541AAFAE07CD1A83C416F6EC711E8305541A9FAE07CD1A83C41A264A12DED305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1026, 10026, 5, 1001, 1, 103, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000080000007B6AB49EC4A83C41DDC70F00ED3055415B75A424D0A83C413321FBFCEC305541C7D4BED9CFA83C41A4A16248EA305541A1D26DB1C4A83C41FD21444CEA305541D4279898C4A83C414C53ACE5EB30554121D46304B6A83C41343C37E6EB30554109752A06B6A83C4162299EF8EC3055417B6AB49EC4A83C41DDC70F00ED305541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1027, 10027, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1028, 10028, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1029, 10029, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1030, 10030, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1031, 10031, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1032, 10032, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541', NULL); -INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1033, 10033, 5, 1001, 1, 101, 1001, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1001, 10001, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1002, 10002, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1003, 10003, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1004, 10004, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1005, 10005, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1006, 10006, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1007, 10007, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1008, 10008, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1009, 10009, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1010, 10010, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1011, 10011, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1012, 10012, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1013, 10013, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1014, 10014, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1015, 10015, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1016, 10016, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1017, 10017, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1018, 10018, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1019, 10019, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1020, 10020, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1021, 10021, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000006000000E6BBDD5281A83C410FD98FADEC3055414CBD636281A83C417A10BD12EF305541370BF9D08FA83C412090DB0EEF305541020767A28FA83C411E68ECCBE730554149B6C51481A83C4111E747C0E7305541E6BBDD5281A83C410FD98FADEC305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1022, 10022, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004627710791A83C41C70FFA0AEF3055416EC28040B4A83C4111C80015EF305541812FBF2DB4A83C418D2B72E8EB305541782465E890A83C41D0C6C1E3EB3055414627710791A83C41C70FFA0AEF305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1023, 10023, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000036A3DF0B5A83C419D7488FAEE305541A7AF674FD9A83C412E11801AEF30554174B2736ED9A83C41B3ECE386ED305541219B50DAB5A83C4119F63D62ED305541036A3DF0B5A83C419D7488FAEE305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1024, 10024, 5, 1001, 1, 102, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000DE25EBF790A83C411ABF608EEB305541A2CF414E98A83C41C13E7F8AEB3055416CCBAF1F98A83C4111B83EB8E5305541A92159C990A83C4110B83EB8E5305541DE25EBF790A83C411ABF608EEB305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1025, 10025, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000A9FAE07CD1A83C41A264A12DED305541A6AF674FD9A83C4149E4BF29ED30554142B57F8DD9A83C416F6EC711E8305541AAFAE07CD1A83C416F6EC711E8305541A9FAE07CD1A83C41A264A12DED305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1026, 10026, 5, 1001, 1, 103, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000080000007B6AB49EC4A83C41DDC70F00ED3055415B75A424D0A83C413321FBFCEC305541C7D4BED9CFA83C41A4A16248EA305541A1D26DB1C4A83C41FD21444CEA305541D4279898C4A83C414C53ACE5EB30554121D46304B6A83C41343C37E6EB30554109752A06B6A83C4162299EF8EC3055417B6AB49EC4A83C41DDC70F00ED305541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1027, 10027, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1028, 10028, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1029, 10029, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1030, 10030, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1031, 10031, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1032, 10032, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541', NULL); +INSERT INTO buildings.building_outlines (building_outline_id, building_id, capture_method_id, capture_source_id, lifecycle_stage_id, suburb_locality_id, territorial_authority_id, begin_lifespan, end_lifespan, shape, last_modified) VALUES (1033, 10033, 5, 1001, 1, 101, 10001, '2017-01-01 09:00:00', NULL, '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541', NULL); -- buildings.building_use diff --git a/db/tests/testdata/plugin/buildings_bulk_load.sql b/db/tests/testdata/plugin/buildings_bulk_load.sql index c1310409..46569358 100644 --- a/db/tests/testdata/plugin/buildings_bulk_load.sql +++ b/db/tests/testdata/plugin/buildings_bulk_load.sql @@ -6,72 +6,72 @@ INSERT INTO buildings_bulk_load.supplied_datasets (supplied_dataset_id, descript -- buildings_bulk_load.bulk_load_outlines -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1001, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1002, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1003, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1004, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1005, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1006, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1007, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1008, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1009, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1010, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1011, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1012, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1013, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1014, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1015, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1016, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1017, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1018, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1019, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1020, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1021, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000006000000E6BBDD5281A83C410FD98FADEC3055414CBD636281A83C417A10BD12EF305541370BF9D08FA83C412090DB0EEF305541020767A28FA83C411E68ECCBE730554149B6C51481A83C4111E747C0E7305541E6BBDD5281A83C410FD98FADEC305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1022, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004627710791A83C41C70FFA0AEF3055416EC28040B4A83C4111C80015EF305541812FBF2DB4A83C418D2B72E8EB305541782465E890A83C41D0C6C1E3EB3055414627710791A83C41C70FFA0AEF305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1023, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000036A3DF0B5A83C419D7488FAEE305541A7AF674FD9A83C412E11801AEF30554174B2736ED9A83C41B3ECE386ED305541219B50DAB5A83C4119F63D62ED305541036A3DF0B5A83C419D7488FAEE305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1024, 1, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000DE25EBF790A83C411ABF608EEB305541A2CF414E98A83C41C13E7F8AEB3055416CCBAF1F98A83C4111B83EB8E5305541A92159C990A83C4110B83EB8E5305541DE25EBF790A83C411ABF608EEB305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1025, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000A9FAE07CD1A83C41A264A12DED305541A6AF674FD9A83C4149E4BF29ED30554142B57F8DD9A83C416F6EC711E8305541AAFAE07CD1A83C416F6EC711E8305541A9FAE07CD1A83C41A264A12DED305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1026, 1, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000080000007B6AB49EC4A83C41DDC70F00ED3055415B75A424D0A83C413321FBFCEC305541C7D4BED9CFA83C41A4A16248EA305541A1D26DB1C4A83C41FD21444CEA305541D4279898C4A83C414C53ACE5EB30554121D46304B6A83C41343C37E6EB30554109752A06B6A83C4162299EF8EC3055417B6AB49EC4A83C41DDC70F00ED305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1027, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1028, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1029, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1030, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1031, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1032, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (1033, 1, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2001, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2002, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2003, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2004, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2005, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2006, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2007, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2008, 2, NULL, 1, 5, 1001, 103, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2009, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000D0000008221CD2F80A83C41A1B39338EF305541C349B56ADAA83C4155B45640EF305541604FCDA8DAA83C414F066EBBE73055416966E897D0A83C41B707F4CAE73055416966E897D0A83C41BF3D9B20EA3055417C3B69ADC3A83C4165BDB91CEA305541E43CEFBCC3A83C416D5F2B95EB305541B563772B99A83C41EB5B5C6EEB30554171DE40F198A83C418F92007FE53055412E8A54C58FA83C41A6F2F87FE5305541C788CEB58FA83C411A02DC8CE73055411619A9D27FA83C411A02DC8CE73055418221CD2F80A83C41A1B39338EF305541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2010, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2011, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2012, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2013, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2014, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2015, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2016, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2017, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2018, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2019, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2020, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2021, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2022, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2023, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2024, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2025, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2026, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2027, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2028, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2029, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2030, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2031, 2, NULL, 1, 5, 1001, 102, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2032, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541'); -INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, town_city_id, territorial_authority_id, begin_lifespan, shape) VALUES (2033, 2, NULL, 1, 5, 1001, 101, 1001, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1001, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1002, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000070000001A70C8616AA83C412ABBD73B21315541CBED31F185A83C41D13AF6372131554132EFB70086A83C41CBCEE9501F315541E6EF7A0886A83C41E02EC1EF1D315541E6EF7A0886A83C41B33FC7E51B3155417C6AB0236AA83C410DC0A8E91B3155411A70C8616AA83C412ABBD73B21315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1003, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000E0000007FE51DB69BA83C41336B438B203155417FE51DB69BA83C412DF8DA1A2131554162026916B3A83C410DB98E242131554115032C1EB3A83C417B63E2352031554149A9AB3CAFA83C417B63E23520315541B0AA314CAFA83C41E12EE2511F315541E205383DB3A83C41C9CEE9501F31554159886258B3A83C411AA6BB8E1D3155419C5812C0ABA83C415CC6A4911D3155419C5812C0ABA83C41FC0143C31E315541A9E76EDEA6A83C4129C233C51E3155414F678DDAA6A83C4173269D921D31554118E497A69BA83C4173269D921D3155417FE51DB69BA83C41336B438B20315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1004, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000005DC36E06CCA83C419A9BB14021315541E5C6C1B5D1A83C41999BB14021315541FEC80ACDD1A83C4187E4447D1D315541D1459921CCA83C415924547B1D3155415DC36E06CCA83C419A9BB14021315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1005, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000B00000056A6B8592EA93C414D01044424315541ABB8964545A93C41F380224024315541ACB8964545A93C41C96261F222315541AF0310733DA93C4123E342F622315541AF0310733DA93C41483089C320315541A70F0B0849A93C41EEAFA7BF20315541400E85F848A93C418E8D54431F315541E407A2A13DA93C41E70D36471F315541E407A2A13DA93C4125C2F1001C31554156A6B8592EA93C4117414DF51B31554156A6B8592EA93C414D01044424315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1006, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000090000006C7CBADC0CA83C4121486FCB21315541CD4560A120A83C41BA46E9BB21315541FE42548220A83C410146A22B1C3155413A7FC6FB0CA83C410FC746371C315541D37D40EC0CA83C418071DC0C1E315541ADAF5D241AA83C41CB7019051E315541ADAF5D241AA83C412420041120315541D37D40EC0CA83C4180A0E514203155416C7CBADC0CA83C4121486FCB21315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1007, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000030D8209A95A83C419573A19B183155412D1AC384A3A83C419373A19B18315541471C0C9CA3A83C41C3A6B8491531554130D8209A95A83C411F279A4D1531554130D8209A95A83C419573A19B18315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1008, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000006BE8B56EACA83C412D721B8C1831554117247D13BAA83C4179715884183155413326C62ABAA83C41FEE74D57153155416AE8B56EACA83C418428205D153155416BE8B56EACA83C412D721B8C18315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1009, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000307A0E8A91A83C4140EE208C0A315541307A0E8A91A83C4108700C28103155412178CD839CA83C4161F0ED2B10315541567C5FB29CA83C4141EE208C0A315541307A0E8A91A83C4140EE208C0A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1010, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000977B949991A83C418128DE981231554159CA0443C1A83C41CD271B911231554127CD1062C1A83C415976E76D10315541307A0E8A91A83C41B1F6C87110315541977B949991A83C418128DE9812315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1011, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000006FDA81E4B6A83C41556F4920103155415ED1A290C1A83C41FBEE671C1031554161D840DEC1A83C410370889F0A315541D6DB07F4B6A83C415CF069A30A3155416FDA81E4B6A83C41556F492010315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1012, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000005475C1649CA83C41201B5DF406315541BC907EA4A8A83C416D1A9AEC06315541589696E2A8A83C41A998F01404315541A074FE5C9CA83C412FD9C21A043155415475C1649CA83C41201B5DF406315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1013, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000001E09111ACA83C416B1A9AEC0631554127E2E239B7A83C4199DA8AEE063155415DE67468B7A83C41D558E11604315541B5E05419ACA83C414F180F110431554101E09111ACA83C416B1A9AEC06315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1014, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004F6E23179CA83C41B2485C6403315541229204B4A8A83C4166491F6C0331554189938AC3A8A83C41CB4A63B7003155416A706C2E9CA83C41164AA0AF003155414F6E23179CA83C41B2485C6403315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1015, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000CFE29D30ACA83C41A08AB479033155419BF84232B8A83C41CD4AA57B033155411CFC1159B8A83C413689ECA500315541E9E4E647ACA83C410AC9FBA300315541CFE29D30ACA83C41A08AB47903315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1016, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000002FEDF2718BA83C417EB010D0FC30554115D6D78295A83C4124302FCCFC30554131D8209A95A83C413E9E0042F930554115EBA95A8BA83C41311D5C36F93055412FEDF2718BA83C417EB010D0FC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1017, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000E436F6B199A83C41CAAF4DC8FC305541D1FE0D56A2A83C41712F6CC4FC3055412105E99BA2A83C41C5DED247F9305541653AC5D899A83C41971EE245F9305541E436F6B199A83C41CAAF4DC8FC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1018, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000FF817F01A8A83C41446F7BC2FC3055411361BAA5B1A83C4163AEC7B8FC305541FC650FDCB1A83C411E5FB44BF930554166830511A8A83C41F19EC349F9305541FF817F01A8A83C41446F7BC2FC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1019, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000001ED4A69EB6A83C4164AEC7B8FC3055418E9F8D69BFA83C4163AEC7B8FC3055417BAB80EDBFA83C414B1FA54DF930554170DA81E4B6A83C411E5FB44BF93055411ED4A69EB6A83C4164AEC7B8FC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1020, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000500000068158681C4A83C41DD6DF5B2FC30554146F02EF7CDA83C4137EED6B6FC30554165F9155CCEA83C414B1FA54DF9305541E91855A8C4A83C414B1FA54DF930554168158681C4A83C41DD6DF5B2FC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1021, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000006000000E6BBDD5281A83C410FD98FADEC3055414CBD636281A83C417A10BD12EF305541370BF9D08FA83C412090DB0EEF305541020767A28FA83C411E68ECCBE730554149B6C51481A83C4111E747C0E7305541E6BBDD5281A83C410FD98FADEC305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1022, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004627710791A83C41C70FFA0AEF3055416EC28040B4A83C4111C80015EF305541812FBF2DB4A83C418D2B72E8EB305541782465E890A83C41D0C6C1E3EB3055414627710791A83C41C70FFA0AEF305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1023, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000036A3DF0B5A83C419D7488FAEE305541A7AF674FD9A83C412E11801AEF30554174B2736ED9A83C41B3ECE386ED305541219B50DAB5A83C4119F63D62ED305541036A3DF0B5A83C419D7488FAEE305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1024, 1, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000DE25EBF790A83C411ABF608EEB305541A2CF414E98A83C41C13E7F8AEB3055416CCBAF1F98A83C4111B83EB8E5305541A92159C990A83C4110B83EB8E5305541DE25EBF790A83C411ABF608EEB305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1025, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000A9FAE07CD1A83C41A264A12DED305541A6AF674FD9A83C4149E4BF29ED30554142B57F8DD9A83C416F6EC711E8305541AAFAE07CD1A83C416F6EC711E8305541A9FAE07CD1A83C41A264A12DED305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1026, 1, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000080000007B6AB49EC4A83C41DDC70F00ED3055415B75A424D0A83C413321FBFCEC305541C7D4BED9CFA83C41A4A16248EA305541A1D26DB1C4A83C41FD21444CEA305541D4279898C4A83C414C53ACE5EB30554121D46304B6A83C41343C37E6EB30554109752A06B6A83C4162299EF8EC3055417B6AB49EC4A83C41DDC70F00ED305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1027, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000007000000E81F573A9EA83C416A5F58182B3155414B1160A8A8A83C41971F491A2B31554197109DA0A8A83C41D08849E22C3155411ABBB6FEAFA83C41FD483AE42C31554150BF482DB0A83C41CE9D9F42283155419C201A429EA83C41A1DDAE4028315541E81F573A9EA83C416A5F58182B315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1028, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000E01AFAF292A83C415870661F34315541CB33BB35B5A83C41F16EE00F34315541CF3A5983B5A83C41CB73B1BD2E3155414215E2B492A83C411773EEB52E315541E01AFAF292A83C415870661F34315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1029, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000009753A5568AA83C41E5F7710A45315541A3EB4D27BDA83C4182FD8948453155412010EABABEA83C419EE046F938315541D25ED5D28AA83C41EBDF83F1383155419753A5568AA83C41E5F7710A45315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1030, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '010300002091080000010000000C0000007B4A2B50CCA83C4149685AF554315541B5555BCCCCA83C41A354061C5431554199DD118CBCA83C416D5074ED533155415FD2E10FBCA83C412D8E7C98563155416D64ED108BA83C41C185583B56315541F396C53F8DA83C4128E093134F315541A9E7CB1AD3A83C418ADA7BD54E315541F50E74CDD4A83C41A86483BD493155412358E25969A83C413C5C5F6049315541E94CB2DD68A83C415DDB46EE59315541413FFBD3CBA83C41FAE05E2C5A3155417B4A2B50CCA83C4149685AF554315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1031, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '01030000209108000001000000050000004618243924A83C4196D4B8C26F315541D08E8BC127A93C41D0DFE83E7031554145A5EBB928A93C41AEB0D72563315541802354B524A83C4173A5A7A9623155414618243924A83C4196D4B8C26F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1032, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000020B4A9AF6A83C41B6522B9354315541994B20BBF8A83C4128E9F8A24231554158D2F189B5A93C411960CEF042315541A37FC604B4A93C415CA995D053315541020B4A9AF6A83C41B6522B9354315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (1033, 1, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.235058', '0103000020910800000100000005000000B9522B1575A93C417396CD1D4131554158D2F189B5A93C41A7AF2D5841315541F012C8AAB7A93C415E5B1CEA313155416EA5569A76A93C41F4285C7531315541B9522B1575A93C417396CD1D41315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2001, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000FB0DA8AB6BA83C4167030B97213155413A8A8B2B87A83C4167030B9721315541558CD44287A83C41D248AE4A1C315541C609167D6BA83C41FF089F4C1C315541FB0DA8AB6BA83C4167030B9721315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2002, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000080000001489153E9DA83C416624D80323315541AE878F2E9DA83C4127CEAAD124315541A1416B37A5A83C41DACE6DD92431554170447756A5A83C414787BBC1213155416F6303BDB1A83C41FB877EC9213155413D660FDCB1A83C41366B438B20315541628852369DA83C41AF2A7185203155411489153E9DA83C416624D80323315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2003, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000772E37A2D0A83C41C57C6FAF2231554142E46BBAD7A83C4110DE7BAD22315541F7D1B2B2D7A83C410DB2F0D620315541B5ACCF8ED0A83C416632D2DA20315541772E37A2D0A83C41C57C6FAF22315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2004, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003897AF1E28A93C415A5857A426315541C8139BAF4EA93C415A5857A4263155416519B3ED4EA93C4170844C7C1D3155413897AF1E28A93C413F87589B1D3155413897AF1E28A93C415A5857A426315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2005, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000901BBDFA92A83C413522A83D1931554180E266C2BCA83C418FA289411931554119E1E0B2BCA83C419A3884AD14315541901BBDFA92A83C4140B8A2A914315541901BBDFA92A83C413522A83D19315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2006, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000900000071EA6ADB90A83C415149C4560A3155410EF0821991A83C41FD0A01B512315541CE608337C2A83C41718D2BD0123155413E7045E2C2A83C412ECD74810A315541234F7064B6A83C41D34C937D0A31554187495826B6A83C416550E62C10315541B70196EC9CA83C41BFD0C73010315541230ABA499DA83C41064A875E0A31554171EA6ADB90A83C415149C4560A315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2007, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000500000037D65B0B9BA83C41B3806D3307315541B38F842EB9A83C414D7FE7230731554187992E9BB9A83C41ECE45278003155416CDAED399BA83C4139E48F700031554137D65B0B9BA83C41B3806D3307315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2008, 2, NULL, 1, 5, 1001, 103, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000007C515C3F8AA83C417C19F035FD3055415B911A60CFA83C416117A71EFD305541C7993EBDCFA83C418BB688EFF8305541DF4B44018AA83C4170B43FD8F83055417C515C3F8AA83C417C19F035FD305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2009, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000D0000008221CD2F80A83C41A1B39338EF305541C349B56ADAA83C4155B45640EF305541604FCDA8DAA83C414F066EBBE73055416966E897D0A83C41B707F4CAE73055416966E897D0A83C41BF3D9B20EA3055417C3B69ADC3A83C4165BDB91CEA305541E43CEFBCC3A83C416D5F2B95EB305541B563772B99A83C41EB5B5C6EEB30554171DE40F198A83C418F92007FE53055412E8A54C58FA83C41A6F2F87FE5305541C788CEB58FA83C411A02DC8CE73055411619A9D27FA83C411A02DC8CE73055418221CD2F80A83C41A1B39338EF305541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2010, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000070000009301B41E0DA83C415FB6485229315541A6C4768C15A83C415FB64852293155413EC3F07C15A83C41E26941042631554127E7D11922A83C4189E95F00263155418EE8572922A83C4154BD6217243155415DFD21F00CA83C4107BE251F243155419301B41E0DA83C415FB6485229315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2011, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000273225049FA83C415DDEB30C2B315541B7F1184BA7A83C415EDEB30C2B3155416BF2DB52A7A83C410ADF345028315541DB32E80B9FA83C4109DF345028315541273225049FA83C415DDEB30C2B315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2012, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002122A862A9A83C41379F25522831554189232E72A9A83C4123C589B92C31554174A76225AFA83C4123C589B92C3155410CA6DC15AFA83C41635F1654283155412122A862A9A83C41379F255228315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2013, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002334660A94A83C41B3FE41FA31315541EB4E6042A0A83C413A3F140032315541844DDA32A0A83C41E675FAD42E31554107321DF393A83C41B9B509D32E3155412334660A94A83C41B3FE41FA31315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2014, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003FACAF4AA4A83C41C17FE60532315541EB1437E0B3A83C41B4FE41FA313155413C1B1226B4A83C417B3771E62E315541A2A6970CA4A83C417B3771E62E3155413FACAF4AA4A83C41C17FE60532315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2015, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000B72B42AD93A83C41DBA99AD733315541652534ACB3A83C41D1736DD2333155411C122BC1B3A83C41D307295F32315541852E4ECC93A83C412D880A6332315541B72B42AD93A83C41DBA99AD733315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2016, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000004F8371668CA83C418EA17E8B3E315541C73EDB8F9FA83C418FA17E8B3E315541024A0B0CA0A83C4191293D5C39315541898EA1E28CA83C41F82AC36B393155414F8371668CA83C418EA17E8B3E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2017, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002122A862A9A83C412CA796C93E31554158C4A574BBA83C4193A81CD93E315541CDDA056DBCA83C41F82AC36B393155412122A862A9A83C41F92AC36B393155412122A862A9A83C412CA796C93E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2018, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000888EA1E28CA83C41332D149444315541F02D93D59EA83C41B430E3BA44315541BF309FF49EA83C41B6B8A18B3F315541919CDD7D8DA83C4103B8DE833F315541888EA1E28CA83C41332D149444315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2019, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000004A1160A8A8A83C41E93475E944315541E2AD457CBAA83C413734B2E144315541BABE8D36BBA83C419FBDF6C13F315541F024B481A9A83C41ECBC33BA3F3155414A1160A8A8A83C41E93475E944315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2020, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000009ACC05AD8FA83C41E8D7F8584E31554186AFDBADD0A83C417515369D4E315541E9A9C36FD0A83C419BAD79204A31554175F288D28FA83C411D3817D6493155419ACC05AD8FA83C41E8D7F8584E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2021, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000007FE8F1597CA83C411E55CB7254315541C8F4BCDB89A83C4116D7B75F5431554189838B3D8BA83C41A04A82D6493155413334F8A47CA83C418B38E0F5493155417FE8F1597CA83C411E55CB7254315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2022, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000007000000A3B112627DA83C41579FC3C854315541D13DEF7B7DA83C416E24CABC5931554158B551CFA6A83C41946081F15931554132DBD4F4A6A83C41FB5E307B573155411B5D5A5589A83C4174B1EE6157315541F7FDED8A89A83C41323CACD354315541A3B112627DA83C41579FC3C854315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2023, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000007000000C48C0086A9A83C41AB7223D2593155410DEB9230C8A83C4116190DD55931554147F6C2ACC8A83C4165A0089E543155416A37926DC0A83C41FE9E828E543155418D3F5012C0A83C410B784BAC5731554150FC637BA9A83C4185BD18A557315541C48C0086A9A83C41AB7223D259315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2024, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000001DA11A816CA83C41AF1787C5593155413FD02B9A79A83C41481601B65931554179DB5B167AA83C4134ACF3104A315541BAA632BF6CA83C41CDAA6D014A3155411DA11A816CA83C41AF1787C559315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2025, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000ED82ECD428A83C411000B1DF6E315541F8D5DE8A42A83C41AD05C91D6F315541A7F76EFF43A83C41501B5EFD643155419CA47C492AA83C41E819D8ED64315541ED82ECD428A83C411000B1DF6E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2026, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000E4832C5D81A83C414604430E6F315541100F0F809DA83C41DF02BDFE6E315541D703DF039DA83C41C02A20A8653155410C73E4A280A83C4159299A9865315541E4832C5D81A83C414604430E6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2027, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000A7548091ABA83C414504430E6F3155416680CA94C3A83C41AD05C91D6F31554115A25A09C5A83C4189268E7965315541D04338D7AAA83C415322FC4A65315541A7548091ABA83C414504430E6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2028, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '010300002091080000010000000500000029511EC9EDA83C4115074F2D6F3155417578C67BEFA83C41C8385C436631554125B5F3EBD0A83C41262CA6B765315541D98D4B39CFA83C41770137EF6E31554129511EC9EDA83C4115074F2D6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2029, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000003A64B7ABF9A83C41780137EF6E315541A7A8B2CF1DA93C41DF02BDFE6E315541CF976A151DA93C41643E7481663155411075FF65FAA83C412F3AE252663155413A64B7ABF9A83C41780137EF6E315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2030, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000154E28CB52A83C41AD05C91D6F3155416AC8C2336EA83C417C08D53C6F31554141D90AEE6EA83C415422FC4A65315541886488C353A83C41B61CE40C65315541154E28CB52A83C41AD05C91D6F315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2031, 2, NULL, 1, 5, 1001, 102, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000002F9EEE1D40A83C4111B98E242131554135FAC7385AA83C416C3970282131554135FAC7385AA83C413B8099EB1B315541309EEE1D40A83C41877FD6E31B3155412F9EEE1D40A83C4111B98E2421315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2032, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '0103000020910800000100000005000000137AA177FBA83C4179BBEA34533155418CA82234FEA83C4121DEAE14443155418B106F574CA93C41ECC44EDA43315541E5466E844AA93C41E3EDAAA953315541137AA177FBA83C4179BBEA3453315541'); +INSERT INTO buildings_bulk_load.bulk_load_outlines (bulk_load_outline_id, supplied_dataset_id, external_outline_id, bulk_load_status_id, capture_method_id, capture_source_id, suburb_locality_id, territorial_authority_id, begin_lifespan, shape) VALUES (2033, 2, NULL, 1, 5, 1001, 101, 10001, '2019-06-18 08:20:36.246744', '01030000209108000001000000050000006CBF296F71A93C41DB6FCA85523155419D2603DC7AA93C411B2C2893343155410C3FF0E3B1A93C415FCEB27F3431554192106F27AFA93C411F125572523155416CBF296F71A93C41DB6FCA8552315541'); -- buildings_bulk_load.added diff --git a/db/tests/testdata/plugin/buildings_reference.sql b/db/tests/testdata/plugin/buildings_reference.sql index 0c1ec988..734877e8 100644 --- a/db/tests/testdata/plugin/buildings_reference.sql +++ b/db/tests/testdata/plugin/buildings_reference.sql @@ -62,10 +62,10 @@ INSERT INTO buildings_reference.shelter_points (shelter_points_id, external_shel -- buildings_reference.suburb_locality -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (101, 101, 'Kelburn', '010600002091080000010000000103000000010000000500000066CEB1BCE2A93C41897FD94E1E315541B8C07DEFDDA73C4153A0BCF81F315541EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B31554166CEB1BCE2A93C41897FD94E1E315541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (102, 102, 'Aro Valley', '010600002091080000010000000103000000010000000500000062B26B4CADA83C419541DA4D1F31554157B126DEADA83C415EEB31D0EC30554130ECB486DFA73C417A89315EED305541B8C07DEFDDA73C4153A0BCF81F31554162B26B4CADA83C419541DA4D1F315541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (103, 103, 'Newtown', '010600002091080000010000000103000000010000000500000057B126DEADA83C415EEB31D0EC30554162B26B4CADA83C419541DA4D1F31554166CEB1BCE2A93C41897FD94E1E315541E08618B0E4A93C41AD1B4CFAEB30554157B126DEADA83C415EEB31D0EC305541'); -INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, name, shape) VALUES (104, 104, 'Hokowhitu', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (101, 101, 'Kelburn', 'Wellington', '010600002091080000010000000103000000010000000500000066CEB1BCE2A93C41897FD94E1E315541B8C07DEFDDA73C4153A0BCF81F315541EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B31554166CEB1BCE2A93C41897FD94E1E315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (102, 102, 'Aro Valley', 'Wellington', '010600002091080000010000000103000000010000000500000062B26B4CADA83C419541DA4D1F31554157B126DEADA83C415EEB31D0EC30554130ECB486DFA73C417A89315EED305541B8C07DEFDDA73C4153A0BCF81F31554162B26B4CADA83C419541DA4D1F315541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (103, 103, 'Newtown', 'Wellington', '010600002091080000010000000103000000010000000500000057B126DEADA83C415EEB31D0EC30554162B26B4CADA83C419541DA4D1F31554166CEB1BCE2A93C41897FD94E1E315541E08618B0E4A93C41AD1B4CFAEB30554157B126DEADA83C415EEB31D0EC305541'); +INSERT INTO buildings_reference.suburb_locality (suburb_locality_id, external_suburb_locality_id, suburb_locality, town_city, shape) VALUES (104, 104, 'Hokowhitu', 'Palmerston North', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); -- buildings_reference.swamp_polygons @@ -76,8 +76,3 @@ INSERT INTO buildings_reference.swamp_polygons (swamp_polygon_id, external_swamp INSERT INTO buildings_reference.territorial_authority (territorial_authority_id, external_territorial_authority_id, name, shape) VALUES (10002, 10002, 'Manawatu-Whanganui', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); INSERT INTO buildings_reference.territorial_authority (territorial_authority_id, external_territorial_authority_id, name, shape) VALUES (10001, 10001, 'Wellington', '0106000020910800000100000001030000000100000007000000652E991C93A73C411D143F0A86315541C2F4C8A1C6A73C415F6B699ED3315541B4EDA920F9A93C415A63FDC3D33155419BAA7B1333AA3C411D1A1C7F863155419BC2EFE634AA3C411A459E65DA30554165460DF094A73C411A4B7BDADA305541652E991C93A73C411D143F0A86315541'); - --- buildings_reference.town_city - -INSERT INTO buildings_reference.town_city (town_city_id, external_city_id, name, shape) VALUES (1001, 1001, 'Wellington', '0106000020910800000100000001030000000100000005000000EBBFD613DBA73C41E6696DE47A3155417ECF8220DFA93C41692FC9727B315541E08618B0E4A93C41AD1B4CFAEB30554130ECB486DFA73C417A89315EED305541EBBFD613DBA73C41E6696DE47A315541'); -INSERT INTO buildings_reference.town_city (town_city_id, external_city_id, name, shape) VALUES (1002, 1002, 'Palmerston North', '010600002091080000010000000103000000010000000500000025FC5C6832AA3C41FCB6751C8631554125FC5C6832AA3C41E86F6C4BDA305541E3B2A05848AB3C41E86F6C4BDA305541E3B2A05848AB3C41E191179B8531554125FC5C6832AA3C41FCB6751C86315541'); From 830d8d46564e96a839fd05b929d59e8d97df6a6e Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Wed, 11 Sep 2024 18:01:38 +1200 Subject: [PATCH 07/19] feat: add api keys to config file --- buildings/gui/reference_data.py | 47 +++++++++------------- buildings/gui/reference_data.ui | 70 --------------------------------- buildings/utilities/config.py | 1 + 3 files changed, 19 insertions(+), 99 deletions(-) diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index 47268604..40dd0739 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -13,6 +13,16 @@ from buildings.sql import buildings_bulk_load_select_statements as bulk_load_select from buildings.sql import buildings_reference_select_statements as reference_select from buildings.utilities import database as db +from buildings.utilities.warnings import buildings_warning +from buildings.utilities.config import read_config_file + +try: + DB_CONFIG = read_config_file()["api"] +except RuntimeError as error: + buildings_warning("Config file error", str(error), "critical") + raise error +API_KEY_LINZ = DB_CONFIG["linz"] +API_KEY_STATSNZ = DB_CONFIG["statsnz"] __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) FORM_CLASS, _ = uic.loadUiType( @@ -26,45 +36,34 @@ def __init__(self, dockwidget, parent=None): super(UpdateReferenceData, self).__init__(parent) self.setupUi(self) self.dockwidget = dockwidget + self.api_key = "" self.db = db self.db.connect() self.error_dialog = None self.message = "" self.msgbox = self.message_box() - self.btn_view_key.setIcon( - QIcon(os.path.join(__location__, "..", "icons", "view_password.png")) - ) # disable all check boxes if a curret dataset exists sql = bulk_load_select.supplied_dataset_latest_id_and_dates result = self.db.execute_return(sql) if result is None: self.enable_checkboxes() - self.le_key.setDisabled(1) - self.btn_view_key.setDisabled(1) else: result = result.fetchone() process = result[1] transfer = result[2] if process is not None and transfer is not None: self.enable_checkboxes() - self.le_key.setDisabled(1) - self.btn_view_key.setDisabled(1) else: self.disable_checkboxes() # set up signals and slots - self.btn_view_key.pressed.connect(self.view_key) - self.btn_view_key.released.connect(self.hide_key) - self.le_key.editingFinished.connect(self.hide_key) self.grbx_topo.toggled.connect(self.check_all_topo) self.grbx_admin.toggled.connect(self.check_all_admin) self.btn_exit.clicked.connect(self.exit_clicked) self.btn_update.clicked.connect( partial(self.update_clicked, commit_status=True) ) - for box in self.grbx_topo.findChildren(QCheckBox): - box.clicked.connect(self.chbx_clicked) def close_cursor(self): self.db.close_cursor() @@ -96,7 +95,6 @@ def enable_checkboxes(self): def disable_checkboxes(self): """Disable frame (when outlines dataset in progress)""" - self.le_key.setDisabled(1) self.grbx_topo.setDisabled(1) self.grbx_admin.setDisabled(1) self.chbx_canals.setDisabled(1) @@ -113,23 +111,12 @@ def disable_checkboxes(self): self.chbx_suburbs.setDisabled(1) self.chbx_town.setDisabled(1) self.chbx_ta.setDisabled(1) - self.btn_view_key.setDisabled(1) self.btn_update.setDisabled(1) # add message self.lb_message.setText( "\nNOTE: You can't update reference data with\n a dataset in progress \n" ) - @pyqtSlot() - def view_key(self): - """Called when view key button pressed""" - self.le_key.setEchoMode(QLineEdit.Normal) - - @pyqtSlot() - def hide_key(self): - """Called when view key button released/editing of text finished""" - self.le_key.setEchoMode(QLineEdit.Password) - @pyqtSlot() def update_clicked(self, commit_status=True): """Called when update btn clicked""" @@ -137,7 +124,6 @@ def update_clicked(self, commit_status=True): QApplication.setOverrideCursor(Qt.WaitCursor) # setup self.message = "" - self.api_key = self.le_key.text() self.updates = [] # canals if self.chbx_canals.isChecked(): @@ -301,7 +287,6 @@ def check_all_topo(self): for box in self.grbx_topo.findChildren(QCheckBox): box.setChecked(False) box.setEnabled(1) - self.chbx_clicked() @pyqtSlot() def chbx_clicked(self): @@ -343,7 +328,7 @@ def request_error(self): "\n ---------------------- REQUEST ERROR ---------" "----------------- \n\nSomething appears to have gone" " wrong with requesting the changeset, first please" - " check you entered the correct api key if this is correct" + " check you entered the correct api key in config file" " then please inform a developer." ) self.error_dialog.show() @@ -351,15 +336,19 @@ def request_error(self): def topo_layer_processing(self, layer): """Processes to run for all topo layers""" - if not self.check_api_key(): + if not self.check_api_key(layer): return status = topo50.update_topo50(self.api_key, layer) self.update_message(status, "{}_polygons".format(layer)) if status != "error": self.updates.append(layer) - def check_api_key(self): + def check_api_key(self, layer): # check for API key + if layer in DATASET_LINZ: + self.api_key = API_KEY_LINZ + elif layer in DATASET_STATSNZ: + self.api_key = API_KEY_STATSNZ if self.api_key == "": self.error_dialog = ErrorDialog() self.error_dialog.fill_report( diff --git a/buildings/gui/reference_data.ui b/buildings/gui/reference_data.ui index f0ae3178..3307e011 100644 --- a/buildings/gui/reference_data.ui +++ b/buildings/gui/reference_data.ui @@ -58,69 +58,6 @@ - - - - - - Kx API Key: - - - - - - - QLineEdit::Password - - - - - - - - 30 - 16777215 - - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - @@ -251,13 +188,6 @@ - - - - Town City - - - diff --git a/buildings/utilities/config.py b/buildings/utilities/config.py index 1ae7b088..6edc15f2 100644 --- a/buildings/utilities/config.py +++ b/buildings/utilities/config.py @@ -11,6 +11,7 @@ CONFIG_FILE_PATH = os.path.join(QgsApplication.qgisSettingsDirPath(), "buildings", "config.ini") CONFIG_SCHEMA = { "database": ["host", "port", "dbname", "user", "password"], + "api": ["linz", "statsnz"], "logging": ["logfile"] } From a70c6a1495aa2a69c7b71545849e45c02e70ad23 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Wed, 11 Sep 2024 18:08:20 +1200 Subject: [PATCH 08/19] feat: update processes for update reference via WFS --- buildings/gui/bulk_load_changes.py | 2 +- buildings/gui/production_changes.py | 2 +- buildings/gui/reference_data.py | 141 ++++--------- buildings/reference_data/admin_bdys.py | 194 ++++++++++++++++++ buildings/reference_data/topo50.py | 80 +++++--- .../buildings_reference_select_statements.py | 14 ++ .../tests/gui/test_setup_reference_data.py | 10 - .../functions/reference_update_log.sql | 20 +- .../functions/suburb_locality.sql | 96 +++++++++ .../functions/suburb_locality@v4.0.0-dev1.sql | 42 ++++ .../functions/territorial_authority.sql | 142 ++++++------- .../territorial_authority@v4.0.0-dev1.sql | 169 +++++++++++++++ .../functions/suburb_locality.sql | 122 +---------- .../functions/suburb_locality@v4.0.0-dev1.sql | 160 +++++++++++++++ .../functions/territorial_authority.sql | 18 +- .../territorial_authority@v4.0.0-dev1.sql | 173 ++++++++++++++++ db/sql/sqitch.plan | 2 + .../functions/reference_update_log.sql | 11 + .../functions/suburb_locality.sql | 14 +- .../functions/suburb_locality@v4.0.0-dev1.sql | 21 ++ .../functions/territorial_authority.sql | 36 +++- .../territorial_authority@v4.0.0-dev1.sql | 28 +++ 22 files changed, 1138 insertions(+), 359 deletions(-) create mode 100644 buildings/reference_data/admin_bdys.py create mode 100644 db/sql/deploy/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql create mode 100644 db/sql/deploy/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql create mode 100644 db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql create mode 100644 db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql create mode 100644 db/sql/verify/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql create mode 100644 db/sql/verify/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql diff --git a/buildings/gui/bulk_load_changes.py b/buildings/gui/bulk_load_changes.py index 563a1fbb..4c4ab99a 100644 --- a/buildings/gui/bulk_load_changes.py +++ b/buildings/gui/bulk_load_changes.py @@ -77,7 +77,7 @@ def populate_edit_comboboxes(self): ) self.edit_dialog.ids_suburb = [] for (id_suburb, suburb_locality, town_city) in result.fetchall(): - if name is not None: + if suburb_locality is not None: self.edit_dialog.cmb_suburb.addItem(suburb_locality) self.edit_dialog.cmb_town.addItem(town_city) self.edit_dialog.ids_suburb.append(id_suburb) diff --git a/buildings/gui/production_changes.py b/buildings/gui/production_changes.py index 8ff398ee..7ffa0332 100644 --- a/buildings/gui/production_changes.py +++ b/buildings/gui/production_changes.py @@ -91,7 +91,7 @@ def populate_edit_comboboxes(self): ) self.edit_dialog.ids_suburb = [] for (id_suburb, suburb_locality, town_city) in result.fetchall(): - if name is not None: + if suburb_locality is not None: self.edit_dialog.cmb_suburb.addItem(suburb_locality) self.edit_dialog.cmb_town.addItem(town_city) self.edit_dialog.ids_suburb.append(id_suburb) diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index 40dd0739..b281ade1 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -9,7 +9,7 @@ from qgis.PyQt.QtGui import QIcon from buildings.gui.error_dialog import ErrorDialog -from buildings.reference_data import topo50 +from buildings.reference_data import topo50, admin_bdys from buildings.sql import buildings_bulk_load_select_statements as bulk_load_select from buildings.sql import buildings_reference_select_statements as reference_select from buildings.utilities import database as db @@ -29,6 +29,22 @@ os.path.join(os.path.dirname(__file__), "reference_data.ui") ) +DATASET_LINZ = [ + "canal_polygons", + "lagoon_polygons", + "lake_polygons", + "pond_polygons", + "river_polygons", + "swamp_polygons", + "hut_points", + "shelter_points", + "bivouac_points", + "protected_areas_polygons", + "coastlines and islands", + "suburb_locality", +] +DATASET_STATSNZ = ["territorial_authority"] + class UpdateReferenceData(QFrame, FORM_CLASS): def __init__(self, dockwidget, parent=None): @@ -87,7 +103,6 @@ def enable_checkboxes(self): self.chbx_bivouacs.setEnabled(1) self.chbx_protected_areas.setEnabled(1) self.chbx_suburbs.setEnabled(1) - self.chbx_town.setEnabled(1) self.chbx_ta.setEnabled(1) self.btn_update.setEnabled(1) # clear message @@ -109,7 +124,6 @@ def disable_checkboxes(self): self.chbx_bivouacs.setDisabled(1) self.chbx_protected_areas.setDisabled(1) self.chbx_suburbs.setDisabled(1) - self.chbx_town.setDisabled(1) self.chbx_ta.setDisabled(1) self.btn_update.setDisabled(1) # add message @@ -125,6 +139,8 @@ def update_clicked(self, commit_status=True): # setup self.message = "" self.updates = [] + if self.db._open_cursor is None: + self.db.open_cursor() # canals if self.chbx_canals.isChecked(): self.topo_layer_processing("canal_polygons") @@ -158,89 +174,12 @@ def update_clicked(self, commit_status=True): # coastlines and islands (placeholder) if self.chbx_coastline_and_islands.isChecked(): self.message += "The coastlines and islands table must be updated manually" - if self.db._open_cursor is None: - self.db.open_cursor() # suburb localities if self.chbx_suburbs.isChecked(): - # update building_outlines suburb values (changed, deleted & added) - # delete remove suburbs and update modified suburbs - db.execute_no_commit("SELECT buildings_reference.building_outlines_update_changed_and_deleted_suburb();") - # add new suburbs and update building outlines - db.execute_no_commit("SELECT buildings_reference.building_outlines_update_added_suburb();") - # update messages and log - self.update_message("updated", "suburb_locality") - self.updates.append("suburb_locality") - # town_city - if self.chbx_town.isChecked(): - town_list = [] - # delete existing areas where the external id is no longer in the town_city table - result = db.execute_no_commit( - "SELECT buildings_reference.town_city_delete_removed_areas();" - ) - if result is not None: - town_list.extend(result.fetchone()[0]) - # modify all existing areas to check they are up to date - result = db.execute_no_commit( - "SELECT buildings_reference.town_city_insert_new_areas();" - ) - if result is not None: - town_list.extend(result.fetchone()[0]) - # insert into table ids in nz_localities that are not in town_city - result = db.execute_no_commit( - "SELECT buildings_reference.town_city_update_areas();" - ) - if result is not None: - town_list.extend(result.fetchone()[0]) - # update bulk_load_outlines town/city values - db.execute_no_commit( - "SELECT buildings_bulk_load.bulk_load_outlines_update_all_town_cities(%s);", - (town_list,), - ) - # update building outlines town/city values - db.execute_no_commit( - "SELECT buildings.building_outlines_update_town_city(%s);", (town_list,) - ) - # update messages and log - self.update_message("updated", "town_city") - self.updates.append("town_city") + self.admin_bdy_layer_processing("suburb_locality") # territorial authority and grid if self.chbx_ta.isChecked(): - ta_list = [] - # delete removed TA areas - result = db.execute_no_commit( - "SELECT buildings_reference.territorial_auth_delete_areas();" - ) - if result is not None: - ta_list.extend(result.fetchone()[0]) - # Insert TA areas - result = db.execute_no_commit( - "SELECT buildings_reference.territorial_auth_insert_areas();" - ) - if result is not None: - ta_list.extend(result.fetchone()[0]) - # Update new TA areas - result = db.execute_no_commit( - "SELECT buildings_reference.territorial_auth_update_areas();" - ) - if result is not None: - ta_list.extend(result.fetchone()[0]) - # update bulk_load_outlines territorial authority values - db.execute_no_commit( - "SELECT buildings_bulk_load.bulk_load_outlines_update_all_territorial_authorities(%s);", - (ta_list,), - ) - # update building outlines territorial authority values - db.execute_no_commit( - "SELECT buildings.building_outlines_update_territorial_authority(%s);", - (ta_list,), - ) - # update message and log - self.update_message("updated", "territorial_authority") - self.updates.append("territorial_authority") - # refresh grid - db.execute_no_commit(reference_select.refresh_ta_grid_view) - self.update_message("updated", "territorial_authority_grid") - self.updates.append("territorial_authority_grid") + self.admin_bdy_layer_processing("territorial_authority") # create log for this update if len(self.updates) > 0: @@ -277,36 +216,19 @@ def close_frame(self): @pyqtSlot() def check_all_topo(self): - """ Called when combobox to check all topo layers is toggled""" + """Called when combobox to check all topo layers is toggled""" if self.grbx_topo.isChecked(): for box in self.grbx_topo.findChildren(QCheckBox): box.setChecked(True) box.setEnabled(1) - self.chbx_clicked() else: for box in self.grbx_topo.findChildren(QCheckBox): box.setChecked(False) box.setEnabled(1) - @pyqtSlot() - def chbx_clicked(self): - """Called when topo checkboxes are checked""" - if not self.loop_topo_boxes(): - self.le_key.setDisabled(1) - self.btn_view_key.setDisabled(1) - - def loop_topo_boxes(self): - """loops through topo check boxes returns true if one is checked and enables api key features""" - for box in self.grbx_topo.findChildren(QCheckBox): - if box.isChecked(): - self.le_key.setEnabled(1) - self.btn_view_key.setEnabled(1) - return True - return False - @pyqtSlot() def check_all_admin(self): - """ Called when combobox to check all admin layers is toggled""" + """Called when combobox to check all admin layers is toggled""" if self.grbx_admin.isChecked(): for box in self.grbx_admin.findChildren(QCheckBox): box.setChecked(True) @@ -338,10 +260,23 @@ def topo_layer_processing(self, layer): """Processes to run for all topo layers""" if not self.check_api_key(layer): return - status = topo50.update_topo50(self.api_key, layer) - self.update_message(status, "{}_polygons".format(layer)) + status = topo50.update_topo50(self.api_key, layer, self.db) + self.update_message(status, layer) + if status != "error": + self.updates.append(layer) + + def admin_bdy_layer_processing(self, layer): + """Processes to run for all admin bdy layers""" + if not self.check_api_key(layer): + return + status = admin_bdys.update_admin_bdys(self.api_key, layer, self.db) + self.update_message(status, layer) if status != "error": self.updates.append(layer) + if layer == "territorial_authority": + self.db.execute_no_commit(reference_select.refresh_ta_grid_view) + self.update_message("updated", "territorial_authority_grid") + self.updates.append("territorial_authority_grid") def check_api_key(self, layer): # check for API key diff --git a/buildings/reference_data/admin_bdys.py b/buildings/reference_data/admin_bdys.py new file mode 100644 index 00000000..a7b6187f --- /dev/null +++ b/buildings/reference_data/admin_bdys.py @@ -0,0 +1,194 @@ +from builtins import str + +# script to update canal data + +from buildings.sql import buildings_reference_select_statements as reference_select +from buildings.utilities import database as db +from qgis.core import QgsVectorLayer + +# TODO: review if the filter works +LAYERS = { + "suburb_locality": { + "layer_id": 113764, + "primary_id": "id", + "url_base": "https://data.linz.govt.nz", + "cql_filter": "&cql_filter=type = 'Conservation Land' OR type = 'Island' OR type = 'Locality' OR type ='Suburb'", + }, + "territorial_authority": { + "layer_id": 39939, + "primary_id": "TA_Code", + "url_base": "https://datafinder.stats.govt.nz", + "cql_filter": "", + }, +} + +URI = "{1}/services;key={0}/wfs/layer-{2}-changeset?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typeNames=layer-{2}-changeset&viewparams=from:{3};to:{4}{5}&SRSNAME=EPSG:2193&outputFormat=json" + + +def last_update(column_name): + + # get last update of layer date from log + from_var = db.execute_return( + reference_select.log_select_last_update.format(column_name) + ) + from_var = from_var.fetchone() + if from_var is None: + # default to beginning of 2018 + from_var = ( + "2018-01-01T02:15:47.317439" # TODO: check if we should use another date + ) + else: + from_var = str(from_var[0]).split("+")[0] + from_var = from_var.split(" ") + from_var = from_var[0] + "T" + from_var[1] + return from_var + + +def current_date(): + to_var = db.execute_return("SELECT now();") + to_var = to_var.fetchone()[0] + to_var = str(to_var).split("+")[0] + to_var = to_var.split(" ") + to_var = to_var[0] + "T" + to_var[1] + return to_var + + +# todo: add kx_api_key in config +# todo: combine suburb_locality- and town city +def update_admin_bdys(kx_api_key, dataset, dbconn): + + # get last update of layer date from log + from_var = last_update(dataset) + + # current date + to_var = current_date() + + layer = QgsVectorLayer( + URI.format( + kx_api_key, + LAYERS[dataset]["url_base"], + LAYERS[dataset]["layer_id"], + from_var, + to_var, + LAYERS[dataset]["cql_filter"], + ) + ) + + if not layer.isValid(): + # something went wrong + return "error" + + if layer.featureCount() == 0: + return "current" + + external_id = LAYERS[dataset]["primary_id"] + + ids_updates = [] + ids_attr_updates = [] + + for feature in layer.getFeatures(): + if feature.attribute("__change__") == "DELETE": + sql = "SELECT buildings_reference.{}_delete_by_external_id(%s)".format( + dataset + ) + result = dbconn.execute_no_commit(sql, (feature[external_id],)) + result = result.fetchone() + if result is not None: + ids_updates.append(result[0]) + + elif feature.attribute("__change__") == "UPDATE": + if dataset == "suburb_locality": + result = dbconn.execute_return( + reference_select.suburb_locality_attribute_updates, + ( + feature[external_id], + correct_name_format(feature["name"]), + correct_name_format(feature["major_name"]), + ), + ) + result = result.fetchone() + if result is not None: + ids_attr_updates.append(result[0]) + sql = "SELECT buildings_reference.suburb_locality_update_by_external_id(%s, %s, %s, %s)" + result = dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + correct_name_format(feature["major_name"]), + feature.geometry().asWkt(), + ), + ) + result = result.fetchone() + if result is not None: + ids_updates.append(result[0]) + else: + result = dbconn.execute_return( + reference_select.territorial_authority_attribute_updates, + ( + feature[external_id], + correct_name_format(feature["name"]), + ), + ) + result = result.fetchone() + if result is not None: + ids_attr_updates.append(result[0]) + sql = "SELECT buildings_reference.territorial_authority_update_by_external_id(%s, %s, %s)" + result = dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + feature.geometry().asWkt(), + ), + ) + result = result.fetchone() + if result is not None: + ids_updates.append(result[0]) + + elif feature.attribute("__change__") == "INSERT": + # Check if feature is already in reference table + result = dbconn.execute_return( + reference_select.select_admin_bdy_id_by_external_id.format(dataset), + (feature[external_id],), + ) + result = result.fetchone() + if result is None: + if dataset == "suburb_locality": + sql = "SELECT buildings_reference.suburb_locality_insert(%s, %s, %s, %s)" + dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + correct_name_format(feature["major_name"]), + feature.geometry().asWkt(), + ), + ) + else: + sql = "SELECT buildings_reference.territorial_authority_insert(%s, %s, %s)" + dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + feature.geometry().asWkt(), + ), + ) + print("updated_id {}".format(ids_updates)) + print("updated_attrs {}".format(ids_attr_updates)) + sql = "SELECT buildings_reference.{}_update_building_outlines(%s, %s)".format( + dataset + ) + dbconn.execute_no_commit(sql, (ids_updates, ids_attr_updates)) + + return "updated" + + +def correct_name_format(name): + if name: + if "'" in name: + name = "{}".format(name.replace("'", "''")) + else: + name = "" + return str(name) diff --git a/buildings/reference_data/topo50.py b/buildings/reference_data/topo50.py index 11fa8955..193e8280 100644 --- a/buildings/reference_data/topo50.py +++ b/buildings/reference_data/topo50.py @@ -1,4 +1,5 @@ from builtins import str + # script to update canal data from buildings.sql import buildings_reference_select_statements as reference_select @@ -18,7 +19,15 @@ "protected_areas_polygons": 53564, } -URI = "srsname='EPSG:2193' typename='data.linz.govt.nz:layer-{0}-changeset' url=\"https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?viewparams=from:{2};to:{3}{4}\"" +LDS_LAYER_HAS_NAME = [ + "hut_points", + "shelter_points", + "bivouac_points", + "protected_areas_polygons", +] + +# URI = "srsname='EPSG:2193' typename='data.linz.govt.nz:layer-{0}-changeset' url=\"https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?viewparams=from:{2};to:{3}{4}\"" +URI = "https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typeNames=layer-{0}-changeset&viewparams=from:{2};to:{3}{4}&SRSNAME=EPSG:2193&outputFormat=json" def last_update(column_name): @@ -47,7 +56,7 @@ def current_date(): return to_var -def update_topo50(kx_api_key, dataset): +def update_topo50(kx_api_key, dataset, dbconn): # Get name of column in reference log table if "polygon" in dataset: @@ -76,11 +85,8 @@ def update_topo50(kx_api_key, dataset): external_id = "napalis_id" layer = QgsVectorLayer( - URI.format(LDS_LAYER_IDS[dataset], kx_api_key, from_var, to_var, cql_filter), - "changeset", - "WFS", + URI.format(LDS_LAYER_IDS[dataset], kx_api_key, from_var, to_var, cql_filter) ) - if not layer.isValid(): # something went wrong return "error" @@ -93,45 +99,69 @@ def update_topo50(kx_api_key, dataset): sql = "SELECT buildings_reference.{}_delete_by_external_id(%s)".format( dataset ) - db.execute(sql, (feature.attribute(external_id),)) + dbconn.execute_no_commit(sql, (feature.attribute(external_id),)) elif feature.attribute("__change__") == "INSERT": if "polygon" in dataset: - result = db.execute_return( + result = dbconn.execute_return( reference_select.select_polygon_id_by_external_id.format( column_name ), (feature.attribute(external_id),), ) elif "point" in dataset: - result = db.execute_return( + result = dbconn.execute_return( reference_select.select_point_id_by_external_id.format(column_name), (feature.attribute(external_id),), ) result = result.fetchone() if result is None: - sql = "SELECT buildings_reference.{}_insert(%s, %s, %s)".format(dataset) - db.execute( + if dataset in LDS_LAYER_HAS_NAME: + sql = "SELECT buildings_reference.{}_insert(%s, %s, %s)".format( + dataset + ) + dbconn.execute_no_commit( + sql, + ( + feature.attribute(external_id), + correct_name_format(feature["name"]), + feature.geometry().asWkt(), + ), + ) + else: + sql = "SELECT buildings_reference.{}_insert(%s, %s)".format(dataset) + dbconn.execute_no_commit( + sql, + ( + feature.attribute(external_id), + feature.geometry().asWkt(), + ), + ) + + elif feature.attribute("__change__") == "UPDATE": + if dataset in LDS_LAYER_HAS_NAME: + sql = "SELECT buildings_reference.{}_update_by_external_id(%s, %s, %s)".format( + dataset + ) + dbconn.execute_no_commit( sql, ( feature.attribute(external_id), correct_name_format(feature["name"]), - feature.geometry().exportToWkt(), + feature.geometry().asWkt(), + ), + ) + else: + sql = "SELECT buildings_reference.{}_update_shape_by_external_id(%s, %s)".format( + dataset + ) + dbconn.execute_no_commit( + sql, + ( + feature.attribute(external_id), + feature.geometry().asWkt(), ), ) - - elif feature.attribute("__change__") == "UPDATE": - sql = "SELECT buildings_reference.{}_update_by_external_id(%s, %s, %s)".format( - dataset - ) - db.execute( - sql, - ( - feature.attribute(external_id), - correct_name_format(feature["name"]), - feature.geometry().exportToWkt(), - ), - ) return "updated" diff --git a/buildings/sql/buildings_reference_select_statements.py b/buildings/sql/buildings_reference_select_statements.py index c50a8af7..47815c53 100644 --- a/buildings/sql/buildings_reference_select_statements.py +++ b/buildings/sql/buildings_reference_select_statements.py @@ -126,6 +126,13 @@ AND blo.bulk_load_outline_id = %s; """ +suburb_locality_attribute_updates = """ +SELECT suburb_locality_id +FROM buildings_reference.suburb_locality +WHERE external_suburb_locality_id = %s +AND NOT (suburb_locality = %s AND town_city = %s) +""" + # territorial Authority territorial_authority_intersect_geom = """ @@ -156,6 +163,13 @@ AND blo.bulk_load_outline_id = %s; """ +territorial_authority_attribute_updates = """ +SELECT territorial_authority_id +FROM buildings_reference.territorial_authority +WHERE external_territorial_authority_id = %s +AND NOT name = %s +""" + # territorial authority grid refresh_ta_grid_view = """ diff --git a/buildings/tests/gui/test_setup_reference_data.py b/buildings/tests/gui/test_setup_reference_data.py index 5d6a8d80..5bf44144 100644 --- a/buildings/tests/gui/test_setup_reference_data.py +++ b/buildings/tests/gui/test_setup_reference_data.py @@ -43,7 +43,6 @@ def tearDown(self): def test_disabled_on_start(self): """Test ui options disabled on opening as there is a current dataset""" - self.assertFalse(self.reference_frame.le_key.isEnabled()) self.assertFalse(self.reference_frame.grbx_topo.isEnabled()) self.assertFalse(self.reference_frame.grbx_admin.isEnabled()) self.assertFalse(self.reference_frame.chbx_canals.isEnabled()) @@ -53,16 +52,10 @@ def test_disabled_on_start(self): self.assertFalse(self.reference_frame.chbx_rivers.isEnabled()) self.assertFalse(self.reference_frame.chbx_swamps.isEnabled()) self.assertFalse(self.reference_frame.chbx_suburbs.isEnabled()) - self.assertFalse(self.reference_frame.chbx_town.isEnabled()) self.assertFalse(self.reference_frame.chbx_ta.isEnabled()) self.assertFalse(self.reference_frame.btn_update.isEnabled()) self.assertTrue(self.reference_frame.btn_exit.isEnabled()) - def test_lineedit_key(self): - """Check line edit is in password mode to hide key""" - self.reference_frame.le_key.setText("testing") - self.assertEqual(self.reference_frame.le_key.echoMode(), QLineEdit.Password) - def test_groupbx_check(self): """Check changing of group boxes changes the correct checkboxes""" self.reference_frame.grbx_topo.setChecked(True) @@ -73,7 +66,6 @@ def test_groupbx_check(self): self.assertTrue(self.reference_frame.chbx_rivers.isChecked()) self.assertTrue(self.reference_frame.chbx_swamps.isChecked()) self.assertFalse(self.reference_frame.chbx_suburbs.isChecked()) - self.assertFalse(self.reference_frame.chbx_town.isChecked()) self.assertFalse(self.reference_frame.chbx_ta.isChecked()) self.reference_frame.grbx_topo.setChecked(False) self.assertFalse(self.reference_frame.chbx_canals.isChecked()) @@ -84,7 +76,6 @@ def test_groupbx_check(self): self.assertFalse(self.reference_frame.chbx_swamps.isChecked()) self.reference_frame.grbx_admin.setChecked(True) self.assertTrue(self.reference_frame.chbx_suburbs.isChecked()) - self.assertTrue(self.reference_frame.chbx_town.isChecked()) self.assertTrue(self.reference_frame.chbx_ta.isChecked()) self.assertFalse(self.reference_frame.chbx_canals.isChecked()) self.assertFalse(self.reference_frame.chbx_lagoons.isChecked()) @@ -94,5 +85,4 @@ def test_groupbx_check(self): self.assertFalse(self.reference_frame.chbx_swamps.isChecked()) self.reference_frame.grbx_admin.setChecked(False) self.assertFalse(self.reference_frame.chbx_suburbs.isChecked()) - self.assertFalse(self.reference_frame.chbx_town.isChecked()) self.assertFalse(self.reference_frame.chbx_ta.isChecked()) diff --git a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql index 4181a57c..8031f575 100644 --- a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql @@ -24,18 +24,22 @@ CREATE OR REPLACE FUNCTION buildings_reference.reference_update_log_insert_log(p RETURNS integer AS $$ - INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality) - VALUES(CASE WHEN ('river' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('lake' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('pond' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('swamp' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('lagoon' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('canal' = ANY(p_list)) THEN True ELSE False END, + INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, hut, shelter, bivouac, protected_areas) + VALUES(CASE WHEN ('river_polygon' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lake_polygons' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('pond_polygons' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('swamp_polygons' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('lagoon_polygons' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('canal_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('coastlines_and_islands' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('capture_source_area' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('territorial_authority' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('territorial_authority_grid' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END + CASE WHEN ('suburb_locality' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('hut_points' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('shelter_points' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('bivouac_points' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('protected_areas_polygons' = ANY(p_list)) THEN True ELSE False END ) RETURNING update_id; diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql index 875b6a94..bb34056a 100644 --- a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql @@ -11,6 +11,22 @@ BEGIN; -- params: p_polygon_geometry geometry -- return: integer suburb_locality_id +-- suburb_locality_delete_by_external_id + -- params: integer external_suburb_locality_id + -- return: integer suburb_locality_id + +-- suburb_locality_insert + -- params: integer external_suburb_locality_id, varchar suburb_locality, varchar town_city, varchar geometry + -- return: integer suburb_locality_id + +-- suburb_locality_update_by_external_id + -- params: integer external_suburb_locality_id, varchar suburb_locality, varchar town_city, varchar geometry + -- return: integer suburb_locality_id + +-- suburb_locality_update_building_outlines + -- params: integer[] suburb_locality_id, integer[] suburb_locality_id + -- return: integer building_outline_id + -------------------------------------------- -- Functions @@ -39,4 +55,84 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_reference.suburb_locality_intersect_polygon(geometry) IS 'Return id of suburb/locality with most overlap'; + +-- suburb_locality_delete_by_external_id + -- params: integer external_suburb_locality_id + -- return: integer suburb_locality_id +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_delete_by_external_id(integer) +RETURNS integer AS +$$ + + DELETE FROM buildings_reference.suburb_locality + WHERE external_suburb_locality_id = $1 + RETURNING suburb_locality_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_delete_by_external_id(integer) IS +'Delete from suburb_locality table by external id'; + + +-- suburb_locality_insert + -- params: integer external_suburb_locality_id, varchar suburb_locality, varchar town_city, varchar geometry + -- return: integer suburb_locality_id +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_insert(integer, varchar, varchar, varchar) +RETURNS integer AS +$$ + + INSERT INTO buildings_reference.suburb_locality (external_suburb_locality_id, suburb_locality, town_city, shape) + VALUES ($1, $2, $3, ST_SetSRID(ST_GeometryFromText($4), 2193)) + RETURNING suburb_locality_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_insert(integer, varchar, varchar, varchar) IS +'Insert new entry into suburb_locality table'; + + +-- suburb_locality_update_by_external_id + -- params: integer external_suburb_locality_id, varchar suburb_locality, varchar town_city, varchar geometry + -- return: integer suburb_locality_id +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar) +RETURNS integer AS +$$ + + UPDATE buildings_reference.suburb_locality + SET suburb_locality = $2, + town_city = $3, + shape = ST_SetSRID(ST_GeometryFromText($4), 2193) + WHERE external_suburb_locality_id = $1 + RETURNING suburb_locality_id; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar) IS +'Update suburb_locality table by external id'; + + +-- suburb_locality_update_building_outlines + -- params: integer[] suburb_locality_id, integer[] suburb_locality_id + -- return: integer building_outline_id +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]) +RETURNS integer AS +$$ + UPDATE buildings.building_outlines + SET suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(shape), + last_modified = NOW() + WHERE ( + suburb_locality_id = ANY($1) + AND suburb_locality_id != buildings_reference.suburb_locality_intersect_polygon(shape) + ) + OR suburb_locality_id = ANY($2) + RETURNING building_outline_id; +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]) IS +'Update building_outlines suburb_locality_id value using suburb_locality table'; + + COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql new file mode 100644 index 00000000..875b6a94 --- /dev/null +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql @@ -0,0 +1,42 @@ +-- Deploy nz-buildings:buildings_reference/functions/suburb_locality to pg + +BEGIN; + +-------------------------------------------- +-- buildings_reference.suburb_locality + +-- Functions + +-- suburb_locality_intersect_polygon (id of suburb with most overlap) + -- params: p_polygon_geometry geometry + -- return: integer suburb_locality_id + +-------------------------------------------- + +-- Functions + +-- suburb_locality_intersect_polygon (id of suburb with most overlap) + -- params: p_polygon_geometry geometry + -- return: integer suburb_locality_id + +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT suburb_locality_id + FROM buildings_reference.suburb_locality + WHERE shape && ST_Expand(p_polygon_geometry, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_intersect_polygon(geometry) IS +'Return id of suburb/locality with most overlap'; + +COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql index 0d012677..f17fd960 100644 --- a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql @@ -15,17 +15,21 @@ BEGIN; -- params: p_polygon_geometry geometry -- return: integer territorial_authority_id --- territorial_auth_delete_areas(delete areas no long in admin_bdys) - -- params: - -- return: integer list of TAs deleted +-- territorial_authority_delete_by_external_id + -- params: integer external_territorial_authority_id + -- return: integer territorial_authority_id + +-- territorial_authority_insert + -- params: integer external_territorial_authority_id, varchar territorial_authority, varchar geometry + -- return: integer territorial_authority_id --- territorial_auth_insert_areas(insert new areas from admin_bdys) - -- params: - -- return: integer list of new areas added +-- territorial_authority_update_by_external_id + -- params: integer external_territorial_authority_id, varchar territorial_authority, varchar geometry + -- return: integer territorial_authority_id --- territorial_auth_update_areas(update geometries based on admin_bdys) - -- params: - -- return: integer list of areas updated +-- territorial_authority_update_building_outlines + -- params: integer[] territorial_authority_id, integer[] territorial_authority_id + -- return: integer building_outline_id ---------------------------------------------------------------------------------------------- @@ -79,91 +83,87 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_reference.territorial_authority_intersect_polygon(geometry) IS 'Return id of territorial authority with most overlap'; --- Update Territorial Authority table: +DROP FUNCTION buildings_reference.territorial_auth_delete_areas(); +DROP FUNCTION buildings_reference.territorial_auth_insert_areas(); +DROP FUNCTION buildings_reference.territorial_auth_update_areas(); --- territorial_auth_delete_areas(delete areas no long in admin_bdys) - -- params: - -- return: integer list of TAs deleted -CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_delete_areas() -RETURNS integer[] AS +-- territorial_authority_delete_by_external_id + -- params: integer external_territorial_authority_id + -- return: integer territorial_authority_id +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_delete_by_external_id(integer) +RETURNS integer AS $$ - WITH delete_ta AS ( - DELETE FROM buildings_reference.territorial_authority - WHERE external_territorial_authority_id NOT IN (SELECT DISTINCT - ogc_fid - FROM admin_bdys.territorial_authority) - RETURNING * - ) - SELECT ARRAY(SELECT territorial_authority_id FROM delete_ta); + DELETE FROM buildings_reference.territorial_authority + WHERE external_territorial_authority_id = $1 + RETURNING territorial_authority_id; $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_reference.territorial_auth_delete_areas() IS -'Function to delete the attributes in the buildings_reference territorial_authority table that are not in the admin_bdys schema.'; +COMMENT ON FUNCTION buildings_reference.territorial_authority_delete_by_external_id(integer) IS +'Delete from territorial_authority table by external id'; --- territorial_auth_insert_areas(insert new areas from admin_bdys) - -- params: - -- return: integer list of new areas added -CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_insert_areas() -RETURNS integer[] AS +-- territorial_authority_insert + -- params: integer external_territorial_authority_id, varchar territorial_authority, varchar geometry + -- return: integer territorial_authority_id +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_insert(integer, varchar, varchar) +RETURNS integer AS $$ - WITH insert_ta AS ( - INSERT INTO buildings_reference.territorial_authority (external_territorial_authority_id, name, shape) - SELECT - ogc_fid - , name - , ST_SetSRID(ST_Transform(shape, 2193), 2193) - FROM admin_bdys.territorial_authority - WHERE ogc_fid NOT IN ( - SELECT external_territorial_authority_id - FROM buildings_reference.territorial_authority - ) - RETURNING * - ) - SELECT ARRAY( - SELECT territorial_authority_id - FROM insert_ta - ); + INSERT INTO buildings_reference.territorial_authority (external_territorial_authority_id, name, shape) + VALUES ($1, $2, ST_SetSRID(ST_GeometryFromText($3), 2193)) + RETURNING territorial_authority_id; $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_reference.territorial_auth_insert_areas() IS -'Function to insert new territorial authority areas into the buildings_reference.territorial_authority table.'; +COMMENT ON FUNCTION buildings_reference.territorial_authority_insert(integer, varchar, varchar) IS +'Insert new entry into territorial_authority table'; + --- territorial_auth_update_areas(update geometries based on admin_bdys) - -- params: - -- return: integer list of areas updated +-- territorial_authority_update_by_external_id + -- params: integer external_territorial_authority_id, varchar territorial_authority, varchar geometry + -- return: integer territorial_authority_id +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar) +RETURNS integer AS +$$ + + UPDATE buildings_reference.territorial_authority + SET name = $2, + shape = ST_SetSRID(ST_GeometryFromText($3), 2193) + WHERE external_territorial_authority_id = $1 + RETURNING territorial_authority_id; -CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_update_areas() -RETURNS integer[] AS $$ +LANGUAGE sql VOLATILE; - WITH update_ta AS ( - UPDATE buildings_reference.territorial_authority bta - SET - name = ata.name - , shape = ST_SetSRID(ST_Transform(ata.shape, 2193), 2193) - FROM admin_bdys.territorial_authority ata - WHERE bta.external_territorial_authority_id = ata.ogc_fid - AND (NOT ST_Equals(bta.shape, ST_SetSRID(ST_Transform(ata.shape, 2193), 2193)) - OR bta.name != ata.name) - RETURNING * - ) - SELECT ARRAY ( - SELECT territorial_authority_id - FROM update_ta - ); +COMMENT ON FUNCTION buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar) IS +'Update territorial_authority table by external id'; + +-- territorial_authority_update_building_outlines + -- params: integer[] territorial_authority_id, integer[] territorial_authority_id + -- return: integer building_outline_id +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]) +RETURNS integer AS +$$ + UPDATE buildings.building_outlines + SET territorial_authority_id = buildings_reference.territorial_authority_intersect_polygon(shape), + last_modified = NOW() + WHERE ( + territorial_authority_id = ANY($1) + AND territorial_authority_id != buildings_reference.territorial_authority_intersect_polygon(shape) + ) + OR territorial_authority_id = ANY($2) + RETURNING building_outline_id; $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_reference.territorial_auth_update_areas() IS -'Function to update territorial_authority areas that have either name or geometry changes'; +COMMENT ON FUNCTION buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]) IS +'Update building_outlines territorial_authority_id value using territorial_authority table'; + COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql b/db/sql/deploy/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql new file mode 100644 index 00000000..0d012677 --- /dev/null +++ b/db/sql/deploy/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql @@ -0,0 +1,169 @@ +-- Deploy nz-buildings:buildings_reference/functions/territorial_authority to pg + +BEGIN; + +---------------------------------------------------------------------------------------------- +-- buildings_reference.territorial_authority && buildings_reference.territorial_authority_grid + +-- Functions + +-- territorial_authority_grid_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry, geometry + -- return: integer territorial_authority_id + +-- territorial_authority_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer territorial_authority_id + +-- territorial_auth_delete_areas(delete areas no long in admin_bdys) + -- params: + -- return: integer list of TAs deleted + +-- territorial_auth_insert_areas(insert new areas from admin_bdys) + -- params: + -- return: integer list of new areas added + +-- territorial_auth_update_areas(update geometries based on admin_bdys) + -- params: + -- return: integer list of areas updated + +---------------------------------------------------------------------------------------------- + +-- Functions + +-- territorial_authority_grid_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry, geometry + -- return: integer territorial_authority_id + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_grid_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT territorial_authority_id + FROM buildings_reference.territorial_authority_grid + WHERE ST_DWithin(p_polygon_geometry, shape, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_authority_grid_intersect_polygon(geometry) IS +'Returns id of the TA Grid that has the most overlap'; + +-- territorial_authority_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer territorial_authority_id + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT territorial_authority_id + FROM buildings_reference.territorial_authority + WHERE shape && ST_Expand(p_polygon_geometry, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_authority_intersect_polygon(geometry) IS +'Return id of territorial authority with most overlap'; + +-- Update Territorial Authority table: + +-- territorial_auth_delete_areas(delete areas no long in admin_bdys) + -- params: + -- return: integer list of TAs deleted + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_delete_areas() +RETURNS integer[] AS +$$ + + WITH delete_ta AS ( + DELETE FROM buildings_reference.territorial_authority + WHERE external_territorial_authority_id NOT IN (SELECT DISTINCT + ogc_fid + FROM admin_bdys.territorial_authority) + RETURNING * + ) + SELECT ARRAY(SELECT territorial_authority_id FROM delete_ta); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_delete_areas() IS +'Function to delete the attributes in the buildings_reference territorial_authority table that are not in the admin_bdys schema.'; + +-- territorial_auth_insert_areas(insert new areas from admin_bdys) + -- params: + -- return: integer list of new areas added + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_insert_areas() +RETURNS integer[] AS +$$ + + WITH insert_ta AS ( + INSERT INTO buildings_reference.territorial_authority (external_territorial_authority_id, name, shape) + SELECT + ogc_fid + , name + , ST_SetSRID(ST_Transform(shape, 2193), 2193) + FROM admin_bdys.territorial_authority + WHERE ogc_fid NOT IN ( + SELECT external_territorial_authority_id + FROM buildings_reference.territorial_authority + ) + RETURNING * + ) + SELECT ARRAY( + SELECT territorial_authority_id + FROM insert_ta + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_insert_areas() IS +'Function to insert new territorial authority areas into the buildings_reference.territorial_authority table.'; + +-- territorial_auth_update_areas(update geometries based on admin_bdys) + -- params: + -- return: integer list of areas updated + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_update_areas() +RETURNS integer[] AS +$$ + + WITH update_ta AS ( + UPDATE buildings_reference.territorial_authority bta + SET + name = ata.name + , shape = ST_SetSRID(ST_Transform(ata.shape, 2193), 2193) + FROM admin_bdys.territorial_authority ata + WHERE bta.external_territorial_authority_id = ata.ogc_fid + AND (NOT ST_Equals(bta.shape, ST_SetSRID(ST_Transform(ata.shape, 2193), 2193)) + OR bta.name != ata.name) + RETURNING * + ) + SELECT ARRAY ( + SELECT territorial_authority_id + FROM update_ta + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_update_areas() IS +'Function to update territorial_authority areas that have either name or geometry changes'; + +COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality.sql b/db/sql/revert/buildings_reference/functions/suburb_locality.sql index 9fc0e63e..6611951f 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality.sql @@ -1,4 +1,4 @@ --- Revert nz-buildings:buildings_reference/functions/suburb_locality to pg +-- Deploy nz-buildings:buildings_reference/functions/suburb_locality to pg BEGIN; @@ -11,18 +11,6 @@ BEGIN; -- params: p_polygon_geometry geometry -- return: integer suburb_locality_id --- suburb_locality_delete_removed_areas (delete suburbs that are no longer is admin_bdys) - -- params: - -- return: integer list of outlines deleted - --- suburb_locality_insert_new_areas (insert new areas from admin_bdys) - -- params: - -- return: integer list of areas inserted - --- suburb_locality_update_suburb_locality (update geometries based on those in admin_bdys) - -- params: - -- return: integer list of areas updated - -------------------------------------------- -- Functions @@ -41,7 +29,7 @@ $$ FROM buildings_reference.suburb_locality WHERE shape && ST_Expand(p_polygon_geometry, 1000) ORDER BY - ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + ST_Area(ST_Intersection(p_polygon_geometry, shape)) DESC , ST_Distance(p_polygon_geometry, shape) ASC LIMIT 1; @@ -51,110 +39,12 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_reference.suburb_locality_intersect_polygon(geometry) IS 'Return id of suburb/locality with most overlap'; --- update suburb_table_functions - --- suburb_locality_delete_removed_areas (delete suburbs that are no longer is admin_bdys) - -- params: - -- return: integer list of outlines deleted - -CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_delete_removed_areas() -RETURNS integer[] AS -$$ - - WITH delete_suburb AS ( - DELETE FROM buildings_reference.suburb_locality - WHERE external_suburb_locality_id NOT IN ( - SELECT id - FROM admin_bdys.nz_locality - ) - RETURNING * - ) - SELECT ARRAY( - SELECT suburb_locality_id - FROM delete_suburb - ); - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.suburb_locality_delete_removed_areas() IS -'Function to delete from the buildings_reference suburb locality table the areas that have been removed in the admin_bdys schema'; - --- suburb_locality_insert_new_areas (insert new areas from admin_bdys) - -- params: - -- return: integer list of areas inserted +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_delete_by_external_id(integer); -CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_insert_new_areas() -RETURNS integer[] AS -$$ - - WITH insert_suburb AS ( - INSERT INTO buildings_reference.suburb_locality ( - external_suburb_locality_id - , suburb_4th - , suburb_3rd - , suburb_2nd - , suburb_1st - , shape - ) - SELECT - id - , suburb_4th - , suburb_3rd - , suburb_2nd - , suburb_1st - , ST_SetSRID(ST_Transform(shape, 2193), 2193) - FROM admin_bdys.nz_locality - WHERE type in ('ISLAND','LOCALITY','PARK_RESERVE','SUBURB') - AND id NOT IN ( - SELECT external_suburb_locality_id - FROM buildings_reference.suburb_locality - ) - RETURNING * - ) - SELECT ARRAY( - SELECT suburb_locality_id - FROM insert_suburb - ); - -$$ -LANGUAGE sql VOLATILE; - -COMMENT ON FUNCTION buildings_reference.suburb_locality_insert_new_areas() IS -'Function to insert from the admin_bdys schema new areas not in the buildings_reference suburb locality table'; +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_insert(integer, varchar, varchar, varchar); --- suburb_locality_update_suburb_locality (update geometries based on those in admin_bdys) - -- params: - -- return: integer list of areas updated - -CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_update_suburb_locality() -RETURNS integer[] AS -$$ - - WITH update_suburb AS ( - UPDATE buildings_reference.suburb_locality bsl - SET - suburb_4th = nzl.suburb_4th - , suburb_3rd = nzl.suburb_3rd - , suburb_2nd = nzl.suburb_2nd - , suburb_1st = nzl.suburb_1st - , shape = ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193) - FROM admin_bdys.nz_locality nzl - WHERE bsl.external_suburb_locality_id = nzl.id - AND ( NOT ST_Equals(ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193), bsl.shape) - OR nzl.suburb_4th != bsl.suburb_4th - OR nzl.suburb_3rd != bsl.suburb_3rd - OR nzl.suburb_2nd != bsl.suburb_2nd - OR nzl.suburb_1st != bsl.suburb_1st - ) - RETURNING * - ) - SELECT ARRAY(SELECT suburb_locality_id FROM update_suburb); - -$$ -LANGUAGE sql VOLATILE; +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar); -COMMENT ON FUNCTION buildings_reference.suburb_locality_update_suburb_locality() IS -'Function to update the attributes in the buildings_reference suburb locality table from the admin_bdys schema'; +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]); COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql new file mode 100644 index 00000000..9fc0e63e --- /dev/null +++ b/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql @@ -0,0 +1,160 @@ +-- Revert nz-buildings:buildings_reference/functions/suburb_locality to pg + +BEGIN; + +-------------------------------------------- +-- buildings_reference.suburb_locality + +-- Functions + +-- suburb_locality_intersect_polygon (id of suburb with most overlap) + -- params: p_polygon_geometry geometry + -- return: integer suburb_locality_id + +-- suburb_locality_delete_removed_areas (delete suburbs that are no longer is admin_bdys) + -- params: + -- return: integer list of outlines deleted + +-- suburb_locality_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of areas inserted + +-- suburb_locality_update_suburb_locality (update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +-------------------------------------------- + +-- Functions + +-- suburb_locality_intersect_polygon (id of suburb with most overlap) + -- params: p_polygon_geometry geometry + -- return: integer suburb_locality_id + +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT suburb_locality_id + FROM buildings_reference.suburb_locality + WHERE shape && ST_Expand(p_polygon_geometry, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_intersect_polygon(geometry) IS +'Return id of suburb/locality with most overlap'; + +-- update suburb_table_functions + +-- suburb_locality_delete_removed_areas (delete suburbs that are no longer is admin_bdys) + -- params: + -- return: integer list of outlines deleted + +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_delete_removed_areas() +RETURNS integer[] AS +$$ + + WITH delete_suburb AS ( + DELETE FROM buildings_reference.suburb_locality + WHERE external_suburb_locality_id NOT IN ( + SELECT id + FROM admin_bdys.nz_locality + ) + RETURNING * + ) + SELECT ARRAY( + SELECT suburb_locality_id + FROM delete_suburb + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_delete_removed_areas() IS +'Function to delete from the buildings_reference suburb locality table the areas that have been removed in the admin_bdys schema'; + +-- suburb_locality_insert_new_areas (insert new areas from admin_bdys) + -- params: + -- return: integer list of areas inserted + +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_insert_new_areas() +RETURNS integer[] AS +$$ + + WITH insert_suburb AS ( + INSERT INTO buildings_reference.suburb_locality ( + external_suburb_locality_id + , suburb_4th + , suburb_3rd + , suburb_2nd + , suburb_1st + , shape + ) + SELECT + id + , suburb_4th + , suburb_3rd + , suburb_2nd + , suburb_1st + , ST_SetSRID(ST_Transform(shape, 2193), 2193) + FROM admin_bdys.nz_locality + WHERE type in ('ISLAND','LOCALITY','PARK_RESERVE','SUBURB') + AND id NOT IN ( + SELECT external_suburb_locality_id + FROM buildings_reference.suburb_locality + ) + RETURNING * + ) + SELECT ARRAY( + SELECT suburb_locality_id + FROM insert_suburb + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_insert_new_areas() IS +'Function to insert from the admin_bdys schema new areas not in the buildings_reference suburb locality table'; + +-- suburb_locality_update_suburb_locality (update geometries based on those in admin_bdys) + -- params: + -- return: integer list of areas updated + +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_update_suburb_locality() +RETURNS integer[] AS +$$ + + WITH update_suburb AS ( + UPDATE buildings_reference.suburb_locality bsl + SET + suburb_4th = nzl.suburb_4th + , suburb_3rd = nzl.suburb_3rd + , suburb_2nd = nzl.suburb_2nd + , suburb_1st = nzl.suburb_1st + , shape = ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193) + FROM admin_bdys.nz_locality nzl + WHERE bsl.external_suburb_locality_id = nzl.id + AND ( NOT ST_Equals(ST_SetSRID(ST_Transform(nzl.shape, 2193), 2193), bsl.shape) + OR nzl.suburb_4th != bsl.suburb_4th + OR nzl.suburb_3rd != bsl.suburb_3rd + OR nzl.suburb_2nd != bsl.suburb_2nd + OR nzl.suburb_1st != bsl.suburb_1st + ) + RETURNING * + ) + SELECT ARRAY(SELECT suburb_locality_id FROM update_suburb); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_update_suburb_locality() IS +'Function to update the attributes in the buildings_reference suburb locality table from the admin_bdys schema'; + +COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/territorial_authority.sql b/db/sql/revert/buildings_reference/functions/territorial_authority.sql index 8f5789a7..1420817c 100644 --- a/db/sql/revert/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/revert/buildings_reference/functions/territorial_authority.sql @@ -2,6 +2,14 @@ BEGIN; +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_delete_by_external_id(integer); + +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_insert(integer, varchar, varchar); + +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar); + +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]); + ---------------------------------------------------------------------------------------------- -- buildings_reference.territorial_authority && buildings_reference.territorial_authority_grid @@ -150,13 +158,9 @@ $$ name = ata.name , shape = ST_SetSRID(ST_Transform(ata.shape, 2193), 2193) FROM admin_bdys.territorial_authority ata - WHERE bta.external_territorial_authority_id IN ( - SELECT ogc_fid - FROM admin_bdys.territorial_authority ata - JOIN buildings_reference.territorial_authority bta ON ogc_fid = external_territorial_authority_id - WHERE ( NOT ST_Equals(bta.shape, ST_SetSRID(ST_Transform(ata.shape, 2193), 2193)) - OR bta.name != ata.name) - ) + WHERE bta.external_territorial_authority_id = ata.ogc_fid + AND (NOT ST_Equals(bta.shape, ST_SetSRID(ST_Transform(ata.shape, 2193), 2193)) + OR bta.name != ata.name) RETURNING * ) SELECT ARRAY ( diff --git a/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql new file mode 100644 index 00000000..8f5789a7 --- /dev/null +++ b/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql @@ -0,0 +1,173 @@ +-- Deploy nz-buildings:buildings_reference/functions/territorial_authority to pg + +BEGIN; + +---------------------------------------------------------------------------------------------- +-- buildings_reference.territorial_authority && buildings_reference.territorial_authority_grid + +-- Functions + +-- territorial_authority_grid_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry, geometry + -- return: integer territorial_authority_id + +-- territorial_authority_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer territorial_authority_id + +-- territorial_auth_delete_areas(delete areas no long in admin_bdys) + -- params: + -- return: integer list of TAs deleted + +-- territorial_auth_insert_areas(insert new areas from admin_bdys) + -- params: + -- return: integer list of new areas added + +-- territorial_auth_update_areas(update geometries based on admin_bdys) + -- params: + -- return: integer list of areas updated + +---------------------------------------------------------------------------------------------- + +-- Functions + +-- territorial_authority_grid_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry, geometry + -- return: integer territorial_authority_id + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_grid_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT territorial_authority_id + FROM buildings_reference.territorial_authority_grid + WHERE ST_DWithin(p_polygon_geometry, shape, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_authority_grid_intersect_polygon(geometry) IS +'Returns id of the TA Grid that has the most overlap'; + +-- territorial_authority_intersect_polygon (id of the TA that has the most overlap) + -- params: p_polygon_geometry geometry + -- return: integer territorial_authority_id + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_intersect_polygon( + p_polygon_geometry geometry +) +RETURNS integer AS +$$ + + SELECT territorial_authority_id + FROM buildings_reference.territorial_authority + WHERE shape && ST_Expand(p_polygon_geometry, 1000) + ORDER BY + ST_Area(ST_Intersection(p_polygon_geometry, shape)) / ST_Area(shape) DESC + , ST_Distance(p_polygon_geometry, shape) ASC + LIMIT 1; + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_authority_intersect_polygon(geometry) IS +'Return id of territorial authority with most overlap'; + +-- Update Territorial Authority table: + +-- territorial_auth_delete_areas(delete areas no long in admin_bdys) + -- params: + -- return: integer list of TAs deleted + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_delete_areas() +RETURNS integer[] AS +$$ + + WITH delete_ta AS ( + DELETE FROM buildings_reference.territorial_authority + WHERE external_territorial_authority_id NOT IN (SELECT DISTINCT + ogc_fid + FROM admin_bdys.territorial_authority) + RETURNING * + ) + SELECT ARRAY(SELECT territorial_authority_id FROM delete_ta); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_delete_areas() IS +'Function to delete the attributes in the buildings_reference territorial_authority table that are not in the admin_bdys schema.'; + +-- territorial_auth_insert_areas(insert new areas from admin_bdys) + -- params: + -- return: integer list of new areas added + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_insert_areas() +RETURNS integer[] AS +$$ + + WITH insert_ta AS ( + INSERT INTO buildings_reference.territorial_authority (external_territorial_authority_id, name, shape) + SELECT + ogc_fid + , name + , ST_SetSRID(ST_Transform(shape, 2193), 2193) + FROM admin_bdys.territorial_authority + WHERE ogc_fid NOT IN ( + SELECT external_territorial_authority_id + FROM buildings_reference.territorial_authority + ) + RETURNING * + ) + SELECT ARRAY( + SELECT territorial_authority_id + FROM insert_ta + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_insert_areas() IS +'Function to insert new territorial authority areas into the buildings_reference.territorial_authority table.'; + +-- territorial_auth_update_areas(update geometries based on admin_bdys) + -- params: + -- return: integer list of areas updated + +CREATE OR REPLACE FUNCTION buildings_reference.territorial_auth_update_areas() +RETURNS integer[] AS +$$ + + WITH update_ta AS ( + UPDATE buildings_reference.territorial_authority bta + SET + name = ata.name + , shape = ST_SetSRID(ST_Transform(ata.shape, 2193), 2193) + FROM admin_bdys.territorial_authority ata + WHERE bta.external_territorial_authority_id IN ( + SELECT ogc_fid + FROM admin_bdys.territorial_authority ata + JOIN buildings_reference.territorial_authority bta ON ogc_fid = external_territorial_authority_id + WHERE ( NOT ST_Equals(bta.shape, ST_SetSRID(ST_Transform(ata.shape, 2193), 2193)) + OR bta.name != ata.name) + ) + RETURNING * + ) + SELECT ARRAY ( + SELECT territorial_authority_id + FROM update_ta + ); + +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.territorial_auth_update_areas() IS +'Function to update territorial_authority areas that have either name or geometry changes'; + +COMMIT; diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index d9c5413f..bfd35605 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -108,3 +108,5 @@ buildings_reference/functions/town_city [buildings_reference/functions/town_city buildings_reference/functions/reference_update_log [buildings_reference/functions/reference_update_log@v4.0.0-dev1] 2024-08-14T04:38:22Z Yingting Chen # Remove town_city in reference_update_log update function. buildings_reference/remove_suburb_locality_old_name_column 2024-08-14T04:40:22Z Yingting Chen # Remove suburb_locality old name columns from FENZ buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. +buildings_reference/functions/suburb_locality [buildings_reference/functions/suburb_locality@v4.0.0-dev1] 2024-08-30T02:54:25Z Yingting Chen # Add new suburb_locality functions for the reference update process. +buildings_reference/functions/territorial_authority [buildings_reference/functions/territorial_authority@v4.0.0-dev1] 2024-09-10T05:51:01Z Yingting Chen # Add new territorial_authority functions for the reference update process. diff --git a/db/sql/verify/buildings_reference/functions/reference_update_log.sql b/db/sql/verify/buildings_reference/functions/reference_update_log.sql index dbd3c2e1..35c053b8 100644 --- a/db/sql/verify/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/verify/buildings_reference/functions/reference_update_log.sql @@ -15,6 +15,17 @@ BEGIN RAISE EXCEPTION 'town_city found, should have been removed.'; END IF; + PERFORM proname, proargnames, prosrc + FROM pg_proc + WHERE proname = 'reference_update_log_insert_log' + AND prosrc LIKE '%hut_points%' + AND prosrc LIKE '%shelter_points%' + AND prosrc LIKE '%bivouac_points%' + AND prosrc LIKE '%protected_areas_polygons%'; + IF NOT FOUND THEN + RAISE EXCEPTION 'dataset keywords not found, should have been added.'; + END IF; + END $$; ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/suburb_locality.sql b/db/sql/verify/buildings_reference/functions/suburb_locality.sql index a0f552ad..02829e04 100644 --- a/db/sql/verify/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/verify/buildings_reference/functions/suburb_locality.sql @@ -4,18 +4,12 @@ BEGIN; SELECT has_function_privilege('buildings_reference.suburb_locality_intersect_polygon(geometry)', 'execute'); -DO $$ -BEGIN +SELECT has_function_privilege('buildings_reference.suburb_locality_delete_by_external_id(integer)', 'execute'); - PERFORM proname, proargnames, prosrc - FROM pg_proc - WHERE proname = 'suburb_locality_intersect_polygon' - AND prosrc LIKE '%ST_Area(shape)%'; +SELECT has_function_privilege('buildings_reference.suburb_locality_insert(integer, varchar, varchar, varchar)', 'execute'); - IF FOUND THEN - RAISE EXCEPTION 'ST_Area(shape) Found.'; - END IF; +SELECT has_function_privilege('buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar)', 'execute'); -END $$; +SELECT has_function_privilege('buildings_reference.suburb_locality_update_building_outlines(integer[], integer[])', 'execute'); ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql b/db/sql/verify/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql new file mode 100644 index 00000000..a0f552ad --- /dev/null +++ b/db/sql/verify/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql @@ -0,0 +1,21 @@ +-- Verify nz-buildings:buildings_reference/functions/suburb_locality on pg + +BEGIN; + +SELECT has_function_privilege('buildings_reference.suburb_locality_intersect_polygon(geometry)', 'execute'); + +DO $$ +BEGIN + + PERFORM proname, proargnames, prosrc + FROM pg_proc + WHERE proname = 'suburb_locality_intersect_polygon' + AND prosrc LIKE '%ST_Area(shape)%'; + + IF FOUND THEN + RAISE EXCEPTION 'ST_Area(shape) Found.'; + END IF; + +END $$; + +ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/territorial_authority.sql b/db/sql/verify/buildings_reference/functions/territorial_authority.sql index c8b4ae0f..b2789c36 100644 --- a/db/sql/verify/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/verify/buildings_reference/functions/territorial_authority.sql @@ -6,23 +6,45 @@ SELECT has_function_privilege('buildings_reference.territorial_authority_grid_in SELECT has_function_privilege('buildings_reference.territorial_authority_intersect_polygon(geometry)', 'execute'); -SELECT has_function_privilege('buildings_reference.territorial_auth_delete_areas()', 'execute'); +SELECT has_function_privilege('buildings_reference.territorial_authority_delete_by_external_id(integer)', 'execute'); -SELECT has_function_privilege('buildings_reference.territorial_auth_insert_areas()', 'execute'); +SELECT has_function_privilege('buildings_reference.territorial_authority_insert(integer, varchar, varchar)', 'execute'); -SELECT has_function_privilege('buildings_reference.territorial_auth_update_areas()', 'execute'); +SELECT has_function_privilege('buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar)', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_authority_update_building_outlines(integer[], integer[])', 'execute'); DO $$ BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'territorial_auth_delete_areas' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; +END $$; - PERFORM proname, proargnames, prosrc +DO $$ +BEGIN + PERFORM * FROM pg_proc - WHERE proname = 'territorial_auth_update_areas' - AND prosrc LIKE '%JOIN%'; + WHERE proname = 'territorial_auth_insert_areas' + AND pronargs = 0; IF FOUND THEN - RAISE EXCEPTION 'JOIN found.'; + RAISE EXCEPTION 'Dropped function found.'; END IF; +END $$; +DO $$ +BEGIN + PERFORM * + FROM pg_proc + WHERE proname = 'territorial_auth_update_areas' + AND pronargs = 0; + IF FOUND THEN + RAISE EXCEPTION 'Dropped function found.'; + END IF; END $$; ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql b/db/sql/verify/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql new file mode 100644 index 00000000..c8b4ae0f --- /dev/null +++ b/db/sql/verify/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql @@ -0,0 +1,28 @@ +-- Verify nz-buildings:buildings_reference/functions/territorial_authority on pg + +BEGIN; + +SELECT has_function_privilege('buildings_reference.territorial_authority_grid_intersect_polygon(geometry)', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_authority_intersect_polygon(geometry)', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_auth_delete_areas()', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_auth_insert_areas()', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_auth_update_areas()', 'execute'); + +DO $$ +BEGIN + + PERFORM proname, proargnames, prosrc + FROM pg_proc + WHERE proname = 'territorial_auth_update_areas' + AND prosrc LIKE '%JOIN%'; + IF FOUND THEN + RAISE EXCEPTION 'JOIN found.'; + END IF; + +END $$; + +ROLLBACK; From 52dbf40b3c627363eb4d1b78afc54205761620af Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Wed, 11 Sep 2024 18:43:24 +1200 Subject: [PATCH 09/19] fix: update tests --- buildings/tests/config.ini | 4 + ...cesses_update_reference_data_admin_bdys.py | 181 ------------------ 2 files changed, 4 insertions(+), 181 deletions(-) delete mode 100644 buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py diff --git a/buildings/tests/config.ini b/buildings/tests/config.ini index 5e730085..da207457 100644 --- a/buildings/tests/config.ini +++ b/buildings/tests/config.ini @@ -7,3 +7,7 @@ password = buildings [logging] logfile = ~/buildings.log + +[api] +linz = +statsnz = \ No newline at end of file diff --git a/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py b/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py deleted file mode 100644 index c4a65e34..00000000 --- a/buildings/tests/gui/test_processes_update_reference_data_admin_bdys.py +++ /dev/null @@ -1,181 +0,0 @@ -# -*- coding: utf-8 -*- -""" -################################################################################ -# -# Copyright 2018 Crown copyright (c) -# Land Information New Zealand and the New Zealand Government. -# All rights reserved -# -# This program is released under the terms of the 3 clause BSD license. See the -# LICENSE file for more information. -# -################################################################################ - - Tests: Reference Data GUI setup confirm default settings - - ***************************************************************************/ -""" - -import unittest - -from qgis.PyQt.QtCore import Qt, QTimer -from qgis.PyQt.QtWidgets import QMessageBox -from qgis.utils import plugins - -from buildings.utilities import database as db - - -class SetUpReferenceData(unittest.TestCase): - """Test Reference Data GUI initial setup confirm default settings""" - - def setUp(self): - """Runs before each test.""" - self.building_plugin = plugins.get("buildings") - self.building_plugin.main_toolbar.actions()[0].trigger() - self.dockwidget = self.building_plugin.dockwidget - sub_menu = self.dockwidget.lst_sub_menu - sub_menu.setCurrentItem(sub_menu.findItems("Reference Data", Qt.MatchExactly)[0]) - self.reference_frame = self.dockwidget.current_frame - - def tearDown(self): - """Runs after each test.""" - self.reference_frame.db.rollback_open_cursor() - self.reference_frame.btn_exit.click() - - # Commented out as this was failing, but it was uncleear why, and seemed - # plausibly to do with incorrect test data rather than any actual code error - # proper. Should be more fulsomely investigated in future. - # def test_suburb_locality_table_update(self): - # """Check buildings_reference.suburb_locality table updates correctly.""" - # # insert building outline to check for deleted suburb id - # if self.reference_frame.db._open_cursor is None: - # self.reference_frame.db.open_cursor() - # insert_building = "SELECT buildings.buildings_insert();" - # insert_building_outline = "SELECT buildings.building_outlines_insert(%s, %s, %s, %s, %s, %s, %s, %s);" - # result = self.reference_frame.db.execute_no_commit(insert_building) - # building_id = result.fetchone()[0] - # result = self.reference_frame.db.execute_no_commit( - # insert_building_outline, - # ( - # building_id, - # 11, - # 1002, - # 1, - # 101, - # 1002, - # 10002, - # "010300002091080000010000000500000054A0D29477AA3C4194E310ED71315541D10AA5B679AA3C415417E8DD643155410DA2D440E3AA3C4104CAAD99643155414BD7BD51E4AA3C4171B36E867331554154A0D29477AA3C4194E310ED71315541", - # ), - # ) - # building_outline_id = result.fetchone()[0] - - # # run reference update - # self.reference_frame.chbx_suburbs.setChecked(True) - - # btn_ok = self.reference_frame.msgbox.button(QMessageBox.Ok) - # QTimer.singleShot(500, btn_ok.click) - - # self.reference_frame.update_clicked(commit_status=False) - - # # deleted suburb locality - # sql_removed = "SELECT count(*)::integer FROM buildings_reference.suburb_locality WHERE external_suburb_locality_id = 104;" - # result = db._execute(sql_removed) - # count_removed = result.fetchone()[0] - # self.assertEqual(count_removed, 0) - # sql_building_in_removed_area = "SELECT suburb_locality_id from buildings.building_outlines WHERE building_outline_id = %s;" - # result = db._execute(sql_building_in_removed_area, (building_outline_id,)) - # suburb_id_of_removed_building = result.fetchone()[0] - # self.assertEqual(suburb_id_of_removed_building, 101) - - # # new suburb locality - # sql_added = "SELECT count(*)::integer FROM buildings_reference.suburb_locality WHERE external_suburb_locality_id = 105;" - # result = db._execute(sql_added) - # count_added = result.fetchone()[0] - # self.assertEqual(count_added, 1) - # # updated suburb locality - # sql_updated = "SELECT name FROM buildings_reference.suburb_locality WHERE external_suburb_locality_id = 101;" - # result = db._execute(sql_updated) - # name_updated = result.fetchone()[0] - # self.assertEqual(name_updated, "Kelburn North") - # # check last modified date - # sql_date = "SELECT last_modified FROM buildings.building_outlines WHERE building_outline_id = 1021;" - # modified_date = db._execute(sql_date) - # modified_date = result.fetchone()[0] - # self.assertNotEqual(modified_date, "NULL") - # sql_date = "SELECT last_modified FROM buildings.building_outlines WHERE building_outline_id = 1022;" - # modified_date = db._execute(sql_date) - # modified_date = result.fetchone()[0] - # self.assertIsNone(modified_date) - # # check building_outlines - # sql_bo = "SELECT count(DISTINCT suburb_locality_id)::integer FROM buildings.building_outlines;" - # result = db._execute(sql_bo) - # bo_suburb_update = result.fetchone()[0] - # self.assertEqual(bo_suburb_update, 4) - # sql_select_building_in_changed_region = "SELECT suburb_locality_id FROM buildings.building_outlines WHERE building_outline_id = 1005;" - # result = db._execute(sql_select_building_in_changed_region) - # suburb_id_bo_in_changed_region = result.fetchone()[0] - # self.assertEqual(suburb_id_bo_in_changed_region, 103) - # # check suburb locality only adds types locality, suburb, island, park_reserve - # sql_added = ( - # "SELECT count(*)::integer FROM buildings_reference.suburb_locality WHERE external_suburb_locality_id = 106;" - # ) - # result = db._execute(sql_added) - # count_added = result.fetchone()[0] - # self.assertEqual(count_added, 0) - # # check suburb locality island with null suburb_4th is added - # sql_added = ( - # "SELECT count(*)::integer FROM buildings_reference.suburb_locality WHERE external_suburb_locality_id = 108;" - # ) - # result = db._execute(sql_added) - # count_added = result.fetchone()[0] - # self.assertEqual(count_added, 1) - - def test_town_city_table_update(self): - """Check buildings_reference.town_city table updates correctly.""" - pass # this is to be updated - - def test_territorial_authority_table_update(self): - """Check buildings_reference.territorial_authority table updates correctly""" - self.reference_frame.chbx_ta.setChecked(True) - - btn_ok = self.reference_frame.msgbox.button(QMessageBox.Ok) - QTimer.singleShot(500, btn_ok.click) - - self.reference_frame.update_clicked(commit_status=False) - - # deleted TA - sql_removed = "SELECT count(*)::integer FROM buildings_reference.territorial_authority WHERE external_territorial_authority_id = 10002;" - result = db._execute(sql_removed) - count_removed = result.fetchone()[0] - self.assertEqual(count_removed, 0) - # added TA - sql_added = "SELECT count(*)::integer FROM buildings_reference.territorial_authority WHERE external_territorial_authority_id = 10003;" - result = db._execute(sql_added) - count_added = result.fetchone()[0] - self.assertEqual(count_added, 1) - # Check TA Grid view has been refreshed - sql_removed_grid = """ - SELECT count(*)::integer - FROM buildings_reference.territorial_authority_grid - WHERE external_territorial_authority_id = 10002; - """ - result = db._execute(sql_removed_grid) - count_removed_grid = result.fetchone()[0] - self.assertEqual(count_removed_grid, 0) - sql_added_grid = """ - SELECT count(*)::integer - FROM buildings_reference.territorial_authority_grid - WHERE external_territorial_authority_id = 10003;""" - result = db._execute(sql_added_grid) - count_added_grid = result.fetchone()[0] - self.assertTrue(count_added_grid > 0) - # check bulk_load_outlines - sql_blo = "SELECT count(DISTINCT territorial_authority_id)::integer FROM buildings_bulk_load.bulk_load_outlines;" - result = db._execute(sql_blo) - blo_ta_update = result.fetchone()[0] - self.assertEqual(blo_ta_update, 2) - # check building_outlines - sql_bo = "SELECT count(DISTINCT territorial_authority_id)::integer FROM buildings.building_outlines;" - result = db._execute(sql_bo) - bo_ta_update = result.fetchone()[0] - self.assertEqual(bo_ta_update, 2) From 1e9d7f04f363feac578c64fa182674508433671e Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 12 Sep 2024 17:14:53 +1200 Subject: [PATCH 10/19] feat: change ref update process for admin_bdys --- buildings/reference_data/admin_bdys.py | 122 +++++++++++------- buildings/reference_data/topo50.py | 5 +- .../buildings_reference_select_statements.py | 16 +++ buildings/utilities/database.py | 16 ++- .../functions/suburb_locality.sql | 43 ++++-- .../functions/territorial_authority.sql | 51 +++++--- .../functions/suburb_locality.sql | 4 +- .../functions/territorial_authority.sql | 4 +- .../functions/suburb_locality.sql | 4 +- .../functions/territorial_authority.sql | 4 +- 10 files changed, 179 insertions(+), 90 deletions(-) diff --git a/buildings/reference_data/admin_bdys.py b/buildings/reference_data/admin_bdys.py index a7b6187f..1e5845cf 100644 --- a/buildings/reference_data/admin_bdys.py +++ b/buildings/reference_data/admin_bdys.py @@ -4,7 +4,7 @@ from buildings.sql import buildings_reference_select_statements as reference_select from buildings.utilities import database as db -from qgis.core import QgsVectorLayer +from qgis.core import QgsGeometry, QgsVectorLayer # TODO: review if the filter works LAYERS = { @@ -55,7 +55,7 @@ def current_date(): # todo: add kx_api_key in config # todo: combine suburb_locality- and town city -def update_admin_bdys(kx_api_key, dataset, dbconn): +def update_admin_bdys(kx_api_key, dataset, dbconn: db): # get last update of layer date from log from_var = last_update(dataset) @@ -83,21 +83,19 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): external_id = LAYERS[dataset]["primary_id"] - ids_updates = [] ids_attr_updates = [] - + geoms_diff = [] for feature in layer.getFeatures(): if feature.attribute("__change__") == "DELETE": + geoms_diff.append(feature.geometry()) sql = "SELECT buildings_reference.{}_delete_by_external_id(%s)".format( dataset ) - result = dbconn.execute_no_commit(sql, (feature[external_id],)) - result = result.fetchone() - if result is not None: - ids_updates.append(result[0]) + dbconn.execute_no_commit(sql, (feature[external_id],)) elif feature.attribute("__change__") == "UPDATE": if dataset == "suburb_locality": + # get attribute differences result = dbconn.execute_return( reference_select.suburb_locality_attribute_updates, ( @@ -109,8 +107,21 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): result = result.fetchone() if result is not None: ids_attr_updates.append(result[0]) + + # get geometry differences + result = dbconn.execute_return( + reference_select.suburb_locality_shape_updates, + ( + feature.geometry().asWkt(), + feature[external_id], + ), + ) + result = result.fetchone() + if result is not None: + geoms_diff.append(QgsGeometry.fromWkt(result[0])) + sql = "SELECT buildings_reference.suburb_locality_update_by_external_id(%s, %s, %s, %s)" - result = dbconn.execute_no_commit( + dbconn.execute_no_commit( sql, ( feature[external_id], @@ -119,10 +130,8 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): feature.geometry().asWkt(), ), ) - result = result.fetchone() - if result is not None: - ids_updates.append(result[0]) else: + # get attribute differences result = dbconn.execute_return( reference_select.territorial_authority_attribute_updates, ( @@ -133,8 +142,21 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): result = result.fetchone() if result is not None: ids_attr_updates.append(result[0]) + + # get geometry differences + result = dbconn.execute_return( + reference_select.territorial_authority_shape_updates, + ( + feature.geometry().asWkt(), + feature[external_id], + ), + ) + result = result.fetchone() + if result is not None: + geoms_diff.append(QgsGeometry.fromWkt(result[0])) + sql = "SELECT buildings_reference.territorial_authority_update_by_external_id(%s, %s, %s)" - result = dbconn.execute_no_commit( + dbconn.execute_no_commit( sql, ( feature[external_id], @@ -142,9 +164,6 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): feature.geometry().asWkt(), ), ) - result = result.fetchone() - if result is not None: - ids_updates.append(result[0]) elif feature.attribute("__change__") == "INSERT": # Check if feature is already in reference table @@ -153,42 +172,53 @@ def update_admin_bdys(kx_api_key, dataset, dbconn): (feature[external_id],), ) result = result.fetchone() - if result is None: - if dataset == "suburb_locality": - sql = "SELECT buildings_reference.suburb_locality_insert(%s, %s, %s, %s)" - dbconn.execute_no_commit( - sql, - ( - feature[external_id], - correct_name_format(feature["name"]), - correct_name_format(feature["major_name"]), - feature.geometry().asWkt(), - ), - ) - else: - sql = "SELECT buildings_reference.territorial_authority_insert(%s, %s, %s)" - dbconn.execute_no_commit( - sql, - ( - feature[external_id], - correct_name_format(feature["name"]), - feature.geometry().asWkt(), - ), - ) - print("updated_id {}".format(ids_updates)) - print("updated_attrs {}".format(ids_attr_updates)) - sql = "SELECT buildings_reference.{}_update_building_outlines(%s, %s)".format( + if result is not None: + dbconn.rollback_open_cursor() + raise Exception( + "INSERT type feature exists in buildings db. Please contact devs." + ) + geoms_diff.append(feature.geometry()) + if dataset == "suburb_locality": + sql = ( + "SELECT buildings_reference.suburb_locality_insert(%s, %s, %s, %s)" + ) + dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + correct_name_format(feature["major_name"]), + feature.geometry().asWkt(), + ), + ) + else: + sql = "SELECT buildings_reference.territorial_authority_insert(%s, %s, %s)" + dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_name_format(feature["name"]), + feature.geometry().asWkt(), + ), + ) + print("updated_attrs: {}".format(ids_attr_updates)) + print("updated_geom: {}".format(len(geoms_diff))) + geom_union = QgsGeometry.unaryUnion(geoms_diff).asWkt() + print(geom_union) + sql = "SELECT buildings_reference.{}_attribute_update_building_outlines(%s)".format( + dataset + ) + dbconn.execute_no_commit(sql, (ids_attr_updates,)) + + sql = "SELECT buildings_reference.{}_geometry_update_building_outlines(%s)".format( dataset ) - dbconn.execute_no_commit(sql, (ids_updates, ids_attr_updates)) + dbconn.execute_no_commit(sql, (geom_union,)) return "updated" def correct_name_format(name): - if name: - if "'" in name: - name = "{}".format(name.replace("'", "''")) - else: + if not name: name = "" return str(name) diff --git a/buildings/reference_data/topo50.py b/buildings/reference_data/topo50.py index 193e8280..cf64248e 100644 --- a/buildings/reference_data/topo50.py +++ b/buildings/reference_data/topo50.py @@ -166,9 +166,6 @@ def update_topo50(kx_api_key, dataset, dbconn): def correct_name_format(name): - if name: - if "'" in name: - name = "{}".format(name.replace("'", "''")) - else: + if not name: name = "" return str(name) diff --git a/buildings/sql/buildings_reference_select_statements.py b/buildings/sql/buildings_reference_select_statements.py index 47815c53..9c1540e9 100644 --- a/buildings/sql/buildings_reference_select_statements.py +++ b/buildings/sql/buildings_reference_select_statements.py @@ -133,6 +133,14 @@ AND NOT (suburb_locality = %s AND town_city = %s) """ +suburb_locality_shape_updates = """ +SELECT ST_AsText( + ST_SymDifference(shape, ST_SetSRID(ST_GeometryFromText(%s), 2193), 0.001) + ) AS diff +FROM buildings_reference.suburb_locality +WHERE external_suburb_locality_id = %s +""" + # territorial Authority territorial_authority_intersect_geom = """ @@ -170,6 +178,14 @@ AND NOT name = %s """ +territorial_authority_shape_updates = """ +SELECT ST_AsText( + ST_SymDifference(shape, ST_SetSRID(ST_GeometryFromText(%s), 2193), 0.001) + ) AS diff +FROM buildings_reference.territorial_authority +WHERE external_territorial_authority_id = %s +""" + # territorial authority grid refresh_ta_grid_view = """ diff --git a/buildings/utilities/database.py b/buildings/utilities/database.py index 53cd2164..0ccd8aae 100644 --- a/buildings/utilities/database.py +++ b/buildings/utilities/database.py @@ -34,7 +34,9 @@ _open_cursor = None try: - _conn = psycopg2.connect(host=_host, port=_port, database=_dbname, user=_user, password=_pw) + _conn = psycopg2.connect( + host=_host, port=_port, database=_dbname, user=_user, password=_pw + ) except psycopg2.DatabaseError as error: _conn = None buildings_warning("Database Error", str(error), "critical") @@ -64,7 +66,9 @@ def connect(): """Connect to DB""" global _conn try: - _conn = psycopg2.connect(host=_host, port=_port, database=_dbname, user=_user, password=_pw) + _conn = psycopg2.connect( + host=_host, port=_port, database=_dbname, user=_user, password=_pw + ) except psycopg2.DatabaseError as error: _conn = None buildings_warning("Database Error", str(error), "critical") @@ -118,7 +122,7 @@ def execute_return(sql, data=None): def execute(sql, data=None): - """ Execute an update or insert statement with no return + """Execute an update or insert statement with no return @param sql: sql statement @type sql: string @@ -144,13 +148,13 @@ def execute_no_commit(sql, data=None): except psycopg2.DatabaseError as error: _conn.rollback() buildings_warning("Database Error", str(error), "critical") - return None + raise error except psycopg2.InterfaceError as error: # Raise the error cursor.close() _conn.rollback() buildings_warning("Interface Error", str(error), "critical") - return None + raise error return cursor @@ -171,7 +175,7 @@ def close_cursor(): def set_uri(): - """ Creates a QgsDataSourceUri with connection + """Creates a QgsDataSourceUri with connection @return: QGIS URI object @rtype: qgis.core.QgsDataSourceUri diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql index bb34056a..57f6f783 100644 --- a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql @@ -23,8 +23,12 @@ BEGIN; -- params: integer external_suburb_locality_id, varchar suburb_locality, varchar town_city, varchar geometry -- return: integer suburb_locality_id --- suburb_locality_update_building_outlines - -- params: integer[] suburb_locality_id, integer[] suburb_locality_id +-- suburb_locality_attribute_update_building_outlines + -- params: integer[] suburb_locality_id + -- return: integer building_outline_id + +-- suburb_locality_geometry_update_building_outlines + -- params: varchar shape -- return: integer building_outline_id -------------------------------------------- @@ -113,26 +117,39 @@ COMMENT ON FUNCTION buildings_reference.suburb_locality_update_by_external_id(in 'Update suburb_locality table by external id'; --- suburb_locality_update_building_outlines - -- params: integer[] suburb_locality_id, integer[] suburb_locality_id +-- suburb_locality_attribute_update_building_outlines + -- params: integer[] suburb_locality_id -- return: integer building_outline_id -CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]) +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_attribute_update_building_outlines(integer[]) +RETURNS integer AS +$$ + UPDATE buildings.building_outlines + SET last_modified = NOW() + WHERE suburb_locality_id = ANY($1) + RETURNING building_outline_id; +$$ +LANGUAGE sql VOLATILE; + +COMMENT ON FUNCTION buildings_reference.suburb_locality_attribute_update_building_outlines(integer[]) IS +'Update building_outlines last_modified value as suburb_locality/town_city attributes were updated'; + + +-- suburb_locality_geometry_update_building_outlines + -- params: varchar shape + -- return: integer building_outline_id +CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_geometry_update_building_outlines(varchar) RETURNS integer AS $$ UPDATE buildings.building_outlines SET suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(shape), last_modified = NOW() - WHERE ( - suburb_locality_id = ANY($1) - AND suburb_locality_id != buildings_reference.suburb_locality_intersect_polygon(shape) - ) - OR suburb_locality_id = ANY($2) + WHERE ST_Intersects(shape, ST_SetSRID(ST_GeometryFromText($1), 2193)) + AND suburb_locality_id != buildings_reference.suburb_locality_intersect_polygon(shape) RETURNING building_outline_id; $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]) IS -'Update building_outlines suburb_locality_id value using suburb_locality table'; - +COMMENT ON FUNCTION buildings_reference.suburb_locality_geometry_update_building_outlines(varchar) IS +'Update building_outlines suburb_locality_id value where building_outlines intersects with updated suburb_locality'; COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql index f17fd960..09475f35 100644 --- a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql @@ -27,8 +27,12 @@ BEGIN; -- params: integer external_territorial_authority_id, varchar territorial_authority, varchar geometry -- return: integer territorial_authority_id --- territorial_authority_update_building_outlines - -- params: integer[] territorial_authority_id, integer[] territorial_authority_id +-- territorial_authority_attribute_update_building_outlines + -- params: integer[] territorial_authority_id + -- return: integer building_outline_id + +-- territorial_authority_geometry_update_building_outlines + -- params: varchar shape -- return: integer building_outline_id ---------------------------------------------------------------------------------------------- @@ -83,9 +87,9 @@ LANGUAGE sql VOLATILE; COMMENT ON FUNCTION buildings_reference.territorial_authority_intersect_polygon(geometry) IS 'Return id of territorial authority with most overlap'; -DROP FUNCTION buildings_reference.territorial_auth_delete_areas(); -DROP FUNCTION buildings_reference.territorial_auth_insert_areas(); -DROP FUNCTION buildings_reference.territorial_auth_update_areas(); +DROP FUNCTION IF EXISTS buildings_reference.territorial_auth_delete_areas(); +DROP FUNCTION IF EXISTS buildings_reference.territorial_auth_insert_areas(); +DROP FUNCTION IF EXISTS buildings_reference.territorial_auth_update_areas(); -- territorial_authority_delete_by_external_id @@ -144,26 +148,39 @@ COMMENT ON FUNCTION buildings_reference.territorial_authority_update_by_external 'Update territorial_authority table by external id'; --- territorial_authority_update_building_outlines - -- params: integer[] territorial_authority_id, integer[] territorial_authority_id +-- territorial_authority_attribute_update_building_outlines + -- params: integer[] territorial_authority_id -- return: integer building_outline_id -CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]) +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_attribute_update_building_outlines(integer[]) RETURNS integer AS $$ UPDATE buildings.building_outlines - SET territorial_authority_id = buildings_reference.territorial_authority_intersect_polygon(shape), - last_modified = NOW() - WHERE ( - territorial_authority_id = ANY($1) - AND territorial_authority_id != buildings_reference.territorial_authority_intersect_polygon(shape) - ) - OR territorial_authority_id = ANY($2) + SET last_modified = NOW() + WHERE territorial_authority_id = ANY($1) RETURNING building_outline_id; $$ LANGUAGE sql VOLATILE; -COMMENT ON FUNCTION buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]) IS -'Update building_outlines territorial_authority_id value using territorial_authority table'; +COMMENT ON FUNCTION buildings_reference.territorial_authority_attribute_update_building_outlines(integer[]) IS +'Update building_outlines last_modified value as territorial_authority attribute was updated'; + + +-- territorial_authority_geometry_update_building_outlines + -- params: varchar shape + -- return: integer building_outline_id +CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_geometry_update_building_outlines(varchar) +RETURNS integer AS +$$ + UPDATE buildings.building_outlines + SET territorial_authority_id = buildings_reference.territorial_authority_grid_intersect_polygon(shape), + last_modified = NOW() + WHERE ST_Intersects(shape, ST_SetSRID(ST_GeometryFromText($1), 2193)) + AND territorial_authority_id != buildings_reference.territorial_authority_grid_intersect_polygon(shape) + RETURNING building_outline_id; +$$ +LANGUAGE sql VOLATILE; +COMMENT ON FUNCTION buildings_reference.territorial_authority_geometry_update_building_outlines(varchar) IS +'Update building_outlines territorial_authority_id value where building_outlines intersects with updated territorial_authority'; COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality.sql b/db/sql/revert/buildings_reference/functions/suburb_locality.sql index 6611951f..d632d3dc 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality.sql @@ -45,6 +45,8 @@ DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_insert(integer, varc DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar); -DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_update_building_outlines(integer[], integer[]); +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_attribute_update_building_outlines(integer[]); + +DROP FUNCTION IF EXISTS buildings_reference.suburb_locality_geometry_update_building_outlines(varchar); COMMIT; diff --git a/db/sql/revert/buildings_reference/functions/territorial_authority.sql b/db/sql/revert/buildings_reference/functions/territorial_authority.sql index 1420817c..5815bd3e 100644 --- a/db/sql/revert/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/revert/buildings_reference/functions/territorial_authority.sql @@ -8,7 +8,9 @@ DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_insert(integer DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar); -DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_update_building_outlines(integer[], integer[]); +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_attribute_update_building_outlines(integer[]); + +DROP FUNCTION IF EXISTS buildings_reference.territorial_authority_geometry_update_building_outlines(varchar); ---------------------------------------------------------------------------------------------- -- buildings_reference.territorial_authority && buildings_reference.territorial_authority_grid diff --git a/db/sql/verify/buildings_reference/functions/suburb_locality.sql b/db/sql/verify/buildings_reference/functions/suburb_locality.sql index 02829e04..797dc234 100644 --- a/db/sql/verify/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/verify/buildings_reference/functions/suburb_locality.sql @@ -10,6 +10,8 @@ SELECT has_function_privilege('buildings_reference.suburb_locality_insert(intege SELECT has_function_privilege('buildings_reference.suburb_locality_update_by_external_id(integer, varchar, varchar, varchar)', 'execute'); -SELECT has_function_privilege('buildings_reference.suburb_locality_update_building_outlines(integer[], integer[])', 'execute'); +SELECT has_function_privilege('buildings_reference.suburb_locality_attribute_update_building_outlines(integer[])', 'execute'); + +SELECT has_function_privilege('buildings_reference.suburb_locality_geometry_update_building_outlines(varchar)', 'execute'); ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/territorial_authority.sql b/db/sql/verify/buildings_reference/functions/territorial_authority.sql index b2789c36..9fc9891d 100644 --- a/db/sql/verify/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/verify/buildings_reference/functions/territorial_authority.sql @@ -12,7 +12,9 @@ SELECT has_function_privilege('buildings_reference.territorial_authority_insert( SELECT has_function_privilege('buildings_reference.territorial_authority_update_by_external_id(integer, varchar, varchar)', 'execute'); -SELECT has_function_privilege('buildings_reference.territorial_authority_update_building_outlines(integer[], integer[])', 'execute'); +SELECT has_function_privilege('buildings_reference.territorial_authority_attribute_update_building_outlines(integer[])', 'execute'); + +SELECT has_function_privilege('buildings_reference.territorial_authority_geometry_update_building_outlines(varchar)', 'execute'); DO $$ BEGIN From 0eca5fca9a0c703d8d33e5d112a1482edb40882c Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Fri, 20 Sep 2024 15:45:39 +1200 Subject: [PATCH 11/19] feat: use st_subdivide function to improve the speed --- .../functions/suburb_locality.sql | 12 ++++++++---- .../functions/territorial_authority.sql | 16 ++++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql index 57f6f783..31e79df4 100644 --- a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql @@ -140,11 +140,15 @@ COMMENT ON FUNCTION buildings_reference.suburb_locality_attribute_update_buildin CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_geometry_update_building_outlines(varchar) RETURNS integer AS $$ - UPDATE buildings.building_outlines - SET suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(shape), + WITH sub_tas AS ( + SELECT ST_Subdivide(ST_SetSRID(ST_GeometryFromText($1), 2193)) AS shape + ) + UPDATE buildings.building_outlines bo + SET suburb_locality_id = buildings_reference.suburb_locality_intersect_polygon(bo.shape), last_modified = NOW() - WHERE ST_Intersects(shape, ST_SetSRID(ST_GeometryFromText($1), 2193)) - AND suburb_locality_id != buildings_reference.suburb_locality_intersect_polygon(shape) + FROM sub_tas ta + WHERE ST_Intersects(bo.shape, ta.shape) + AND suburb_locality_id != buildings_reference.suburb_locality_intersect_polygon(bo.shape) RETURNING building_outline_id; $$ LANGUAGE sql VOLATILE; diff --git a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql index 09475f35..c54342e8 100644 --- a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql @@ -171,12 +171,16 @@ COMMENT ON FUNCTION buildings_reference.territorial_authority_attribute_update_b CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_geometry_update_building_outlines(varchar) RETURNS integer AS $$ - UPDATE buildings.building_outlines - SET territorial_authority_id = buildings_reference.territorial_authority_grid_intersect_polygon(shape), - last_modified = NOW() - WHERE ST_Intersects(shape, ST_SetSRID(ST_GeometryFromText($1), 2193)) - AND territorial_authority_id != buildings_reference.territorial_authority_grid_intersect_polygon(shape) - RETURNING building_outline_id; + WITH sub_tas AS ( + SELECT ST_Subdivide(ST_SetSRID(ST_GeometryFromText($1), 2193)) AS shape + ) + UPDATE buildings.building_outlines bo + SET territorial_authority_id = buildings_reference.territorial_authority_grid_intersect_polygon(bo.shape), + last_modified = NOW() + FROM sub_tas ta + WHERE ST_Intersects(bo.shape, ta.shape) + AND territorial_authority_id != buildings_reference.territorial_authority_grid_intersect_polygon(bo.shape) + RETURNING building_outline_id; $$ LANGUAGE sql VOLATILE; From 43a569700b3d60448f9e480886cc1f601271ce19 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 17 Oct 2024 16:25:16 +1300 Subject: [PATCH 12/19] feat: overwrite coastlines and coastline table function --- buildings/gui/reference_data.py | 62 +++++++++++++++--------------- buildings/reference_data/topo50.py | 21 ++++++++++ 2 files changed, 53 insertions(+), 30 deletions(-) diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index b281ade1..049d8385 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -40,7 +40,7 @@ "shelter_points", "bivouac_points", "protected_areas_polygons", - "coastlines and islands", + "coastlines_and_islands", "suburb_locality", ] DATASET_STATSNZ = ["territorial_authority"] @@ -52,7 +52,6 @@ def __init__(self, dockwidget, parent=None): super(UpdateReferenceData, self).__init__(parent) self.setupUi(self) self.dockwidget = dockwidget - self.api_key = "" self.db = db self.db.connect() self.error_dialog = None @@ -171,9 +170,9 @@ def update_clicked(self, commit_status=True): # protected areas if self.chbx_protected_areas.isChecked(): self.topo_layer_processing("protected_areas_polygons") - # coastlines and islands (placeholder) + # coastlines and islands (overwrite the existing table) if self.chbx_coastline_and_islands.isChecked(): - self.message += "The coastlines and islands table must be updated manually" + self.topo_layer_processing("coastlines_and_islands") # suburb localities if self.chbx_suburbs.isChecked(): self.admin_bdy_layer_processing("suburb_locality") @@ -256,24 +255,29 @@ def request_error(self): self.error_dialog.show() QApplication.restoreOverrideCursor() - def topo_layer_processing(self, layer): - """Processes to run for all topo layers""" - if not self.check_api_key(layer): + def topo_layer_processing(self, dataset): + """Processes to run for topo layers""" + api_key = self.check_api_key(dataset) + if api_key is None: return - status = topo50.update_topo50(self.api_key, layer, self.db) - self.update_message(status, layer) + if dataset == "coastlines_and_islands": + status = topo50.update_coastlines_and_islands(api_key, dataset, self.db) + else: + status = topo50.update_topo50(api_key, dataset, self.db) + self.update_message(status, dataset) if status != "error": - self.updates.append(layer) + self.updates.append(dataset) - def admin_bdy_layer_processing(self, layer): - """Processes to run for all admin bdy layers""" - if not self.check_api_key(layer): + def admin_bdy_layer_processing(self, dataset): + """Processes to run for admin bdy layers""" + api_key = self.check_api_key(dataset) + if api_key is None: return - status = admin_bdys.update_admin_bdys(self.api_key, layer, self.db) - self.update_message(status, layer) + status = admin_bdys.update_admin_bdys(api_key, dataset, self.db) + self.update_message(status, dataset) if status != "error": - self.updates.append(layer) - if layer == "territorial_authority": + self.updates.append(dataset) + if dataset == "territorial_authority": self.db.execute_no_commit(reference_select.refresh_ta_grid_view) self.update_message("updated", "territorial_authority_grid") self.updates.append("territorial_authority_grid") @@ -281,20 +285,18 @@ def admin_bdy_layer_processing(self, layer): def check_api_key(self, layer): # check for API key if layer in DATASET_LINZ: - self.api_key = API_KEY_LINZ + return API_KEY_LINZ elif layer in DATASET_STATSNZ: - self.api_key = API_KEY_STATSNZ - if self.api_key == "": - self.error_dialog = ErrorDialog() - self.error_dialog.fill_report( - "\n------------- NO API KEY -------------" - "\n\nPlease enter a koordinates api key to" - " update the reference data." - ) - self.error_dialog.show() - QApplication.restoreOverrideCursor() - return False - return True + return API_KEY_STATSNZ + self.error_dialog = ErrorDialog() + self.error_dialog.fill_report( + "\n------------- NO API KEY -------------" + "\n\nPlease enter a koordinates api key to" + " update the reference data." + ) + self.error_dialog.show() + QApplication.restoreOverrideCursor() + return None def update_message(self, status, name): """add to message for display at end of processing""" diff --git a/buildings/reference_data/topo50.py b/buildings/reference_data/topo50.py index cf64248e..84fd3691 100644 --- a/buildings/reference_data/topo50.py +++ b/buildings/reference_data/topo50.py @@ -17,6 +17,7 @@ "shelter_points": 50245, "bivouac_points": 50239, "protected_areas_polygons": 53564, + "coastlines_and_islands": 51153, } LDS_LAYER_HAS_NAME = [ @@ -165,6 +166,26 @@ def update_topo50(kx_api_key, dataset, dbconn): return "updated" +def update_coastlines_and_islands(kx_api_key, dataset, dbconn): + if dataset != "coastlines_and_islands": + return "error" + layer = QgsVectorLayer( + "https://data.linz.govt.nz/services;key={1}/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=layer-{0}&outputFormat=json".format( + LDS_LAYER_IDS[dataset], kx_api_key + ) + ) + if not layer.isValid(): + return "error" + # clear the table and insert all data via WFS + dbconn.execute_no_commit("DELETE FROM buildings_reference.coastlines_and_islands;") + for feature in layer.getFeatures(): + sql = "INSERT INTO buildings_reference.coastlines_and_islands(external_coastline_and_island_id, shape) VALUES (%s, ST_SetSRID(ST_GeometryFromText(%s), 2193))" + dbconn.execute_no_commit( + sql, (feature["TARGET_FID"], feature.geometry().asWkt()) + ) + return "updated" + + def correct_name_format(name): if not name: name = "" From 3923874f608f1f3a2eb89237647f0a7e77d417be Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 17 Oct 2024 16:27:46 +1300 Subject: [PATCH 13/19] feat: returns building_outlines modified in msg box --- buildings/gui/reference_data.py | 19 ++++++++++++------- buildings/reference_data/admin_bdys.py | 19 +++++++++---------- .../functions/reference_update_log.sql | 2 +- .../functions/suburb_locality.sql | 4 ++-- .../functions/territorial_authority.sql | 4 ++-- 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index 049d8385..174fcf96 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -265,7 +265,7 @@ def topo_layer_processing(self, dataset): else: status = topo50.update_topo50(api_key, dataset, self.db) self.update_message(status, dataset) - if status != "error": + if status == "updated": self.updates.append(dataset) def admin_bdy_layer_processing(self, dataset): @@ -273,14 +273,19 @@ def admin_bdy_layer_processing(self, dataset): api_key = self.check_api_key(dataset) if api_key is None: return - status = admin_bdys.update_admin_bdys(api_key, dataset, self.db) - self.update_message(status, dataset) - if status != "error": + status, ids_bo = admin_bdys.update_admin_bdys(api_key, dataset, self.db) + if status == "updated": + self.update_message( + status, + f"{dataset} ({len(ids_bo)} building outlines modified)", + ) self.updates.append(dataset) if dataset == "territorial_authority": self.db.execute_no_commit(reference_select.refresh_ta_grid_view) self.update_message("updated", "territorial_authority_grid") self.updates.append("territorial_authority_grid") + else: + self.update_message(status, dataset) def check_api_key(self, layer): # check for API key @@ -301,9 +306,9 @@ def check_api_key(self, layer): def update_message(self, status, name): """add to message for display at end of processing""" if status == "current": - self.message += "The {} table was up to date\n".format(name) + self.message += "The table {} was up to date\n".format(name) if status == "updated": - self.message += "The {} table has been updated\n".format(name) + self.message += "The table {} has been updated\n".format(name) if status == "error": - self.message += "The request errored on the {} table\n".format(name) + self.message += "The request errored on the table {}\n".format(name) self.request_error() diff --git a/buildings/reference_data/admin_bdys.py b/buildings/reference_data/admin_bdys.py index 1e5845cf..b275d3ca 100644 --- a/buildings/reference_data/admin_bdys.py +++ b/buildings/reference_data/admin_bdys.py @@ -56,7 +56,6 @@ def current_date(): # todo: add kx_api_key in config # todo: combine suburb_locality- and town city def update_admin_bdys(kx_api_key, dataset, dbconn: db): - # get last update of layer date from log from_var = last_update(dataset) @@ -76,10 +75,10 @@ def update_admin_bdys(kx_api_key, dataset, dbconn: db): if not layer.isValid(): # something went wrong - return "error" + return "error", [] if layer.featureCount() == 0: - return "current" + return "current", [] external_id = LAYERS[dataset]["primary_id"] @@ -201,21 +200,21 @@ def update_admin_bdys(kx_api_key, dataset, dbconn: db): feature.geometry().asWkt(), ), ) - print("updated_attrs: {}".format(ids_attr_updates)) - print("updated_geom: {}".format(len(geoms_diff))) geom_union = QgsGeometry.unaryUnion(geoms_diff).asWkt() - print(geom_union) sql = "SELECT buildings_reference.{}_attribute_update_building_outlines(%s)".format( dataset ) - dbconn.execute_no_commit(sql, (ids_attr_updates,)) + result = dbconn.execute_no_commit(sql, (ids_attr_updates,)) + ids_bo = [r[0] for r in result.fetchall() if r[0] is not None] sql = "SELECT buildings_reference.{}_geometry_update_building_outlines(%s)".format( dataset ) - dbconn.execute_no_commit(sql, (geom_union,)) - - return "updated" + result = dbconn.execute_no_commit(sql, (geom_union,)) + ids_bo.extend( + [r[0] for r in result.fetchall() if r[0] not in ids_bo and r[0] is not None] + ) + return "updated", ids_bo def correct_name_format(name): diff --git a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql index 8031f575..c1ec22e5 100644 --- a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql @@ -25,7 +25,7 @@ RETURNS integer AS $$ INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, hut, shelter, bivouac, protected_areas) - VALUES(CASE WHEN ('river_polygon' = ANY(p_list)) THEN True ELSE False END, + VALUES(CASE WHEN ('river_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('lake_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('pond_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('swamp_polygons' = ANY(p_list)) THEN True ELSE False END, diff --git a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql index 31e79df4..1a384b5f 100644 --- a/db/sql/deploy/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/deploy/buildings_reference/functions/suburb_locality.sql @@ -121,7 +121,7 @@ COMMENT ON FUNCTION buildings_reference.suburb_locality_update_by_external_id(in -- params: integer[] suburb_locality_id -- return: integer building_outline_id CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_attribute_update_building_outlines(integer[]) -RETURNS integer AS +RETURNS SETOF integer AS $$ UPDATE buildings.building_outlines SET last_modified = NOW() @@ -138,7 +138,7 @@ COMMENT ON FUNCTION buildings_reference.suburb_locality_attribute_update_buildin -- params: varchar shape -- return: integer building_outline_id CREATE OR REPLACE FUNCTION buildings_reference.suburb_locality_geometry_update_building_outlines(varchar) -RETURNS integer AS +RETURNS SETOF integer AS $$ WITH sub_tas AS ( SELECT ST_Subdivide(ST_SetSRID(ST_GeometryFromText($1), 2193)) AS shape diff --git a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql index c54342e8..9d119f8a 100644 --- a/db/sql/deploy/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/deploy/buildings_reference/functions/territorial_authority.sql @@ -152,7 +152,7 @@ COMMENT ON FUNCTION buildings_reference.territorial_authority_update_by_external -- params: integer[] territorial_authority_id -- return: integer building_outline_id CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_attribute_update_building_outlines(integer[]) -RETURNS integer AS +RETURNS SETOF integer AS $$ UPDATE buildings.building_outlines SET last_modified = NOW() @@ -169,7 +169,7 @@ COMMENT ON FUNCTION buildings_reference.territorial_authority_attribute_update_b -- params: varchar shape -- return: integer building_outline_id CREATE OR REPLACE FUNCTION buildings_reference.territorial_authority_geometry_update_building_outlines(varchar) -RETURNS integer AS +RETURNS SETOF integer AS $$ WITH sub_tas AS ( SELECT ST_Subdivide(ST_SetSRID(ST_GeometryFromText($1), 2193)) AS shape From 2a40b23775904b70d131bf35bdea7d403abd8e80 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 17 Oct 2024 16:28:31 +1300 Subject: [PATCH 14/19] feat: function to check changeset status for all dataset --- buildings/gui/reference_data.py | 64 +++++++++++++++++++++++++- buildings/gui/reference_data.ui | 28 ++++++++++- buildings/reference_data/admin_bdys.py | 50 +++++++++++++++++++- buildings/reference_data/topo50.py | 61 ++++++++++++++++++++++++ 4 files changed, 199 insertions(+), 4 deletions(-) diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index 174fcf96..f121a9cc 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -3,9 +3,19 @@ import os.path from functools import partial +from qgis.core import QgsVectorLayer from qgis.PyQt import uic from qgis.PyQt.QtCore import pyqtSlot, Qt -from qgis.PyQt.QtWidgets import QFrame, QLineEdit, QMessageBox, QApplication, QCheckBox +from qgis.PyQt.QtWidgets import ( + QDialog, + QFrame, + QMessageBox, + QApplication, + QCheckBox, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, +) from qgis.PyQt.QtGui import QIcon from buildings.gui.error_dialog import ErrorDialog @@ -45,6 +55,21 @@ ] DATASET_STATSNZ = ["territorial_authority"] +DATASET_TOPO50 = [ + "canal_polygons", + "lagoon_polygons", + "lake_polygons", + "pond_polygons", + "river_polygons", + "swamp_polygons", + "hut_points", + "shelter_points", + "bivouac_points", + "protected_areas_polygons", + "coastlines_and_islands", +] +DATASET_ADMIN_BDYS = ["suburb_locality", "territorial_authority"] + class UpdateReferenceData(QFrame, FORM_CLASS): def __init__(self, dockwidget, parent=None): @@ -79,6 +104,7 @@ def __init__(self, dockwidget, parent=None): self.btn_update.clicked.connect( partial(self.update_clicked, commit_status=True) ) + self.btn_status.clicked.connect(self.btn_status_clicked) def close_cursor(self): self.db.close_cursor() @@ -130,6 +156,42 @@ def disable_checkboxes(self): "\nNOTE: You can't update reference data with\n a dataset in progress \n" ) + @pyqtSlot() + def btn_status_clicked(self): + QApplication.setOverrideCursor(Qt.WaitCursor) + dialog = QDialog() + tbl = QTableWidget() + tbl.setColumnCount(6) + tbl.setHorizontalHeaderLabels( + ["Dataset", "Last Updated", "New Updates", "Insert", "Update", "Delete"] + ) + for dataset in DATASET_LINZ + DATASET_STATSNZ: + api_key = self.check_api_key(dataset) + if api_key is None: + return + if dataset in DATASET_TOPO50: + status = topo50.check_status_topo50(api_key, dataset) + else: + status = admin_bdys.check_status_admin_bdys(api_key, dataset) + row_tbl = tbl.rowCount() + tbl.setRowCount(row_tbl + 1) + tbl.setItem(row_tbl, 0, QTableWidgetItem(status["dataset"])) + tbl.setItem(row_tbl, 1, QTableWidgetItem(status["last_updated"])) + tbl.setItem(row_tbl, 2, QTableWidgetItem(status["new_updates"])) + tbl.setItem(row_tbl, 3, QTableWidgetItem(status["insert"])) + tbl.setItem(row_tbl, 4, QTableWidgetItem(status["update"])) + tbl.setItem(row_tbl, 5, QTableWidgetItem(status["delete"])) + tbl.resizeRowsToContents() + tbl.resizeColumnsToContents() + dialogWidth = tbl.horizontalHeader().length() + 100 + dialogHeight = tbl.verticalHeader().length() + 100 + dialog.setFixedSize(dialogWidth, dialogHeight) + layout = QVBoxLayout() + dialog.setLayout(layout) + layout.addWidget(tbl) + QApplication.restoreOverrideCursor() + dialog.exec() + @pyqtSlot() def update_clicked(self, commit_status=True): """Called when update btn clicked""" diff --git a/buildings/gui/reference_data.ui b/buildings/gui/reference_data.ui index 3307e011..e427666a 100644 --- a/buildings/gui/reference_data.ui +++ b/buildings/gui/reference_data.ui @@ -54,6 +54,32 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Status + + + @@ -143,7 +169,7 @@ - Coastlines and Islands + Coastlines and Islands (Overwrite existing) diff --git a/buildings/reference_data/admin_bdys.py b/buildings/reference_data/admin_bdys.py index b275d3ca..fa48a12d 100644 --- a/buildings/reference_data/admin_bdys.py +++ b/buildings/reference_data/admin_bdys.py @@ -1,4 +1,5 @@ from builtins import str +from collections import Counter # script to update canal data @@ -53,8 +54,53 @@ def current_date(): return to_var -# todo: add kx_api_key in config -# todo: combine suburb_locality- and town city +def check_status_admin_bdys(kx_api_key, dataset): + # get last update of layer date from log + from_var = last_update(dataset) + + # current date + to_var = current_date() + + layer = QgsVectorLayer( + URI.format( + kx_api_key, + LAYERS[dataset]["url_base"], + LAYERS[dataset]["layer_id"], + from_var, + to_var, + LAYERS[dataset]["cql_filter"], + ) + ) + if not layer.isValid(): + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "error", + "insert": "error", + "update": "error", + "delete": "error", + } + + if layer.featureCount() == 0: + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "", + "insert": "0", + "update": "0", + "delete": "0", + } + counts = Counter([feat["__change__"] for feat in layer.getFeatures()]) + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "Available", + "insert": str(counts["INSERT"]), + "update": str(counts["UPDATE"]), + "delete": str(counts["DELETE"]), + } + + def update_admin_bdys(kx_api_key, dataset, dbconn: db): # get last update of layer date from log from_var = last_update(dataset) diff --git a/buildings/reference_data/topo50.py b/buildings/reference_data/topo50.py index 84fd3691..926d5abe 100644 --- a/buildings/reference_data/topo50.py +++ b/buildings/reference_data/topo50.py @@ -1,4 +1,6 @@ from builtins import str +from collections import Counter + # script to update canal data @@ -57,6 +59,65 @@ def current_date(): return to_var +def check_status_topo50(kx_api_key, dataset): + if "polygon" in dataset: + column_name = dataset.replace("_polygons", "") + elif "point" in dataset: + column_name = dataset.replace("_points", "") + else: + column_name = dataset + + # get last update of layer date from log + from_var = last_update(column_name) + + # current date + to_var = current_date() + + cql_filter = "" + if dataset == "hut_points": + cql_filter = "&cql_filter=bldg_use='hut'" + elif dataset == "shelter_points": + cql_filter = "&cql_filter=bldg_use='shelter'" + elif dataset == "protected_areas_polygons": + cql_filter = "&cql_filter=type = 'Conservation Area' OR type = 'National Park' OR type ='Wildlife Area'" + + external_id = "t50_fid" + if dataset == "protected_areas_polygons": + external_id = "napalis_id" + + layer = QgsVectorLayer( + URI.format(LDS_LAYER_IDS[dataset], kx_api_key, from_var, to_var, cql_filter) + ) + if not layer.isValid(): + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "error", + "insert": "error", + "update": "error", + "delete": "error", + } + + if layer.featureCount() == 0: + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "", + "insert": "0", + "update": "0", + "delete": "0", + } + counts = Counter([feat["__change__"] for feat in layer.getFeatures()]) + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "Available", + "insert": str(counts["INSERT"]), + "update": str(counts["UPDATE"]), + "delete": str(counts["DELETE"]), + } + + def update_topo50(kx_api_key, dataset, dbconn): # Get name of column in reference log table From 24d8a4ab8c68ca8ee818f60c5d6991530f9cab94 Mon Sep 17 00:00:00 2001 From: Douglas Kwan Date: Fri, 25 Oct 2024 16:50:34 +1300 Subject: [PATCH 15/19] chore: fix revert file descriptions in headers --- db/sql/revert/buildings/functions/building_outlines.sql | 2 +- .../buildings/functions/building_outlines@v4.0.0-dev1.sql | 2 +- .../revert/buildings_bulk_load/functions/bulk_load_outlines.sql | 2 +- .../functions/bulk_load_outlines@v4.0.0-dev1.sql | 2 +- db/sql/revert/buildings_bulk_load/functions/compare.sql | 2 +- .../revert/buildings_bulk_load/functions/load_to_production.sql | 2 +- db/sql/revert/buildings_bulk_load/functions/removed.sql | 2 +- .../revert/buildings_lds/functions/populate_buildings_lds.sql | 2 +- .../functions/populate_buildings_lds@v3.1.0-dev1.sql | 2 +- .../functions/populate_buildings_lds@v3.2.0-dev1.sql | 2 +- .../functions/populate_buildings_lds@v3.2.0-dev2.sql | 2 +- .../functions/populate_buildings_lds@v4.0.0-dev1.sql | 2 +- .../buildings_reference/functions/reference_update_log.sql | 2 +- db/sql/revert/buildings_reference/functions/suburb_locality.sql | 2 +- .../functions/suburb_locality@v3.1.0-dev2.sql | 2 +- .../functions/suburb_locality@v4.0.0-dev1.sql | 2 +- .../buildings_reference/functions/suburb_locality_optimised.sql | 2 +- .../buildings_reference/functions/territorial_authority.sql | 2 +- .../functions/territorial_authority@v4.0.0-dev1.sql | 2 +- db/sql/revert/buildings_reference/functions/town_city.sql | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/db/sql/revert/buildings/functions/building_outlines.sql b/db/sql/revert/buildings/functions/building_outlines.sql index bfa2743e..75ff30e0 100644 --- a/db/sql/revert/buildings/functions/building_outlines.sql +++ b/db/sql/revert/buildings/functions/building_outlines.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings/functions/building_outlines to pg +-- Revert nz-buildings:buildings/functions/building_outlines to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql b/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql index d409a61b..c1ba443e 100644 --- a/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql +++ b/db/sql/revert/buildings/functions/building_outlines@v4.0.0-dev1.sql @@ -1,4 +1,4 @@ --- Revert nz-buildings:buildings/functions/building_outlines to pg +-- Revert nz-buildings:buildings/functions/building_outlines to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql index 7327a2d2..2b49743d 100644 --- a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql +++ b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to pg +-- Revert nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql index 6884f7eb..27ad29a6 100644 --- a/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql +++ b/db/sql/revert/buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to pg +-- Revert nz-buildings:buildings_bulk_load/functions/bulk_load_outlines to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_bulk_load/functions/compare.sql b/db/sql/revert/buildings_bulk_load/functions/compare.sql index 2b468c89..ecd63ef6 100644 --- a/db/sql/revert/buildings_bulk_load/functions/compare.sql +++ b/db/sql/revert/buildings_bulk_load/functions/compare.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_bulk_load/functions/compare to pg +-- Revert nz-buildings:buildings_bulk_load/functions/compare to v3.2.0 BEGIN; diff --git a/db/sql/revert/buildings_bulk_load/functions/load_to_production.sql b/db/sql/revert/buildings_bulk_load/functions/load_to_production.sql index 5be6c120..03e8e5f7 100644 --- a/db/sql/revert/buildings_bulk_load/functions/load_to_production.sql +++ b/db/sql/revert/buildings_bulk_load/functions/load_to_production.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_bulk_load/functions/load_to_production to pg +-- Revert nz-buildings:buildings_bulk_load/functions/load_to_production to v3.6.0 BEGIN; diff --git a/db/sql/revert/buildings_bulk_load/functions/removed.sql b/db/sql/revert/buildings_bulk_load/functions/removed.sql index fd9e519f..63bc19f6 100644 --- a/db/sql/revert/buildings_bulk_load/functions/removed.sql +++ b/db/sql/revert/buildings_bulk_load/functions/removed.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_bulk_load/functions/removed to pg +-- Revert nz-buildings:buildings_bulk_load/functions/removed to v3.2.0 BEGIN; diff --git a/db/sql/revert/buildings_lds/functions/populate_buildings_lds.sql b/db/sql/revert/buildings_lds/functions/populate_buildings_lds.sql index 73ca3c3c..8b8feef9 100644 --- a/db/sql/revert/buildings_lds/functions/populate_buildings_lds.sql +++ b/db/sql/revert/buildings_lds/functions/populate_buildings_lds.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_lds/functions/populate_buildings_lds to pg +-- Revert nz-buildings:buildings_lds/functions/populate_buildings_lds to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.1.0-dev1.sql b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.1.0-dev1.sql index 3c123ca2..d105b7e0 100644 --- a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.1.0-dev1.sql +++ b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.1.0-dev1.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_lds/functions/populate_buildings_lds to pg +-- Revert nz-buildings:buildings_lds/functions/populate_buildings_lds to v3.0.0 BEGIN; diff --git a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev1.sql b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev1.sql index 3c123ca2..e78720b8 100644 --- a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev1.sql +++ b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev1.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_lds/functions/populate_buildings_lds to pg +-- Revert nz-buildings:buildings_lds/functions/populate_buildings_lds to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev2.sql b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev2.sql index 7cdb8fb7..0885890f 100644 --- a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev2.sql +++ b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v3.2.0-dev2.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_lds/functions/populate_buildings_lds to pg +-- Revert nz-buildings:buildings_lds/functions/populate_buildings_lds to v3.2.0 BEGIN; diff --git a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1.sql b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1.sql index 5b60e516..29e00c99 100644 --- a/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1.sql +++ b/db/sql/revert/buildings_lds/functions/populate_buildings_lds@v4.0.0-dev1.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_lds/functions/populate_buildings_lds to pg +-- Revert nz-buildings:buildings_lds/functions/populate_buildings_lds from to v3.2.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/reference_update_log.sql b/db/sql/revert/buildings_reference/functions/reference_update_log.sql index f5d677e3..41e6ef86 100644 --- a/db/sql/revert/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/revert/buildings_reference/functions/reference_update_log.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/reference_update_log to pg +-- Revert nz-buildings:buildings_reference/functions/reference_update_log to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality.sql b/db/sql/revert/buildings_reference/functions/suburb_locality.sql index d632d3dc..5740f35d 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/suburb_locality to pg +-- Revert nz-buildings:buildings_reference/functions/suburb_locality to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality@v3.1.0-dev2.sql b/db/sql/revert/buildings_reference/functions/suburb_locality@v3.1.0-dev2.sql index a10b1e14..06f1780a 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality@v3.1.0-dev2.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality@v3.1.0-dev2.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/suburb_locality to pg +-- Revert nz-buildings:buildings_reference/functions/suburb_locality to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql index 9fc0e63e..fe8149af 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality@v4.0.0-dev1.sql @@ -1,4 +1,4 @@ --- Revert nz-buildings:buildings_reference/functions/suburb_locality to pg +-- Revert nz-buildings:buildings_reference/functions/suburb_locality to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql b/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql index dbfc7a4c..63965db4 100644 --- a/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql +++ b/db/sql/revert/buildings_reference/functions/suburb_locality_optimised.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/update_suburb_locality_changed_deleted_buildings to pg +-- Revert nz-buildings:buildings_reference/functions/update_suburb_locality_changed_deleted_buildings to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/territorial_authority.sql b/db/sql/revert/buildings_reference/functions/territorial_authority.sql index 5815bd3e..a08f8897 100644 --- a/db/sql/revert/buildings_reference/functions/territorial_authority.sql +++ b/db/sql/revert/buildings_reference/functions/territorial_authority.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/territorial_authority to pg +-- Revert nz-buildings:buildings_reference/functions/territorial_authority to v4.0.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql b/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql index 8f5789a7..a6607d52 100644 --- a/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql +++ b/db/sql/revert/buildings_reference/functions/territorial_authority@v4.0.0-dev1.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/territorial_authority to pg +-- Revert nz-buildings:buildings_reference/functions/territorial_authority to v3.1.0 BEGIN; diff --git a/db/sql/revert/buildings_reference/functions/town_city.sql b/db/sql/revert/buildings_reference/functions/town_city.sql index 7e955adf..9a4d7ba2 100644 --- a/db/sql/revert/buildings_reference/functions/town_city.sql +++ b/db/sql/revert/buildings_reference/functions/town_city.sql @@ -1,4 +1,4 @@ --- Deploy nz-buildings:buildings_reference/functions/town_city to pg +-- Revert nz-buildings:buildings_reference/functions/town_city to v4.0.0 BEGIN; From af0f0ddea1c456baeb9af714b847f4714a51b522 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 31 Oct 2024 15:12:02 +1300 Subject: [PATCH 16/19] feat: db changes for nz_imagery_survey_index --- .../add_log_column_nz_imagery_survey_index.sql | 7 +++++++ .../functions/reference_update_log.sql | 5 +++-- .../add_log_column_nz_imagery_survey_index.sql | 7 +++++++ db/sql/sqitch.plan | 1 + .../add_log_column_nz_imagery_survey_index.sql | 9 +++++++++ .../functions/reference_update_log.sql | 3 ++- 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 db/sql/deploy/buildings_reference/add_log_column_nz_imagery_survey_index.sql create mode 100644 db/sql/revert/buildings_reference/add_log_column_nz_imagery_survey_index.sql create mode 100644 db/sql/verify/buildings_reference/add_log_column_nz_imagery_survey_index.sql diff --git a/db/sql/deploy/buildings_reference/add_log_column_nz_imagery_survey_index.sql b/db/sql/deploy/buildings_reference/add_log_column_nz_imagery_survey_index.sql new file mode 100644 index 00000000..6240076b --- /dev/null +++ b/db/sql/deploy/buildings_reference/add_log_column_nz_imagery_survey_index.sql @@ -0,0 +1,7 @@ +-- Deploy nz-buildings:buildings_reference/add_log_column_nz_imagery_survey_index to pg + +BEGIN; + +ALTER TABLE buildings_reference.reference_update_log ADD imagery_survey_index boolean DEFAULT False; + +COMMIT; diff --git a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql index c1ec22e5..0afd61bc 100644 --- a/db/sql/deploy/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/deploy/buildings_reference/functions/reference_update_log.sql @@ -24,7 +24,7 @@ CREATE OR REPLACE FUNCTION buildings_reference.reference_update_log_insert_log(p RETURNS integer AS $$ - INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, hut, shelter, bivouac, protected_areas) + INSERT INTO buildings_reference.reference_update_log (river, lake, pond, swamp, lagoon, canal, coastlines_and_islands, capture_source_area, territorial_authority, territorial_authority_grid, suburb_locality, hut, shelter, bivouac, protected_areas, imagery_survey_index) VALUES(CASE WHEN ('river_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('lake_polygons' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('pond_polygons' = ANY(p_list)) THEN True ELSE False END, @@ -39,7 +39,8 @@ $$ CASE WHEN ('hut_points' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('shelter_points' = ANY(p_list)) THEN True ELSE False END, CASE WHEN ('bivouac_points' = ANY(p_list)) THEN True ELSE False END, - CASE WHEN ('protected_areas_polygons' = ANY(p_list)) THEN True ELSE False END + CASE WHEN ('protected_areas_polygons' = ANY(p_list)) THEN True ELSE False END, + CASE WHEN ('nz_imagery_survey_index' = ANY(p_list)) THEN True ELSE False END ) RETURNING update_id; diff --git a/db/sql/revert/buildings_reference/add_log_column_nz_imagery_survey_index.sql b/db/sql/revert/buildings_reference/add_log_column_nz_imagery_survey_index.sql new file mode 100644 index 00000000..17308af6 --- /dev/null +++ b/db/sql/revert/buildings_reference/add_log_column_nz_imagery_survey_index.sql @@ -0,0 +1,7 @@ +-- Revert nz-buildings:buildings_reference/add_log_column_nz_imagery_survey_index from pg + +BEGIN; + +ALTER TABLE buildings_reference.reference_update_log DROP COLUMN imagery_survey_index; + +COMMIT; diff --git a/db/sql/sqitch.plan b/db/sql/sqitch.plan index bfd35605..ae47efe2 100644 --- a/db/sql/sqitch.plan +++ b/db/sql/sqitch.plan @@ -105,6 +105,7 @@ buildings/remove_building_outlines_town_city_id_column 2024-08-14T03:50:02Z Ying buildings_bulk_load/functions/bulk_load_outlines [buildings_bulk_load/functions/bulk_load_outlines@v4.0.0-dev1] 2024-08-14T04:27:25Z Yingting Chen # Remove town_city_id column in funct\nions. buildings_bulk_load/remove_bulk_load_outlines_town_city_id_column 2024-08-14T04:32:22Z Yingting Chen # Remove town_city_id column in bulk_load_outlines table buildings_reference/functions/town_city [buildings_reference/functions/town_city@v4.0.0-dev1] 2024-08-14T04:35:22Z Yingting Chen # Remove functions of town_city table. +buildings_reference/add_log_column_nz_imagery_survey_index 2024-08-14T04:37:22Z Yingting Chen # Add nz_imagery_survey_index column in reference_update_log. buildings_reference/functions/reference_update_log [buildings_reference/functions/reference_update_log@v4.0.0-dev1] 2024-08-14T04:38:22Z Yingting Chen # Remove town_city in reference_update_log update function. buildings_reference/remove_suburb_locality_old_name_column 2024-08-14T04:40:22Z Yingting Chen # Remove suburb_locality old name columns from FENZ buildings_reference/drop_town_city 2024-08-14T04:45:02Z Yingting Chen # Drop table town_city as it has been merged into suburb_locality. diff --git a/db/sql/verify/buildings_reference/add_log_column_nz_imagery_survey_index.sql b/db/sql/verify/buildings_reference/add_log_column_nz_imagery_survey_index.sql new file mode 100644 index 00000000..154b51da --- /dev/null +++ b/db/sql/verify/buildings_reference/add_log_column_nz_imagery_survey_index.sql @@ -0,0 +1,9 @@ +-- Verify nz-buildings:buildings_reference/add_log_column_nz_imagery_survey_index on pg + +BEGIN; + +SELECT imagery_survey_index +FROM buildings_reference.reference_update_log +WHERE FALSE; + +ROLLBACK; diff --git a/db/sql/verify/buildings_reference/functions/reference_update_log.sql b/db/sql/verify/buildings_reference/functions/reference_update_log.sql index 35c053b8..2cfb4657 100644 --- a/db/sql/verify/buildings_reference/functions/reference_update_log.sql +++ b/db/sql/verify/buildings_reference/functions/reference_update_log.sql @@ -21,7 +21,8 @@ BEGIN AND prosrc LIKE '%hut_points%' AND prosrc LIKE '%shelter_points%' AND prosrc LIKE '%bivouac_points%' - AND prosrc LIKE '%protected_areas_polygons%'; + AND prosrc LIKE '%protected_areas_polygons%' + AND prosrc LIKE '%nz_imagery_survey_index%'; IF NOT FOUND THEN RAISE EXCEPTION 'dataset keywords not found, should have been added.'; END IF; From ffb2ff84d1c57f2225b0a2cef0bfa9f798646683 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 31 Oct 2024 15:12:27 +1300 Subject: [PATCH 17/19] feat: plugin changes for nz_imagery_survey_index --- buildings/gui/reference_data.py | 49 ++++- buildings/gui/reference_data.ui | 25 +++ buildings/reference_data/other_reference.py | 197 ++++++++++++++++++++ 3 files changed, 267 insertions(+), 4 deletions(-) create mode 100644 buildings/reference_data/other_reference.py diff --git a/buildings/gui/reference_data.py b/buildings/gui/reference_data.py index f121a9cc..5532da2f 100644 --- a/buildings/gui/reference_data.py +++ b/buildings/gui/reference_data.py @@ -19,7 +19,7 @@ from qgis.PyQt.QtGui import QIcon from buildings.gui.error_dialog import ErrorDialog -from buildings.reference_data import topo50, admin_bdys +from buildings.reference_data import topo50, admin_bdys, other_reference from buildings.sql import buildings_bulk_load_select_statements as bulk_load_select from buildings.sql import buildings_reference_select_statements as reference_select from buildings.utilities import database as db @@ -52,6 +52,7 @@ "protected_areas_polygons", "coastlines_and_islands", "suburb_locality", + "nz_imagery_survey_index", ] DATASET_STATSNZ = ["territorial_authority"] @@ -70,6 +71,8 @@ ] DATASET_ADMIN_BDYS = ["suburb_locality", "territorial_authority"] +DATASET_OTHER = ["nz_imagery_survey_index"] + class UpdateReferenceData(QFrame, FORM_CLASS): def __init__(self, dockwidget, parent=None): @@ -100,6 +103,7 @@ def __init__(self, dockwidget, parent=None): # set up signals and slots self.grbx_topo.toggled.connect(self.check_all_topo) self.grbx_admin.toggled.connect(self.check_all_admin) + self.grbx_other.toggled.connect(self.check_all_other) self.btn_exit.clicked.connect(self.exit_clicked) self.btn_update.clicked.connect( partial(self.update_clicked, commit_status=True) @@ -116,6 +120,7 @@ def enable_checkboxes(self): """Enable frame""" self.grbx_topo.setEnabled(1) self.grbx_admin.setEnabled(1) + self.grbx_other.setEnabled(1) self.chbx_canals.setEnabled(1) self.chbx_coastline_and_islands.setEnabled(1) self.chbx_lagoons.setEnabled(1) @@ -129,6 +134,7 @@ def enable_checkboxes(self): self.chbx_protected_areas.setEnabled(1) self.chbx_suburbs.setEnabled(1) self.chbx_ta.setEnabled(1) + self.chbx_imagery.setEnabled(1) self.btn_update.setEnabled(1) # clear message self.lb_message.setText("") @@ -137,6 +143,7 @@ def disable_checkboxes(self): """Disable frame (when outlines dataset in progress)""" self.grbx_topo.setDisabled(1) self.grbx_admin.setDisabled(1) + self.grbx_other.setDisabled(1) self.chbx_canals.setDisabled(1) self.chbx_coastline_and_islands.setDisabled(1) self.chbx_lagoons.setDisabled(1) @@ -150,6 +157,7 @@ def disable_checkboxes(self): self.chbx_protected_areas.setDisabled(1) self.chbx_suburbs.setDisabled(1) self.chbx_ta.setDisabled(1) + self.chbx_imagery.setDisabled(1) self.btn_update.setDisabled(1) # add message self.lb_message.setText( @@ -171,8 +179,13 @@ def btn_status_clicked(self): return if dataset in DATASET_TOPO50: status = topo50.check_status_topo50(api_key, dataset) - else: + elif dataset in DATASET_ADMIN_BDYS: status = admin_bdys.check_status_admin_bdys(api_key, dataset) + else: + status = other_reference.check_status_imagery_survey_index( + api_key, dataset + ) + row_tbl = tbl.rowCount() tbl.setRowCount(row_tbl + 1) tbl.setItem(row_tbl, 0, QTableWidgetItem(status["dataset"])) @@ -241,6 +254,9 @@ def update_clicked(self, commit_status=True): # territorial authority and grid if self.chbx_ta.isChecked(): self.admin_bdy_layer_processing("territorial_authority") + # nz imagery survey index + if self.chbx_imagery.isChecked(): + self.other_layer_processing("nz_imagery_survey_index") # create log for this update if len(self.updates) > 0: @@ -251,10 +267,10 @@ def update_clicked(self, commit_status=True): # final message box if self.message == "": self.message = "No layers were updated." - self.msgbox.setText(self.message) - self.msgbox.exec_() if commit_status: self.db.commit_open_cursor() + self.msgbox.setText(self.message) + self.msgbox.exec_() @pyqtSlot() def exit_clicked(self): @@ -299,6 +315,18 @@ def check_all_admin(self): box.setChecked(False) box.setEnabled(1) + @pyqtSlot() + def check_all_other(self): + """Called when combobox to check all admin layers is toggled""" + if self.grbx_other.isChecked(): + for box in self.grbx_other.findChildren(QCheckBox): + box.setChecked(True) + box.setEnabled(1) + else: + for box in self.grbx_other.findChildren(QCheckBox): + box.setChecked(False) + box.setEnabled(1) + def message_box(self): return QMessageBox( QMessageBox.Information, "Note", self.message, buttons=QMessageBox.Ok @@ -349,6 +377,19 @@ def admin_bdy_layer_processing(self, dataset): else: self.update_message(status, dataset) + def other_layer_processing(self, dataset): + """Processes to run for other layers""" + api_key = self.check_api_key(dataset) + if api_key is None: + return + if dataset == "nz_imagery_survey_index": + status = other_reference.update_imagery_survey_index( + api_key, dataset, self.db + ) + self.update_message(status, dataset) + if status == "updated": + self.updates.append(dataset) + def check_api_key(self, layer): # check for API key if layer in DATASET_LINZ: diff --git a/buildings/gui/reference_data.ui b/buildings/gui/reference_data.ui index e427666a..afdb1532 100644 --- a/buildings/gui/reference_data.ui +++ b/buildings/gui/reference_data.ui @@ -224,6 +224,31 @@ + + + + Other reference + + + false + + + true + + + false + + + + + + NZ Imagery Survey Index + + + + + + diff --git a/buildings/reference_data/other_reference.py b/buildings/reference_data/other_reference.py new file mode 100644 index 00000000..c72a8021 --- /dev/null +++ b/buildings/reference_data/other_reference.py @@ -0,0 +1,197 @@ +from builtins import str +from collections import Counter + + +# script to update canal data + +from buildings.sql import buildings_reference_select_statements as reference_select +from buildings.utilities import database as db +from qgis.core import QgsVectorLayer +from qgis.PyQt.QtCore import Qt, QVariant + +LDS_LAYER_IDS = { + "nz_imagery_survey_index": 95677, +} + + +URI = "https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typeNames=layer-{0}-changeset&viewparams=from:{2};to:{3}{4}&SRSNAME=EPSG:2193&outputFormat=json" + + +def last_update(column_name): + + # get last update of layer date from log + from_var = db.execute_return( + reference_select.log_select_last_update.format(column_name) + ) + from_var = from_var.fetchone() + if from_var is None: + # default to beginning of 2018 + from_var = "2018-01-01T02:15:47.317439" + else: + from_var = str(from_var[0]).split("+")[0] + from_var = from_var.split(" ") + from_var = from_var[0] + "T" + from_var[1] + return from_var + + +def current_date(): + to_var = db.execute_return("SELECT now();") + to_var = to_var.fetchone()[0] + to_var = str(to_var).split("+")[0] + to_var = to_var.split(" ") + to_var = to_var[0] + "T" + to_var[1] + return to_var + + +def check_status_imagery_survey_index(kx_api_key, dataset): + # get last update of layer date from log + from_var = last_update("imagery_survey_index") + + # current date + to_var = current_date() + + cql_filter = "" + layer = QgsVectorLayer( + URI.format(LDS_LAYER_IDS[dataset], kx_api_key, from_var, to_var, cql_filter) + ) + if not layer.isValid(): + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "error", + "insert": "error", + "update": "error", + "delete": "error", + } + + if layer.featureCount() == 0: + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "", + "insert": "0", + "update": "0", + "delete": "0", + } + counts = Counter([feat["__change__"] for feat in layer.getFeatures()]) + return { + "dataset": dataset, + "last_updated": from_var, + "new_updates": "Available", + "insert": str(counts["INSERT"]), + "update": str(counts["UPDATE"]), + "delete": str(counts["DELETE"]), + } + + +def update_imagery_survey_index(kx_api_key, dataset, dbconn): + if dataset != "nz_imagery_survey_index": + return "error" + + # get last update of layer date from log + from_var = last_update("imagery_survey_index") + + # current date + to_var = current_date() + + cql_filter = "" + external_id = "imagery_survey_id" + + layer = QgsVectorLayer( + URI.format(LDS_LAYER_IDS[dataset], kx_api_key, from_var, to_var, cql_filter) + ) + if not layer.isValid(): + # something went wrong + return "error" + + if layer.featureCount() == 0: + return "current" + + for feature in layer.getFeatures(): + if feature.attribute("__change__") == "DELETE": + sql = "DELETE FROM buildings_reference.nz_imagery_survey_index WHERE imagery_survey_id = %s;" + dbconn.execute_no_commit(sql, (feature[external_id],)) + + elif feature.attribute("__change__") == "INSERT": + sql = "SELECT True FROM buildings_reference.nz_imagery_survey_index WHERE imagery_survey_id = %s;" + result = dbconn.execute_return( + sql, + (feature[external_id],), + ) + result = result.fetchone() + if result is None: + sql = """ + INSERT INTO buildings_reference.nz_imagery_survey_index ( + imagery_survey_id, + name, + imagery_id, + index_id, + set_order, + ground_sample_distance, + accuracy, + supplier, + licensor, + flown_from, + flown_to, + shape) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, ST_SetSRID(ST_GeometryFromText(%s), 2193)) + """ + dbconn.execute_no_commit( + sql, + ( + feature[external_id], + correct_attribute_format(feature["name"]), + correct_attribute_format(feature["imagery_id"]), + correct_attribute_format(feature["index_id"]), + correct_attribute_format(feature["set_order"]), + correct_attribute_format(feature["ground_sample_distance"]), + correct_attribute_format(feature["accuracy"]), + correct_attribute_format(feature["supplier"]), + correct_attribute_format(feature["licensor"]), + feature["flown_from"].toString(Qt.ISODate), + feature["flown_to"].toString(Qt.ISODate), + feature.geometry().asWkt(), + ), + ) + + elif feature.attribute("__change__") == "UPDATE": + sql = """ + UPDATE buildings_reference.nz_imagery_survey_index + SET + name = %s, + imagery_id = %s, + index_id = %s, + set_order = %s, + ground_sample_distance = %s, + accuracy = %s, + supplier = %s, + licensor = %s, + flown_from = %s, + flown_to = %s, + shape = ST_SetSRID(ST_GeometryFromText(%s), 2193) + WHERE imagery_survey_id = %s; + """ + dbconn.execute_no_commit( + sql, + ( + correct_attribute_format(feature["name"]), + correct_attribute_format(feature["imagery_id"]), + correct_attribute_format(feature["index_id"]), + correct_attribute_format(feature["set_order"]), + correct_attribute_format(feature["ground_sample_distance"]), + correct_attribute_format(feature["accuracy"]), + correct_attribute_format(feature["supplier"]), + correct_attribute_format(feature["licensor"]), + feature["flown_from"].toString(Qt.ISODate), + feature["flown_to"].toString(Qt.ISODate), + feature.geometry().asWkt(), + feature[external_id], + ), + ) + return "updated" + + +def correct_attribute_format(value): + if type(value) == QVariant and value.isNull(): + return None + return value From b1842f03e620c299fc4f13f9e46c664ee6b2ffe5 Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 31 Oct 2024 15:12:49 +1300 Subject: [PATCH 18/19] feat: add tests and tidy up --- buildings/reference_data/topo50.py | 1 - buildings/tests/gui/test_setup_reference_data.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/buildings/reference_data/topo50.py b/buildings/reference_data/topo50.py index 926d5abe..49b79be1 100644 --- a/buildings/reference_data/topo50.py +++ b/buildings/reference_data/topo50.py @@ -29,7 +29,6 @@ "protected_areas_polygons", ] -# URI = "srsname='EPSG:2193' typename='data.linz.govt.nz:layer-{0}-changeset' url=\"https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?viewparams=from:{2};to:{3}{4}\"" URI = "https://data.linz.govt.nz/services;key={1}/wfs/layer-{0}-changeset?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typeNames=layer-{0}-changeset&viewparams=from:{2};to:{3}{4}&SRSNAME=EPSG:2193&outputFormat=json" diff --git a/buildings/tests/gui/test_setup_reference_data.py b/buildings/tests/gui/test_setup_reference_data.py index 5bf44144..42679b72 100644 --- a/buildings/tests/gui/test_setup_reference_data.py +++ b/buildings/tests/gui/test_setup_reference_data.py @@ -45,6 +45,7 @@ def test_disabled_on_start(self): """Test ui options disabled on opening as there is a current dataset""" self.assertFalse(self.reference_frame.grbx_topo.isEnabled()) self.assertFalse(self.reference_frame.grbx_admin.isEnabled()) + self.assertFalse(self.reference_frame.grbx_other.isEnabled()) self.assertFalse(self.reference_frame.chbx_canals.isEnabled()) self.assertFalse(self.reference_frame.chbx_lagoons.isEnabled()) self.assertFalse(self.reference_frame.chbx_lakes.isEnabled()) @@ -55,6 +56,7 @@ def test_disabled_on_start(self): self.assertFalse(self.reference_frame.chbx_ta.isEnabled()) self.assertFalse(self.reference_frame.btn_update.isEnabled()) self.assertTrue(self.reference_frame.btn_exit.isEnabled()) + self.assertTrue(self.reference_frame.btn_status.isEnabled()) def test_groupbx_check(self): """Check changing of group boxes changes the correct checkboxes""" @@ -86,3 +88,15 @@ def test_groupbx_check(self): self.reference_frame.grbx_admin.setChecked(False) self.assertFalse(self.reference_frame.chbx_suburbs.isChecked()) self.assertFalse(self.reference_frame.chbx_ta.isChecked()) + self.reference_frame.grbx_other.setChecked(True) + self.assertTrue(self.reference_frame.chbx_imagery.isChecked()) + self.assertFalse(self.reference_frame.chbx_suburbs.isChecked()) + self.assertFalse(self.reference_frame.chbx_ta.isChecked()) + self.assertFalse(self.reference_frame.chbx_canals.isChecked()) + self.assertFalse(self.reference_frame.chbx_lagoons.isChecked()) + self.assertFalse(self.reference_frame.chbx_lakes.isChecked()) + self.assertFalse(self.reference_frame.chbx_ponds.isChecked()) + self.assertFalse(self.reference_frame.chbx_rivers.isChecked()) + self.assertFalse(self.reference_frame.chbx_swamps.isChecked()) + self.reference_frame.grbx_other.setChecked(False) + self.assertFalse(self.reference_frame.chbx_imagery.isChecked()) From 3c33cb5b2cd4f13eff036bc0adba3be55b31605b Mon Sep 17 00:00:00 2001 From: Yingting Chen Date: Thu, 31 Oct 2024 15:33:06 +1300 Subject: [PATCH 19/19] doc: update changelog --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6898352b..5deebbb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. +## Unreleased +2024-10-31 + +### Added +- New update process for NZ Imagery Survey Index +- A separate update process (overwrite) for nz coastlines and islands +- New status button to see if ref data is available for update + +### Changed +- Update process for Admin Bdys layers is now via WFS + +### Fixed +- Fixed update process for topo50 layers + + ## 4.0.0 2022-09-15