Como se pode usar R para
- divida um arquivo de forma em quadrados / sub-polígonos de 200 metros,
- plote esta grade (incluindo números de identificação para cada quadrado) sobre o mapa original abaixo e
- avaliar em que coordenadas geográficas específicas quadradas estão localizadas .
Sou iniciante em SIG e essa talvez seja uma pergunta básica, mas não encontrei um tutorial sobre como fazer isso em R.
O que fiz até agora foi carregar um arquivo de forma de NYC e plotar algumas coordenadas geográficas exemplares.
Estou procurando um exemplo (código R) de como fazer isso com os dados abaixo.
# Load packages
library(maptools)
# Download shapefile for NYC
# OLD URL (no longer working)
# shpurl <- "http://www.nyc.gov/html/dcp/download/bytes/nybb_13a.zip"
shpurl <- "https://www1.nyc.gov/assets/planning/download/zip/data-maps/open-data/nybb_13a.zip"
tmp <- tempfile(fileext=".zip")
download.file(shpurl, destfile=tmp)
files <- unzip(tmp, exdir=getwd())
# Load & plot shapefile
shp <- readShapePoly(files[grep(".shp$", files)])
plot(shp)
# Define coordinates
points_of_interest <- data.frame(y=c(919500, 959500, 1019500, 1049500, 1029500, 989500),
x =c(130600, 150600, 180600, 198000, 248000, 218000),
id =c("A"), stringsAsFactors=F)
# Plot coordinates
points(points_of_interest$y, points_of_interest$x, pch=19, col="red")
r
vector-grid
point-in-polygon
majestade
fonte
fonte
Respostas:
Aqui está um exemplo usando um
SpatialGrid
objeto:Agora você pode usar o
over
método implementado para obter os IDs de célula:Para plotar o shapefile e a grade com os IDs de célula:
ou sem cor / chave de cor:
fonte
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
alguém tem alguma sugestão sobre como quebrar esses shapefiles dessa projeção em 1000 células de grade de tamanho igual? e selecione aleatoriamente 100 deles e destaque-os?O conjunto de dados de Nova York fornecido na pergunta não está mais disponível para download. Eu uso o conjunto de dados nc do pacote sf para demonstrar uma solução usando o pacote sf:
fonte
sf
pacote. Isso é incrível!Se você não examinou o pacote raster r, ele possui ferramentas para converter objetos GIS de / para vetor, para que você possa: a) criar uma raster (grade) com células de 200x200 m eb) convertê-la em um conjunto de polígonos com um id lógico de algum tipo. A partir daí, examinaria o pacote sp para ajudar na interseção dos pontos e da grade de polígonos. Esta http://cran.r-project.org/web/packages/sp/vignettes/over.pdf pode ser um bom começo. Percorrendo os documentos do pacote sp, você pode começar com a classe SpatialGrid e pular completamente a parte raster.
fonte
O "universo GIS" é complexo e possui muitos padrões para que seus dados sejam compatíveis. Todas as "ferramentas GIS" interoperam pelos padrões GIS . Todos os "dados GIS sérios" hoje (2014) são armazenados em um banco de dados .
A melhor maneira de "usar R" em um contexto GIS, com outras ferramentas de software livre , é incorporada ao SQL. As melhores ferramentas são o PostgreSQL 9.X (veja PL / R ) e o PostGIS .
Sua resposta:
shp2pgsql
epgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
etc. Precisamos entender melhor suas necessidades de expressar em uma "receita".ST_Centroid()
dos quadrados (?) ... Você pode expressar "mais matematicamente" para que eu entenda.... Talvez você não precise de nenhuma conversão raster, apenas uma matriz de pontos com amostra regular.
Uma maneira primitiva é usar R sem PL / R , em seu compilador externo habitual: converta apenas seus polígonos e exporte como forma ou WKT (consulte
ST_AsText
), depois converta dados com awk ou outro filtro para o formato R.fonte
point.in.polygon
quais coordenadas estão em quais polígonos. Meu problema é dividir o shapefile original nesses sub-polígonos.