<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
- <funcdef>text <function>ST_Tile</function></funcdef>
+ <funcdef>setof raster <function>ST_Tile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>int[] </type> <parameter>nband</parameter></paramdef>
<paramdef><type>integer </type> <parameter>width</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>text <function>ST_Tile</function></funcdef>
+ <funcdef>setof raster <function>ST_Tile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>integer </type> <parameter>width</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>text <function>ST_Tile</function></funcdef>
+ <funcdef>setof raster <function>ST_Tile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>width</parameter></paramdef>
<paramdef><type>integer </type> <parameter>height</parameter></paramdef>
</programlisting>
</refsection>
+ <refsection>
+ <title>Examples: Variant 2</title>
+
+ <para>Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher.</para>
+
+ <programlisting>
+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;
+ </programlisting>
+ </refsection>
+
<refsection>
<title>See Also</title>
<para>
</refsection>
+ <refsection>
+ <title>Examples: Variant 2</title>
+
+ <para>Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher.</para>
+
+ <programlisting>
+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;
+ </programlisting>
+ </refsection>
+
<refsection>
<title>See Also</title>
<para>
</programlisting>
</refsection>
+ <refsection>
+ <title>Examples: Variant 2</title>
+
+ <para>Complete example of tiles of a coverage. This query only works with PostgreSQL 9.1 or higher.</para>
+
+ <programlisting>
+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;
+ </programlisting>
+ </refsection>
<refsection>
<title>See Also</title>
--- /dev/null
+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;
--- /dev/null
+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