【问题标题】:R/GIS: bulk processing, distance and elevation calcuationR/GIS:批量处理、距离和高程计算
【发布时间】:2012-01-02 09:05:52
【问题描述】:

我有一个数据框 df,其中包含三个变量:citystatecountry。我想计算 3 件事

  1. 计算每行的纬度/经度。
  2. 计算每个城市到任意点的距离,比如国家首都
  3. 从纬度/经度计算每个点的高程。

我可以将 dismo 包用于 1,但无法从 df 中找到“批量处理”的方法,而是将城市、州和国家/地区名称直接复制并粘贴到 geocode(c())代码。至于2和3,我完全被难住了。任何帮助将不胜感激。

编辑说明:致这篇文章的其他读者......我感谢 Paul 和 Spacedman 的帮助。系统不允许我将多个响应标记为正确。我给了保罗竖起大拇指,因为他在太空人之前做出了回应。请阅读他们两人花时间写的东西。谢谢。

【问题讨论】:

    标签: r gis


    【解决方案1】:

    我将就每一点分享我的想法:

    对于 1. 您可以使用paste 为地理编码创建输入向量:

    df$geocode_string = with(df, paste(city, state, country, sep = ", "))
    coords_latlong = geocode(df$geocode_string)
    

    关于第2点,将df转换为sp包提供的类(SpatialPointsDataFrame,查看sp中的coordinates函数)后,可以使用spDistsN1查找所有点到另一点的距离。

    决赛有点棘手,要找到您需要 DEM(数字高程模型)的高度。也许有一个更简单的方法,就像我不知道的geocode

    【讨论】:

    • 很高兴听到您发现此答案很有用。如果您认为我给出了正确答案,您可以将其标记为正确答案。您也可以等待并查看更多答案,这可能会回答您的第三点。
    • 完成了。我对原始帖子进行了编辑,以让其他读者知道我得到了您和 Spacedman 的帮助,但我无法将两者都标记为正确。非常感谢。
    【解决方案2】:

    您可以使用 geonames.org 服务在 SRTM 或 ASTER 高程数据库中查询位置:

    http://www.geonames.org/export/web-services.html

    你甚至可以使用我的 geonames 包:

    https://r-forge.r-project.org/projects/geonames/

    让生活更轻松。

    【讨论】:

    • 感谢您的指点。如果我理解正确,地名数据不是“完整的”,因为它列出了一个国家的所有位置。在那种情况下用处不大。
    • 我并不是建议您将其用于地理编码,但是一旦您掌握了经纬度,您就可以使用海拔 API 来获得列表中的第 3 位。
    • 从 aster 和 srtm dem 获取信息的好方法。谢谢!
    • 啊...我现在明白了。这很好。谢谢,太空人。只是为了让我理解它,例如,当我运行 GNsrtm3(lat, lng) 时,它应该给我以 mts 为单位的高度,对吧?我为珠穆朗玛峰尝试了 GNsrtm3(27.988257, 86.925145),它给了我 -32768(我知道这是一个常见错误)。有没有什么简单的方法可以让我输入的 lat/lng 得到“真正的最大海拔”?
    • 这正是它应该如何工作的,但如果 NASA 的 SRTM 数据存在错误并且它们在地名上重复,那么我无法修复它们。您也可以尝试从其他来源获取海拔高度的 GNgtopo30。我忘记了哪个更好/更完整/更可靠,但 GNgtopo30 至少知道珠穆朗玛峰超过 8000m。我怀疑 SRTM 数据中有一个坏点恰好在珠穆朗玛峰上,因为靠近你给出的那个点的位置是有效的。这些东西是近似的 - 阅读它们。
    猜你喜欢
    • 2017-02-21
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2019-09-27
    • 2017-11-15
    相关资源
    最近更新 更多