Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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
在Rcpp函数中使用geos_R_Geospatial_Spatial_Rcpp_Geos - Fatal编程技术网

在Rcpp函数中使用geos

在Rcpp函数中使用geos,r,geospatial,spatial,rcpp,geos,R,Geospatial,Spatial,Rcpp,Geos,有人知道如何在Rcpp函数中使用geos吗(我正在构建一个R包)? 事实上,我正在寻找一种比这更好的方法: Rcpp::Environment rgeos_env = Environment::namespace_env("rgeos"); Rcpp::Function Dist = rgeos_env["gDistance"]; 在上下文中,我想计算空间多边形之间的距离,但我做了很多次(蒙特卡罗测试),我想提高代码的速度。我看到了两种可能的方法来使用geos,而不必从C++返回到R: 尝试

有人知道如何在Rcpp函数中使用geos吗(我正在构建一个R包)? 事实上,我正在寻找一种比这更好的方法:

Rcpp::Environment rgeos_env = Environment::namespace_env("rgeos");
Rcpp::Function Dist = rgeos_env["gDistance"];

在上下文中,我想计算空间多边形之间的距离,但我做了很多次(蒙特卡罗测试),我想提高代码的速度。

我看到了两种可能的方法来使用geos,而不必从C++返回到R:

  • 尝试与rgeos软件包c.f.链接

  • 执行rgeos软件包的功能,即与geos库链接并调用相关函数c.f


从Rcpp调用R函数不会获得任何速度。这是因为你必须停止C++执行,将对象传递回R,运行R函数,将结果导出回C++,然后完成计算。总的来说,这会带来更多的开销,但收效甚微。您是否尝试过使用
sf
软件包,该软件包使用
geos
进行空间计算?@symbolxau,我去年尝试过,但速度比我的慢。谢谢你的建议。这是一个定性的复制品,在这个意义上,你不能想象蒙特卡洛复制围绕C++调用R函数,并且在某种程度上押注魔术小马以使它比R快。谢谢你的建议,它非常有用。