Bagaimana seseorang bisa menggunakan R to
- membagi shapefile dalam kotak / sub-poligon 200 meter,
- plot kisi ini (termasuk nomor ID untuk setiap kotak) di atas peta asli di bawah, dan
- mengevaluasi di mana koordinat geografis spesifik persegi berada .
Saya seorang pemula dalam GIS dan ini mungkin pertanyaan mendasar, tapi saya belum menemukan tutorial tentang cara melakukan ini di R.
Apa yang saya lakukan sejauh ini adalah memuat shapefile NYC dan merencanakan beberapa koordinat geografis yang patut dicontoh.
Saya mencari contoh (kode R) bagaimana ini dengan data di bawah ini.
# 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
majom
sumber
sumber
Jawaban:
Berikut ini contoh menggunakan
SpatialGrid
objek:Sekarang Anda dapat menggunakan
over
-method yang diimplementasikan untuk mendapatkan ID sel:Untuk memplot shapefile dan kisi-kisi dengan ID sel:
atau tanpa warna / tombol warna:
sumber
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
apakah ada yang punya saran tentang cara memecah shapefile ini dari proyeksi ini ke 1000 sel kotak berukuran sama? dan kemudian secara acak pilih 100 dari mereka dan sorot mereka?Dataset New York yang disediakan dalam pertanyaan tidak lagi tersedia untuk diunduh. Saya menggunakan dataset nc dari paket sf untuk menunjukkan solusi menggunakan paket sf:
sumber
sf
paket. Ini luar biasa!Jika Anda belum melihat paket R raster, ia memiliki alat untuk mengonversi ke / dari objek GIS vektor sehingga Anda harus dapat a) membuat raster (kisi) dengan sel 200x200m dan b) mengonversinya menjadi satu set poligon dengan id logis dari beberapa jenis. Dari sana saya akan melihat paket sp untuk membantu memotong titik dan kisi poligon. Halaman http://cran.r-project.org/web/packages/sp/vignettes/over.pdf ini mungkin merupakan awal yang baik. Berkeliaran melalui dokumen paket sp Anda mungkin dapat mulai dengan kelas SpatialGrid dan hanya melewatkan bagian raster sepenuhnya.
sumber
"Alam semesta SIG" rumit dan memiliki banyak standar yang harus sesuai dengan data Anda. Semua "alat GIS" beroperasi dengan standar GIS . Semua "data GIS serius" hari ini (2014) disimpan dalam database .
Cara terbaik untuk "menggunakan R" dalam konteks GIS, dengan alat FOSS lainnya , tertanam ke dalam SQL. Alat terbaik adalah PostgreSQL 9.X (lihat PL / R ) dan PostGIS .
Anda menjawab:
shp2pgsql
danpgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
, dll Kami perlu memahami lebih baik kebutuhan Anda untuk mengekspresikan menjadi "resep".ST_Centroid()
dari kotak (?) ... Anda dapat mengekspresikan "lebih matematis" jadi saya mengerti.... Mungkin Anda tidak memerlukan konversi raster, hanya matriks poin regurlar-sampel.
Cara primitif adalah menggunakan R tanpa PL / R , dalam kompiler eksternal Anda yang biasa: hanya konversi poligon Anda dan ekspor sebagai bentuk atau sebagai WKT (lihat
ST_AsText
), lalu konversi data dengan awk atau filter lain ke format R.sumber
point.in.polygon
koordinat mana di mana poligon. Masalah saya adalah untuk membagi shapefile asli di sub-poligon tersebut.