
AUTHORITY["EPSG",28992]
select * from ST_SPATIAL_REFERENCE_SYSTEMS WHERE SRS_ID = 28992;
CREATE SPATIAL REFERENCE SYSTEM "Amersfoort / RD New" IDENTIFIED BY 28992
TYPE PLANAR
COORDINATE X BETWEEN 646.3608848786971 AND 284347.25011779997
COORDINATE Y BETWEEN 308289.5575168845 AND 637111.0245778325
ORGANIZATION "EPSG"
IDENTIFIED BY 28992
LINEAR UNIT OF MEASURE "metre"
SNAP TO GRID DEFAULT
TOLERANCE DEFAULT
POLYGON FORMAT 'EvenOdd'
STORAGE FORMAT 'Internal'
DEFINITION 'PROJCS["Amersfoort / RD New",
GEOGCS["Amersfoort",
DATUM["Amersfoort",
SPHEROID["Bessel 1841",6377397.155,299.1528128,
AUTHORITY["EPSG","7004"]],
TOWGS84[565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],
AUTHORITY["EPSG","6289"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4289"]],
PROJECTION["Oblique_Stereographic"],
PARAMETER["latitude_of_origin",52.15616055555555],
PARAMETER["central_meridian",5.38763888888889],
PARAMETER["scale_factor",0.9999079],
PARAMETER["false_easting",155000],
PARAMETER["false_northing",463000],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AXIS["X",EAST],
AXIS["Y",NORTH],
AUTHORITY["EPSG","28992"]]'
TRANSFORM DEFINITION '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +units=m +no_defs ';
CREATE SPATIAL REFERENCE SYSTEM "WGS 84 / Pseudo-Mercator"
IDENTIFIED BY 3857
TYPE PLANAR
SNAP TO GRID 1e-4
TOLERANCE 1e-4
COORDINATE X BETWEEN -20037508.3427892447 AND 20037508.3427892447
COORDINATE Y BETWEEN -19929191.7668547928 AND 19929191.766854766
ORGANIZATION "EPSG"
IDENTIFIED BY 3857
LINEAR UNIT OF MEASURE "metre"
ANGULAR UNIT OF MEASURE NULL POLYGON FORMAT 'EvenOdd'
STORAGE FORMAT 'Internal'
DEFINITION 'PROJCS["Popular Visualisation CRS / Mercator",
GEOGCS["Popular Visualisation CRS",
DATUM["Popular_Visualisation_Datum",
SPHEROID["Popular Visualisation Sphere",6378137,0,
AUTHORITY["EPSG","7059"]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY["EPSG","6055"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4055"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Mercator_1SP"],
PARAMETER["central_meridian",0],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","3785"],
AXIS["X",EAST],
AXIS["Y",NORTH]]'
TRANSFORM DEFINITION '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs'
role geo_demo::GEO_DEMO extends role sap.bc.ina.service.v2.userRole::INA_USER
{
catalog schema "_SYS_BIC": SELECT;
catalog sql object "SYS"."REPOSITORY_REST": //Objecttype: PROCEDURE
EXECUTE;
catalog sql object "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY": //Objecttype: TABLE
SELECT, INSERT, UPDATE, DELETE;
package geo_demo: REPO.READ, REPO.EDIT_NATIVE_OBJECTS, REPO.ACTIVATE_NATIVE_OBJECTS;
package SAP_BOC_SPATIAL: REPO.READ, REPO.EDIT_NATIVE_OBJECTS, REPO.ACTIVATE_NATIVE_OBJECTS;
}
CALL GRANT_ACTIVATED_ROLE('geo_demo::GEO_DEMO', 'GEO_DEMO');
SELECT * FROM "_SYS_BIC"."sap.fpa.services.spatial.choropleth/CHOROPLETH_CUSTOM_HIERARCHY"
CREATE COLUMN TABLE "GEO_DEMO"."TOWNSHIPS_2018"
( "ID" NVARCHAR(6)
, "NAME" VARCHAR(60)
, "SHAPE" ST_GEOMETRY(3857)
, "SHAPEPOINT" ST_POINT(3857)
, "IS_LEAF" BOOLEAN
, PRIMARY KEY ("ID")
);
CREATE COLUMN TABLE "GEO_DEMO"."DISTRICTS_2018"
( "ID" NVARCHAR(8)
, "NAME" VARCHAR(60)
, "SHAPE" ST_GEOMETRY(3857)
, "SHAPEPOINT" ST_POINT(3857)
, "IS_LEAF" BOOLEAN
, PRIMARY KEY ("ID")
);
CREATE COLUMN TABLE "GEO_DEMO"."NEIGHBORHOODS_2018"
( "ID" NVARCHAR(10)
, "NAME" VARCHAR(60)
, "SHAPE" ST_GEOMETRY(3857)
, "SHAPEPOINT" ST_POINT(3857)
, "IS_LEAF" BOOLEAN
, PRIMARY KEY ("ID")
);
GRANT SELECT ON SCHEMA "GEO_DEMO" TO "_SYS_REPO" WITH GRANT OPTION;
CREATE PROCEDURE "GEO_DEMO"."PR_GENERATE_TOWNSHIPS"( )
LANGUAGE SQLSCRIPT
AS
BEGIN
DECLARE CURSOR c1 FOR
SELECT "GM_CODE" AS ID
, "GM_NAAM" AS NAME
, "SHAPE".ST_Transform(3857) AS SHAPE
FROM "GEO_DEMO"."gem_2018"
WHERE "WATER" = 'NEE'; -- Dataset contains duplicate rows
-- for water and land info
DELETE FROM "GEO_DEMO"."TOWNSHIPS_2018";
OPEN c1;
FOR curr_row AS c1 DO
DECLARE maxGeom ST_GEOMETRY;
DECLARE maxArea DOUBLE := 0;
DECLARE centroid ST_GEOMETRY;
DECLARE i INT := 1;
DECLARE ashape ST_GEOMETRY := curr_row.SHAPE;
IF :ashape.ST_GeometryType() = 'ST_MultiPolygon' THEN
FOR i IN 1.. ashape.ST_NumGeometries() DO
DECLARE geom ST_GEOMETRY := ashape.ST_GeometryN(i);
IF :geom.ST_Area() > maxArea THEN
maxArea := geom.ST_Area();
maxGeom := geom;
END IF;
END FOR;
centroid := maxGeom.ST_Centroid();
ELSE
centroid := ashape.ST_Centroid();
END IF;
IF :ashape.ST_Intersects(:centroid) = 0 THEN
centroid := ashape.ST_PointOnSurface();
END IF;
INSERT INTO "GEO_DEMO"."TOWNSHIPS_2018"
( "ID"
, "NAME"
, "SHAPE"
, "SHAPEPOINT"
, "IS_LEAF"
)
VALUES
( curr_row.ID
, curr_row.NAME
, curr_row.SHAPE
, centroid
, FALSE -- Set to true on last level (NEIGHBORHOOD)
);
END FOR;
COMMIT;
CLOSE c1;
END;
CREATE PROCEDURE "GEO_DEMO"."PR_GENERATE_DISTRICTS"( )
LANGUAGE SQLSCRIPT
AS
BEGIN
DECLARE CURSOR c1 FOR
SELECT "WK_CODE" AS ID
, "WK_NAAM" AS NAME
, "SHAPE".ST_Transform(3857) AS SHAPE
FROM "GEO_DEMO"."wijk_2018"
WHERE "WATER" = 'NEE'; -- Dataset contains duplicate rows
-- for water and land info
DELETE FROM "GEO_DEMO"."DISTRICTS_2018";
OPEN c1;
FOR curr_row AS c1 DO
DECLARE maxGeom ST_GEOMETRY;
DECLARE maxArea DOUBLE := 0;
DECLARE centroid ST_GEOMETRY;
DECLARE i INT := 1;
DECLARE ashape ST_GEOMETRY := curr_row.SHAPE;
IF :ashape.ST_GeometryType() = 'ST_MultiPolygon' THEN
FOR i IN 1.. ashape.ST_NumGeometries() DO
DECLARE geom ST_GEOMETRY := ashape.ST_GeometryN(i);
IF :geom.ST_Area() > maxArea THEN
maxArea := geom.ST_Area();
maxGeom := geom;
END IF;
END FOR;
centroid := maxGeom.ST_Centroid();
ELSE
centroid := ashape.ST_Centroid();
END IF;
IF :ashape.ST_Intersects(:centroid) = 0 THEN
centroid := ashape.ST_PointOnSurface();
END IF;
INSERT INTO "GEO_DEMO"."DISTRICTS_2018"
( "ID"
, "NAME"
, "SHAPE"
, "SHAPEPOINT"
, "IS_LEAF"
)
VALUES
( curr_row.ID
, curr_row.NAME
, curr_row.SHAPE
, centroid
, FALSE -- Set to true on last level (NEIGHBORHOOD)
);
END FOR;
COMMIT;
CLOSE c1;
END;
CREATE PROCEDURE "GEO_DEMO"."PR_GENERATE_NEIGHBORHOODS"( )
LANGUAGE SQLSCRIPT
AS
BEGIN
DECLARE CURSOR c1 FOR
SELECT "BU_CODE" AS ID
, "BU_NAAM" AS NAME
, "SHAPE".ST_Transform(3857) AS SHAPE
FROM "GEO_DEMO"."buurt2018"
WHERE "WATER" = 'NEE'; -- Dataset contains duplicate rows
-- for water and land info
DELETE FROM "GEO_DEMO"."NEIGHBORHOODS_2018";
OPEN c1;
FOR curr_row AS c1 DO
DECLARE maxGeom ST_GEOMETRY;
DECLARE maxArea DOUBLE := 0;
DECLARE centroid ST_GEOMETRY;
DECLARE i INT := 1;
DECLARE ashape ST_GEOMETRY := curr_row.SHAPE;
IF :ashape.ST_GeometryType() = 'ST_MultiPolygon' THEN
FOR i IN 1.. ashape.ST_NumGeometries() DO
DECLARE geom ST_GEOMETRY := ashape.ST_GeometryN(i);
IF :geom.ST_Area() > maxArea THEN
maxArea := geom.ST_Area();
maxGeom := geom;
END IF;
END FOR;
centroid := maxGeom.ST_Centroid();
ELSE
centroid := ashape.ST_Centroid();
END IF;
IF :ashape.ST_Intersects(:centroid) = 0 THEN
centroid := ashape.ST_PointOnSurface();
END IF;
INSERT INTO "GEO_DEMO"."NEIGHBORHOODS_2018"
( "ID"
, "NAME"
, "SHAPE"
, "SHAPEPOINT"
, "IS_LEAF"
)
VALUES
( curr_row.ID
, curr_row.NAME
, curr_row.SHAPE
, centroid
, TRUE -- Set to true on last level (NEIGHBORHOOD)
);
END FOR;
COMMIT;
CLOSE c1;
END;
CALL "GEO_DEMO"."PR_GENERATE_TOWNSHIPS"( );
CALL "GEO_DEMO"."PR_GENERATE_DISTRICTS"( );
CALL "GEO_DEMO"."PR_GENERATE_NEIGHBORHOODS"( );
SELECT COUNT(*), 'TOWNSHIPS' FROM "_SYS_BIC"."geo_demo/TOWNSHIPS_2018"
UNION ALL
SELECT COUNT(*), 'DISTRICTS' FROM "_SYS_BIC"."geo_demo/DISTRICTS_2018"
UNION ALL
SELECT COUNT(*), 'NEIGHBORHOODS' FROM "_SYS_BIC"."geo_demo/NEIGHBORHOODS_2018"
--
-- Mind the uniqueness/alignment of HIERARCHYID and ID when adding additional hierarchies.
--
INSERT INTO "SAP_FPA_SPATIAL_CUSTOM_REGIONS"."sap.fpa.services.spatial::custom_hierarchy.CHOROPLETH_CUSTOM_HIERARCHY"
( "NAME"
, "HIERARCHYID"
, "COLUMN"
, "COLUMNLABEL"
, "ID"
, "LEVEL"
, "LNAME"
, "LOCATION"
, "OBJECT"
, "PACKAGE"
, "SCHEMA"
)
SELECT 'Neighborhood 2018 Hierarchy' AS "NAME"
, 2 AS "HIERARCHYID"
, 'AREA_NAME' AS "COLUMN"
, 'name' AS "COLUMNLABEL"
, 6 AS "ID"
, 1 AS "LEVEL"
, 'Country' AS "LNAME"
, 'SHAPE' AS "LOCATION"
, 'CHOROPLETH' AS "OBJECT"
, 'FPA_SPATIAL_DATA.choropleth' AS "PACKAGE"
, '_SYS_BIC' AS "SCHEMA"
FROM DUMMY
UNION ALL
SELECT 'Neighborhood 2018 Hierarchy' AS "NAME"
, 2 AS "HIERARCHYID"
, 'AREA_NAME' AS "COLUMN"
, 'name' AS "COLUMNLABEL"
, 7 AS "ID"
, 2 AS "LEVEL"
, 'Region' AS "LNAME"
, 'SHAPE' AS "LOCATION"
, 'CHOROPLETH' AS "OBJECT"
, 'FPA_SPATIAL_DATA.choropleth' AS "PACKAGE"
, '_SYS_BIC' AS "SCHEMA"
FROM DUMMY
UNION ALL
SELECT 'Neighborhood 2018 Hierarchy' AS "NAME"
, 2 AS "HIERARCHYID"
, 'NAME' AS "COLUMN"
, 'name' AS "COLUMNLABEL"
, 8 AS "ID"
, 3 AS "LEVEL"
, 'Township' AS "LNAME"
, 'SHAPE' AS "LOCATION"
, 'TOWNSHIPS_2018' AS "OBJECT"
, 'geo_demo' AS "PACKAGE"
, '_SYS_BIC' AS "SCHEMA"
FROM DUMMY
UNION ALL
SELECT 'Neighborhood 2018 Hierarchy' AS "NAME"
, 2 AS "HIERARCHYID"
, 'NAME' AS "COLUMN"
, 'name' AS "COLUMNLABEL"
, 9 AS "ID"
, 4 AS "LEVEL"
, 'District' AS "LNAME"
, 'SHAPE' AS "LOCATION"
, 'DISTRICTS_2018' AS "OBJECT"
, 'geo_demo' AS "PACKAGE"
, '_SYS_BIC' AS "SCHEMA"
FROM DUMMY
UNION ALL
SELECT 'Neighborhood 2018 Hierarchy' AS "NAME"
, 2 AS "HIERARCHYID"
, 'NAME' AS "COLUMN"
, 'name' AS "COLUMNLABEL"
, 10 AS "ID"
, 5 AS "LEVEL"
, 'Neighborhood' AS "LNAME"
, 'SHAPE' AS "LOCATION"
, 'NEIGHBORHOODS_2018' AS "OBJECT"
, 'geo_demo' AS "PACKAGE"
, '_SYS_BIC' AS "SCHEMA"
FROM DUMMY;
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
12 | |
11 | |
11 | |
11 | |
9 | |
8 | |
7 | |
7 | |
7 |