在传单中绘制sfc_POLYGON

时间:2017-08-16 09:38:37

标签: r leaflet sf

我有一个sfc_POLYGON,IHS使用sf包作为几个形状的联合获得。

Geometry set for 1 feature 
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 270194.7 ymin: 2255850 xmax: 279225 ymax: 2265469
epsg (SRID):    32643
proj4string:    +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs
POLYGON((279224.998943279 2261084.1514869, 2792...

虽然我可以在mapview中绘制此图,但在leaflet中绘制相同内容时我遇到了一些问题。当我绘制这是leaflet时,我得到一个警告sf layer is not long-lat data,它不是,我得到了基础世界地图。这是我在leaflet中用于绘图的代码。

IHS%>%leaflet()%>%addTiles()%>%
  addProviderTiles(providers$Esri.WorldImagery, group ="ESRI")%>%
  addPolygons()

我怀疑这必须对CRS做些什么。我尝试st_set_crs(IHS, 4326)IHS的预测从utm更改为longlat:

Geometry set for 1 feature 
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 270194.7 ymin: 2255850 xmax: 279225 ymax: 2265469
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs

然而,传单警告和输出没有变化。我不确定这里,但它是否与更改尺寸和bbox(看起来以米为单位)有关?

1 个答案:

答案 0 :(得分:2)

"转换"进入Lon / Lat是为了改变其空间投影。一旦你知道了,就可以使用空间数据,并在库中找到帮助正确投影空间特征的方法。

在您的情况下,使用st_set_crs(IHS, 4326)仅表示投影是Lon / lat,而不是投影。 您需要使用st_transform

IHS_wgs84 <- st_transform(IHS, "+init=epsg:4326")