我有一个计算纬度和经度点的功能,以便在中心位置周围创建一个“环”。问题是结果打印到屏幕但不存储在任何地方。我的函数创建一个0列和0行的数据帧。我希望能够采用这些坐标并在其他地方使用它们。我希望能够嵌套这个函数,但是当它没有返回任何东西时我无法真正嵌套它。
我的最终目标是创建kml代码。我已经有了kml代码,但需要重复多次。 kml代码创建半径环,用颜色填充它们,并为该地方添加名称。我想通过使用lat / lon中的位置列表自动生成文件。
我的问题是,如何让这个函数返回我想要的坐标列表,以便我可以相应地将它们粘贴到kml代码中?我可以使用adply进行循环并获得3个坐标的打印结果,但不会创建任何内容。
我对编码也很陌生,请保持温和。提前谢谢。
{{1}}
答案 0 :(得分:0)
我认为这就是你想要的:
make.ring.file=function(dist,df)
{
R = 6378.14 #Radius of the Earth
d = dist*1.609344 #Distance of ring radius in km
lat1 = df$lat*(pi/180) #Current lat point converted to radians
lon1 = df$lon*(pi/180) #Current lon point converted to radians
num3=0
index=seq(from=0,to=360,by=120)
bear=NULL
lat=NULL
lon=NULL
z=NULL
coordlist=NULL
for(n in 1:length(index))
{
bear[n]=index[n]*(pi/180)
lat[n]=(asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(bear[n])))*(180/pi)
lon[n]=(lon1 + atan2(sin(bear[n])*sin(d/R)*cos(lat1),
cos(d/R)-sin(lat1)*sin(lat[n]*(pi/180))))*(180/pi)
z[n]=0
coordlist[n]=paste(lon[n],lat[n],z[n],sep=",")
}
return(data.frame(out=paste(coordlist,collapse=" ")))
}
关键的补充是:
return(data.frame(out=paste(coordlist,collapse=" ")))
函数cat
打印到控制台,因此您无法将其分配给任何内容 - 您只是创建一个空数据框和打印。
粘贴命令的工作原理是将coordlist
的4行粘贴在一起,使用"的分隔符。 &#34 ;.您可以根据下游代码的需要对其进行修改。