【问题标题】:how to add my own shape file trajLevel() in openair package R如何在 openair 包 R 中添加我自己的形状文件 trajLevel()
【发布时间】:2019-05-13 05:26:34
【问题描述】:

我正在使用以下代码来绘制轨迹............

library(openair)

load("GDASNDL1000m.Rdata")

trajLevel(traj,method="hexbin",col="jet",xbin=40,parameters=NULL,
orientation=c(90,0,0),projection="mercator")

resulthttps://github.com/adeckmyn/maps/files/2667752/GDASNDL1000m.zip

在这里,我想用我自己的shape file 更改基础world map

我的形状文件如下......

z1=maptools::readShapePoly("/home/sateeshm/shapefiles/ncmrwf/india_map")
library(maps)
map(z1)

https://github.com/adeckmyn/maps/files/2667336/World-India.zip

#

现在,实际的问题是如何将 z1 链接到 trajLevel?

【问题讨论】:

    标签: r maps mapping openair


    【解决方案1】:

    为避免在 openair 中硬编码调用“world”,您必须以与“maps”包相同的基于文件的格式创建一个新的世界数据库。

    可能最简单的方法是使用mapMaker 包。这个包不在 CRAN 上,但可以在 github 上找到。它是我用来创建标准世界地图的包。文档很少,但如果您不关心多边形名称等,您可以创建一个“快速而肮脏”的世界地图,如下所示:

    # get your new map as a simple list of polygons (or lines)
    z1=maps::map(maptools::readShapePoly("india_map"), plot=FALSE)
    # create internal representation
    z2=mapMaker::map.make(z1)
    # write binary files:
    mapMaker::map.export.bin(z2, "/my/path/to/world")
    
    # To make map() call this new database:
    library(maps)
    worldMapEnv="MYMAP"
    Sys.setenv("MYMAP"="/my/path/to/") # don't add the "world" !
    

    现在map("world") 将绘制您的世界地图版本。

    【讨论】:

    • 亲爱的@Alex,目前,我的 india_map 是 180W 到 180E。是否可以使用 mapMaker 将我的 india_map 自定义为 0 到 360 或 90W 到 0,180E,270E?如果有,请提供更多信息。
    • 是的,这实际上很容易。调用 map() 函数时,只需添加选项 wrap=c(0,360) (或任意两个纬度)。请注意,如果 fill=T,这将分割穿过子午线的多边形。但是,它不会神奇地混合在 180 子午线处分割的多边形。因此,地图中可能会保留一些多余的线条。删除这些可能需要手动编辑。
    • > map("world",wrap=c(-60,300)) 警告信息:在 if (wrap) coord 1 并且只有第一个元素将被使用 \n 这里,我使用了 india_map.shp
    • 您可能有旧版本的地图包,没有新的包装语法。 CRAN 上的当前版本 v3.3 不应出现此错误。
    猜你喜欢
    • 2016-10-04
    • 2014-05-25
    • 1970-01-01
    • 2019-03-08
    • 2017-07-27
    • 2014-09-19
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多