以闪亮的方式转换米的方差

时间:2015-07-24 11:58:07

标签: r shiny variance

我已经创建了一个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
  ))

1 个答案:

答案 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)