Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将UTM转换为Lat Long而不将其从更复杂的数据帧中删除?_R_Latitude Longitude_Utm - Fatal编程技术网

R 如何将UTM转换为Lat Long而不将其从更复杂的数据帧中删除?

R 如何将UTM转换为Lat Long而不将其从更复杂的数据帧中删除?,r,latitude-longitude,utm,R,Latitude Longitude,Utm,我在一个包含14列的数据框中有UTM坐标 我正在使用下面的代码:1。将UTM(东距和北距)从形状文件拉入单独的数据框。2.使用proj4将其转换为lat/long。3.使用innerjoin和基于行名称在两个数据帧中创建的列将其连接回原始df 是否有一种更干净的方法来转换坐标,希望不用将坐标数据移入或移出数据帧?proj4似乎只适用于两个列。这是我完成后目前正在看的内容 >higeo=readOGR(dsn=“.”,layer=“ahupuaa”)#在形状文件中读取 带有驱动程序的OGR数据源

我在一个包含14列的数据框中有UTM坐标

我正在使用下面的代码:1。将UTM(东距和北距)从形状文件拉入单独的数据框。2.使用proj4将其转换为lat/long。3.使用
innerjoin
和基于行名称在两个数据帧中创建的列将其连接回原始df

是否有一种更干净的方法来转换坐标,希望不用将坐标数据移入或移出数据帧?proj4似乎只适用于两个列。这是我完成后目前正在看的内容

>higeo=readOGR(dsn=“.”,layer=“ahupuaa”)#在形状文件中读取
带有驱动程序的OGR数据源:ESRI Shapefile
资料来源:“.”,图层:“ahupuaa”
拥有725个功能
它有8个字段
> higeo@data$id=行名(sf@data)#将行号添加为列
>higeo.points=fortify(higeo,region=“id”)#从每个“区域”提取点数据
>higeo.df=内部连接(higeo.points,higeo@data,by=“id”)#通过id字段将各个点连接回数据
>higeo.df$rowid=rownames(higeo.df)#再次开始,这次添加“rowid”。
>hicoords proj4string hiconv hiconv.df$rowid=rownames(hiconv.df)#将rownames添加为列

>newhi.df使用
hiconv你使用
fortify
是因为你想使用
ggplot2
?我使用
fortify
是因为我知道一些
ggplot2
,我想它会做我想做的事情,那就是提取组成形状文件的实际点的值,并将它们放在数据框中。如果我没有使用
ggplot2
。有更好的方法吗?请参阅我的更新答案。我有一个重复的例子:我从
download.file
中得到一个错误。否则,我想我明白你的意思。手动下载一些形状文件后,我会尝试让它工作,并让您知道。
> higeo= readOGR(dsn=".", layer="ahupuaa") #Read in shape file
  OGR data source with driver: ESRI Shapefile 
  Source: ".", layer: "ahupuaa"
  with 725 features
  It has 8 fields
> higeo@data$id = rownames(sf@data) #add row numbers as a column
> higeo.points = fortify(higeo, region="id") #pull point data from each   “region”
> higeo.df = inner_join(higeo.points, higeo@data, by="id") #join individual points back to data via id field
> higeo.df$rowid = rownames(higeo.df) #begin again, add “rowid”  this time.
> hicoords <- data.frame(x=higeo.df$lon, y=higeo.df$lat) #create xy values in new df, because proj4 only handles 2 columns
> proj4string <- "+proj=utm +zone=4 +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs"#define proj4string to contain constants
> hiconv <- project(hicoords, proj4string, inverse=TRUE)#converts to lat long
> hiconv.df$rowid = rownames(hiconv.df)# add rownames as column
> newhi.df <- inner_join(hiconv.df, higeo.df, by="rowid") #rejoin dfs by rowid