From: Bborie Park Date: Fri, 16 Nov 2012 01:32:10 +0000 (+0000) Subject: Added docs and regression test for extent parameter variants of X-Git-Tag: 2.1.0beta2~390 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8aab3b035316f2c6a0c931345b692d4ba457b686;p=postgis Added docs and regression test for extent parameter variants of ST_Slope, ST_Aspect and ST_Hillshade git-svn-id: http://svn.osgeo.org/postgis/trunk@10690 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/doc/reference_raster.xml b/doc/reference_raster.xml index c1da8b8f9..a28d89c51 100644 --- a/doc/reference_raster.xml +++ b/doc/reference_raster.xml @@ -1628,7 +1628,7 @@ FROM (SELECT rid, ST_MetaData(rast) As md - text ST_Tile + setof raster ST_Tile raster rast int[] nband integer width @@ -1636,7 +1636,7 @@ FROM (SELECT rid, ST_MetaData(rast) As md - text ST_Tile + setof raster ST_Tile raster rast integer nband integer width @@ -1644,7 +1644,7 @@ FROM (SELECT rid, ST_MetaData(rast) As md - text ST_Tile + setof raster ST_Tile raster rast integer width integer height @@ -7788,6 +7788,41 @@ FROM foo + + Examples: Variant 2 + + Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher. + + +WITH foo AS ( + SELECT ST_Tile( + ST_SetValues( + ST_AddBand( + ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0), + 1, '32BF', 0, -9999 + ), + 1, 1, 1, ARRAY[ + [1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 2, 1], + [1, 2, 2, 3, 3, 1], + [1, 1, 3, 2, 1, 1], + [1, 2, 2, 1, 2, 1], + [1, 1, 1, 1, 1, 1] + ]::double precision[] + ), + 2, 2 + ) AS rast +) +SELECT + t1.rast, + ST_Hillshade(ST_Union(t2.rast), 1, t1.rast) +FROM foo t1 +CROSS JOIN foo t2 +WHERE ST_Intersects(t1.rast, t2.rast) +GROUP BY t1.rast; + + + See Also @@ -7888,6 +7923,41 @@ FROM foo + + Examples: Variant 2 + + Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher. + + +WITH foo AS ( + SELECT ST_Tile( + ST_SetValues( + ST_AddBand( + ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0), + 1, '32BF', 0, -9999 + ), + 1, 1, 1, ARRAY[ + [1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 2, 1], + [1, 2, 2, 3, 3, 1], + [1, 1, 3, 2, 1, 1], + [1, 2, 2, 1, 2, 1], + [1, 1, 1, 1, 1, 1] + ]::double precision[] + ), + 2, 2 + ) AS rast +) +SELECT + t1.rast, + ST_Aspect(ST_Union(t2.rast), 1, t1.rast) +FROM foo t1 +CROSS JOIN foo t2 +WHERE ST_Intersects(t1.rast, t2.rast) +GROUP BY t1.rast; + + + See Also @@ -7988,6 +8058,40 @@ FROM foo + + Examples: Variant 2 + + Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher. + + +WITH foo AS ( + SELECT ST_Tile( + ST_SetValues( + ST_AddBand( + ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0), + 1, '32BF', 0, -9999 + ), + 1, 1, 1, ARRAY[ + [1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 2, 1], + [1, 2, 2, 3, 3, 1], + [1, 1, 3, 2, 1, 1], + [1, 2, 2, 1, 2, 1], + [1, 1, 1, 1, 1, 1] + ]::double precision[] + ), + 2, 2 + ) AS rast +) +SELECT + t1.rast, + ST_Slope(ST_Union(t2.rast), 1, t1.rast) +FROM foo t1 +CROSS JOIN foo t2 +WHERE ST_Intersects(t1.rast, t2.rast) +GROUP BY t1.rast; + + See Also diff --git a/raster/test/regress/Makefile.in b/raster/test/regress/Makefile.in index 47d6cbc24..94074c595 100644 --- a/raster/test/regress/Makefile.in +++ b/raster/test/regress/Makefile.in @@ -105,7 +105,8 @@ TEST_MAPALGEBRA = \ rt_union \ rt_invdistweight4ma \ rt_4ma \ - rt_setvalues_geomval + rt_setvalues_geomval \ + rt_elevation_functions TEST_SREL = \ rt_gist_relationships \ diff --git a/raster/test/regress/rt_elevation_functions.sql b/raster/test/regress/rt_elevation_functions.sql new file mode 100644 index 000000000..73eaeee11 --- /dev/null +++ b/raster/test/regress/rt_elevation_functions.sql @@ -0,0 +1,292 @@ +SET client_min_messages TO warning; + +/* +1 1 1 1 1 1 1 1 1 +1 2 2 2 1 2 2 2 1 +1 2 3 2 2 2 3 2 1 +1 2 2 2 1 2 2 2 1 +1 1 2 1 3 1 2 1 1 +1 2 2 2 1 2 2 2 1 +1 2 3 2 2 2 3 2 1 +1 2 2 2 1 2 2 2 1 +1 1 1 1 1 1 1 1 1 +*/ + +DROP TABLE IF EXISTS raster_elevation; +CREATE TABLE raster_elevation (rid integer, rast raster); +DROP TABLE IF EXISTS raster_elevation_out; +CREATE TABLE raster_elevation_out (rid integer, functype text, rast raster); + +INSERT INTO raster_elevation + SELECT + 0 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(9, 9, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 2, 2, 2, 1, 2, 2, 2, 1], + [1, 2, 3, 2, 2, 2, 3, 2, 1], + [1, 2, 2, 2, 1, 2, 2, 2, 1], + [1, 1, 2, 1, 3, 1, 2, 1, 1], + [1, 2, 2, 2, 1, 2, 2, 2, 1], + [1, 2, 3, 2, 2, 2, 3, 2, 1], + [1, 2, 2, 2, 1, 2, 2, 2, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1] + ]::double precision[] + ) AS rast +; + +INSERT INTO raster_elevation + SELECT + 1 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 1, 1], + [1, 2, 2], + [1, 2, 3] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 2 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, -3, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 2, 2], + [1, 1, 2], + [1, 2, 2] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 3 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, -6, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 2, 3], + [1, 2, 2], + [1, 1, 1] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 4 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 3, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 1, 1], + [2, 1, 2], + [2, 2, 2] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 5 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 3, -3, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [2, 1, 2], + [1, 3, 1], + [2, 1, 2] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 6 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 3, -6, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [2, 2, 2], + [2, 1, 2], + [1, 1, 1] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 7 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 6, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [1, 1, 1], + [2, 2, 1], + [3, 2, 1] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 8 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 6, -3, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [2, 2, 1], + [2, 1, 1], + [2, 2, 1] + ]::double precision[] + ) AS rast + UNION ALL + SELECT + 9 AS rid, + ST_SetValues( + ST_AddBand(ST_MakeEmptyRaster(3, 3, 6, -6, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), + 1, 1, 1, ARRAY[ + [3, 2, 1], + [2, 2, 1], + [1, 1, 1] + ]::double precision[] + ) AS rast +; + +/* ST_Slope */ +INSERT INTO raster_elevation_out +SELECT + rid, + 'slope', + ST_Slope(rast) +FROM raster_elevation +WHERE rid = 0 +UNION ALL +SELECT + rid, + 'aspect', + ST_Aspect(rast) +FROM raster_elevation +WHERE rid = 0 +UNION ALL +SELECT + rid, + 'hillshade', + ST_Hillshade(rast) +FROM raster_elevation +WHERE rid = 0 +; + +/* with coverage */ +DO $$ +BEGIN +-- this ONLY works for PostgreSQL version 9.1 or higher +IF array_to_string(regexp_matches(split_part(version(), ' ', 2), E'([0-9]+)\.([0-9]+)'), '')::int > 90 THEN + + INSERT INTO raster_elevation_out ( + SELECT + t1.rid, + 'slope', + ST_Slope(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + CROSS JOIN raster_elevation t2 + WHERE t1.rid != 0 + AND t2.rid != 0 + AND ST_Intersects(t1.rast, t2.rast) + GROUP BY t1.rid, t1.rast + ORDER BY t1.rid + ) UNION ALL ( + SELECT + t1.rid, + 'aspect', + ST_Aspect(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + CROSS JOIN raster_elevation t2 + WHERE t1.rid != 0 + AND t2.rid != 0 + AND ST_Intersects(t1.rast, t2.rast) + GROUP BY t1.rid, t1.rast + ORDER BY t1.rid + ) UNION ALL ( + SELECT + t1.rid, + 'hillshade', + ST_Hillshade(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + CROSS JOIN raster_elevation t2 + WHERE t1.rid != 0 + AND t2.rid != 0 + AND ST_Intersects(t1.rast, t2.rast) + GROUP BY t1.rid, t1.rast + ORDER BY t1.rid + ); + +ELSE + + INSERT INTO raster_elevation_out ( + WITH foo AS ( + SELECT + t1.rid, + ST_Union(t2.rast) AS rast + FROM raster_elevation t1 + JOIN raster_elevation t2 + ON ST_Intersects(t1.rast, t2.rast) + AND t1.rid != 0 + AND t2.rid != 0 + GROUP BY t1.rid + ) + SELECT + t1.rid, + 'slope', + ST_Slope(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + JOIN foo t2 + ON t1.rid = t2.rid + ORDER BY t1.rid + ) UNION ALL ( + WITH foo AS ( + SELECT + t1.rid, + ST_Union(t2.rast) AS rast + FROM raster_elevation t1 + JOIN raster_elevation t2 + ON ST_Intersects(t1.rast, t2.rast) + AND t1.rid != 0 + AND t2.rid != 0 + GROUP BY t1.rid + ) + SELECT + t1.rid, + 'aspect', + ST_Aspect(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + JOIN foo t2 + ON t1.rid = t2.rid + ORDER BY t1.rid + ) UNION ALL ( + WITH foo AS ( + SELECT + t1.rid, + ST_Union(t2.rast) AS rast + FROM raster_elevation t1 + JOIN raster_elevation t2 + ON ST_Intersects(t1.rast, t2.rast) + AND t1.rid != 0 + AND t2.rid != 0 + GROUP BY t1.rid + ) + SELECT + t1.rid, + 'hillshade', + ST_Hillshade(ST_Union(t2.rast), 1, t1.rast) AS rast + FROM raster_elevation t1 + JOIN foo t2 + ON t1.rid = t2.rid + ORDER BY t1.rid + ); + +END IF; +END $$; + +WITH foo AS ( + SELECT + rid, + functype, + ST_PixelAsPoints(rast) AS papt + FROM raster_elevation_out +) +SELECT + rid, + functype, + (papt).x, + (papt).y, + round((papt).val::numeric, 6) AS val +FROM foo +ORDER BY 2, 1, 4, 3; + +DROP TABLE IF EXISTS raster_elevation_out; +DROP TABLE IF EXISTS raster_elevation; diff --git a/raster/test/regress/rt_elevation_functions_expected b/raster/test/regress/rt_elevation_functions_expected new file mode 100644 index 000000000..d2b9ed26c --- /dev/null +++ b/raster/test/regress/rt_elevation_functions_expected @@ -0,0 +1,487 @@ +DO +0|aspect|1|1|315.000000 +0|aspect|2|1|341.565063 +0|aspect|3|1|0.000000 +0|aspect|4|1|18.434948 +0|aspect|5|1|0.000000 +0|aspect|6|1|341.565063 +0|aspect|7|1|0.000000 +0|aspect|8|1|18.434948 +0|aspect|9|1|45.000000 +0|aspect|1|2|288.434937 +0|aspect|2|2|315.000000 +0|aspect|3|2|0.000000 +0|aspect|4|2|30.963757 +0|aspect|5|2|0.000000 +0|aspect|6|2|329.036255 +0|aspect|7|2|0.000000 +0|aspect|8|2|45.000000 +0|aspect|9|2|71.565048 +0|aspect|1|3|270.000000 +0|aspect|2|3|270.000000 +0|aspect|3|3|-1.000000 +0|aspect|4|3|90.000000 +0|aspect|5|3|-1.000000 +0|aspect|6|3|270.000000 +0|aspect|7|3|-1.000000 +0|aspect|8|3|90.000000 +0|aspect|9|3|90.000000 +0|aspect|1|4|251.565048 +0|aspect|2|4|239.036240 +0|aspect|3|4|180.000000 +0|aspect|4|4|135.000000 +0|aspect|5|4|-1.000000 +0|aspect|6|4|225.000000 +0|aspect|7|4|180.000000 +0|aspect|8|4|120.963753 +0|aspect|9|4|108.434952 +0|aspect|1|5|270.000000 +0|aspect|2|5|270.000000 +0|aspect|3|5|-1.000000 +0|aspect|4|5|-1.000000 +0|aspect|5|5|-1.000000 +0|aspect|6|5|-1.000000 +0|aspect|7|5|-1.000000 +0|aspect|8|5|90.000000 +0|aspect|9|5|90.000000 +0|aspect|1|6|288.434937 +0|aspect|2|6|300.963745 +0|aspect|3|6|0.000000 +0|aspect|4|6|45.000000 +0|aspect|5|6|-1.000000 +0|aspect|6|6|315.000000 +0|aspect|7|6|0.000000 +0|aspect|8|6|59.036243 +0|aspect|9|6|71.565048 +0|aspect|1|7|270.000000 +0|aspect|2|7|270.000000 +0|aspect|3|7|-1.000000 +0|aspect|4|7|90.000000 +0|aspect|5|7|-1.000000 +0|aspect|6|7|270.000000 +0|aspect|7|7|-1.000000 +0|aspect|8|7|90.000000 +0|aspect|9|7|90.000000 +0|aspect|1|8|251.565048 +0|aspect|2|8|225.000000 +0|aspect|3|8|180.000000 +0|aspect|4|8|149.036240 +0|aspect|5|8|180.000000 +0|aspect|6|8|210.963760 +0|aspect|7|8|180.000000 +0|aspect|8|8|135.000000 +0|aspect|9|8|108.434952 +0|aspect|1|9|225.000000 +0|aspect|2|9|198.434952 +0|aspect|3|9|180.000000 +0|aspect|4|9|161.565048 +0|aspect|5|9|180.000000 +0|aspect|6|9|198.434952 +0|aspect|7|9|180.000000 +0|aspect|8|9|161.565048 +0|aspect|9|9|135.000000 +1|aspect|1|1|315.000000 +1|aspect|2|1|341.565063 +1|aspect|3|1|0.000000 +1|aspect|1|2|288.434937 +1|aspect|2|2|315.000000 +1|aspect|3|2|0.000000 +1|aspect|1|3|270.000000 +1|aspect|2|3|270.000000 +1|aspect|3|3|-1.000000 +2|aspect|1|1|251.565048 +2|aspect|2|1|239.036240 +2|aspect|3|1|180.000000 +2|aspect|1|2|270.000000 +2|aspect|2|2|270.000000 +2|aspect|3|2|-1.000000 +2|aspect|1|3|288.434937 +2|aspect|2|3|300.963745 +2|aspect|3|3|0.000000 +3|aspect|1|1|270.000000 +3|aspect|2|1|270.000000 +3|aspect|3|1|-1.000000 +3|aspect|1|2|251.565048 +3|aspect|2|2|225.000000 +3|aspect|3|2|180.000000 +3|aspect|1|3|225.000000 +3|aspect|2|3|198.434952 +3|aspect|3|3|180.000000 +4|aspect|1|1|18.434948 +4|aspect|2|1|0.000000 +4|aspect|3|1|341.565063 +4|aspect|1|2|30.963757 +4|aspect|2|2|0.000000 +4|aspect|3|2|329.036255 +4|aspect|1|3|90.000000 +4|aspect|2|3|-1.000000 +4|aspect|3|3|270.000000 +5|aspect|1|1|135.000000 +5|aspect|2|1|-1.000000 +5|aspect|3|1|225.000000 +5|aspect|1|2|-1.000000 +5|aspect|2|2|-1.000000 +5|aspect|3|2|-1.000000 +5|aspect|1|3|45.000000 +5|aspect|2|3|-1.000000 +5|aspect|3|3|315.000000 +6|aspect|1|1|90.000000 +6|aspect|2|1|-1.000000 +6|aspect|3|1|270.000000 +6|aspect|1|2|149.036240 +6|aspect|2|2|180.000000 +6|aspect|3|2|210.963760 +6|aspect|1|3|161.565048 +6|aspect|2|3|180.000000 +6|aspect|3|3|198.434952 +7|aspect|1|1|0.000000 +7|aspect|2|1|18.434948 +7|aspect|3|1|45.000000 +7|aspect|1|2|0.000000 +7|aspect|2|2|45.000000 +7|aspect|3|2|71.565048 +7|aspect|1|3|-1.000000 +7|aspect|2|3|90.000000 +7|aspect|3|3|90.000000 +8|aspect|1|1|180.000000 +8|aspect|2|1|120.963753 +8|aspect|3|1|108.434952 +8|aspect|1|2|-1.000000 +8|aspect|2|2|90.000000 +8|aspect|3|2|90.000000 +8|aspect|1|3|0.000000 +8|aspect|2|3|59.036243 +8|aspect|3|3|71.565048 +9|aspect|1|1|-1.000000 +9|aspect|2|1|90.000000 +9|aspect|3|1|90.000000 +9|aspect|1|2|180.000000 +9|aspect|2|2|135.000000 +9|aspect|3|2|108.434952 +9|aspect|1|3|180.000000 +9|aspect|2|3|161.565048 +9|aspect|3|3|135.000000 +0|hillshade|1|1| +0|hillshade|2|1| +0|hillshade|3|1| +0|hillshade|4|1| +0|hillshade|5|1| +0|hillshade|6|1| +0|hillshade|7|1| +0|hillshade|8|1| +0|hillshade|9|1| +0|hillshade|1|2| +0|hillshade|2|2|251.327637 +0|hillshade|3|2|220.749786 +0|hillshade|4|2|171.473175 +0|hillshade|5|2|218.295898 +0|hillshade|6|2|248.749847 +0|hillshade|7|2|220.749786 +0|hillshade|8|2|147.224319 +0|hillshade|9|2| +0|hillshade|1|3| +0|hillshade|2|3|220.749786 +0|hillshade|3|3|180.312225 +0|hillshade|4|3|104.256424 +0|hillshade|5|3|180.312225 +0|hillshade|6|3|218.295898 +0|hillshade|7|3|180.312225 +0|hillshade|8|3|67.749786 +0|hillshade|9|3| +0|hillshade|1|4| +0|hillshade|2|4|171.473175 +0|hillshade|3|4|104.256424 +0|hillshade|4|4|109.895920 +0|hillshade|5|4|180.312225 +0|hillshade|6|4|170.000000 +0|hillshade|7|4|104.256424 +0|hillshade|8|4|42.678726 +0|hillshade|9|4| +0|hillshade|1|5| +0|hillshade|2|5|218.295898 +0|hillshade|3|5|180.312225 +0|hillshade|4|5|180.312225 +0|hillshade|5|5|180.312225 +0|hillshade|6|5|180.312225 +0|hillshade|7|5|180.312225 +0|hillshade|8|5|104.256424 +0|hillshade|9|5| +0|hillshade|1|6| +0|hillshade|2|6|248.749847 +0|hillshade|3|6|218.295898 +0|hillshade|4|6|170.000000 +0|hillshade|5|6|180.312225 +0|hillshade|6|6|230.104080 +0|hillshade|7|6|218.295898 +0|hillshade|8|6|119.955399 +0|hillshade|9|6| +0|hillshade|1|7| +0|hillshade|2|7|220.749786 +0|hillshade|3|7|180.312225 +0|hillshade|4|7|104.256424 +0|hillshade|5|7|180.312225 +0|hillshade|6|7|218.295898 +0|hillshade|7|7|180.312225 +0|hillshade|8|7|67.749786 +0|hillshade|9|7| +0|hillshade|1|8| +0|hillshade|2|8|147.224319 +0|hillshade|3|8|67.749786 +0|hillshade|4|8|42.678726 +0|hillshade|5|8|104.256424 +0|hillshade|6|8|119.955399 +0|hillshade|7|8|67.749786 +0|hillshade|8|8|43.121006 +0|hillshade|9|8| +0|hillshade|1|9| +0|hillshade|2|9| +0|hillshade|3|9| +0|hillshade|4|9| +0|hillshade|5|9| +0|hillshade|6|9| +0|hillshade|7|9| +0|hillshade|8|9| +0|hillshade|9|9| +1|hillshade|1|1| +1|hillshade|2|1| +1|hillshade|3|1| +1|hillshade|1|2| +1|hillshade|2|2|251.327637 +1|hillshade|3|2|220.749786 +1|hillshade|1|3| +1|hillshade|2|3|220.749786 +1|hillshade|3|3|180.312225 +2|hillshade|1|1| +2|hillshade|2|1|171.473175 +2|hillshade|3|1|104.256424 +2|hillshade|1|2| +2|hillshade|2|2|218.295898 +2|hillshade|3|2|180.312225 +2|hillshade|1|3| +2|hillshade|2|3|248.749847 +2|hillshade|3|3|218.295898 +3|hillshade|1|1| +3|hillshade|2|1|220.749786 +3|hillshade|3|1|180.312225 +3|hillshade|1|2| +3|hillshade|2|2|147.224319 +3|hillshade|3|2|67.749786 +3|hillshade|1|3| +3|hillshade|2|3| +3|hillshade|3|3| +4|hillshade|1|1| +4|hillshade|2|1| +4|hillshade|3|1| +4|hillshade|1|2|171.473175 +4|hillshade|2|2|218.295898 +4|hillshade|3|2|248.749847 +4|hillshade|1|3|104.256424 +4|hillshade|2|3|180.312225 +4|hillshade|3|3|218.295898 +5|hillshade|1|1|109.895920 +5|hillshade|2|1|180.312225 +5|hillshade|3|1|170.000000 +5|hillshade|1|2|180.312225 +5|hillshade|2|2|180.312225 +5|hillshade|3|2|180.312225 +5|hillshade|1|3|170.000000 +5|hillshade|2|3|180.312225 +5|hillshade|3|3|230.104080 +6|hillshade|1|1|104.256424 +6|hillshade|2|1|180.312225 +6|hillshade|3|1|218.295898 +6|hillshade|1|2|42.678726 +6|hillshade|2|2|104.256424 +6|hillshade|3|2|119.955399 +6|hillshade|1|3| +6|hillshade|2|3| +6|hillshade|3|3| +7|hillshade|1|1| +7|hillshade|2|1| +7|hillshade|3|1| +7|hillshade|1|2|220.749786 +7|hillshade|2|2|147.224319 +7|hillshade|3|2| +7|hillshade|1|3|180.312225 +7|hillshade|2|3|67.749786 +7|hillshade|3|3| +8|hillshade|1|1|104.256424 +8|hillshade|2|1|42.678726 +8|hillshade|3|1| +8|hillshade|1|2|180.312225 +8|hillshade|2|2|104.256424 +8|hillshade|3|2| +8|hillshade|1|3|218.295898 +8|hillshade|2|3|119.955399 +8|hillshade|3|3| +9|hillshade|1|1|180.312225 +9|hillshade|2|1|67.749786 +9|hillshade|3|1| +9|hillshade|1|2|67.749786 +9|hillshade|2|2|43.121006 +9|hillshade|3|2| +9|hillshade|1|3| +9|hillshade|2|3| +9|hillshade|3|3| +0|slope|1|1|10.024988 +0|slope|2|1|21.568129 +0|slope|3|1|26.565052 +0|slope|4|1|21.568129 +0|slope|5|1|14.036243 +0|slope|6|1|21.568129 +0|slope|7|1|26.565052 +0|slope|8|1|21.568129 +0|slope|9|1|10.024988 +0|slope|1|2|21.568129 +0|slope|2|2|35.264389 +0|slope|3|2|36.869896 +0|slope|4|2|36.087147 +0|slope|5|2|26.565052 +0|slope|6|2|36.087147 +0|slope|7|2|36.869896 +0|slope|8|2|35.264389 +0|slope|9|2|21.568129 +0|slope|1|3|26.565052 +0|slope|2|3|36.869896 +0|slope|3|3|0.000000 +0|slope|4|3|26.565052 +0|slope|5|3|0.000000 +0|slope|6|3|26.565052 +0|slope|7|3|0.000000 +0|slope|8|3|36.869896 +0|slope|9|3|26.565052 +0|slope|1|4|21.568129 +0|slope|2|4|36.087147 +0|slope|3|4|26.565052 +0|slope|4|4|19.471220 +0|slope|5|4|0.000000 +0|slope|6|4|19.471220 +0|slope|7|4|26.565052 +0|slope|8|4|36.087147 +0|slope|9|4|21.568129 +0|slope|1|5|14.036243 +0|slope|2|5|26.565052 +0|slope|3|5|0.000000 +0|slope|4|5|0.000000 +0|slope|5|5|0.000000 +0|slope|6|5|0.000000 +0|slope|7|5|0.000000 +0|slope|8|5|26.565052 +0|slope|9|5|14.036243 +0|slope|1|6|21.568129 +0|slope|2|6|36.087147 +0|slope|3|6|26.565052 +0|slope|4|6|19.471220 +0|slope|5|6|0.000000 +0|slope|6|6|19.471220 +0|slope|7|6|26.565052 +0|slope|8|6|36.087147 +0|slope|9|6|21.568129 +0|slope|1|7|26.565052 +0|slope|2|7|36.869896 +0|slope|3|7|0.000000 +0|slope|4|7|26.565052 +0|slope|5|7|0.000000 +0|slope|6|7|26.565052 +0|slope|7|7|0.000000 +0|slope|8|7|36.869896 +0|slope|9|7|26.565052 +0|slope|1|8|21.568129 +0|slope|2|8|35.264389 +0|slope|3|8|36.869896 +0|slope|4|8|36.087147 +0|slope|5|8|26.565052 +0|slope|6|8|36.087147 +0|slope|7|8|36.869896 +0|slope|8|8|35.264389 +0|slope|9|8|21.568129 +0|slope|1|9|10.024988 +0|slope|2|9|21.568129 +0|slope|3|9|26.565052 +0|slope|4|9|21.568129 +0|slope|5|9|14.036243 +0|slope|6|9|21.568129 +0|slope|7|9|26.565052 +0|slope|8|9|21.568129 +0|slope|9|9|10.024988 +1|slope|1|1|10.024988 +1|slope|2|1|21.568129 +1|slope|3|1|26.565052 +1|slope|1|2|21.568129 +1|slope|2|2|35.264389 +1|slope|3|2|36.869896 +1|slope|1|3|26.565052 +1|slope|2|3|36.869896 +1|slope|3|3|0.000000 +2|slope|1|1|21.568129 +2|slope|2|1|36.087147 +2|slope|3|1|26.565052 +2|slope|1|2|14.036243 +2|slope|2|2|26.565052 +2|slope|3|2|0.000000 +2|slope|1|3|21.568129 +2|slope|2|3|36.087147 +2|slope|3|3|26.565052 +3|slope|1|1|26.565052 +3|slope|2|1|36.869896 +3|slope|3|1|0.000000 +3|slope|1|2|21.568129 +3|slope|2|2|35.264389 +3|slope|3|2|36.869896 +3|slope|1|3|10.024988 +3|slope|2|3|21.568129 +3|slope|3|3|26.565052 +4|slope|1|1|21.568129 +4|slope|2|1|14.036243 +4|slope|3|1|21.568129 +4|slope|1|2|36.087147 +4|slope|2|2|26.565052 +4|slope|3|2|36.087147 +4|slope|1|3|26.565052 +4|slope|2|3|0.000000 +4|slope|3|3|26.565052 +5|slope|1|1|19.471220 +5|slope|2|1|0.000000 +5|slope|3|1|19.471220 +5|slope|1|2|0.000000 +5|slope|2|2|0.000000 +5|slope|3|2|0.000000 +5|slope|1|3|19.471220 +5|slope|2|3|0.000000 +5|slope|3|3|19.471220 +6|slope|1|1|26.565052 +6|slope|2|1|0.000000 +6|slope|3|1|26.565052 +6|slope|1|2|36.087147 +6|slope|2|2|26.565052 +6|slope|3|2|36.087147 +6|slope|1|3|21.568129 +6|slope|2|3|14.036243 +6|slope|3|3|21.568129 +7|slope|1|1|26.565052 +7|slope|2|1|21.568129 +7|slope|3|1|10.024988 +7|slope|1|2|36.869896 +7|slope|2|2|35.264389 +7|slope|3|2|21.568129 +7|slope|1|3|0.000000 +7|slope|2|3|36.869896 +7|slope|3|3|26.565052 +8|slope|1|1|26.565052 +8|slope|2|1|36.087147 +8|slope|3|1|21.568129 +8|slope|1|2|0.000000 +8|slope|2|2|26.565052 +8|slope|3|2|14.036243 +8|slope|1|3|26.565052 +8|slope|2|3|36.087147 +8|slope|3|3|21.568129 +9|slope|1|1|0.000000 +9|slope|2|1|36.869896 +9|slope|3|1|26.565052 +9|slope|1|2|36.869896 +9|slope|2|2|35.264389 +9|slope|3|2|21.568129 +9|slope|1|3|26.565052 +9|slope|2|3|21.568129 +9|slope|3|3|10.024988