Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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 为什么不使用数字坐标而不是sf object=POINT?_R_Sf_R Leaflet - Fatal编程技术网

R 为什么不使用数字坐标而不是sf object=POINT?

R 为什么不使用数字坐标而不是sf object=POINT?,r,sf,r-leaflet,R,Sf,R Leaflet,我想在地图上显示点。这些点以坐标(长/纬度)表示,并以数字形式存储在数据框中。我想知道我是否真的需要将数字坐标(lon/lat)转换为点类型的sf对象。我不知道这种转换有什么好处。在本例中,我使用两列中的数字坐标,并在地图上显示它们: data(quakes) leaflet(data = quakes[1:20,]) %>% addTiles() %>% addMarkers(~long, ~lat) 这里的数据帧(地震)不是空间的,lon/lat是数字的。但是,我可以执行

我想在地图上显示点。这些点以坐标(长/纬度)表示,并以数字形式存储在数据框中。我想知道我是否真的需要将数字坐标(lon/lat)转换为点类型的sf对象。我不知道这种转换有什么好处。在本例中,我使用两列中的数字坐标,并在地图上显示它们:

data(quakes)

leaflet(data = quakes[1:20,]) %>% addTiles() %>%
  addMarkers(~long, ~lat)
这里的数据帧(地震)不是空间的,lon/lat是数字的。但是,我可以执行完全相同的操作,将数字坐标转换为sf点,然后在地图上显示它们:

coords <- quakes %>%
  sf::st_as_sf(coords = c("long","lat"), crs = 4326) %>%
  sf::st_geometry()

leaflet(data = coords[1:20,]) %>% addTiles() %>%
  addMarkers()
coords%
sf::st_as_sf(坐标=c(“长”、“横向”),crs=4326)%>%
sf::st_geometry()
传单(数据=coords[1:20,])%>%addTiles()%>%
addMarkers()

问题是:在地图上显示点(标记)的情况下,我们应该先转换为空间对象还是只使用数字列?如果我可以用数值lon/lat做完全相同的事情,那么使用点有什么意义呢?性能问题?

您不需要转换,如果您的空间对象的唯一目的是绘制
{lapper}
地图,即不进行其他计算、统计、建模等,则转换没有什么意义

对于支持的数据类型,
{sf}
objects、
{sp}
objects和常规lat/lon data.frames非常严格

使用其中一种特殊空间格式的唯一好处是,您不需要在
addMarker()
调用中指定纬度和经度映射。我不希望对性能有任何影响


请注意,尽管{ployate}支持多种数据输入方式,但它将无法处理投影坐标系(东向和北向)中的数据。

如果需要,您可以在
tmap
中使用
tm\u dots
中的点,而不是使用
ployate
的坐标。好的,我知道我可以使用它,但使用sf点或数字坐标(浮点)有什么区别?也许没什么区别?或者也许这都是关于地图上的性能或精度?谢谢,这就是我想知道的:)