]> granicus.if.org Git - postgis/commitdiff
Closing ticket #597. Added regression tests for ST_Clip. More tests to come when...
authorPierre Racine <Pierre.Racine@sbf.ulaval.ca>
Mon, 13 Feb 2012 21:58:53 +0000 (21:58 +0000)
committerPierre Racine <Pierre.Racine@sbf.ulaval.ca>
Mon, 13 Feb 2012 21:58:53 +0000 (21:58 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@9181 b70326c6-7e19-0410-871a-916f4a2858ee

raster/test/regress/Makefile.in
raster/test/regress/rt_clip.sql [new file with mode: 0644]
raster/test/regress/rt_clip_expected [new file with mode: 0644]

index f1dce2ed9494eaac9554782eebde5a3d91185c8c..ec415423a6877a0257d1cf22167fb985088670af 100644 (file)
@@ -91,7 +91,8 @@ TEST_UTILITY = \
        rt_reclass \
        rt_resample \
        rt_asraster \
-       rt_intersection
+       rt_intersection \
+       rt_clip
 
 TEST_GIST = \
        create_rt_gist_test \
diff --git a/raster/test/regress/rt_clip.sql b/raster/test/regress/rt_clip.sql
new file mode 100644 (file)
index 0000000..cc5b529
--- /dev/null
@@ -0,0 +1,136 @@
+SET client_min_messages TO warning;
+
+DROP TABLE IF EXISTS raster_clip;
+CREATE TABLE raster_clip (
+       rid integer,
+       rast raster
+);
+DROP TABLE IF EXISTS geom_clip;
+CREATE TABLE geom_clip (
+       gid integer,
+       geom geometry
+);
+DROP TABLE IF EXISTS raster_clip_out;
+CREATE TABLE raster_clip_out (
+       tid integer,
+       rid integer,
+       gid integer,
+       rast raster
+);
+
+CREATE OR REPLACE FUNCTION make_test_raster(
+       rid integer,
+       width integer DEFAULT 2,
+       height integer DEFAULT 2,
+       ul_x double precision DEFAULT 0,
+       ul_y double precision DEFAULT 0,
+       skew_x double precision DEFAULT 0,
+       skew_y double precision DEFAULT 0,
+       initvalue double precision DEFAULT 1,
+       nodataval double precision DEFAULT 0
+)
+       RETURNS void
+       AS $$
+       DECLARE
+               x int;
+               y int;
+               rast raster;
+       BEGIN
+               rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, -1, skew_x, skew_y, 0);
+               rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval);
+
+               INSERT INTO raster_clip VALUES (rid, rast);
+
+               RETURN;
+       END;
+       $$ LANGUAGE 'plpgsql';
+
+-- Define three rasters
+-- The first one 1 band with a novalue defined and one pixel set to nodata value
+SELECT make_test_raster(1, 4, 4, 0, 0, 0, 0, 1, 0);
+UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 1;
+
+-- The second one 3 bands with a novalue defined for the first two band but not set for the third band and one pixel set to nodata value in every band
+SELECT make_test_raster(2, 4, 4, 0, 0, 0, 0, 10, 0);
+UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 2;
+UPDATE raster_clip SET rast = ST_AddBand(rast, '8BUI'::text, 2, 0) WHERE rid = 2;
+UPDATE raster_clip SET rast = ST_SetValue(rast, 2, 3, 2, NULL) WHERE rid = 2;
+UPDATE raster_clip SET rast = ST_AddBand(rast, '8BUI'::text, 3, NULL) WHERE rid = 2;
+
+-- The third one 1 band skewed 40 degree, (Can't test this yet as ST_AsRaster() still produces badly aligned raster. See ticket #1574)
+--SELECT make_test_raster(3, 4, 4, 0, 0, 0, 0, 1, 0);
+--UPDATE raster_clip SET rast = ST_SetSkew(rast, -0.15, -0.15) WHERE rid = 3;
+--UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 3;
+
+-- Add a first polygon small and outside the extent of the raster
+INSERT INTO geom_clip VALUES (1, ST_Buffer(ST_SetSRID(ST_MakePoint(-1, 1), 0), 0.2));
+-- Add a second polygon small, inside the extent of the raster but in the nodata value pixel
+INSERT INTO geom_clip VALUES (2, ST_Buffer(ST_SetSRID(ST_MakePoint(2.5, -1.5), 0), 0.2));
+-- Add a second polygon small but inside the extent of the raster
+INSERT INTO geom_clip VALUES (3, ST_Buffer(ST_SetSRID(ST_MakePoint(1.5, -1.5), 0), 0.2));
+-- Add a third polygon big cutting the raster
+INSERT INTO geom_clip VALUES (4, ST_Buffer(ST_SetSRID(ST_MakePoint(4, -2.5), 0), 2.8));
+-- Add a fourth polygon englobing the two first rasters
+INSERT INTO geom_clip VALUES (5, ST_Buffer(ST_SetSRID(ST_MakePoint(2, -2), 0), 3));
+
+DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision);
+
+-- Test 1 without trimming, without defining a nodata value
+INSERT INTO raster_clip_out
+SELECT 1, rid, gid, ST_Clip(rast, geom)
+FROM raster_clip, geom_clip;
+
+-- Test 2 with trimming, without defining a nodata value
+INSERT INTO raster_clip_out
+SELECT 2, rid, gid, ST_Clip(rast, geom, NULL, true)
+FROM raster_clip, geom_clip;
+
+-- Test 3 with trimming, defining a nodata value (we must make ST_Clip to accept 
+-- an array of nodata value before testing this)
+--INSERT INTO raster_clip_out
+--SELECT rid, gid, ST_Clip(rast, geom, 255, true)
+--FROM raster_clip JOIN geom_clip;
+
+-- Display the metadata of the resulting rasters
+SELECT tid,
+       rid,
+       gid,
+       round(upperleftx::numeric, 3) AS upperleftx,
+       round(upperlefty::numeric, 3) AS upperlefty,
+       width,
+       height,
+       round(scalex::numeric, 3) AS scalex,
+       round(scaley::numeric, 3) AS scaley,
+       round(skewx::numeric, 3) AS skewx,
+       round(skewy::numeric, 3) AS skewy,
+       srid,
+       numbands,
+       pixeltype,
+       hasnodata,
+       round(nodatavalue::numeric, 3) AS nodatavalue
+FROM (
+       SELECT  tid,
+               rid,
+               gid,
+               (ST_Metadata(rast)).*,
+               (ST_BandMetadata(rast, 1)).*
+       FROM raster_clip_out
+) AS r;
+
+-- Display the pixels and the values of the resulting rasters (raster 1)
+SELECT rid, gid, (gvxy).x, (gvxy).y, (gvxy).val, ST_AsText((gvxy).geom) geom
+FROM (SELECT rid, gid, ST_PixelAsPolygons(rast) gvxy
+      FROM raster_clip_out
+      WHERE rid = 1
+) foo;
+
+-- Display the pixels and the values of the resulting rasters (raster 2, 3 bands)
+SELECT rid, gid, band, (gvxy).x, (gvxy).y, (gvxy).val, ST_AsText((gvxy).geom) geom
+FROM (SELECT rid, gid, band, ST_PixelAsPolygons(rast, band) gvxy
+      FROM raster_clip_out, generate_series(1, 3) band
+      WHERE rid = 2
+) foo;
+
+DROP TABLE IF EXISTS geom_clip;
+DROP TABLE IF EXISTS raster_clip;
+DROP TABLE IF EXISTS raster_clip_out;
diff --git a/raster/test/regress/rt_clip_expected b/raster/test/regress/rt_clip_expected
new file mode 100644 (file)
index 0000000..e98898a
--- /dev/null
@@ -0,0 +1,460 @@
+1|1|1|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+1|1|2|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+1|1|3|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+1|1|4|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+1|1|5|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+1|2|1|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+1|2|2|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+1|2|3|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+1|2|4|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+1|2|5|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+2|1|1|0.000|0.000|0|0|0.000|0.000|0.000|0.000|0|0|||
+2|1|2|2.000|-1.000|1|1|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+2|1|3|1.000|-1.000|1|1|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+2|1|4|1.000|0.000|3|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+2|1|5|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|1|8BUI|t|0.000
+2|2|1|0.000|0.000|0|0|0.000|0.000|0.000|0.000|0|0|||
+2|2|2|2.000|-1.000|1|1|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+2|2|3|1.000|-1.000|1|1|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+2|2|4|1.000|0.000|3|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+2|2|5|0.000|0.000|4|4|1.000|-1.000|0.000|0.000|0|3|8BUI|t|0.000
+1|1|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|1|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|1|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|1|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|1|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|1|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|1|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|1|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|1|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|1|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|1|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|1|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|1|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|1|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|1|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|2|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|2|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|2|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|2|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|2|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|2|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|2|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|2|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|2|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|2|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|2|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|2|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|2|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|2|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|2|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|3|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|3|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|3|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|3|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|3|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|3|2|2|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|3|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|3|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|3|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|3|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|3|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|3|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|3|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|3|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|3|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|3|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|4|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|4|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|4|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|4|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|4|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|4|2|2|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|4|2|3|1|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|4|2|4|1|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|4|3|1|1|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|4|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|4|3|3|1|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|4|3|4|1|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|4|4|1|1|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|4|4|2|1|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|4|4|3|1|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|4|4|4|1|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|5|1|1|1|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|5|1|2|1|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|5|1|3|1|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|5|1|4|1|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|5|2|1|1|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|5|2|2|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|5|2|3|1|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|5|2|4|1|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|5|3|1|1|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|5|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|5|3|3|1|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|5|3|4|1|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|5|4|1|1|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|5|4|2|1|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|5|4|3|1|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|5|4|4|1|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|2|1|1||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|3|1|1|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|4|1|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|4|1|2|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|4|1|3|1|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|4|1|4|1|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|4|2|1|1|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|4|2|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|4|2|3|1|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|4|2|4|1|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|4|3|1|1|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|4|3|2|1|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|4|3|3|1|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|4|3|4|1|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+1|5|1|1|1|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+1|5|1|2|1|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+1|5|1|3|1|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+1|5|1|4|1|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+1|5|2|1|1|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+1|5|2|2|1|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+1|5|2|3|1|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+1|5|2|4|1|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+1|5|3|1|1|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+1|5|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+1|5|3|3|1|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+1|5|3|4|1|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+1|5|4|1|1|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+1|5|4|2|1|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+1|5|4|3|1|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+1|5|4|4|1|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|1|1|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|1|1|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|1|1|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|1|1|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|1|1|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|1|1|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|1|1|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|1|1|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|1|1|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|1|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|1|1|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|1|1|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|1|1|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|1|1|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|1|1|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|1|1|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|1|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|2|1|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|2|1|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|2|1|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|2|1|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|2|1|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|2|1|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|2|1|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|2|1|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|2|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|2|1|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|2|1|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|2|1|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|2|1|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|2|1|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|2|1|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|3|1|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|3|1|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|3|1|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|3|1|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|3|1|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|3|1|2|2|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|3|1|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|3|1|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|3|1|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|3|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|1|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|3|1|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|3|1|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|3|1|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|3|1|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|3|1|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|4|1|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|4|1|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|4|1|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|4|1|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|4|1|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|1|2|2|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|1|2|3|10|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|1|2|4|10|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|1|3|1|10|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|1|3|3|10|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|1|3|4|10|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|1|4|1|10|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|1|4|2|10|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|1|4|3|10|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|1|4|4|10|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|1|1|1|10|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|1|1|2|10|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|1|1|3|10|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|1|1|4|10|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|1|2|1|10|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|1|2|2|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|1|2|3|10|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|1|2|4|10|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|1|3|1|10|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|1|3|3|10|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|1|3|4|10|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|1|4|1|10|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|1|4|2|10|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|1|4|3|10|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|1|4|4|10|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|1|1|1||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|1|1|1|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|1|1|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|1|1|2|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|1|1|3|10|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|1|1|4|10|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|1|2|1|10|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|1|2|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|1|2|3|10|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|1|2|4|10|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|1|3|1|10|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|1|3|2|10|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|1|3|3|10|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|1|3|4|10|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|1|1|1|10|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|1|1|2|10|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|1|1|3|10|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|1|1|4|10|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|1|2|1|10|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|1|2|2|10|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|1|2|3|10|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|1|2|4|10|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|1|3|1|10|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|1|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|1|3|3|10|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|1|3|4|10|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|1|4|1|10|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|1|4|2|10|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|1|4|3|10|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|1|4|4|10|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|1|2|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|1|2|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|1|2|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|1|2|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|1|2|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|1|2|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|1|2|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|1|2|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|1|2|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|1|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|1|2|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|1|2|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|1|2|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|1|2|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|1|2|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|1|2|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|2|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|2|2|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|2|2|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|2|2|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|2|2|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|2|2|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|2|2|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|2|2|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|2|2|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|2|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|2|2|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|2|2|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|2|2|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|2|2|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|2|2|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|2|2|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|3|2|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|3|2|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|3|2|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|3|2|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|3|2|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|3|2|2|2|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|3|2|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|3|2|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|3|2|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|3|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|2|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|3|2|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|3|2|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|3|2|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|3|2|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|3|2|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|4|2|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|4|2|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|4|2|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|4|2|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|4|2|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|2|2|2|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|2|2|3|2|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|2|2|4|2|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|2|3|1|2|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|2|3|3|2|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|2|3|4|2|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|2|4|1|2|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|2|4|2|2|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|2|4|3|2|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|2|4|4|2|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|2|1|1|2|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|2|1|2|2|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|2|1|3|2|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|2|1|4|2|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|2|2|1|2|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|2|2|2|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|2|2|3|2|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|2|2|4|2|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|2|3|1|2|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|2|3|3|2|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|2|3|4|2|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|2|4|1|2|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|2|4|2|2|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|2|4|3|2|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|2|4|4|2|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|2|1|1||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|2|1|1|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|2|1|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|2|1|2|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|2|1|3|2|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|2|1|4|2|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|2|2|1|2|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|2|2|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|2|2|3|2|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|2|2|4|2|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|2|3|1|2|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|2|3|2|2|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|2|3|3|2|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|2|3|4|2|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|2|1|1|2|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|2|1|2|2|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|2|1|3|2|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|2|1|4|2|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|2|2|1|2|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|2|2|2|2|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|2|2|3|2|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|2|2|4|2|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|2|3|1|2|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|2|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|2|3|3|2|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|2|3|4|2|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|2|4|1|2|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|2|4|2|2|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|2|4|3|2|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|2|4|4|2|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|1|3|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|1|3|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|1|3|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|1|3|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|1|3|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|1|3|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|1|3|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|1|3|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|1|3|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|1|3|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|1|3|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|1|3|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|1|3|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|1|3|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|1|3|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|1|3|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|3|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|2|3|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|2|3|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|2|3|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|2|3|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|2|3|2|2||POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|2|3|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|2|3|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|2|3|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|2|3|3|2|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|2|3|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|2|3|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|2|3|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|2|3|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|2|3|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|2|3|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|3|3|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|3|3|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|3|3|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|3|3|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|3|3|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|3|3|2|2|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|3|3|2|3||POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|3|3|2|4||POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|3|3|3|1||POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|3|3|3|2||POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|3|3|3||POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|3|3|3|4||POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|3|3|4|1||POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|3|3|4|2||POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|3|3|4|3||POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|3|3|4|4||POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|4|3|1|1||POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|4|3|1|2||POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|4|3|1|3||POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|4|3|1|4||POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|4|3|2|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|3|2|2|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|3|2|3|3|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|3|2|4|3|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|3|3|1|3|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|3|3|2|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|3|3|3|3|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|3|3|4|3|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|3|4|1|3|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|3|4|2|3|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|3|4|3|3|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|3|4|4|3|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|3|1|1|3|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|3|1|2|3|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|3|1|3|3|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|3|1|4|3|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|3|2|1|3|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|3|2|2|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|3|2|3|3|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|3|2|4|3|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|3|3|1|3|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|3|3|2|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|3|3|3|3|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|3|3|4|3|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|3|4|1|3|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|3|4|2|3|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|3|4|3|3|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|3|4|4|3|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|2|3|1|1|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|3|3|1|1|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|3|1|1||POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|4|3|1|2|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|4|3|1|3|3|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|4|3|1|4|3|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|4|3|2|1|3|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|4|3|2|2|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|4|3|2|3|3|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|4|3|2|4|3|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|4|3|3|1|3|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|4|3|3|2|3|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|4|3|3|3|3|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|4|3|3|4|3|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))
+2|5|3|1|1|3|POLYGON((0 0,1 0,1 -1,0 -1,0 0))
+2|5|3|1|2|3|POLYGON((0 -1,1 -1,1 -2,0 -2,0 -1))
+2|5|3|1|3|3|POLYGON((0 -2,1 -2,1 -3,0 -3,0 -2))
+2|5|3|1|4|3|POLYGON((0 -3,1 -3,1 -4,0 -4,0 -3))
+2|5|3|2|1|3|POLYGON((1 0,2 0,2 -1,1 -1,1 0))
+2|5|3|2|2|3|POLYGON((1 -1,2 -1,2 -2,1 -2,1 -1))
+2|5|3|2|3|3|POLYGON((1 -2,2 -2,2 -3,1 -3,1 -2))
+2|5|3|2|4|3|POLYGON((1 -3,2 -3,2 -4,1 -4,1 -3))
+2|5|3|3|1|3|POLYGON((2 0,3 0,3 -1,2 -1,2 0))
+2|5|3|3|2|3|POLYGON((2 -1,3 -1,3 -2,2 -2,2 -1))
+2|5|3|3|3|3|POLYGON((2 -2,3 -2,3 -3,2 -3,2 -2))
+2|5|3|3|4|3|POLYGON((2 -3,3 -3,3 -4,2 -4,2 -3))
+2|5|3|4|1|3|POLYGON((3 0,4 0,4 -1,3 -1,3 0))
+2|5|3|4|2|3|POLYGON((3 -1,4 -1,4 -2,3 -2,3 -1))
+2|5|3|4|3|3|POLYGON((3 -2,4 -2,4 -3,3 -3,3 -2))
+2|5|3|4|4|3|POLYGON((3 -3,4 -3,4 -4,3 -4,3 -3))