【问题标题】:Value of coordinates() for a SpatialPolygonsDataFrame object?SpatialPolygonsDataFrame 对象的坐标()值?
【发布时间】:2015-06-16 10:17:10
【问题描述】:

我正在尝试为空间多边形数据框中的多边形获取伪重心。今天我偶然发现了 coordinates 函数,它实际上为 SpatialPolygonsDataFrame 返回了一些东西。

不幸的是,我在 coordinates 的帮助中没有发现关于 SpatialPolygonsDataFrame 的值。谁能告诉我这些坐标是什么?

【问题讨论】:

  • 它是一个质心,只是几何中间,不保证与多边形相交
  • @mdsumner 你有什么关于它是如何计算的参考吗?

标签: r spatial rgdal sp


【解决方案1】:

它是多边形的质心。源码找到here,找函数FindCG。计算出的方程与wikipedia 上的方程等效,但还处理具有(接近)零面积的多边形的特殊情况,并按第一个点对多边形坐标进行归一化(以提高数值精度和/或避免溢出)。

【讨论】:

  • 你可能是指findCG?另外,您是如何发现这段特定的代码定义了 labpt 插槽的?
  • 是的。构造函数在某个阶段调用 C 对应项,例如Polygon R 函数调用.Call(Polygon_c, coords, n, ihole),后者调用底层C 函数Polygon_c;这些依次调用其他 C 函数。我是 sp 的维护者,也是它大部分内容的作者,虽然不是这些部分。
  • 太好了,您能更正您的答案并将其添加到其中,特别是更正吗?另外我刚刚发布了这个问题,我将不胜感激:stackoverflow.com/q/29629049/1174052
【解决方案2】:

阅读SpatialPolygonsDataFrame的坐标定义我可以看到它实际上与getSpPPolygonsLabptSlots相同,因为它检索labpt插槽,也就是说放置标签的方便点为多边形。

> selectMethod("coordinates",signature="SpatialPolygonsDataFrame")
Method Definition:

function (obj, ...) 
{
    .local <- function (obj) 
    {
        ret = t(sapply(slot(obj, "polygons"), function(i) slot(i, 
            "labpt")))
        dimnames(ret) = list(sapply(slot(obj, "polygons"), function(i) slot(i, 
            "ID")), NULL)
        ret
    }
    .local(obj, ...)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2014-12-18
    • 1970-01-01
    • 2017-03-30
    • 2018-10-15
    • 1970-01-01
    • 2013-08-27
    • 2018-08-06
    相关资源
    最近更新 更多