如何将sf包生成的多边形内随机点转换为LAT/LON格式?
解决sf随机点转LAT/LON的问题
你的问题核心是生成的随机点坐标系和经纬度(WGS84,EPSG:4326)不匹配。st_sample生成的点会继承原多边形counties的坐标系,如果counties用的是投影坐标系(比如UTM、State Plane),直接用st_coordinates提取的是投影坐标,不是经纬度。
解决步骤:
- 先确认原数据的坐标系:
输出里如果不是sf::st_crs(counties)EPSG:4326,就需要做坐标系转换。 - 修改代码,先把随机点转成WGS84,再提取坐标:
# 生成随机点 points = sf::st_sample(counties, size=60) # 转换到WGS84坐标系,再提取经纬度 random_points <- points %>% sf::st_transform(crs = 4326) %>% # 关键:转成经纬度坐标系 sf::st_coordinates() %>% as.data.frame() %>% dplyr::rename(LON = X, LAT = Y) # 重命名成你需要的字段名
如果你的counties本来就是WGS84坐标系,那直接重命名字段就行——st_coordinates返回的X是经度(LON),Y是纬度(LAT),只是字段名默认是X/Y而已。
内容的提问来源于stack exchange,提问作者Blue_Wolverine
相关产品推荐
相关产品推荐

