我正在尝试以100km的半径缓冲数据集中的点。我正在使用软件包gBuffer中的函数rgeos。这是我到目前为止的内容:

head( sampledf )
#  postalcode      lat       lon       city province
#1     A0A0A0 47.05564 -53.20198     Gander       NL
#4     A0A1C0 47.31741 -52.81218 St. John's       NL

coordinates( sampledf ) <- c( "lon", "lat" )
proj4string( sampledf ) <- CRS( "+proj=longlat +datum=WGS84" )
distInMeters <- 1000
pc100km <- gBuffer( sampledf, width=100*distInMeters, byid=TRUE )


我收到以下警告:


在gBuffer(sampledf,width = 100 * distInMeters,byid = TRUE)中:
空间对象未投影; GEOS期望平面坐标


根据我的理解/阅读,我需要更改坐标参考系统(CRS),
特别是从“地理”到“投影”的数据集的投影。
我不确定如何更改此设置。这些都是加拿大的地址,我可能会补充。
因此,对我来说,NAD83似乎是很自然的选择,但我可能错了。

任何/所有帮助将不胜感激。

最佳答案

经过更多的挖掘,事实证明,使用“投影”坐标参考系统非常简单

# To get Statscan CRS, see here:
# http://spatialreference.org/ref/epsg/3347/
pc <- spTransform( sampledf, CRS( "+init=epsg:3347" ) )


STATSCAN(适用于加拿大地址)使用的EPSG3347使用兰伯特保形圆锥投影。请注意,NAD83是不适当的:它是“地理”而不是“计划的” CRS。缓冲点

pc100km <- gBuffer( pc, width=100*distm, byid=TRUE )
# Add data, and write to shapefile
pc100km <- SpatialPolygonsDataFrame( pc100km, data=pc100km@data )
writeOGR( pc100km, "pc100km", "pc100km", driver="ESRI Shapefile" )

关于r - 带gbuffer的R中的缓冲区(地理)空间点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25411251/

10-12 17:48