且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从SpatialPolygons和其他sp类提取特征坐标

更新时间:2023-02-27 10:32:16

我能想到的***方法是使用 ggplot2 $中的 fortify 函数c $ c>。 fortify 是一个通用函数,具有将通用R对象(例如 lm 等)转换为 data.frame ,其中 ggplot2 可用于绘图。完整列表给出:

The best way I can think of is to use the fortify function from ggplot2. fortify is a generic function which has methods to convert generic R objects (e.g. lm, etc) to a data.frame which ggplot2 can use for plotting. A full list gives:

> ggplot2:::fortify.
ggplot2:::fortify.cld                                                                   
ggplot2:::fortify.confint.glht                                                          
ggplot2:::fortify.data.frame                                                            
ggplot2:::fortify.default                                                               
ggplot2:::fortify.glht                                                                  
ggplot2:::fortify.Line
ggplot2:::fortify.Lines
ggplot2:::fortify.lm
ggplot2:::fortify.map
ggplot2:::fortify.NULL
ggplot2:::fortify.Polygon
ggplot2:::fortify.Polygons
ggplot2:::fortify.SpatialLinesDataFrame
ggplot2:::fortify.SpatialPolygons
ggplot2:::fortify.SpatialPolygonsDataFrame
ggplot2:::fortify.summary.glht

您可以看到其中包括了 SpatialPolygons * 对象的 fortify 函数。使用示例数据:

You can see this includes a fortify function for SpatialPolygons* objects. Using your example data:

> obj = fortify(SpP)
   long lat order  hole piece  group   id
1     2   2     1 FALSE     1   s1.1   s1
2     1   4     2 FALSE     1   s1.1   s1
3     4   5     3 FALSE     1   s1.1   s1
4     4   3     4 FALSE     1   s1.1   s1
5     2   2     5 FALSE     1   s1.1   s1
6     5   2     1 FALSE     1   s2.1   s2
7     2   2     2 FALSE     1   s2.1   s2
8     4   3     3 FALSE     1   s2.1   s2
9     5   2     4 FALSE     1   s2.1   s2
10    4   5     1 FALSE     1 s3/4.1 s3/4
11   10   5     2 FALSE     1 s3/4.1 s3/4
12    5   2     3 FALSE     1 s3/4.1 s3/4
13    4   3     4 FALSE     1 s3/4.1 s3/4
14    4   5     5 FALSE     1 s3/4.1 s3/4
15    5   4     6  TRUE     2 s3/4.2 s3/4
16    5   3     7  TRUE     2 s3/4.2 s3/4
17    6   3     8  TRUE     2 s3/4.2 s3/4
18    6   4     9  TRUE     2 s3/4.2 s3/4
19    5   4    10  TRUE     2 s3/4.2 s3/4

和plo计算结果:

require(ggplot2); theme_set(theme_bw())
ggplot(aes(x = long, y = lat, group = group), data = obj) + geom_path()