Jak można użyć R do
- podziel plik kształtu na 200 metrów kwadratowych / sub-wielokątów,
- narysuj tę siatkę (w tym numery identyfikacyjne każdego kwadratu) na oryginalnej mapie poniżej, oraz
- ocenić, w którym kwadracie znajdują się współrzędne geograficzne .
Jestem początkującym w GIS i jest to może podstawowe pytanie, ale nie znalazłem samouczka, jak to zrobić w R.
Do tej pory robiłem ładowanie pliku kształtu NYC i wykreślanie przykładowych współrzędnych geograficznych.
Szukam przykładu (kod R), jak to zrobić z danymi poniżej.
# 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
źródło
źródło
Odpowiedzi:
Oto przykład z użyciem
SpatialGrid
obiektu:Teraz możesz użyć zaimplementowanej metody
over
do uzyskania identyfikatorów komórek:Aby wydrukować plik kształtu i siatkę z identyfikatorami komórek:
lub bez koloru / klucza koloru:
źródło
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
czy ktoś ma jakieś sugestie, jak rozbić te pliki kształtu tej projekcji na 1000 równych komórek siatki? a następnie losowo wybierz 100 z nich i wyróżnij je?Zestaw danych z Nowego Jorku podany w pytaniu nie jest już dostępny do pobrania. Korzystam z zestawu danych nc z pakietu sf, aby zademonstrować rozwiązanie za pomocą pakietu sf:
źródło
sf
pakietu. To jest niesamowite!Jeśli nie spojrzałeś na pakiet rastrowy R, ma on narzędzia do konwersji na / z wektorowych obiektów GIS, więc powinieneś być w stanie a) utworzyć raster (siatkę) z komórkami 200x200m ib) przekonwertować go na zestaw wielokątów z jakiś logiczny identyfikator. Stamtąd patrzyłbym na pakiet sp, aby pomóc w przecięciu punktów i siatki wielokątów. Ta http://cran.r-project.org/web/packages/sp/vignettes/over.pdf strona może być dobrym początkiem. Wędrując po dokumentach pakietu sp, możesz zacząć od klasy SpatialGrid i po prostu całkowicie pominąć część rastrową.
źródło
„Wszechświat GIS” jest złożony i ma wiele standardów, że dane muszą być zgodne. Wszystkie „narzędzia GIS” współpracują ze standardami GIS . Wszystkie „poważne dane GIS” dzisiaj (2014) są przechowywane w bazie danych .
Najlepszym sposobem „użycia R” w kontekście GIS, z innymi narzędziami FOSS , jest osadzenie w SQL. Najlepsze narzędzia to PostgreSQL 9.X (patrz PL / R ) i PostGIS .
Ty odpowiedz:
shp2pgsql
ipgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
itp Musimy lepiej zrozumieć Twoje potrzeby, aby wyrazić w „receptury”.ST_Centroid()
kwadratów (?)… Możesz wyrazić „bardziej matematycznie”, więc rozumiem.... Być może nie potrzebujesz żadnej konwersji rastrowej, tylko matrycę punktów próbkowanych regurlarowo.
Prymitywnym sposobem jest użycie R bez PL / R w zwykłym zewnętrznym kompilatorze: konwertuj tylko wielokąty i eksportuj jako kształt lub jako WKT (patrz
ST_AsText
), a następnie konwertuj dane z awk lub innym filtrem do formatu R.źródło
point.in.polygon
którymi współrzędnymi są poszczególne wielokąty. Moim problemem jest podzielenie oryginalnego pliku kształtu na te pod-wielokąty.