Я хочу получить несколько входов .tif на своем веб-сайте и хочу создать график гистограммы, но мне нужно выбирать каждый файл отдельно. Я пишу несколько входных HTML-код, чтобы избавиться от этой ситуации.
Это html-коды для подключения к R (связан с rPlumber)
<input type="file" id="a1" name="files" multiple/><br>
function loadDoc() {
var a1 = document.getElementById("a1").value;
var mainname = document.getElementById("mainname").value;
var xlabname = document.getElementById("xlabname").value;
var ylabname = document.getElementById("ylabname").value;
var col = document.getElementById("col").value;
var colom = document.getElementById("colom").value;
var data="a1="+a1+"&mainname="+mainname+"&xlabname="+xlabname+"&ylabname="+ylabname+"&col="+col+"&colom="+colom;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("POST", "http://127.0.0.1:8000/histog", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
}
</script>
Это самая важная часть. У меня есть R коды здесь
#* @post /histog
#* @png
#* @serializer contentType list(type='image/tif')
function(name,a1,mainname,xlabname,ylabname,col,colom){
browser()
b <- list(a = paste0("C:/Users/SafaT/Documents/code/", ".png"))
png(file=b,
width=600, height=350)
ras = paste0(a1, 1:11, ".tif")
landsat <- stack(ras)
landsatRGB <- landsat[[c(4,3,2)]]
landsatFCC <- landsat[[c(5,4,3)]]
VI <- function(img, k, i) {
bk <- img[[k]]
bi <- img[[i]]
vi <- (bk - bi) / (bk + bi)
return(vi)
}
ndvi <- VI(landsat, 5, 4)
hist(ndvi,
main = mainname,
xlab = xlabname,
ylab= ylabname,
col = col,
xlim = c(-0.5, 1),
breaks = as.numeric(colom),
xaxt = 'n')
axis(side=1, at = seq(-0.5,1, 0.05), labels = seq(-0.5,1, 0.05))
dev.off()
}
«a1» - это кнопка ввода в html. Эти коды выдают ошибку типа «simpleError в basename (x): path too long», когда я выбираю 11 элементов. R показывает пути к файлам из 11 элементов и выдает эту ошибку.