── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5 ✓ purrr 0.3.4
✓ tibble 3.1.6 ✓ dplyr 1.0.8
✓ tidyr 1.2.0 ✓ stringr 1.4.0
✓ readr 2.1.2 ✓ forcats 0.5.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
Rows: 1560922 Columns: 12
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): clase
dbl (11): B2, B3, B4, B5, B6, B7, B8, B11, B12, DEM, Slopes
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Tabla con limites superior e inferior para cada clase…
print.data.frame (bounds )
Class Bounds B2 B3 B4 B5
1 palma upper 132.250007 244.557853 211.0690791 430.80031
2 palma lower 20.549452 59.816027 6.5125466 107.89656
3 cafe_expuesto upper 153.402626 286.451210 232.0744809 511.56313
4 cafe_expuesto lower -6.316362 16.816442 -12.6206003 68.62392
5 cafe_semisombra upper 119.867561 251.672862 177.8825598 464.92778
6 cafe_semisombra lower 1.020018 21.695818 0.2267684 70.45270
7 cafe_sombra upper 108.931694 253.129559 157.5318403 472.96497
8 cafe_sombra lower 8.319460 26.368956 8.8189069 78.15437
9 vegetacion upper 132.897410 242.473488 197.2285140 438.08348
10 vegetacion lower -10.101088 8.822518 -8.9678002 47.48948
11 ciudad upper 424.658449 535.997020 625.8042198 700.12046
12 ciudad lower -101.345008 -110.291510 -233.1455704 -121.83639
13 agua upper 133.563187 261.480501 197.0918024 421.39507
14 agua lower 7.532024 -23.192416 -15.0142093 -111.22450
B6 B7 B8 B11 B12 DEM Slopes
1 1335.0259 1726.0884 1782.38443 955.1218 489.36840 135.31218 7.8455832
2 347.7550 426.4164 437.35131 271.3141 94.45857 51.61031 0.5191916
3 1488.8353 1815.4894 1948.92639 1058.7544 555.93285 2048.17617 42.1074509
4 206.2268 260.0312 240.45055 203.7253 79.26970 1073.06182 13.0165803
5 1463.9662 1815.5011 1958.26222 995.8490 483.71075 1842.10254 42.3744288
6 232.8089 294.8069 275.31100 207.0160 83.61501 973.69736 12.8370326
7 1652.1542 2098.7067 2254.84497 1083.2089 492.86517 1748.81212 41.0399148
8 270.1715 342.5408 312.76196 211.6086 86.32620 901.65207 13.7832911
9 1182.1337 1453.3073 1572.38500 950.1666 497.72496 1615.25847 38.3298281
10 106.3732 123.2299 87.13021 164.3350 58.87195 -479.47429 -5.8765562
11 877.0691 980.3268 994.73399 1023.0424 938.55481 239.86557 38.0724534
12 -142.2970 -265.7054 -271.62550 -275.1948 -265.69212 -146.12761 -114.3049785
13 854.7607 984.2878 1003.90731 542.7321 282.21016 88.36626 8.0659371
14 -413.5432 -473.1328 -513.75816 -249.0520 -119.62812 30.61908 -0.8774983
Posible pseudocodigo del filtro para el caso de palma…
if(B2 <= 132.25 && B2 >= 20.55)
if(B3 <= 244.55 && B3 >= 59.81)
if(B4 <= 211.06 && B4 >= 6.51)
…
if(Slopes <= 7.84 && Slopes >= 0.52 )
keep this record
Otherwise
prune it
Guardando el resultado en un archivo para posterior edicion…
write_csv (filters, "/home/and/filters.csv" )
Dependiendo del lenguaje los filtros se aplicarian diferente, en R por ejemplo seria algo asi en el caso de palma:
pixels_palma <- pixels |>
filter (clase == "palma" ) |>
filter ( B2 >= 20.5494521483389 ) |> filter ( B2 <= 132.250007432836 ) |>
filter ( B3 >= 59.8160268500471 ) |> filter ( B3 <= 244.557852906764 ) |>
filter ( B4 >= 6.51254664707307 ) |> filter ( B4 <= 211.069079112891 ) |>
filter ( B5 >= 107.896564432917 ) |> filter ( B5 <= 430.800305641390 ) |>
filter ( B6 >= 347.754963005186 ) |> filter ( B6 <= 1335.02594219635 ) |>
filter ( B7 >= 426.416355409537 ) |> filter ( B7 <= 1726.08839577263 ) |>
filter ( B8 >= 437.351307295830 ) |> filter ( B8 <= 1782.38442789895 ) |>
filter ( B11 >= 271.314089904972 ) |> filter ( B11 <= 955.121847946863 ) |>
filter ( B12 >= 94.4585748588907 ) |> filter ( B12 <= 489.368401047437 ) |>
filter ( DEM >= 51.6103100996285 ) |> filter ( DEM <= 135.312184833945 ) |>
filter ( Slopes >= 0.519191552851886 ) |> filter (Slopes <= 7.8455831716636 )
pixels_palma |> tally ()
# A tibble: 1 × 1
n
<int>
1 13283
Al final deberian quedarnos 13283 registros de palma despues de aplicar el filtro.
Sin embargo hay un par de consideraciones:
(1) No deberiamos trabajar palma hasta entender que pasa con las dos coverturas que se distinguen en la visualizacion de sus firmas espectrales…
(2) Antes de aplicar estos filtros debemos limpiar valores negativos en las bandas y en el slope lo que seguramente afectara el promedio que utilice para cada caso y (muy seguramente) tendremos que repetir este analisis…
(3) Disculpen la ausencia total de acentos…