Changes between Version 101 and Version 102 of WKTRaster/SpecificationWorking03


Ignore:
Timestamp:
Jun 13, 2011, 2:00:30 PM (13 years ago)
Author:
pracine
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • WKTRaster/SpecificationWorking03

    v101 v102  
    771771  4) ST_Intersection(raster, raster, 'geometry') -> geometry -- default both raster to band # 1
    772772
    773 ----
    774 == '''Objective FV.16 - Being able to quickly get raster statistics.''' ==
    775 
    776 '''Add cached basic raster statistic to the base raster WKB format.
    777 
    778 Statistics to be cached should include:
    779 
    780   min/max[[BR]]
    781   mean[[BR]]
    782   standard deviation[[BR]]
    783   histogram[[BR]]
    784   build parameters of stats (sample rate, method used to determine # of bins in histogram?)[[BR]]
    785 
    786 How are the statistics to be kept fresh?  Automatically using some method to see how much of the raster has changed since the last stats calculation?  Or let the user decide?
    787 
    788 ----
    789 
    790 '''ST_SummaryStats(raster, nband) -> record'''[[BR]]
    791 This is the core function that gets the summary statistics (# of values, mean, standard deviation, minimum value, maximum value) of a specified raster's band.  It is this function that ST_Mean, ST_StdDev and ST_MinMax calls for their appropriate values.
    792 
    793 1. ST_SummaryStats(rast raster, nband int, exclude_nodata_value boolean) -> record
    794 
    795   returns one record of five columns (count, mean, stddev, min, max)
    796 
    797   nband: index of band
    798 
    799   exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
    800 
    801 {{{
    802 ST_SummaryStats(rast, 1, FALSE)
    803 }}}
    804 
    805 2. ST_SummaryStats(rast raster, nband int) -> record
    806 
    807   assumes exclude_nodata_value = TRUE
    808 
    809 {{{
    810 ST_SummaryStats(rast, 2)
    811 }}}
    812 
    813 3. ST_SummaryStats(rast raster, exclude_nodata_value boolean) -> record
    814 
    815   assumes nband = 1
    816 
    817 {{{
    818 ST_SummaryStats(rast, TRUE)
    819 }}}
    820 
    821 4. ST_SummaryStats(rast raster) -> record
    822 
    823   assumes nband = 1 and exclude_nodata_value = TRUE
    824 
    825 {{{
    826 ST_SummaryStats(rast)
    827 }}}
    828 
    829 Due to the time it may take to do on-the-fly calculation of summary stats for large rasters (say 10000 x 10000), an alternative that sacrifices accuracy for speed is required.  The following functions sample a percentage of the raster in a methodical randomized manner.  The algorithm used for sampling is...
    830 
    831 1. select the larger dimension of the width and height.  compute the number of pixels to sample in each "row" of the larger dimension
    832 
    833 2. pick pixels from each "row" of the larger dimension in an incremental rolling manner where each increment is randomly determined.
    834 
    835 The set of ST_ApproxSummaryStats functions are:
    836 
    837 1. ST_ApproxSummaryStats(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
    838 
    839   sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    840 
    841 {{{
    842 ST_ApproxSummaryStats(rast, 3, FALSE, 0.1)
    843 
    844 ST_ApproxSummaryStats(rast, 1, TRUE, 0.5)
    845 }}}
    846 
    847 2. ST_ApproxSummaryStats(rast raster, nband int, sample_percent double precision) -> record
    848 
    849   assumes that nband = 1
    850 
    851 {{{
    852 ST_ApproxSummaryStats(rast, 2 0.01)
    853 
    854 ST_ApproxSummaryStats(rast, 4, 0.025)
    855 }}}
    856 
    857 3. ST_ApproxSummaryStats(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> record
    858 
    859   assumes that nband = 1
    860 
    861 {{{
    862 ST_ApproxSummaryStats(rast, FALSE, 0.01)
    863 
    864 ST_ApproxSummaryStats(rast, TRUE, 0.025)
    865 }}}
    866 
    867 4. ST_ApproxSummaryStats(rast raster, sample_percent double precision) -> record
    868 
    869   assumes that nband = 1 and exclude_nodata_value = TRUE
    870 
    871 {{{
    872 ST_ApproxSummaryStats(rast, 0.25)
    873 }}}
    874 
    875 5. ST_ApproxSummaryStats(rast raster) -> record
    876 
    877   assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    878 
    879 {{{
    880 ST_ApproxSummaryStats(rast)
    881 }}}
    882 
    883 The situation arises where the summary statistics of a coverage table is required.  As the coverage may be large (tens of gigabytes of memory or larger), the following functions are provided to permit an incremental computation of the summary statistics.
    884 
    885 1. ST_SummaryStats(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> record
    886 
    887   rastertable: name of table with raster column
    888 
    889   rastercolumn: name of column of data type raster
    890 
    891 {{{
    892 ST_SummaryStats('tmax_2010', 'rast', 1, FALSE)
    893 
    894 ST_SummaryStats('precip_2011', 'rast', 1, TRUE)
    895 }}}
    896 
    897 2. ST_SummaryStats(rastertable text, rastercolumn text, nband int) -> record
    898 
    899     exclude_nodata_value = TRUE
    900 
    901 {{{
    902 ST_SummaryStats('tmax_2010', 'rast', 1)
    903 }}}
    904 
    905 3. ST_SummaryStats(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> record
    906 
    907     nband = 1
    908 
    909 {{{
    910 ST_SummaryStats('precip_2011', 'rast', TRUE)
    911 }}}
    912 
    913 4. ST_SummaryStats(rastertable text, rastercolumn text) -> record
    914 
    915     nband = 1 and exclude_nodata_value = TRUE
    916 
    917 {{{
    918 ST_SummaryStats('tmin_2009', 'rast')
    919 }}}
    920 
    921 Variations for ST_ApproxSummaryStats are:
    922 
    923 1. ST_ApproxSummaryStats(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
    924 
    925 {{{
    926 ST_ApproxSummaryStats('tmax_2010', 'rast', 1, FALSE, 0.5)
    927 
    928 ST_ApproxSummaryStats('precip_2011', 'rast', 1, TRUE, 0.2)
    929 }}}
    930 
    931 2. ST_ApproxSummaryStats(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> record
    932 
    933     exclude_nodata_value = TRUE
    934 
    935 {{{
    936 ST_ApproxSummaryStats('tmax_2010', 'rast', 1, 0.5)
    937 
    938 ST_ApproxSummaryStats('precip_2011', 'rast', 1, 0.2)
    939 }}}
    940 
    941 3. ST_ApproxSummaryStats(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> record
    942 
    943     nband = 1
    944 
    945 {{{
    946 ST_ApproxSummaryStats('tmax_2010', 'rast', FALSE, 0.5)
    947 
    948 ST_ApproxSummaryStats('precip_2011', 'rast', TRUE, 0.2)
    949 }}}
    950 
    951 4. ST_ApproxSummaryStats(rastertable text, rastercolumn text, sample_percent double precision) -> record
    952 
    953     nband = 1 and exclude_nodata_value = TRUE
    954 
    955 {{{
    956 ST_ApproxSummaryStats('tmax_2010', 'rast', 0.5)
    957 
    958 ST_ApproxSummaryStats('precip_2011', 'rast', 0.2)
    959 }}}
    960 
    961 5. ST_ApproxSummaryStats(rastertable text, rastercolumn text) -> record
    962 
    963     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    964 
    965 {{{
    966 ST_ApproxSummaryStats('tmax_2010', 'rast')
    967 
    968 ST_ApproxSummaryStats('precip_2011', 'rast')
    969 }}}
    970 
    971 The mean returned in the coverage functions (has rastertable and rastercolumn arguments) is the true mean of the raster tiles. The standard deviation returned is the standard deviation of all raster tiles.
    972 
    973 ----
    974 
    975 '''ST_Count(raster, nband) -> bigint'''[[BR]]
    976 
    977 This function calls ST_SummaryStats and only returns the count from that function.
    978 
    979 1. ST_Count(rast raster, nband int, exclude_nodata_value boolean) -> bigint
    980 
    981     returns the count as an integer
    982 
    983     nband: index of band
    984 
    985     exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
    986 
    987 {{{
    988 ST_Count(rast, 1, FALSE)
    989 }}}
    990 
    991 2. ST_Count(rast raster, nband int) -> bigint
    992 
    993     assumes exclude_nodata_value = TRUE
    994 
    995 {{{
    996 ST_Count(rast, 2)
    997 }}}
    998 
    999 3. ST_Count(rast raster, exclude_nodata_value boolean) -> bigint
    1000 
    1001     assumes nband = 1
    1002 
    1003 {{{
    1004 ST_Count(rast, TRUE)
    1005 }}}
    1006 
    1007 4. ST_Count(rast raster) -> bigint
    1008 
    1009     assumes nband = 1 and exclude_nodata_value = TRUE
    1010 
    1011 {{{
    1012 ST_Count(rast)
    1013 }}}
    1014 
    1015 The set of ST_ApproxCount functions are:
    1016 
    1017 1. ST_ApproxCount(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> bigint
    1018 
    1019     sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    1020 
    1021 {{{
    1022 ST_ApproxCount(rast, 3, FALSE, 0.1)
    1023 
    1024 ST_ApproxCount(rast, 1, TRUE, 0.5)
    1025 }}}
    1026 
    1027 2. ST_ApproxCount(rast raster, nband int, sample_percent double precision) -> bigint
    1028 
    1029     assumes that nband = 1
    1030 
    1031 {{{
    1032 ST_ApproxCount(rast, 2 0.01)
    1033 
    1034 ST_ApproxCount(rast, 4, 0.025)
    1035 }}}
    1036 
    1037 3. ST_ApproxCount(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> bigint
    1038 
    1039     assumes that nband = 1
    1040 
    1041 {{{
    1042 ST_ApproxCount(rast, FALSE, 0.01)
    1043 
    1044 ST_ApproxCount(rast, TRUE, 0.025)
    1045 }}}
    1046 
    1047 4. ST_ApproxCount(rast raster, sample_percent double precision) -> bigint
    1048 
    1049     assumes that nband = 1 and exclude_nodata_value = TRUE
    1050 
    1051 {{{
    1052 ST_ApproxCount(rast, 0.25)
    1053 }}}
    1054 
    1055 5. ST_ApproxCount(rast raster) -> bigint
    1056 
    1057     assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1058 
    1059 {{{
    1060 ST_ApproxCount(rast)
    1061 }}}
    1062 
    1063 The following functions are provided for coverage tables.
    1064 
    1065 1. ST_Count(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> bigint
    1066 
    1067     rastertable: name of table with raster column
    1068 
    1069     rastercolumn: name of column of data type raster
    1070 
    1071 {{{
    1072 ST_Count('tmax_2010', 'rast', 1, FALSE)
    1073 
    1074 ST_Count('precip_2011', 'rast', 1, TRUE)
    1075 }}}
    1076 
    1077 2. ST_Count(rastertable text, rastercolumn text, nband int) -> bigint
    1078 
    1079     exclude_nodata_value = TRUE
    1080 
    1081 {{{
    1082 ST_Count('tmax_2010', 'rast', 1)
    1083 }}}
    1084 
    1085 3. ST_Count(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> bigint
    1086 
    1087     nband = 1
    1088 
    1089 {{{
    1090 ST_Count('precip_2011', 'rast', TRUE)
    1091 }}}
    1092 
    1093 4. ST_Count(rastertable text, rastercolumn text) -> bigint
    1094 
    1095     nband = 1 and exclude_nodata_value = TRUE
    1096 
    1097 {{{
    1098 ST_Count('tmin_2009', 'rast')
    1099 }}}
    1100 
    1101 Variations for ST_ApproxCount are:
    1102 
    1103 1. ST_ApproxCount(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> bigint
    1104 
    1105 {{{
    1106 ST_ApproxCount('tmax_2010', 'rast', 1, FALSE, 0.5)
    1107 
    1108 ST_ApproxCount('precip_2011', 'rast', 1, TRUE, 0.2)
    1109 }}}
    1110 
    1111 2. ST_ApproxCount(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> bigint
    1112 
    1113     exclude_nodata_value = TRUE
    1114 
    1115 {{{
    1116 ST_ApproxCount('tmax_2010', 'rast', 1, 0.5)
    1117 
    1118 ST_ApproxCount('precip_2011', 'rast', 1, 0.2)
    1119 }}}
    1120 
    1121 3. ST_ApproxCount(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> bigint
    1122 
    1123     nband = 1
    1124 
    1125 {{{
    1126 ST_ApproxCount('tmax_2010', 'rast', FALSE, 0.5)
    1127 
    1128 ST_ApproxCount('precip_2011', 'rast', TRUE, 0.2)
    1129 }}}
    1130 
    1131 4. ST_ApproxCount(rastertable text, rastercolumn text, sample_percent double precision) -> bigint
    1132 
    1133     nband = 1 and exclude_nodata_value = TRUE
    1134 
    1135 {{{
    1136 ST_ApproxCount('tmax_2010', 'rast', 0.5)
    1137 
    1138 ST_ApproxCount('precip_2011', 'rast', 0.2)
    1139 }}}
    1140 
    1141 5. ST_ApproxCount(rastertable text, rastercolumn text) -> bigint
    1142 
    1143     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1144 
    1145 {{{
    1146 ST_ApproxCount('tmax_2010', 'rast')
    1147 
    1148 ST_ApproxCount('precip_2011', 'rast')
    1149 }}}
    1150 
    1151 ----
    1152 
    1153 '''ST_Sum(raster, nband) -> double precision'''[[BR]]
    1154 
    1155 This function calls ST_SummaryStats and only returns the sum from that function.
    1156 
    1157 1. ST_Sum(rast raster, nband int, exclude_nodata_value boolean) -> double precision
    1158 
    1159     returns the sum as an integer
    1160 
    1161     nband: index of band
    1162 
    1163     exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
    1164 
    1165 {{{
    1166 ST_Sum(rast, 1, FALSE)
    1167 }}}
    1168 
    1169 2. ST_Sum(rast raster, nband int) -> double precision
    1170 
    1171     assumes exclude_nodata_value = TRUE
    1172 
    1173 {{{
    1174 ST_Sum(rast, 2)
    1175 }}}
    1176 
    1177 3. ST_Sum(rast raster, exclude_nodata_value boolean) -> double precision
    1178 
    1179     assumes nband = 1
    1180 
    1181 {{{
    1182 ST_Sum(rast, TRUE)
    1183 }}}
    1184 
    1185 4. ST_Sum(rast raster) -> double precision
    1186 
    1187     assumes nband = 1 and exclude_nodata_value = TRUE
    1188 
    1189 {{{
    1190 ST_Sum(rast)
    1191 }}}
    1192 
    1193 The set of ST_ApproxSum functions are:
    1194 
    1195 1. ST_ApproxSum(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1196 
    1197     sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    1198 
    1199 {{{
    1200 ST_ApproxSum(rast, 3, FALSE, 0.1)
    1201 
    1202 ST_ApproxSum(rast, 1, TRUE, 0.5)
    1203 }}}
    1204 
    1205 2. ST_ApproxSum(rast raster, nband int, sample_percent double precision) -> double precision
    1206 
    1207     assumes that nband = 1
    1208 
    1209 {{{
    1210 ST_ApproxSum(rast, 2 0.01)
    1211 
    1212 ST_ApproxSum(rast, 4, 0.025)
    1213 }}}
    1214 
    1215 3. ST_ApproxSum(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1216 
    1217     assumes that nband = 1
    1218 
    1219 {{{
    1220 ST_ApproxSum(rast, FALSE, 0.01)
    1221 
    1222 ST_ApproxSum(rast, TRUE, 0.025)
    1223 }}}
    1224 
    1225 4. ST_ApproxSum(rast raster, sample_percent double precision) -> double precision
    1226 
    1227     assumes that nband = 1 and exclude_nodata_value = TRUE
    1228 
    1229 {{{
    1230 ST_ApproxSum(rast, 0.25)
    1231 }}}
    1232 
    1233 5. ST_ApproxSum(rast raster) -> double precision
    1234 
    1235     assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1236 
    1237 {{{
    1238 ST_ApproxSum(rast)
    1239 }}}
    1240 
    1241 The following functions are provided for coverage tables.
    1242 
    1243 1. ST_Sum(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
    1244 
    1245     rastertable: name of table with raster column
    1246 
    1247     rastercolumn: name of column of data type raster
    1248 
    1249 {{{
    1250 ST_Sum('tmax_2010', 'rast', 1, FALSE)
    1251 
    1252 ST_Sum('precip_2011', 'rast', 1, TRUE)
    1253 }}}
    1254 
    1255 2. ST_Sum(rastertable text, rastercolumn text, nband int) -> double precision
    1256 
    1257     exclude_nodata_value = TRUE
    1258 
    1259 {{{
    1260 ST_Sum('tmax_2010', 'rast', 1)
    1261 }}}
    1262 
    1263 3. ST_Sum(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
    1264 
    1265     nband = 1
    1266 
    1267 {{{
    1268 ST_Sum('precip_2011', 'rast', TRUE)
    1269 }}}
    1270 
    1271 4. ST_Sum(rastertable text, rastercolumn text) -> double precision
    1272 
    1273     nband = 1 and exclude_nodata_value = TRUE
    1274 
    1275 {{{
    1276 ST_Sum('tmin_2009', 'rast')
    1277 }}}
    1278 
    1279 Variations for ST_ApproxSum are:
    1280 
    1281 1. ST_ApproxSum(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1282 
    1283 {{{
    1284 ST_ApproxSum('tmax_2010', 'rast', 1, FALSE, 0.5)
    1285 
    1286 ST_ApproxSum('precip_2011', 'rast', 1, TRUE, 0.2)
    1287 }}}
    1288 
    1289 2. ST_ApproxSum(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
    1290 
    1291     exclude_nodata_value = TRUE
    1292 
    1293 {{{
    1294 ST_ApproxSum('tmax_2010', 'rast', 1, 0.5)
    1295 
    1296 ST_ApproxSum('precip_2011', 'rast', 1, 0.2)
    1297 }}}
    1298 
    1299 3. ST_ApproxSum(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1300 
    1301     nband = 1
    1302 
    1303 {{{
    1304 ST_ApproxSum('tmax_2010', 'rast', FALSE, 0.5)
    1305 
    1306 ST_ApproxSum('precip_2011', 'rast', TRUE, 0.2)
    1307 }}}
    1308 
    1309 4. ST_ApproxSum(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
    1310 
    1311     nband = 1 and exclude_nodata_value = TRUE
    1312 
    1313 {{{
    1314 ST_ApproxSum('tmax_2010', 'rast', 0.5)
    1315 
    1316 ST_ApproxSum('precip_2011', 'rast', 0.2)
    1317 }}}
    1318 
    1319 5. ST_ApproxSum(rastertable text, rastercolumn text) -> double precision
    1320 
    1321     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1322 
    1323 {{{
    1324 ST_ApproxSum('tmax_2010', 'rast')
    1325 
    1326 ST_ApproxSum('precip_2011', 'rast')
    1327 }}}
    1328 
    1329 ----
    1330 
    1331 '''ST_Mean(raster, nband) -> double precision'''[[BR]]
    1332 This function calls ST_SummaryStats and only returns the mean from that function.
    1333 
    1334 1. ST_Mean(rast raster, nband int, exclude_nodata_value boolean) -> double precision
    1335 
    1336   returns the mean as a double precision
    1337 
    1338   nband: index of band
    1339 
    1340   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    1341 
    1342 {{{
    1343 ST_Mean(rast, 1, FALSE)
    1344 }}}
    1345 
    1346 2. ST_Mean(rast raster, nband int) -> double precision
    1347 
    1348   assumes exclude_nodata_value = TRUE
    1349 
    1350 {{{
    1351 ST_Mean(rast, 2)
    1352 }}}
    1353 
    1354 3. ST_Mean(rast raster, exclude_nodata_value boolean) -> double precision
    1355 
    1356   assumes nband = 1
    1357 
    1358 {{{
    1359 ST_Mean(rast, TRUE)
    1360 }}}
    1361 
    1362 4. ST_Mean(rast raster) -> double precision
    1363 
    1364   assumes nband = 1 and exclude_nodata_value = TRUE
    1365 
    1366 {{{
    1367 ST_Mean(rast)
    1368 }}}
    1369 
    1370 The set of ST_ApproxMean functions are:
    1371 
    1372 1. ST_ApproxMean(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1373 
    1374   sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    1375 
    1376 {{{
    1377 ST_ApproxMean(rast, 3, FALSE, 0.1)
    1378 
    1379 ST_ApproxMean(rast, 1, TRUE, 0.5)
    1380 }}}
    1381 
    1382 2. ST_ApproxMean(rast raster, nband int, sample_percent double precision) -> double precision
    1383 
    1384   assumes that nband = 1
    1385 
    1386 {{{
    1387 ST_ApproxMean(rast, 2 0.01)
    1388 
    1389 ST_ApproxMean(rast, 4, 0.025)
    1390 }}}
    1391 
    1392 3. ST_ApproxMean(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1393 
    1394   assumes that nband = 1
    1395 
    1396 {{{
    1397 ST_ApproxMean(rast, FALSE, 0.01)
    1398 
    1399 ST_ApproxMean(rast, TRUE, 0.025)
    1400 }}}
    1401 
    1402 4. ST_ApproxMean(rast raster, sample_percent double precision) -> double precision
    1403 
    1404   assumes that nband = 1 and exclude_nodata_value = TRUE
    1405 
    1406 {{{
    1407 ST_ApproxMean(rast, 0.25)
    1408 }}}
    1409 
    1410 5. ST_ApproxMean(rast raster) -> double precision
    1411 
    1412   assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1413 
    1414 {{{
    1415 ST_ApproxMean(rast)
    1416 }}}
    1417 
    1418 The following functions are provided for coverage tables.
    1419 
    1420 1. ST_Mean(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
    1421 
    1422   rastertable: name of table with raster column
    1423 
    1424   rastercolumn: name of column of data type raster
    1425 
    1426 {{{
    1427 ST_Mean('tmax_2010', 'rast', 1, FALSE)
    1428 
    1429 ST_Mean('precip_2011', 'rast', 1, TRUE)
    1430 }}}
    1431 
    1432 2. ST_Mean(rastertable text, rastercolumn text, nband int) -> double precision
    1433 
    1434     exclude_nodata_value = TRUE
    1435 
    1436 {{{
    1437 ST_Mean('tmax_2010', 'rast', 1)
    1438 }}}
    1439 
    1440 3. ST_Mean(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
    1441 
    1442     nband = 1
    1443 
    1444 {{{
    1445 ST_Mean('precip_2011', 'rast', TRUE)
    1446 }}}
    1447 
    1448 4. ST_Mean(rastertable text, rastercolumn text) -> double precision
    1449 
    1450     nband = 1 and exclude_nodata_value = TRUE
    1451 
    1452 {{{
    1453 ST_Mean('tmin_2009', 'rast')
    1454 }}}
    1455 
    1456 Variations for ST_ApproxMean are:
    1457 
    1458 1. ST_ApproxMean(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1459 
    1460 {{{
    1461 ST_ApproxMean('tmax_2010', 'rast', 1, FALSE, 0.5)
    1462 
    1463 ST_ApproxMean('precip_2011', 'rast', 1, TRUE, 0.2)
    1464 }}}
    1465 
    1466 2. ST_ApproxMean(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
    1467 
    1468     exclude_nodata_value = TRUE
    1469 
    1470 {{{
    1471 ST_ApproxMean('tmax_2010', 'rast', 1, 0.5)
    1472 
    1473 ST_ApproxMean('precip_2011', 'rast', 1, 0.2)
    1474 }}}
    1475 
    1476 3. ST_ApproxMean(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1477 
    1478     nband = 1
    1479 
    1480 {{{
    1481 ST_ApproxMean('tmax_2010', 'rast', FALSE, 0.5)
    1482 
    1483 ST_ApproxMean('precip_2011', 'rast', TRUE, 0.2)
    1484 }}}
    1485 
    1486 4. ST_ApproxMean(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
    1487 
    1488     nband = 1 and exclude_nodata_value = TRUE
    1489 
    1490 {{{
    1491 ST_ApproxMean('tmax_2010', 'rast', 0.5)
    1492 
    1493 ST_ApproxMean('precip_2011', 'rast', 0.2)
    1494 }}}
    1495 
    1496 5. ST_ApproxMean(rastertable text, rastercolumn text) -> double precision
    1497 
    1498     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1499 
    1500 {{{
    1501 ST_ApproxMean('tmax_2010', 'rast')
    1502 
    1503 ST_ApproxMean('precip_2011', 'rast')
    1504 }}}
    1505 
    1506 The mean returned in the coverage functions (has rastertable and rastercolumn arguments) is the true mean of the raster tiles.
    1507 
    1508 ----
    1509 
    1510 '''ST_StdDev(raster, nband) -> double precision'''[[BR]]
    1511 This function calls ST_SummaryStats and only returns the standard deviation from that function.
    1512 
    1513 1. ST_StdDev(rast raster, nband int, exclude_nodata_value boolean) -> double precision
    1514 
    1515   returns the standard deviation as a double precision
    1516 
    1517   nband: index of band
    1518 
    1519   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    1520 
    1521 {{{
    1522 ST_StdDev(rast, 1, FALSE)
    1523 }}}
    1524 
    1525 2. ST_StdDev(rast raster, nband int) -> double precision
    1526 
    1527   assumes exclude_nodata_value = TRUE
    1528 
    1529 {{{
    1530 ST_StdDev(rast, 2)
    1531 }}}
    1532 
    1533 3. ST_StdDev(rast raster, exclude_nodata_value boolean) -> double precision
    1534 
    1535   assumes nband = 1
    1536 
    1537 {{{
    1538 ST_StdDev(rast, TRUE)
    1539 }}}
    1540 
    1541 4. ST_StdDev(rast raster) -> double precision
    1542 
    1543   assumes nband = 1 and exclude_nodata_value = TRUE
    1544 
    1545 {{{
    1546 ST_StdDev(rast)
    1547 }}}
    1548 
    1549 The set of ST_ApproxStdDev functions are:
    1550 
    1551 1. ST_ApproxStdDev(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1552 
    1553   sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    1554 
    1555 {{{
    1556 ST_ApproxStdDev(rast, 3, FALSE, 0.1)
    1557 
    1558 ST_ApproxStdDev(rast, 1, TRUE, 0.5)
    1559 }}}
    1560 
    1561 2. ST_ApproxStdDev(rast raster, nband int, sample_percent double precision) -> double precision
    1562 
    1563   assumes that nband = 1
    1564 
    1565 {{{
    1566 ST_ApproxStdDev(rast, 2 0.01)
    1567 
    1568 ST_ApproxStdDev(rast, 4, 0.025)
    1569 }}}
    1570 
    1571 3. ST_ApproxStdDev(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1572 
    1573   assumes that nband = 1
    1574 
    1575 {{{
    1576 ST_ApproxStdDev(rast, FALSE, 0.01)
    1577 
    1578 ST_ApproxStdDev(rast, TRUE, 0.025)
    1579 }}}
    1580 
    1581 4. ST_ApproxStdDev(rast raster, sample_percent double precision) -> double precision
    1582 
    1583   assumes that nband = 1 and exclude_nodata_value = TRUE
    1584 
    1585 {{{
    1586 ST_ApproxStdDev(rast, 0.25)
    1587 }}}
    1588 
    1589 5. ST_ApproxStdDev(rast raster) -> double precision
    1590 
    1591   assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1592 
    1593 {{{
    1594 ST_ApproxStdDev(rast)
    1595 }}}
    1596 
    1597 The following functions are provided for coverage tables.
    1598 
    1599 1. ST_StdDev(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
    1600 
    1601   rastertable: name of table with raster column
    1602 
    1603   rastercolumn: name of column of data type raster
    1604 
    1605 {{{
    1606 ST_StdDev('tmax_2010', 'rast', 1, FALSE)
    1607 
    1608 ST_StdDev('precip_2011', 'rast', 1, TRUE)
    1609 }}}
    1610 
    1611 2. ST_StdDev(rastertable text, rastercolumn text, nband int) -> double precision
    1612 
    1613     exclude_nodata_value = TRUE
    1614 
    1615 {{{
    1616 ST_StdDev('tmax_2010', 'rast', 1)
    1617 }}}
    1618 
    1619 3. ST_StdDev(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
    1620 
    1621     nband = 1
    1622 
    1623 {{{
    1624 ST_StdDev('precip_2011', 'rast', TRUE)
    1625 }}}
    1626 
    1627 4. ST_StdDev(rastertable text, rastercolumn text) -> double precision
    1628 
    1629     nband = 1 and exclude_nodata_value = TRUE
    1630 
    1631 {{{
    1632 ST_StdDev('tmin_2009', 'rast')
    1633 }}}
    1634 
    1635 Variations for ST_ApproxStdDev are:
    1636 
    1637 1. ST_ApproxStdDev(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1638 
    1639 {{{
    1640 ST_ApproxStdDev('tmax_2010', 'rast', 1, FALSE, 0.5)
    1641 
    1642 ST_ApproxStdDev('precip_2011', 'rast', 1, TRUE, 0.2)
    1643 }}}
    1644 
    1645 2. ST_ApproxStdDev(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
    1646 
    1647     exclude_nodata_value = TRUE
    1648 
    1649 {{{
    1650 ST_ApproxStdDev('tmax_2010', 'rast', 1, 0.5)
    1651 
    1652 ST_ApproxStdDev('precip_2011', 'rast', 1, 0.2)
    1653 }}}
    1654 
    1655 3. ST_ApproxStdDev(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
    1656 
    1657     nband = 1
    1658 
    1659 {{{
    1660 ST_ApproxStdDev('tmax_2010', 'rast', FALSE, 0.5)
    1661 
    1662 ST_ApproxStdDev('precip_2011', 'rast', TRUE, 0.2)
    1663 }}}
    1664 
    1665 4. ST_ApproxStdDev(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
    1666 
    1667     nband = 1 and exclude_nodata_value = TRUE
    1668 
    1669 {{{
    1670 ST_ApproxStdDev('tmax_2010', 'rast', 0.5)
    1671 
    1672 ST_ApproxStdDev('precip_2011', 'rast', 0.2)
    1673 }}}
    1674 
    1675 5. ST_ApproxStdDev(rastertable text, rastercolumn text) -> double precision
    1676 
    1677     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1678 
    1679 {{{
    1680 ST_ApproxStdDev('tmax_2010', 'rast')
    1681 
    1682 ST_ApproxStdDev('precip_2011', 'rast')
    1683 }}}
    1684 
    1685 The standard deviation returned in the coverage functions (has rastertable and rastercolumn arguments) is the standard deviation of all raster tiles.
    1686 
    1687 ----
    1688 
    1689 '''ST_MinMax(raster, nband) -> record'''[[BR]]
    1690 This function calls ST_SummaryStats and only returns the min and max values from that function.
    1691 
    1692 1. ST_MinMax(rast raster, nband int, exclude_nodata_value boolean) -> record
    1693 
    1694   returns the record (min double precision, max double precision)
    1695 
    1696   nband: index of band
    1697 
    1698   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    1699 
    1700 {{{
    1701 ST_MinMax(rast, 1, FALSE)
    1702 }}}
    1703 
    1704 2. ST_MinMax(rast raster, nband int) -> record
    1705 
    1706   assumes exclude_nodata_value = TRUE
    1707 
    1708 {{{
    1709 ST_MinMax(rast, 2)
    1710 }}}
    1711 
    1712 3. ST_MinMax(rast raster, exclude_nodata_value boolean) -> record
    1713 
    1714   assumes nband = 1
    1715 
    1716 {{{
    1717 ST_MinMax(rast, TRUE)
    1718 }}}
    1719 
    1720 4. ST_MinMax(rast raster) -> record
    1721 
    1722   assumes nband = 1 and exclude_nodata_value = TRUE
    1723 
    1724 {{{
    1725 ST_MinMax(rast)
    1726 }}}
    1727 
    1728 The set of ST_ApproxMinMax functions are:
    1729 
    1730 1. ST_ApproxMinMax(rast raster, nband int, exclude_nodata_value boolean, sample_percent record) -> record
    1731 
    1732   sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
    1733 
    1734 {{{
    1735 ST_ApproxMinMax(rast, 3, FALSE, 0.1)
    1736 
    1737 ST_ApproxMinMax(rast, 1, TRUE, 0.5)
    1738 }}}
    1739 
    1740 2. ST_ApproxMinMax(rast raster, nband int, sample_percent double precision) -> record
    1741 
    1742   assumes that nband = 1
    1743 
    1744 {{{
    1745 ST_ApproxMinMax(rast, 2 0.01)
    1746 
    1747 ST_ApproxMinMax(rast, 4, 0.025)
    1748 }}}
    1749 
    1750 3. ST_ApproxMinMax(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> record
    1751 
    1752   assumes that nband = 1
    1753 
    1754 {{{
    1755 ST_ApproxMinMax(rast, FALSE, 0.01)
    1756 
    1757 ST_ApproxMinMax(rast, TRUE, 0.025)
    1758 }}}
    1759 
    1760 4. ST_ApproxMinMax(rast raster, sample_percent double precision) -> record
    1761 
    1762   assumes that nband = 1 and exclude_nodata_value = TRUE
    1763 
    1764 {{{
    1765 ST_ApproxMinMax(rast, 0.25)
    1766 }}}
    1767 
    1768 5. ST_ApproxMinMax(rast raster) -> record
    1769 
    1770   assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1771 
    1772 {{{
    1773 ST_ApproxMinMax(rast)
    1774 }}}
    1775 
    1776 The following functions are provided for coverage tables.
    1777 
    1778 1. ST_MinMax(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> record
    1779 
    1780   rastertable: name of table with raster column
    1781 
    1782   rastercolumn: name of column of data type raster
    1783 
    1784 {{{
    1785 ST_MinMax('tmax_2010', 'rast', 1, FALSE)
    1786 
    1787 ST_MinMax('precip_2011', 'rast', 1, TRUE)
    1788 }}}
    1789 
    1790 2. ST_MinMax(rastertable text, rastercolumn text, nband int) -> record
    1791 
    1792     exclude_nodata_value = TRUE
    1793 
    1794 {{{
    1795 ST_MinMax('tmax_2010', 'rast', 1)
    1796 }}}
    1797 
    1798 3. ST_MinMax(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> record
    1799 
    1800     nband = 1
    1801 
    1802 {{{
    1803 ST_MinMax('precip_2011', 'rast', TRUE)
    1804 }}}
    1805 
    1806 4. ST_MinMax(rastertable text, rastercolumn text) -> record
    1807 
    1808     nband = 1 and exclude_nodata_value = TRUE
    1809 
    1810 {{{
    1811 ST_MinMax('tmin_2009', 'rast')
    1812 }}}
    1813 
    1814 Variations for ST_ApproxMinMax are:
    1815 
    1816 1. ST_ApproxMinMax(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
    1817 
    1818 {{{
    1819 ST_ApproxMinMax('tmax_2010', 'rast', 1, FALSE, 0.5)
    1820 
    1821 ST_ApproxMinMax('precip_2011', 'rast', 1, TRUE, 0.2)
    1822 }}}
    1823 
    1824 2. ST_ApproxMinMax(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> record
    1825 
    1826     exclude_nodata_value = TRUE
    1827 
    1828 {{{
    1829 ST_ApproxMinMax('tmax_2010', 'rast', 1, 0.5)
    1830 
    1831 ST_ApproxMinMax('precip_2011', 'rast', 1, 0.2)
    1832 }}}
    1833 
    1834 3. ST_ApproxMinMax(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> record
    1835 
    1836     nband = 1
    1837 
    1838 {{{
    1839 ST_ApproxMinMax('tmax_2010', 'rast', FALSE, 0.5)
    1840 
    1841 ST_ApproxMinMax('precip_2011', 'rast', TRUE, 0.2)
    1842 }}}
    1843 
    1844 4. ST_ApproxMinMax(rastertable text, rastercolumn text, sample_percent double precision) -> record
    1845 
    1846     nband = 1 and exclude_nodata_value = TRUE
    1847 
    1848 {{{
    1849 ST_ApproxMinMax('tmax_2010', 'rast', 0.5)
    1850 
    1851 ST_ApproxMinMax('precip_2011', 'rast', 0.2)
    1852 }}}
    1853 
    1854 5. ST_ApproxMinMax(rastertable text, rastercolumn text) -> record
    1855 
    1856     nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
    1857 
    1858 {{{
    1859 ST_ApproxMinMax('tmax_2010', 'rast')
    1860 
    1861 ST_ApproxMinMax('precip_2011', 'rast')
    1862 }}}
    1863 
    1864 ----
    1865 
    1866 '''ST_Histogram(raster, nband) -> set of records'''[[BR]]
    1867 ST_Histogram and ST_ApproxHistogram provide methods to determine a raster's data distribution.
    1868 
    1869 The return of ST_Histogram and ST_ApproxHistogram is a set of records where each record is (min, max, count, percent).
    1870 
    1871 ST_Histogram has the following variations.
    1872 
    1873 1. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int, width double precision[], right boolean) -> set of records
    1874 
    1875   returns set of records of four columns (min, max, count, percent)
    1876 
    1877   nband: index of band to process on
    1878 
    1879   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    1880 
    1881   bins: the number of categories/bins to have in the histogram. If NULL or value less than one, the number of categories will be auto-computed using Sturges' formula if the number of values >= 30 or Square-root choice if number of values < 30.
    1882 
    1883     http://en.wikipedia.org/wiki/Histogram#Mathematical_definition
    1884 
    1885   width: an array indicating the width of each category/bin. If the number of bins is greater than the number of widths, the widths are repeated. Example: 9 bins, widths are [a, b, c] will have the output be [a, b, c, a, b, c, a, b, c].
    1886 
    1887   right: compute the histogram from the right rather than from the left (default). This changes the criteria for evaluating a value x from [a, b) to (a, b].
    1888 
    1889 {{{
    1890 ST_Histogram(rast, 2, FALSE, NULL, NULL, FALSE)
    1891 
    1892 ST_Histogram(rast, 1, TRUE, 100, NULL, FALSE)
    1893 
    1894 ST_Histogram(rast, 2, FALSE, NULL, ARRAY[100, 50], FALSE)
    1895 
    1896 ST_Histogram(rast, 2, FALSE, 9, ARRAY[1000], TRUE)
    1897 
    1898 ST_Histogram(rast, 2, FALSE, 20, ARRAY[100, 200, 300], TRUE)
    1899 }}}
    1900 
    1901 2. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int, right boolean) -> set of records
    1902 
    1903   parameter "width" is not specified thus resulting in all bins having the same widths
    1904 
    1905 {{{
    1906 ST_Histogram(rast, 2, FALSE, 5, FALSE)
    1907 }}}
    1908 
    1909 3. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int) -> set of records
    1910 
    1911   the parameter "right" is removed and assumed to be FALSE
    1912 
    1913 {{{
    1914 ST_Histogram(rast, 2, FALSE, 5)
    1915 }}}
    1916 
    1917 4. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean) -> set of records
    1918 
    1919   the parameter "bins" is removed and set to NULL.  The function will compute the number of bins to use
    1920 
    1921 5. ST_Histogram(rast raster, nband int) -> set of records
    1922 
    1923   exclude_nodata_value is assumed to be TRUE
    1924 
    1925 6. ST_Histogram(rast raster) -> set of records
    1926 
    1927   assumes that nband is 1.
    1928 
    1929 7. ST_Histogram(rast raster, nband int, bins int, width double precision[], right boolean) -> set of records
    1930 
    1931   exclude_nodata_value is assumed to be TRUE
    1932 
    1933 8. ST_Histogram(rast raster, nband int, bins int, right boolean) -> set of records
    1934 
    1935   all bins will have equal widths
    1936 
    1937 9. ST_Histogram(rast raster, nband int, bins int) -> set of records
    1938 
    1939   right is assumed to be FALSE
    1940 
    1941 ST_ApproxHistogram should have the following variations.
    1942 
    1943 1. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, width double precision[], right boolean) -> set of record
    1944 
    1945     sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider when generating the histogram.
    1946 
    1947 {{{
    1948 ST_Histogram(rast, 2, FALSE, 0.1, NULL, NULL, FALSE)
    1949 
    1950 ST_Histogram(rast, 1, TRUE, 1, 100, NULL, FALSE)
    1951 
    1952 ST_Histogram(rast, 2, FALSE, 0.2, NULL, ARRAY[100, 50], FALSE)
    1953 
    1954 ST_Histogram(rast, 2, FALSE, 0.25, 9, ARRAY[1000], TRUE)
    1955 
    1956 ST_Histogram(rast, 2, FALSE, 0.05, 20, ARRAY[100, 200, 300], TRUE)
    1957 }}}
    1958 
    1959 2. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, right boolean) -> set of records
    1960 
    1961   parameter "width" is not specified thus resulting in all bins having the same widths
    1962 
    1963 3. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int) -> set of records
    1964 
    1965   the parameter "right" is removed and assumed to be FALSE
    1966 
    1967 {{{
    1968 ST_ApproxHistogram(rast, 2, FALSE, 5)
    1969 }}}
    1970 
    1971 4. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> set of records
    1972 
    1973   the parameter "bins" is removed and set to NULL so that function can compute the number of bins to use
    1974 
    1975 5. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision) -> set of records
    1976 
    1977   exclude_nodata_value is assumed to be TRUE
    1978 
    1979 6. ST_ApproxHistogram(rast raster, nband int) -> set of records
    1980 
    1981   assumes that sample_percent is 0.1
    1982 
    1983 7. ST_ApproxHistogram(rast raster, sample_percent double_precision) -> set of records
    1984 
    1985   assumes that nband is 1
    1986 
    1987 8. ST_ApproxHistogram(rast raster) -> set of records
    1988 
    1989   assumes that nband is 1 and sample_percent is 0.1
    1990 
    1991 9. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int, width double precision[], right boolean) -> set of records
    1992 
    1993   exclude_nodata_value is assumed to be TRUE
    1994 
    1995 10. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int, right boolean) -> set of records
    1996 
    1997   all bins will have equal widths
    1998 
    1999 11. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int) -> set of records
    2000 
    2001   right is assumed to be FALSE
    2002 
    2003 The following set of function are for coverages.
    2004 
    2005 1. ST_Histogram(rastertable text, rastercolumn text, nband int DEFAULT 1, exclude_nodata_value boolean DEFAULT TRUE, bins int default 0, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
    2006 
    2007   rastertable: name of table with raster column
    2008 
    2009   rastercolumn: name of column of data type raster
    2010 
    2011 {{{
    2012 ST_Histogram('tmax_2010', 'rast')
    2013 
    2014 ST_Histogram('precip_2011', 'rast', 1)
    2015 
    2016 ST_Histogram('precip_2011', 'rast', 1, FALSE)
    2017 
    2018 ST_Histogram('precip_2011', 'rast', 1, FALSE, 5)
    2019 
    2020 ST_Histogram('precip_2011', 'rast', 1, FALSE, 10, NULL)
    2021 
    2022 ST_Histogram('precip_2011', 'rast', 1, FALSE, 10, NULL, TRUE)
    2023 }}}
    2024 
    2025 2. ST_Histogram(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, bins int, right boolean) -> set of records
    2026 
    2027 {{{
    2028 ST_Histogram('tmin_2010', 'rast', 2, FALSE, 5, FALSE)
    2029 }}}
    2030 
    2031 3. ST_Histogram(rastertable text, rastercolumn text, nband int, bins int, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
    2032 
    2033 {{{
    2034 ST_Histogram('ndvi_2010', 'rast', 1, 5)
    2035 
    2036 ST_Histogram('ndvi_2010', 'rast', 1, 0, ARRAY[0.5]::double precision[])
    2037 
    2038 ST_Histogram('ndvi_2010', 'rast', 1, 5, NULL, TRUE)
    2039 }}}
    2040 
    2041 4. ST_Histogram(rastertable text, rastercolumn text, nband int, bins int, right boolean) -> set of records
    2042 
    2043 {{{
    2044 ST_Histogram('veg_2009', 'rast', 2, 3, FALSE)
    2045 
    2046 ST_Histogram('veg_2009', 'rast', 2, 3, TRUE)
    2047 }}}
    2048 
    2049 A set of functions of ST_ApproxHistogram for coverage tables:
    2050 
    2051 1. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int DEFAULT 1, exclude_nodata_value boolean DEFAULT TRUE, sample_percent double precision DEFAULT 0.1, bins int DEFAULT 0, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
    2052 
    2053 {{{
    2054 ST_ApproxHistogram('precip_2010', 'rast')
    2055 
    2056 ST_ApproxHistogram('precip_2010', 'rast', 1)
    2057 
    2058 ST_ApproxHistogram('precip_2010', 'rast', 2, FALSE)
    2059 
    2060 ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.25)
    2061 
    2062 ST_ApproxHistogram('precip_2010', 'rast', 3, FALSE, 0.2, 10)
    2063 
    2064 ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.1, 0, ARRAY[1]::double precision[])
    2065 
    2066 ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.1, 0, ARRAY[1]::double precision[], FALSE)
    2067 }}}
    2068 
    2069 2. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, right boolean)
    2070 
    2071 3. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision)
    2072 
    2073 4. ST_ApproxHistogram(rastertable text, rastercolumn text, sample_percent double precision)
    2074 
    2075 5. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision, bins int, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE)
    2076 
    2077 6. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision, bins int, right boolean)
    2078 
    2079 ----
    2080 '''ST_Quantile(raster, nband) -> set of records'''[[BR]]
    2081 In addition to determining the histogram of a raster, providing the ability to compute quantiles permits a user to reference a value in the context of the sample or population. Thus, a value could be examined to be at the raster's 25%, 50%, 75% percentile.
    2082 
    2083 http://en.wikipedia.org/wiki/Quantile
    2084 
    2085 ST_Quantile variations:
    2086 
    2087 1. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean, quantiles double precision[]) -> set of records
    2088 
    2089   each row returned is of (quantile double precision, value double precision)
    2090 
    2091   nband: index of band to process on
    2092 
    2093   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    2094 
    2095   quantiles: array of percentages to compute values for
    2096 
    2097 {{{
    2098 ST_Quantile(rast, 1, FALSE, ARRAY[0.1, 0.3, 0.7])
    2099 
    2100 ST_Quantile(rast, 1, TRUE, ARRAY[0.2])
    2101 
    2102 ST_Quantile(rast, 1, FALSE, ARRAY[0, 1])
    2103 }}}
    2104 
    2105 2. ST_Quantile(rast raster, nband int, quantiles double precision[]) -> set of records
    2106 
    2107   "exclude_nodata_value" is assumed to be TRUE
    2108 
    2109 {{{
    2110 ST_Quantile(rast, 1, ARRAY[0.1, 0.3, 0.7])
    2111 }}}
    2112 
    2113 3. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean) -> set of records
    2114 
    2115   "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
    2116 
    2117 4. ST_Quantile(rast raster, nband int) -> set of records
    2118 
    2119   "exclude_nodata_value" is assumed to be TRUE and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
    2120 
    2121 5. ST_Quantile(rast raster, quantiles double precision[]) -> set of records
    2122 
    2123   "nband" is assumed to be 1 and "exclude_nodata_value" is TRUE
    2124 
    2125 6. ST_Quantile(rast raster) -> set of records
    2126 
    2127   "nband" is assumed to be 1 and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
    2128 
    2129 7. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean, quantile double precision) -> record
    2130 
    2131   quantile: the single percentile to compute
    2132 
    2133 8. ST_Quantile(rast raster, nband int, quantile double precision) -> record
    2134 
    2135   "exclude_nodata_value" is assumed to be TRUE
    2136 
    2137 9. ST_Quantile(rast raster, exclude_nodata_value boolean, quantile double precision) -> record
    2138 
    2139   "nband" is assumed to be 1
    2140 
    2141 10. ST_Quantile(rast raster, quantile double precision) -> record
    2142 
    2143   "nband" is assumed to be 1  and "exclude_nodata_value" is assumed to be TRUE
    2144 
    2145 ST_ApproxQuantile adds a "sample_percent" indicating the percentage of the raster to sample
    2146 
    2147 1. ST_ApproxQuantile(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[]) -> set of records
    2148 
    2149   nband: index of band to process on
    2150 
    2151   exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
    2152 
    2153   sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider when computing the quantiles
    2154 
    2155   quantiles: array of percentages to compute values for
    2156 
    2157 {{{
    2158 ST_ApproxQuantile(rast, 1, FALSE, 0.1, ARRAY[0.1, 0.3, 0.7])
    2159 
    2160 ST_ApproxQuantile(rast, 1, TRUE, .2, ARRAY[0.2])
    2161 
    2162 ST_ApproxQuantile(rast, 1, FALSE, 0.3, ARRAY[0, 1])
    2163 }}}
    2164 
    2165 2. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision, quantiles double precision[]) -> set of records
    2166 
    2167   "exclude_nodata_value" is assumed to be TRUE
    2168 
    2169 {{{
    2170 ST_ApproxQuantile(rast, 1, .05, ARRAY[0.1, 0.3, 0.7])
    2171 }}}
    2172 
    2173 3. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision) -> set of records
    2174 
    2175   "exclude_nodata_value" is assumed to be TRUE and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
    2176 
    2177 4. ST_ApproxQuantile(rast raster, sample_percent double precision, quantiles double precision[]) -> set of records
    2178 
    2179   "nband" is assumed to be 1
    2180 
    2181 5. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision, quantile double precision) -> record
    2182 
    2183   quantile: the single percentile to compute
    2184 
    2185 6. ST_ApproxQuantile(rast raster, sample_percent double precision, quantile double precision) -> record
    2186 
    2187   "nband" is assumed to be 2
    2188 
    2189 7. ST_ApproxQuantile(rast raster, sample_percent double precision) -> set of records
    2190 
    2191   "nband" is assumed to be 1 and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
    2192 
    2193 8. ST_ApproxQuantile(rast raster, nband int, quantile double precision) -> record
    2194 
    2195   "sample_percent" assumed to be 0.1
    2196 
    2197 9. ST_ApproxQuantile(rast raster, quantiles double precision[]) -> set of records
    2198 
    2199   "nband" is assumed to be 1 and "sample_percent" assumed to be 0.1
    2200 
    2201 10. ST_ApproxQuantile(rast raster, quantile double precision) -> record
    2202 
    2203   "nband" assumed to be 1 and "sample_percent" assumed to be 0.1
    2204 
    2205 11. ST_ApproxQuantile(rast raster, nband int) -> set of records
    2206 
    2207   "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1] and "sample_percent" assumed to be 0.1
    2208 
    2209 12. ST_ApproxQuantile(rast raster) -> set of records
    2210 
    2211   "nband" is assumed to be 1, "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1] and "sample_percent" assumed to be 0.1
     773
    2212774
    2213775----
     
    29101472ST_Reclass(rast, '0-100:0-10', '8BUI', 11)
    29111473}}}
     1474
     1475----
     1476== '''Objective FV.16 - Being able to quickly get raster statistics.''' ==
     1477
     1478'''Add cached basic raster statistic to the base raster WKB format.
     1479
     1480Statistics to be cached should include:
     1481
     1482  min/max[[BR]]
     1483  mean[[BR]]
     1484  standard deviation[[BR]]
     1485  histogram[[BR]]
     1486  build parameters of stats (sample rate, method used to determine # of bins in histogram?)[[BR]]
     1487
     1488How are the statistics to be kept fresh?  Automatically using some method to see how much of the raster has changed since the last stats calculation?  Or let the user decide?
     1489
     1490----
     1491
     1492'''ST_SummaryStats(raster, nband) -> record'''[[BR]]
     1493This is the core function that gets the summary statistics (# of values, mean, standard deviation, minimum value, maximum value) of a specified raster's band.  It is this function that ST_Mean, ST_StdDev and ST_MinMax calls for their appropriate values.
     1494
     14951. ST_SummaryStats(rast raster, nband int, exclude_nodata_value boolean) -> record
     1496
     1497  returns one record of five columns (count, mean, stddev, min, max)
     1498
     1499  nband: index of band
     1500
     1501  exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
     1502
     1503{{{
     1504ST_SummaryStats(rast, 1, FALSE)
     1505}}}
     1506
     15072. ST_SummaryStats(rast raster, nband int) -> record
     1508
     1509  assumes exclude_nodata_value = TRUE
     1510
     1511{{{
     1512ST_SummaryStats(rast, 2)
     1513}}}
     1514
     15153. ST_SummaryStats(rast raster, exclude_nodata_value boolean) -> record
     1516
     1517  assumes nband = 1
     1518
     1519{{{
     1520ST_SummaryStats(rast, TRUE)
     1521}}}
     1522
     15234. ST_SummaryStats(rast raster) -> record
     1524
     1525  assumes nband = 1 and exclude_nodata_value = TRUE
     1526
     1527{{{
     1528ST_SummaryStats(rast)
     1529}}}
     1530
     1531Due to the time it may take to do on-the-fly calculation of summary stats for large rasters (say 10000 x 10000), an alternative that sacrifices accuracy for speed is required.  The following functions sample a percentage of the raster in a methodical randomized manner.  The algorithm used for sampling is...
     1532
     15331. select the larger dimension of the width and height.  compute the number of pixels to sample in each "row" of the larger dimension
     1534
     15352. pick pixels from each "row" of the larger dimension in an incremental rolling manner where each increment is randomly determined.
     1536
     1537The set of ST_ApproxSummaryStats functions are:
     1538
     15391. ST_ApproxSummaryStats(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
     1540
     1541  sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     1542
     1543{{{
     1544ST_ApproxSummaryStats(rast, 3, FALSE, 0.1)
     1545
     1546ST_ApproxSummaryStats(rast, 1, TRUE, 0.5)
     1547}}}
     1548
     15492. ST_ApproxSummaryStats(rast raster, nband int, sample_percent double precision) -> record
     1550
     1551  assumes that nband = 1
     1552
     1553{{{
     1554ST_ApproxSummaryStats(rast, 2 0.01)
     1555
     1556ST_ApproxSummaryStats(rast, 4, 0.025)
     1557}}}
     1558
     15593. ST_ApproxSummaryStats(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> record
     1560
     1561  assumes that nband = 1
     1562
     1563{{{
     1564ST_ApproxSummaryStats(rast, FALSE, 0.01)
     1565
     1566ST_ApproxSummaryStats(rast, TRUE, 0.025)
     1567}}}
     1568
     15694. ST_ApproxSummaryStats(rast raster, sample_percent double precision) -> record
     1570
     1571  assumes that nband = 1 and exclude_nodata_value = TRUE
     1572
     1573{{{
     1574ST_ApproxSummaryStats(rast, 0.25)
     1575}}}
     1576
     15775. ST_ApproxSummaryStats(rast raster) -> record
     1578
     1579  assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     1580
     1581{{{
     1582ST_ApproxSummaryStats(rast)
     1583}}}
     1584
     1585The situation arises where the summary statistics of a coverage table is required.  As the coverage may be large (tens of gigabytes of memory or larger), the following functions are provided to permit an incremental computation of the summary statistics.
     1586
     15871. ST_SummaryStats(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> record
     1588
     1589  rastertable: name of table with raster column
     1590
     1591  rastercolumn: name of column of data type raster
     1592
     1593{{{
     1594ST_SummaryStats('tmax_2010', 'rast', 1, FALSE)
     1595
     1596ST_SummaryStats('precip_2011', 'rast', 1, TRUE)
     1597}}}
     1598
     15992. ST_SummaryStats(rastertable text, rastercolumn text, nband int) -> record
     1600
     1601    exclude_nodata_value = TRUE
     1602
     1603{{{
     1604ST_SummaryStats('tmax_2010', 'rast', 1)
     1605}}}
     1606
     16073. ST_SummaryStats(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> record
     1608
     1609    nband = 1
     1610
     1611{{{
     1612ST_SummaryStats('precip_2011', 'rast', TRUE)
     1613}}}
     1614
     16154. ST_SummaryStats(rastertable text, rastercolumn text) -> record
     1616
     1617    nband = 1 and exclude_nodata_value = TRUE
     1618
     1619{{{
     1620ST_SummaryStats('tmin_2009', 'rast')
     1621}}}
     1622
     1623Variations for ST_ApproxSummaryStats are:
     1624
     16251. ST_ApproxSummaryStats(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
     1626
     1627{{{
     1628ST_ApproxSummaryStats('tmax_2010', 'rast', 1, FALSE, 0.5)
     1629
     1630ST_ApproxSummaryStats('precip_2011', 'rast', 1, TRUE, 0.2)
     1631}}}
     1632
     16332. ST_ApproxSummaryStats(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> record
     1634
     1635    exclude_nodata_value = TRUE
     1636
     1637{{{
     1638ST_ApproxSummaryStats('tmax_2010', 'rast', 1, 0.5)
     1639
     1640ST_ApproxSummaryStats('precip_2011', 'rast', 1, 0.2)
     1641}}}
     1642
     16433. ST_ApproxSummaryStats(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> record
     1644
     1645    nband = 1
     1646
     1647{{{
     1648ST_ApproxSummaryStats('tmax_2010', 'rast', FALSE, 0.5)
     1649
     1650ST_ApproxSummaryStats('precip_2011', 'rast', TRUE, 0.2)
     1651}}}
     1652
     16534. ST_ApproxSummaryStats(rastertable text, rastercolumn text, sample_percent double precision) -> record
     1654
     1655    nband = 1 and exclude_nodata_value = TRUE
     1656
     1657{{{
     1658ST_ApproxSummaryStats('tmax_2010', 'rast', 0.5)
     1659
     1660ST_ApproxSummaryStats('precip_2011', 'rast', 0.2)
     1661}}}
     1662
     16635. ST_ApproxSummaryStats(rastertable text, rastercolumn text) -> record
     1664
     1665    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     1666
     1667{{{
     1668ST_ApproxSummaryStats('tmax_2010', 'rast')
     1669
     1670ST_ApproxSummaryStats('precip_2011', 'rast')
     1671}}}
     1672
     1673The mean returned in the coverage functions (has rastertable and rastercolumn arguments) is the true mean of the raster tiles. The standard deviation returned is the standard deviation of all raster tiles.
     1674
     1675----
     1676
     1677'''ST_Count(raster, nband) -> bigint'''[[BR]]
     1678
     1679This function calls ST_SummaryStats and only returns the count from that function.
     1680
     16811. ST_Count(rast raster, nband int, exclude_nodata_value boolean) -> bigint
     1682
     1683    returns the count as an integer
     1684
     1685    nband: index of band
     1686
     1687    exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
     1688
     1689{{{
     1690ST_Count(rast, 1, FALSE)
     1691}}}
     1692
     16932. ST_Count(rast raster, nband int) -> bigint
     1694
     1695    assumes exclude_nodata_value = TRUE
     1696
     1697{{{
     1698ST_Count(rast, 2)
     1699}}}
     1700
     17013. ST_Count(rast raster, exclude_nodata_value boolean) -> bigint
     1702
     1703    assumes nband = 1
     1704
     1705{{{
     1706ST_Count(rast, TRUE)
     1707}}}
     1708
     17094. ST_Count(rast raster) -> bigint
     1710
     1711    assumes nband = 1 and exclude_nodata_value = TRUE
     1712
     1713{{{
     1714ST_Count(rast)
     1715}}}
     1716
     1717The set of ST_ApproxCount functions are:
     1718
     17191. ST_ApproxCount(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> bigint
     1720
     1721    sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     1722
     1723{{{
     1724ST_ApproxCount(rast, 3, FALSE, 0.1)
     1725
     1726ST_ApproxCount(rast, 1, TRUE, 0.5)
     1727}}}
     1728
     17292. ST_ApproxCount(rast raster, nband int, sample_percent double precision) -> bigint
     1730
     1731    assumes that nband = 1
     1732
     1733{{{
     1734ST_ApproxCount(rast, 2 0.01)
     1735
     1736ST_ApproxCount(rast, 4, 0.025)
     1737}}}
     1738
     17393. ST_ApproxCount(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> bigint
     1740
     1741    assumes that nband = 1
     1742
     1743{{{
     1744ST_ApproxCount(rast, FALSE, 0.01)
     1745
     1746ST_ApproxCount(rast, TRUE, 0.025)
     1747}}}
     1748
     17494. ST_ApproxCount(rast raster, sample_percent double precision) -> bigint
     1750
     1751    assumes that nband = 1 and exclude_nodata_value = TRUE
     1752
     1753{{{
     1754ST_ApproxCount(rast, 0.25)
     1755}}}
     1756
     17575. ST_ApproxCount(rast raster) -> bigint
     1758
     1759    assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     1760
     1761{{{
     1762ST_ApproxCount(rast)
     1763}}}
     1764
     1765The following functions are provided for coverage tables.
     1766
     17671. ST_Count(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> bigint
     1768
     1769    rastertable: name of table with raster column
     1770
     1771    rastercolumn: name of column of data type raster
     1772
     1773{{{
     1774ST_Count('tmax_2010', 'rast', 1, FALSE)
     1775
     1776ST_Count('precip_2011', 'rast', 1, TRUE)
     1777}}}
     1778
     17792. ST_Count(rastertable text, rastercolumn text, nband int) -> bigint
     1780
     1781    exclude_nodata_value = TRUE
     1782
     1783{{{
     1784ST_Count('tmax_2010', 'rast', 1)
     1785}}}
     1786
     17873. ST_Count(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> bigint
     1788
     1789    nband = 1
     1790
     1791{{{
     1792ST_Count('precip_2011', 'rast', TRUE)
     1793}}}
     1794
     17954. ST_Count(rastertable text, rastercolumn text) -> bigint
     1796
     1797    nband = 1 and exclude_nodata_value = TRUE
     1798
     1799{{{
     1800ST_Count('tmin_2009', 'rast')
     1801}}}
     1802
     1803Variations for ST_ApproxCount are:
     1804
     18051. ST_ApproxCount(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> bigint
     1806
     1807{{{
     1808ST_ApproxCount('tmax_2010', 'rast', 1, FALSE, 0.5)
     1809
     1810ST_ApproxCount('precip_2011', 'rast', 1, TRUE, 0.2)
     1811}}}
     1812
     18132. ST_ApproxCount(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> bigint
     1814
     1815    exclude_nodata_value = TRUE
     1816
     1817{{{
     1818ST_ApproxCount('tmax_2010', 'rast', 1, 0.5)
     1819
     1820ST_ApproxCount('precip_2011', 'rast', 1, 0.2)
     1821}}}
     1822
     18233. ST_ApproxCount(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> bigint
     1824
     1825    nband = 1
     1826
     1827{{{
     1828ST_ApproxCount('tmax_2010', 'rast', FALSE, 0.5)
     1829
     1830ST_ApproxCount('precip_2011', 'rast', TRUE, 0.2)
     1831}}}
     1832
     18334. ST_ApproxCount(rastertable text, rastercolumn text, sample_percent double precision) -> bigint
     1834
     1835    nband = 1 and exclude_nodata_value = TRUE
     1836
     1837{{{
     1838ST_ApproxCount('tmax_2010', 'rast', 0.5)
     1839
     1840ST_ApproxCount('precip_2011', 'rast', 0.2)
     1841}}}
     1842
     18435. ST_ApproxCount(rastertable text, rastercolumn text) -> bigint
     1844
     1845    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     1846
     1847{{{
     1848ST_ApproxCount('tmax_2010', 'rast')
     1849
     1850ST_ApproxCount('precip_2011', 'rast')
     1851}}}
     1852
     1853----
     1854
     1855'''ST_Sum(raster, nband) -> double precision'''[[BR]]
     1856
     1857This function calls ST_SummaryStats and only returns the sum from that function.
     1858
     18591. ST_Sum(rast raster, nband int, exclude_nodata_value boolean) -> double precision
     1860
     1861    returns the sum as an integer
     1862
     1863    nband: index of band
     1864
     1865    exclude_nodata_value: if FALSE, nodata values in band are included in the stats. if TRUE, nodata values are not included
     1866
     1867{{{
     1868ST_Sum(rast, 1, FALSE)
     1869}}}
     1870
     18712. ST_Sum(rast raster, nband int) -> double precision
     1872
     1873    assumes exclude_nodata_value = TRUE
     1874
     1875{{{
     1876ST_Sum(rast, 2)
     1877}}}
     1878
     18793. ST_Sum(rast raster, exclude_nodata_value boolean) -> double precision
     1880
     1881    assumes nband = 1
     1882
     1883{{{
     1884ST_Sum(rast, TRUE)
     1885}}}
     1886
     18874. ST_Sum(rast raster) -> double precision
     1888
     1889    assumes nband = 1 and exclude_nodata_value = TRUE
     1890
     1891{{{
     1892ST_Sum(rast)
     1893}}}
     1894
     1895The set of ST_ApproxSum functions are:
     1896
     18971. ST_ApproxSum(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     1898
     1899    sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     1900
     1901{{{
     1902ST_ApproxSum(rast, 3, FALSE, 0.1)
     1903
     1904ST_ApproxSum(rast, 1, TRUE, 0.5)
     1905}}}
     1906
     19072. ST_ApproxSum(rast raster, nband int, sample_percent double precision) -> double precision
     1908
     1909    assumes that nband = 1
     1910
     1911{{{
     1912ST_ApproxSum(rast, 2 0.01)
     1913
     1914ST_ApproxSum(rast, 4, 0.025)
     1915}}}
     1916
     19173. ST_ApproxSum(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     1918
     1919    assumes that nband = 1
     1920
     1921{{{
     1922ST_ApproxSum(rast, FALSE, 0.01)
     1923
     1924ST_ApproxSum(rast, TRUE, 0.025)
     1925}}}
     1926
     19274. ST_ApproxSum(rast raster, sample_percent double precision) -> double precision
     1928
     1929    assumes that nband = 1 and exclude_nodata_value = TRUE
     1930
     1931{{{
     1932ST_ApproxSum(rast, 0.25)
     1933}}}
     1934
     19355. ST_ApproxSum(rast raster) -> double precision
     1936
     1937    assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     1938
     1939{{{
     1940ST_ApproxSum(rast)
     1941}}}
     1942
     1943The following functions are provided for coverage tables.
     1944
     19451. ST_Sum(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
     1946
     1947    rastertable: name of table with raster column
     1948
     1949    rastercolumn: name of column of data type raster
     1950
     1951{{{
     1952ST_Sum('tmax_2010', 'rast', 1, FALSE)
     1953
     1954ST_Sum('precip_2011', 'rast', 1, TRUE)
     1955}}}
     1956
     19572. ST_Sum(rastertable text, rastercolumn text, nband int) -> double precision
     1958
     1959    exclude_nodata_value = TRUE
     1960
     1961{{{
     1962ST_Sum('tmax_2010', 'rast', 1)
     1963}}}
     1964
     19653. ST_Sum(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
     1966
     1967    nband = 1
     1968
     1969{{{
     1970ST_Sum('precip_2011', 'rast', TRUE)
     1971}}}
     1972
     19734. ST_Sum(rastertable text, rastercolumn text) -> double precision
     1974
     1975    nband = 1 and exclude_nodata_value = TRUE
     1976
     1977{{{
     1978ST_Sum('tmin_2009', 'rast')
     1979}}}
     1980
     1981Variations for ST_ApproxSum are:
     1982
     19831. ST_ApproxSum(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     1984
     1985{{{
     1986ST_ApproxSum('tmax_2010', 'rast', 1, FALSE, 0.5)
     1987
     1988ST_ApproxSum('precip_2011', 'rast', 1, TRUE, 0.2)
     1989}}}
     1990
     19912. ST_ApproxSum(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
     1992
     1993    exclude_nodata_value = TRUE
     1994
     1995{{{
     1996ST_ApproxSum('tmax_2010', 'rast', 1, 0.5)
     1997
     1998ST_ApproxSum('precip_2011', 'rast', 1, 0.2)
     1999}}}
     2000
     20013. ST_ApproxSum(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2002
     2003    nband = 1
     2004
     2005{{{
     2006ST_ApproxSum('tmax_2010', 'rast', FALSE, 0.5)
     2007
     2008ST_ApproxSum('precip_2011', 'rast', TRUE, 0.2)
     2009}}}
     2010
     20114. ST_ApproxSum(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
     2012
     2013    nband = 1 and exclude_nodata_value = TRUE
     2014
     2015{{{
     2016ST_ApproxSum('tmax_2010', 'rast', 0.5)
     2017
     2018ST_ApproxSum('precip_2011', 'rast', 0.2)
     2019}}}
     2020
     20215. ST_ApproxSum(rastertable text, rastercolumn text) -> double precision
     2022
     2023    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2024
     2025{{{
     2026ST_ApproxSum('tmax_2010', 'rast')
     2027
     2028ST_ApproxSum('precip_2011', 'rast')
     2029}}}
     2030
     2031----
     2032
     2033'''ST_Mean(raster, nband) -> double precision'''[[BR]]
     2034This function calls ST_SummaryStats and only returns the mean from that function.
     2035
     20361. ST_Mean(rast raster, nband int, exclude_nodata_value boolean) -> double precision
     2037
     2038  returns the mean as a double precision
     2039
     2040  nband: index of band
     2041
     2042  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2043
     2044{{{
     2045ST_Mean(rast, 1, FALSE)
     2046}}}
     2047
     20482. ST_Mean(rast raster, nband int) -> double precision
     2049
     2050  assumes exclude_nodata_value = TRUE
     2051
     2052{{{
     2053ST_Mean(rast, 2)
     2054}}}
     2055
     20563. ST_Mean(rast raster, exclude_nodata_value boolean) -> double precision
     2057
     2058  assumes nband = 1
     2059
     2060{{{
     2061ST_Mean(rast, TRUE)
     2062}}}
     2063
     20644. ST_Mean(rast raster) -> double precision
     2065
     2066  assumes nband = 1 and exclude_nodata_value = TRUE
     2067
     2068{{{
     2069ST_Mean(rast)
     2070}}}
     2071
     2072The set of ST_ApproxMean functions are:
     2073
     20741. ST_ApproxMean(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2075
     2076  sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     2077
     2078{{{
     2079ST_ApproxMean(rast, 3, FALSE, 0.1)
     2080
     2081ST_ApproxMean(rast, 1, TRUE, 0.5)
     2082}}}
     2083
     20842. ST_ApproxMean(rast raster, nband int, sample_percent double precision) -> double precision
     2085
     2086  assumes that nband = 1
     2087
     2088{{{
     2089ST_ApproxMean(rast, 2 0.01)
     2090
     2091ST_ApproxMean(rast, 4, 0.025)
     2092}}}
     2093
     20943. ST_ApproxMean(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2095
     2096  assumes that nband = 1
     2097
     2098{{{
     2099ST_ApproxMean(rast, FALSE, 0.01)
     2100
     2101ST_ApproxMean(rast, TRUE, 0.025)
     2102}}}
     2103
     21044. ST_ApproxMean(rast raster, sample_percent double precision) -> double precision
     2105
     2106  assumes that nband = 1 and exclude_nodata_value = TRUE
     2107
     2108{{{
     2109ST_ApproxMean(rast, 0.25)
     2110}}}
     2111
     21125. ST_ApproxMean(rast raster) -> double precision
     2113
     2114  assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2115
     2116{{{
     2117ST_ApproxMean(rast)
     2118}}}
     2119
     2120The following functions are provided for coverage tables.
     2121
     21221. ST_Mean(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
     2123
     2124  rastertable: name of table with raster column
     2125
     2126  rastercolumn: name of column of data type raster
     2127
     2128{{{
     2129ST_Mean('tmax_2010', 'rast', 1, FALSE)
     2130
     2131ST_Mean('precip_2011', 'rast', 1, TRUE)
     2132}}}
     2133
     21342. ST_Mean(rastertable text, rastercolumn text, nband int) -> double precision
     2135
     2136    exclude_nodata_value = TRUE
     2137
     2138{{{
     2139ST_Mean('tmax_2010', 'rast', 1)
     2140}}}
     2141
     21423. ST_Mean(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
     2143
     2144    nband = 1
     2145
     2146{{{
     2147ST_Mean('precip_2011', 'rast', TRUE)
     2148}}}
     2149
     21504. ST_Mean(rastertable text, rastercolumn text) -> double precision
     2151
     2152    nband = 1 and exclude_nodata_value = TRUE
     2153
     2154{{{
     2155ST_Mean('tmin_2009', 'rast')
     2156}}}
     2157
     2158Variations for ST_ApproxMean are:
     2159
     21601. ST_ApproxMean(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2161
     2162{{{
     2163ST_ApproxMean('tmax_2010', 'rast', 1, FALSE, 0.5)
     2164
     2165ST_ApproxMean('precip_2011', 'rast', 1, TRUE, 0.2)
     2166}}}
     2167
     21682. ST_ApproxMean(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
     2169
     2170    exclude_nodata_value = TRUE
     2171
     2172{{{
     2173ST_ApproxMean('tmax_2010', 'rast', 1, 0.5)
     2174
     2175ST_ApproxMean('precip_2011', 'rast', 1, 0.2)
     2176}}}
     2177
     21783. ST_ApproxMean(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2179
     2180    nband = 1
     2181
     2182{{{
     2183ST_ApproxMean('tmax_2010', 'rast', FALSE, 0.5)
     2184
     2185ST_ApproxMean('precip_2011', 'rast', TRUE, 0.2)
     2186}}}
     2187
     21884. ST_ApproxMean(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
     2189
     2190    nband = 1 and exclude_nodata_value = TRUE
     2191
     2192{{{
     2193ST_ApproxMean('tmax_2010', 'rast', 0.5)
     2194
     2195ST_ApproxMean('precip_2011', 'rast', 0.2)
     2196}}}
     2197
     21985. ST_ApproxMean(rastertable text, rastercolumn text) -> double precision
     2199
     2200    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2201
     2202{{{
     2203ST_ApproxMean('tmax_2010', 'rast')
     2204
     2205ST_ApproxMean('precip_2011', 'rast')
     2206}}}
     2207
     2208The mean returned in the coverage functions (has rastertable and rastercolumn arguments) is the true mean of the raster tiles.
     2209
     2210----
     2211
     2212'''ST_StdDev(raster, nband) -> double precision'''[[BR]]
     2213This function calls ST_SummaryStats and only returns the standard deviation from that function.
     2214
     22151. ST_StdDev(rast raster, nband int, exclude_nodata_value boolean) -> double precision
     2216
     2217  returns the standard deviation as a double precision
     2218
     2219  nband: index of band
     2220
     2221  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2222
     2223{{{
     2224ST_StdDev(rast, 1, FALSE)
     2225}}}
     2226
     22272. ST_StdDev(rast raster, nband int) -> double precision
     2228
     2229  assumes exclude_nodata_value = TRUE
     2230
     2231{{{
     2232ST_StdDev(rast, 2)
     2233}}}
     2234
     22353. ST_StdDev(rast raster, exclude_nodata_value boolean) -> double precision
     2236
     2237  assumes nband = 1
     2238
     2239{{{
     2240ST_StdDev(rast, TRUE)
     2241}}}
     2242
     22434. ST_StdDev(rast raster) -> double precision
     2244
     2245  assumes nband = 1 and exclude_nodata_value = TRUE
     2246
     2247{{{
     2248ST_StdDev(rast)
     2249}}}
     2250
     2251The set of ST_ApproxStdDev functions are:
     2252
     22531. ST_ApproxStdDev(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2254
     2255  sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     2256
     2257{{{
     2258ST_ApproxStdDev(rast, 3, FALSE, 0.1)
     2259
     2260ST_ApproxStdDev(rast, 1, TRUE, 0.5)
     2261}}}
     2262
     22632. ST_ApproxStdDev(rast raster, nband int, sample_percent double precision) -> double precision
     2264
     2265  assumes that nband = 1
     2266
     2267{{{
     2268ST_ApproxStdDev(rast, 2 0.01)
     2269
     2270ST_ApproxStdDev(rast, 4, 0.025)
     2271}}}
     2272
     22733. ST_ApproxStdDev(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2274
     2275  assumes that nband = 1
     2276
     2277{{{
     2278ST_ApproxStdDev(rast, FALSE, 0.01)
     2279
     2280ST_ApproxStdDev(rast, TRUE, 0.025)
     2281}}}
     2282
     22834. ST_ApproxStdDev(rast raster, sample_percent double precision) -> double precision
     2284
     2285  assumes that nband = 1 and exclude_nodata_value = TRUE
     2286
     2287{{{
     2288ST_ApproxStdDev(rast, 0.25)
     2289}}}
     2290
     22915. ST_ApproxStdDev(rast raster) -> double precision
     2292
     2293  assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2294
     2295{{{
     2296ST_ApproxStdDev(rast)
     2297}}}
     2298
     2299The following functions are provided for coverage tables.
     2300
     23011. ST_StdDev(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> double precision
     2302
     2303  rastertable: name of table with raster column
     2304
     2305  rastercolumn: name of column of data type raster
     2306
     2307{{{
     2308ST_StdDev('tmax_2010', 'rast', 1, FALSE)
     2309
     2310ST_StdDev('precip_2011', 'rast', 1, TRUE)
     2311}}}
     2312
     23132. ST_StdDev(rastertable text, rastercolumn text, nband int) -> double precision
     2314
     2315    exclude_nodata_value = TRUE
     2316
     2317{{{
     2318ST_StdDev('tmax_2010', 'rast', 1)
     2319}}}
     2320
     23213. ST_StdDev(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> double precision
     2322
     2323    nband = 1
     2324
     2325{{{
     2326ST_StdDev('precip_2011', 'rast', TRUE)
     2327}}}
     2328
     23294. ST_StdDev(rastertable text, rastercolumn text) -> double precision
     2330
     2331    nband = 1 and exclude_nodata_value = TRUE
     2332
     2333{{{
     2334ST_StdDev('tmin_2009', 'rast')
     2335}}}
     2336
     2337Variations for ST_ApproxStdDev are:
     2338
     23391. ST_ApproxStdDev(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2340
     2341{{{
     2342ST_ApproxStdDev('tmax_2010', 'rast', 1, FALSE, 0.5)
     2343
     2344ST_ApproxStdDev('precip_2011', 'rast', 1, TRUE, 0.2)
     2345}}}
     2346
     23472. ST_ApproxStdDev(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> double precision
     2348
     2349    exclude_nodata_value = TRUE
     2350
     2351{{{
     2352ST_ApproxStdDev('tmax_2010', 'rast', 1, 0.5)
     2353
     2354ST_ApproxStdDev('precip_2011', 'rast', 1, 0.2)
     2355}}}
     2356
     23573. ST_ApproxStdDev(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> double precision
     2358
     2359    nband = 1
     2360
     2361{{{
     2362ST_ApproxStdDev('tmax_2010', 'rast', FALSE, 0.5)
     2363
     2364ST_ApproxStdDev('precip_2011', 'rast', TRUE, 0.2)
     2365}}}
     2366
     23674. ST_ApproxStdDev(rastertable text, rastercolumn text, sample_percent double precision) -> double precision
     2368
     2369    nband = 1 and exclude_nodata_value = TRUE
     2370
     2371{{{
     2372ST_ApproxStdDev('tmax_2010', 'rast', 0.5)
     2373
     2374ST_ApproxStdDev('precip_2011', 'rast', 0.2)
     2375}}}
     2376
     23775. ST_ApproxStdDev(rastertable text, rastercolumn text) -> double precision
     2378
     2379    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2380
     2381{{{
     2382ST_ApproxStdDev('tmax_2010', 'rast')
     2383
     2384ST_ApproxStdDev('precip_2011', 'rast')
     2385}}}
     2386
     2387The standard deviation returned in the coverage functions (has rastertable and rastercolumn arguments) is the standard deviation of all raster tiles.
     2388
     2389----
     2390
     2391'''ST_MinMax(raster, nband) -> record'''[[BR]]
     2392This function calls ST_SummaryStats and only returns the min and max values from that function.
     2393
     23941. ST_MinMax(rast raster, nband int, exclude_nodata_value boolean) -> record
     2395
     2396  returns the record (min double precision, max double precision)
     2397
     2398  nband: index of band
     2399
     2400  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2401
     2402{{{
     2403ST_MinMax(rast, 1, FALSE)
     2404}}}
     2405
     24062. ST_MinMax(rast raster, nband int) -> record
     2407
     2408  assumes exclude_nodata_value = TRUE
     2409
     2410{{{
     2411ST_MinMax(rast, 2)
     2412}}}
     2413
     24143. ST_MinMax(rast raster, exclude_nodata_value boolean) -> record
     2415
     2416  assumes nband = 1
     2417
     2418{{{
     2419ST_MinMax(rast, TRUE)
     2420}}}
     2421
     24224. ST_MinMax(rast raster) -> record
     2423
     2424  assumes nband = 1 and exclude_nodata_value = TRUE
     2425
     2426{{{
     2427ST_MinMax(rast)
     2428}}}
     2429
     2430The set of ST_ApproxMinMax functions are:
     2431
     24321. ST_ApproxMinMax(rast raster, nband int, exclude_nodata_value boolean, sample_percent record) -> record
     2433
     2434  sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider
     2435
     2436{{{
     2437ST_ApproxMinMax(rast, 3, FALSE, 0.1)
     2438
     2439ST_ApproxMinMax(rast, 1, TRUE, 0.5)
     2440}}}
     2441
     24422. ST_ApproxMinMax(rast raster, nband int, sample_percent double precision) -> record
     2443
     2444  assumes that nband = 1
     2445
     2446{{{
     2447ST_ApproxMinMax(rast, 2 0.01)
     2448
     2449ST_ApproxMinMax(rast, 4, 0.025)
     2450}}}
     2451
     24523. ST_ApproxMinMax(rast raster, exclude_nodata_value boolean, sample_percent double precision) -> record
     2453
     2454  assumes that nband = 1
     2455
     2456{{{
     2457ST_ApproxMinMax(rast, FALSE, 0.01)
     2458
     2459ST_ApproxMinMax(rast, TRUE, 0.025)
     2460}}}
     2461
     24624. ST_ApproxMinMax(rast raster, sample_percent double precision) -> record
     2463
     2464  assumes that nband = 1 and exclude_nodata_value = TRUE
     2465
     2466{{{
     2467ST_ApproxMinMax(rast, 0.25)
     2468}}}
     2469
     24705. ST_ApproxMinMax(rast raster) -> record
     2471
     2472  assumes that nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2473
     2474{{{
     2475ST_ApproxMinMax(rast)
     2476}}}
     2477
     2478The following functions are provided for coverage tables.
     2479
     24801. ST_MinMax(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean) -> record
     2481
     2482  rastertable: name of table with raster column
     2483
     2484  rastercolumn: name of column of data type raster
     2485
     2486{{{
     2487ST_MinMax('tmax_2010', 'rast', 1, FALSE)
     2488
     2489ST_MinMax('precip_2011', 'rast', 1, TRUE)
     2490}}}
     2491
     24922. ST_MinMax(rastertable text, rastercolumn text, nband int) -> record
     2493
     2494    exclude_nodata_value = TRUE
     2495
     2496{{{
     2497ST_MinMax('tmax_2010', 'rast', 1)
     2498}}}
     2499
     25003. ST_MinMax(rastertable text, rastercolumn text, exclude_nodata_value boolean) -> record
     2501
     2502    nband = 1
     2503
     2504{{{
     2505ST_MinMax('precip_2011', 'rast', TRUE)
     2506}}}
     2507
     25084. ST_MinMax(rastertable text, rastercolumn text) -> record
     2509
     2510    nband = 1 and exclude_nodata_value = TRUE
     2511
     2512{{{
     2513ST_MinMax('tmin_2009', 'rast')
     2514}}}
     2515
     2516Variations for ST_ApproxMinMax are:
     2517
     25181. ST_ApproxMinMax(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision) -> record
     2519
     2520{{{
     2521ST_ApproxMinMax('tmax_2010', 'rast', 1, FALSE, 0.5)
     2522
     2523ST_ApproxMinMax('precip_2011', 'rast', 1, TRUE, 0.2)
     2524}}}
     2525
     25262. ST_ApproxMinMax(rastertable text, rastercolumn text, nband int, sample_percent double precision) -> record
     2527
     2528    exclude_nodata_value = TRUE
     2529
     2530{{{
     2531ST_ApproxMinMax('tmax_2010', 'rast', 1, 0.5)
     2532
     2533ST_ApproxMinMax('precip_2011', 'rast', 1, 0.2)
     2534}}}
     2535
     25363. ST_ApproxMinMax(rastertable text, rastercolumn text, exclude_nodata_value boolean, sample_percent double precision) -> record
     2537
     2538    nband = 1
     2539
     2540{{{
     2541ST_ApproxMinMax('tmax_2010', 'rast', FALSE, 0.5)
     2542
     2543ST_ApproxMinMax('precip_2011', 'rast', TRUE, 0.2)
     2544}}}
     2545
     25464. ST_ApproxMinMax(rastertable text, rastercolumn text, sample_percent double precision) -> record
     2547
     2548    nband = 1 and exclude_nodata_value = TRUE
     2549
     2550{{{
     2551ST_ApproxMinMax('tmax_2010', 'rast', 0.5)
     2552
     2553ST_ApproxMinMax('precip_2011', 'rast', 0.2)
     2554}}}
     2555
     25565. ST_ApproxMinMax(rastertable text, rastercolumn text) -> record
     2557
     2558    nband = 1, exclude_nodata_value = TRUE and sample_percent = 0.1
     2559
     2560{{{
     2561ST_ApproxMinMax('tmax_2010', 'rast')
     2562
     2563ST_ApproxMinMax('precip_2011', 'rast')
     2564}}}
     2565
     2566----
     2567
     2568'''ST_Histogram(raster, nband) -> set of records'''[[BR]]
     2569ST_Histogram and ST_ApproxHistogram provide methods to determine a raster's data distribution.
     2570
     2571The return of ST_Histogram and ST_ApproxHistogram is a set of records where each record is (min, max, count, percent).
     2572
     2573ST_Histogram has the following variations.
     2574
     25751. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int, width double precision[], right boolean) -> set of records
     2576
     2577  returns set of records of four columns (min, max, count, percent)
     2578
     2579  nband: index of band to process on
     2580
     2581  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2582
     2583  bins: the number of categories/bins to have in the histogram. If NULL or value less than one, the number of categories will be auto-computed using Sturges' formula if the number of values >= 30 or Square-root choice if number of values < 30.
     2584
     2585    http://en.wikipedia.org/wiki/Histogram#Mathematical_definition
     2586
     2587  width: an array indicating the width of each category/bin. If the number of bins is greater than the number of widths, the widths are repeated. Example: 9 bins, widths are [a, b, c] will have the output be [a, b, c, a, b, c, a, b, c].
     2588
     2589  right: compute the histogram from the right rather than from the left (default). This changes the criteria for evaluating a value x from [a, b) to (a, b].
     2590
     2591{{{
     2592ST_Histogram(rast, 2, FALSE, NULL, NULL, FALSE)
     2593
     2594ST_Histogram(rast, 1, TRUE, 100, NULL, FALSE)
     2595
     2596ST_Histogram(rast, 2, FALSE, NULL, ARRAY[100, 50], FALSE)
     2597
     2598ST_Histogram(rast, 2, FALSE, 9, ARRAY[1000], TRUE)
     2599
     2600ST_Histogram(rast, 2, FALSE, 20, ARRAY[100, 200, 300], TRUE)
     2601}}}
     2602
     26032. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int, right boolean) -> set of records
     2604
     2605  parameter "width" is not specified thus resulting in all bins having the same widths
     2606
     2607{{{
     2608ST_Histogram(rast, 2, FALSE, 5, FALSE)
     2609}}}
     2610
     26113. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean, bins int) -> set of records
     2612
     2613  the parameter "right" is removed and assumed to be FALSE
     2614
     2615{{{
     2616ST_Histogram(rast, 2, FALSE, 5)
     2617}}}
     2618
     26194. ST_Histogram(rast raster, nband int, exclude_nodata_value boolean) -> set of records
     2620
     2621  the parameter "bins" is removed and set to NULL.  The function will compute the number of bins to use
     2622
     26235. ST_Histogram(rast raster, nband int) -> set of records
     2624
     2625  exclude_nodata_value is assumed to be TRUE
     2626
     26276. ST_Histogram(rast raster) -> set of records
     2628
     2629  assumes that nband is 1.
     2630
     26317. ST_Histogram(rast raster, nband int, bins int, width double precision[], right boolean) -> set of records
     2632
     2633  exclude_nodata_value is assumed to be TRUE
     2634
     26358. ST_Histogram(rast raster, nband int, bins int, right boolean) -> set of records
     2636
     2637  all bins will have equal widths
     2638
     26399. ST_Histogram(rast raster, nband int, bins int) -> set of records
     2640
     2641  right is assumed to be FALSE
     2642
     2643ST_ApproxHistogram should have the following variations.
     2644
     26451. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, width double precision[], right boolean) -> set of record
     2646
     2647    sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider when generating the histogram.
     2648
     2649{{{
     2650ST_Histogram(rast, 2, FALSE, 0.1, NULL, NULL, FALSE)
     2651
     2652ST_Histogram(rast, 1, TRUE, 1, 100, NULL, FALSE)
     2653
     2654ST_Histogram(rast, 2, FALSE, 0.2, NULL, ARRAY[100, 50], FALSE)
     2655
     2656ST_Histogram(rast, 2, FALSE, 0.25, 9, ARRAY[1000], TRUE)
     2657
     2658ST_Histogram(rast, 2, FALSE, 0.05, 20, ARRAY[100, 200, 300], TRUE)
     2659}}}
     2660
     26612. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, right boolean) -> set of records
     2662
     2663  parameter "width" is not specified thus resulting in all bins having the same widths
     2664
     26653. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int) -> set of records
     2666
     2667  the parameter "right" is removed and assumed to be FALSE
     2668
     2669{{{
     2670ST_ApproxHistogram(rast, 2, FALSE, 5)
     2671}}}
     2672
     26734. ST_ApproxHistogram(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision) -> set of records
     2674
     2675  the parameter "bins" is removed and set to NULL so that function can compute the number of bins to use
     2676
     26775. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision) -> set of records
     2678
     2679  exclude_nodata_value is assumed to be TRUE
     2680
     26816. ST_ApproxHistogram(rast raster, nband int) -> set of records
     2682
     2683  assumes that sample_percent is 0.1
     2684
     26857. ST_ApproxHistogram(rast raster, sample_percent double_precision) -> set of records
     2686
     2687  assumes that nband is 1
     2688
     26898. ST_ApproxHistogram(rast raster) -> set of records
     2690
     2691  assumes that nband is 1 and sample_percent is 0.1
     2692
     26939. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int, width double precision[], right boolean) -> set of records
     2694
     2695  exclude_nodata_value is assumed to be TRUE
     2696
     269710. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int, right boolean) -> set of records
     2698
     2699  all bins will have equal widths
     2700
     270111. ST_ApproxHistogram(rast raster, nband int, sample_percent double precision, bins int) -> set of records
     2702
     2703  right is assumed to be FALSE
     2704
     2705The following set of function are for coverages.
     2706
     27071. ST_Histogram(rastertable text, rastercolumn text, nband int DEFAULT 1, exclude_nodata_value boolean DEFAULT TRUE, bins int default 0, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
     2708
     2709  rastertable: name of table with raster column
     2710
     2711  rastercolumn: name of column of data type raster
     2712
     2713{{{
     2714ST_Histogram('tmax_2010', 'rast')
     2715
     2716ST_Histogram('precip_2011', 'rast', 1)
     2717
     2718ST_Histogram('precip_2011', 'rast', 1, FALSE)
     2719
     2720ST_Histogram('precip_2011', 'rast', 1, FALSE, 5)
     2721
     2722ST_Histogram('precip_2011', 'rast', 1, FALSE, 10, NULL)
     2723
     2724ST_Histogram('precip_2011', 'rast', 1, FALSE, 10, NULL, TRUE)
     2725}}}
     2726
     27272. ST_Histogram(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, bins int, right boolean) -> set of records
     2728
     2729{{{
     2730ST_Histogram('tmin_2010', 'rast', 2, FALSE, 5, FALSE)
     2731}}}
     2732
     27333. ST_Histogram(rastertable text, rastercolumn text, nband int, bins int, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
     2734
     2735{{{
     2736ST_Histogram('ndvi_2010', 'rast', 1, 5)
     2737
     2738ST_Histogram('ndvi_2010', 'rast', 1, 0, ARRAY[0.5]::double precision[])
     2739
     2740ST_Histogram('ndvi_2010', 'rast', 1, 5, NULL, TRUE)
     2741}}}
     2742
     27434. ST_Histogram(rastertable text, rastercolumn text, nband int, bins int, right boolean) -> set of records
     2744
     2745{{{
     2746ST_Histogram('veg_2009', 'rast', 2, 3, FALSE)
     2747
     2748ST_Histogram('veg_2009', 'rast', 2, 3, TRUE)
     2749}}}
     2750
     2751A set of functions of ST_ApproxHistogram for coverage tables:
     2752
     27531. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int DEFAULT 1, exclude_nodata_value boolean DEFAULT TRUE, sample_percent double precision DEFAULT 0.1, bins int DEFAULT 0, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE) -> set of records
     2754
     2755{{{
     2756ST_ApproxHistogram('precip_2010', 'rast')
     2757
     2758ST_ApproxHistogram('precip_2010', 'rast', 1)
     2759
     2760ST_ApproxHistogram('precip_2010', 'rast', 2, FALSE)
     2761
     2762ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.25)
     2763
     2764ST_ApproxHistogram('precip_2010', 'rast', 3, FALSE, 0.2, 10)
     2765
     2766ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.1, 0, ARRAY[1]::double precision[])
     2767
     2768ST_ApproxHistogram('precip_2010', 'rast', 1, TRUE, 0.1, 0, ARRAY[1]::double precision[], FALSE)
     2769}}}
     2770
     27712. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, exclude_nodata_value boolean, sample_percent double precision, bins int, right boolean)
     2772
     27733. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision)
     2774
     27754. ST_ApproxHistogram(rastertable text, rastercolumn text, sample_percent double precision)
     2776
     27775. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision, bins int, width double precision[] DEFAULT NULL, right boolean DEFAULT FALSE)
     2778
     27796. ST_ApproxHistogram(rastertable text, rastercolumn text, nband int, sample_percent double precision, bins int, right boolean)
     2780
     2781----
     2782'''ST_Quantile(raster, nband) -> set of records'''[[BR]]
     2783In addition to determining the histogram of a raster, providing the ability to compute quantiles permits a user to reference a value in the context of the sample or population. Thus, a value could be examined to be at the raster's 25%, 50%, 75% percentile.
     2784
     2785http://en.wikipedia.org/wiki/Quantile
     2786
     2787ST_Quantile variations:
     2788
     27891. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean, quantiles double precision[]) -> set of records
     2790
     2791  each row returned is of (quantile double precision, value double precision)
     2792
     2793  nband: index of band to process on
     2794
     2795  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2796
     2797  quantiles: array of percentages to compute values for
     2798
     2799{{{
     2800ST_Quantile(rast, 1, FALSE, ARRAY[0.1, 0.3, 0.7])
     2801
     2802ST_Quantile(rast, 1, TRUE, ARRAY[0.2])
     2803
     2804ST_Quantile(rast, 1, FALSE, ARRAY[0, 1])
     2805}}}
     2806
     28072. ST_Quantile(rast raster, nband int, quantiles double precision[]) -> set of records
     2808
     2809  "exclude_nodata_value" is assumed to be TRUE
     2810
     2811{{{
     2812ST_Quantile(rast, 1, ARRAY[0.1, 0.3, 0.7])
     2813}}}
     2814
     28153. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean) -> set of records
     2816
     2817  "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
     2818
     28194. ST_Quantile(rast raster, nband int) -> set of records
     2820
     2821  "exclude_nodata_value" is assumed to be TRUE and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
     2822
     28235. ST_Quantile(rast raster, quantiles double precision[]) -> set of records
     2824
     2825  "nband" is assumed to be 1 and "exclude_nodata_value" is TRUE
     2826
     28276. ST_Quantile(rast raster) -> set of records
     2828
     2829  "nband" is assumed to be 1 and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
     2830
     28317. ST_Quantile(rast raster, nband int, exclude_nodata_value boolean, quantile double precision) -> record
     2832
     2833  quantile: the single percentile to compute
     2834
     28358. ST_Quantile(rast raster, nband int, quantile double precision) -> record
     2836
     2837  "exclude_nodata_value" is assumed to be TRUE
     2838
     28399. ST_Quantile(rast raster, exclude_nodata_value boolean, quantile double precision) -> record
     2840
     2841  "nband" is assumed to be 1
     2842
     284310. ST_Quantile(rast raster, quantile double precision) -> record
     2844
     2845  "nband" is assumed to be 1  and "exclude_nodata_value" is assumed to be TRUE
     2846
     2847ST_ApproxQuantile adds a "sample_percent" indicating the percentage of the raster to sample
     2848
     28491. ST_ApproxQuantile(rast raster, nband int, exclude_nodata_value boolean, sample_percent double precision, quantiles double precision[]) -> set of records
     2850
     2851  nband: index of band to process on
     2852
     2853  exclude_nodata_value: if FALSE, nodata values in band are included. if TRUE, nodata values are not included.
     2854
     2855  sample_percent: a value between 0 and 1 indicating the percentage of the raster band's pixels to consider when computing the quantiles
     2856
     2857  quantiles: array of percentages to compute values for
     2858
     2859{{{
     2860ST_ApproxQuantile(rast, 1, FALSE, 0.1, ARRAY[0.1, 0.3, 0.7])
     2861
     2862ST_ApproxQuantile(rast, 1, TRUE, .2, ARRAY[0.2])
     2863
     2864ST_ApproxQuantile(rast, 1, FALSE, 0.3, ARRAY[0, 1])
     2865}}}
     2866
     28672. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision, quantiles double precision[]) -> set of records
     2868
     2869  "exclude_nodata_value" is assumed to be TRUE
     2870
     2871{{{
     2872ST_ApproxQuantile(rast, 1, .05, ARRAY[0.1, 0.3, 0.7])
     2873}}}
     2874
     28753. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision) -> set of records
     2876
     2877  "exclude_nodata_value" is assumed to be TRUE and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
     2878
     28794. ST_ApproxQuantile(rast raster, sample_percent double precision, quantiles double precision[]) -> set of records
     2880
     2881  "nband" is assumed to be 1
     2882
     28835. ST_ApproxQuantile(rast raster, nband int, sample_percent double precision, quantile double precision) -> record
     2884
     2885  quantile: the single percentile to compute
     2886
     28876. ST_ApproxQuantile(rast raster, sample_percent double precision, quantile double precision) -> record
     2888
     2889  "nband" is assumed to be 2
     2890
     28917. ST_ApproxQuantile(rast raster, sample_percent double precision) -> set of records
     2892
     2893  "nband" is assumed to be 1 and "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1]
     2894
     28958. ST_ApproxQuantile(rast raster, nband int, quantile double precision) -> record
     2896
     2897  "sample_percent" assumed to be 0.1
     2898
     28999. ST_ApproxQuantile(rast raster, quantiles double precision[]) -> set of records
     2900
     2901  "nband" is assumed to be 1 and "sample_percent" assumed to be 0.1
     2902
     290310. ST_ApproxQuantile(rast raster, quantile double precision) -> record
     2904
     2905  "nband" assumed to be 1 and "sample_percent" assumed to be 0.1
     2906
     290711. ST_ApproxQuantile(rast raster, nband int) -> set of records
     2908
     2909  "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1] and "sample_percent" assumed to be 0.1
     2910
     291112. ST_ApproxQuantile(rast raster) -> set of records
     2912
     2913  "nband" is assumed to be 1, "quantiles" assumed to be ARRAY[0, 0.25, 0.5, 0.75, 1] and "sample_percent" assumed to be 0.1