Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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中的地图上创建栅格_R_Ggplot2_Ggmap - Fatal编程技术网

使用栅格点在R中的地图上创建栅格

使用栅格点在R中的地图上创建栅格,r,ggplot2,ggmap,R,Ggplot2,Ggmap,显然,我已经为这个问题挣扎了一天,似乎找不到一个好的解决办法。我真的很感谢你的帮助,而且我是R方面的新手(从上周开始) 问题1: 我有一组表示网格点的CSV,我可以将其解析为数据帧(点名称、纬度、经度) 例如: 此文件中的点表示左下角,并按行主格式排列,表示首先是最低水平栅格点。每个点都离其相邻点有一定的大圆距离(1km)。我想在我使用ggmap绘制的地图上创建一个网格覆盖 我所尝试或考虑的: map.grid()-这对我来说真的没有什么用处,因为我不寻找任何类型的投影 geom\u vline

显然,我已经为这个问题挣扎了一天,似乎找不到一个好的解决办法。我真的很感谢你的帮助,而且我是R方面的新手(从上周开始)

问题1:

我有一组表示网格点的CSV,我可以将其解析为数据帧
(点名称、纬度、经度)

例如:

此文件中的点表示左下角,并按行主格式排列,表示首先是最低水平栅格点。每个点都离其相邻点有一定的大圆距离
(1km)
。我想在我使用
ggmap
绘制的地图上创建一个网格覆盖

我所尝试或考虑的:

  • map.grid()
    -这对我来说真的没有什么用处,因为我不寻找任何类型的投影
  • geom\u vline()和geom\u hline()
    。这些看起来不错,但在飞机上没有恒定的x和y截距。此外,一旦我创建了一个网格,我想使用网格来根据密度着色
  • geom_rect()和geom_tile()
    。这些看起来很有前途,可能是我想要的。但是我找不到一个处理这些问题的好方法
  • 我想稍后用另一个参数填充这些网格框。关于如何创建这样的网格,有什么建议吗?这可能是一个微不足道的问题,但我还不太了解R

    问题2:

    如何存储或保持这样的网格,以便给定一个点
    (lat,lon)
    ,我可以快速到达该网格。事实上,我的整个后端都是C++的,可以直接输出网格名称<代码> XY < /C>直接指向给定的搜索点。不知何故,我发现很难根据网格点来计算这些点,这样我就可以用代表性的颜色填充网格

    我不确定我所说的一切是否都清楚。如果我要澄清什么,请告诉我

    还要注意的是,我在谷歌上搜索了很多次,没有找到相关的答案,尽管有些答案看起来很接近

    例如:


    谢谢你的帮助

    ggplot(df)+geom_光栅(aes(经度,纬度,fill=name))
    可能是这样的,但如果您希望在指定的坐标处计算角点,则需要计算中点。对于问题2,在网格坐标处使用带断点的
    cut
    ,这样您就可以创建一个引用表。@alistaire:是的,正是这个问题。我忘了提到我确实考虑过<代码> GeoMaGrase,但是中心点发现需要相当多的计算。关于使用
    cut
    ,你有什么我可以研究的例子吗?如果点之间的距离一致,你可以用适当的单位加上一半。如果你要跑很长的距离,你可能需要担心曲率,但在公里范围内,你应该没事。使用
    dplyr
    df%>%mutate_each(funs(.+unique(round(diff(sort(unique))),4))/2),-name)%%>%ggplot()+geom_光栅(aes(经度,纬度,fill=name))
    。对于
    cut
    而言,仅从
    开始?cut
    。或者,你可以找到一个质心的最小距离,然后用这种方式聚集,如果它更有意义的话。我会试试这些。我需要注意曲率,因为我要处理的所有区域都接近700平方英里。谢谢你!
    name,latitude,longitude
    x0y0,35.9767,-122.605
    x1y0,35.9767,-122.594
    x2y0,35.9767,-122.583
    x0y1,35.9857,-122.605
    x1y1,35.9857,-122.594
    x2y1,35.9857,-122.583
    x0y2,35.9947,-122.605
    x1y2,35.9947,-122.594
    x2y2,35.9947,-122.583