Опитвам се да идентифицирам в кой многоъгълник (ZCTA... известен още като аналог на пощенския код) принадлежи дадена точка, като се има предвид набор от точки и шейпфайл. Въпреки че има няколко въпроса от този тип, почти всички изглежда ме насочват към QGIS. Въпреки че ще отида и ще науча друг инструмент, ако е необходимо, има ли лесен начин да направя това в R? Имам опит в R среда... не толкова в GIS пространството.
Форматът, който използвам, се намира тук: ftp: //ftp.gisdata.mn.gov/pub/gdrs/data/pub/us_mn_state_mngeo/bdry_zip_code_tabulation_areas/shp_bdry_zip_code_tabulation_areas.zip
Първият ми опит беше да заредя шейп файла като SpatialPolygonsDataFrame, точките като SpatialPointsDataFrame, след което да използвам "over()", за да получа индексите на полигоните, които съвпадат:
library(maptools)
library(maps)
library(sp)
mn.zip.map <- readShapePoly("zip_code_tabulation_areas.shp")
# The shapefile is the one referenced in the link above
latlon <- data.frame(matrix(0,nrow=2,ncol=1))
latlon$lat <- c(44.730178, 44.784711)
latlon$lon <- c(-93.235381, -93.476415)
latlon[1] <- NULL
coordinates(latlon) = ~lon+lat
indices <- over(latlon, mn.zip.map)
С резултати:
> indices
ZCTA5CE10 GEOID10 CLASSFP10 MTFCC10 FUNCSTAT10 ALAND10 AWATER10 INTPTLAT10 INTPTLON10
1 <NA> <NA> <NA> <NA> <NA> NA NA <NA> <NA>
2 <NA> <NA> <NA> <NA> <NA> NA NA <NA> <NA>
Shape_Leng Shape_Area
1 NA NA
2 NA NA
Надявах се да имам изход на първия ред ZCTA5CE10 == 55124 и изход на втория ред ZCTA5CE10 == 55379. Въпреки това, очевидно това не се случва.
Изглежда, че координатните системи не са подравнени... но и двете трябва да са Lat/Lon, нали?
Какво ми липсва тук? Благодаря предварително.