我已经创建了一个fileInput,它在用户选择后直接加载.CSV文件[数据集包含纬度和经度]。
data <- data.frame(
Lat=c(21.076,21.99,20.95,20.00,26.57,25.70),
long=c(60.000,67.980,61.00061.009,69.001,62.000,61.056,62.789,63.546)
)
问题:我想以米为单位调整值。
ui.r
library(shiny)
library(ggplot2)
shinyUI(fluidPage(
fileInput('file', 'Choose CSV file',
accept=c('csv', 'comma-separated-values','.csv')),
server.r
library(shiny)
library(ggplot2)
shinyServer(function(input, output,session) {
a<-reactive({
if (is.null(input$file))
return(NULL)
a<-read.csv(input$file$datapath)
a<- transform(a, var1 =var(Lat), var2= var(Long))
# Now I want to convert this variance in meters and den display it
a
))
答案 0 :(得分:0)
您可以尝试使用PBSmapping包。
这可以将lat / long转换为UTM坐标。在设置数据时,您需要注意自己所在的半球。例如。如果你在西半球,你可能不得不从经度中加入一个减号(“ - ”)。如果你知道你所在的UTM区域(你可以谷歌这个),那就最好了。
如果您想知道为什么我在下面创建dataLL数据帧时使用大写“X”和“Y”是因为它是函数的要求。
require(PBSmapping)
data <- data.frame(
Lat=c(21.076,21.99,20.95,20.00,26.57,25.70,20.00,26.57,25.70),
Long=c(60.000,67.980,61.000,61.009,69.001,62.000,61.056,62.789,63.546)
)
dataLL=as.data.frame(list(X=data$Long,Y=data$Lat))
# or if in western hemis:
#dataLL=as.data.frame(list(X=-data$Long,Y=data$Lat))
attr(dataLL,"projection")="LL"
#km=F puts the projection in meters, it automatically finds what UTM zone to use
dataUTM=convUL(dataLL,km=F)
plot(dataUTM$X,dataUTM$Y)