spTransform(): "Преобразование невозможно из эталонной системы NA"
У меня есть таблица всех остановок и оборотов, которые произошли в 2017 году. Мне даны координаты того, где они произошли, в координатах Лонг-Айленда, но я хочу преобразовать их в координаты широты и долготы, чтобы я мог построить их в Leaflet.
У меня есть следующий фрагмент кода:
library(sp)
library(dplyr)
fd <- "https://www1.nyc.gov/assets/nypd/downloads/excel/analysis_and_planning/stop-question-frisk/sqf-2017.csv"
stop_and_frisk <- read.csv(fd)
saf <- stop_and_frisk %>% filter(STOP_FRISK_ID < 5 ) # filtering to keep data small
saf_spdf <- saf
coordinates(saf_spdf) <- ~STOP_LOCATION_X + STOP_LOCATION_Y
CRS_obj <- CRS('+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs')
spTransform(saf_spdf, CRS_obj)
Я ожидаю, что координаты преобразуются, но вместо этого я получаю сообщение об ошибке
No transformation possible from NA reference system
И я не уверен почему. Я не делал очень много преобразований CRS раньше. Я думаю, что код выше должен в достаточной степени воссоздать проблему
1 ответ
Ваш proj4string
(так же, как CRS) не установлен, поэтому вы получаете ошибку: spTransform(): “No transformation possible from NA reference system”
, Если вы проверите строку proj4string, вы увидите, что она NA
,
> coordinates(saf_spdf) <- ~STOP_LOCATION_X + STOP_LOCATION_Y
> proj4string(saf_spdf)
[1] NA
Вы должны сначала установить proj4string
этого объекта, а затем вы можете преобразовать его в широту leaflet()
принимает.
# make data.frame a spatial object
coordinates(saf_spdf) <- ~STOP_LOCATION_X + STOP_LOCATION_Y
# SET the CRS of the object
proj4string(saf_spdf) <- CRS('the CRS of these coordinates as a character string')
# NOW we can transform to lat/lon
new <- spTransform(saf_spdf, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84"))
# and finally, leaflet will accept this spatial object
new %>% leaflet()