我被问到R是否可以使用shapefile - 我以前从未使用过shapefile,但我确信,其他人肯定会遇到过这样的问题!
我有两个shapefile: a)shapefile 1(PolygonSamples.shp)包含分布在德国各地的多边形列表(附件是样本)。多边形可能小于,等于或大于一个邮政编码多边形的多边形。
b)shapefile 2列出了德国邮政编码,可以从中下载 https://blog.oraylis.de/2010/05/german-map-spatial-data-for-plz-postal-code-regions/
现在的问题是: 如何“匹配”两个shapefile以获取一个数据框,该数据框列出shapefile 1中哪个多边形与shapefile 2的邮政编码匹配。结果理想情况如下
Polygon ID (shapefile 1) Postal Code (shapefile 2)
1 80995
2 80997
2 80999
3 81247
我发现的任何内容都不是我的问题。 例如From a shapefile with polygons/areas, and points (lat,lon), figure out which polygon/area each point belongs to? In R 似乎很接近,但我无法获得所需的数据帧(或数据表)输出。
library(maps)
library(maptools)
# Polygons
tmp_dir <- "C:/Users/.../"
polygons <- readShapeSpatial(sprintf('%s/polygons.shp', tmp_dir)
plot(polygons)
# Postal codes
dir <- "C:/Users/..../"
postcode <- readShapeSpatial(sprintf('%s/post_pl.shp', dir)
plot(postcode)
缺少的代码snipplet会读取类似
的内容 result_table <- match(polygons_ID, postcode,
data1= polygon, data2 = postcode,
by = "coordinates in the shapefile"
shapefile(.shp)中包含多边形的示例。可以发送其他空间文件(.dbf,.prj,.qpj,.shx)。
非常感谢任何帮助!
PS:R版本3.2.3,64位,Windows 7上的RStudio
答案 0 :(得分:0)
不幸的是我没有在R中找到答案,但我可以弄清楚如何匹配QGIS中的两个独立的shapefile。
主要问题:自定义shapefile在.prj文件中使用地理编码Google Mercator(EPSG = 900913),而下载的邮政编码shapefile使用EPSG 4326。
QGIS不会自动将这些.prj文件识别为投影文件。一个人必须手工设置它们。
最重要的是:Google Mercator(EPSG = 900913)已更改为EPSG = 3857.因此,我必须手动设置自定义shapefile! - CRS至WGS 84 / Pseudo-Mercator EPSG = 3857。
现在我可以右键单击自定义形状图层 - &gt;另存为 …。并将CRS更改为EPSG 4326.因此,新的自定义shapefile现在具有与下载的邮政编码shapefile相同的投影,并且它们可以按位置连接。
(PS:虽然我有手动进行转换的解决方案,但我很乐意在R中执行此操作,因为我需要生成的文件进行分析。)
答案 1 :(得分:0)
它可以为您提供数据集B中的哪些shapefile与数据集A中的shapefile重叠,以及目标shapefile中每个B的shapefile中存在多少区域。