加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

从Python运行R脚本

发布时间:2020-12-20 13:34:25 所属栏目:Python 来源:网络整理
导读:我想从 Python脚本运行R脚本.在不同的坐标系中投影lat lon坐标需要R脚本.我考虑过两种选择.在第一个选项中,我想将lat和lon坐标解析为R脚本,如下所示.最后我希望R脚本将x和y返回给python脚本,但我无法弄清楚如何做到这一点. project-function(lat,lon){librar
我想从 Python脚本运行R脚本.在不同的坐标系中投影lat lon坐标需要R脚本.我考虑过两种选择.在第一个选项中,我想将lat和lon坐标解析为R脚本,如下所示.最后我希望R脚本将x和y返回给python脚本,但我无法弄清楚如何做到这一点.

project<-function(lat,lon){

library(sp)
library(rgdal)

xy <- cbind(x = lon,y = lat)
S <- SpatialPoints(xy)
proj4string(S) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
Snew <- spTransform(S,CRS("+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs"))
x <- coordinates(Snew)[1]
y <- coordinates(Snew)[2]

return(x,y)
}

对于我的第二个选项,我考虑使用底部的R脚本,其中已经有lat和lon.我尝试使用subprocess.Popen(‘Rscript project.r’,shell = True)运行此命令.(等)但是这似乎不起作用.它不会写一个xy.txt文件.但是,如果我从cmd行运行它,则R脚本可以完成这项工作.谁可以帮我解决这两个选项之一?

library(sp)
library(rgdal)

lat <- 52.29999924
lon <- 4.76999998

xy <- cbind(x = lon,CRS("+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs"))
x <- coordinates(Snew)[1]
y <- coordinates(Snew)[2]

cat(x,file="xy.txt",sep="")
cat(y,append=TRUE)

解决方法

对于您的第一个解决方案 – 让R将坐标输出到控制台(使用print或cat或R中的任何内容),然后在Python中捕获(请参见此处: Running shell command from Python and capturing the output)

这将为你提供一个包含teh lat / lon coords的字符串,你只需要使用适当的Python函数将它们解析出来.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读