У меня проблемы с запуском вашего кода, потому что, если я передаю фрейм данных, он выдает ошибку
Error in UseMethod("st_crs<-") :
no applicable method for 'st_crs<-' applied to an object of class "data.frame"
>
Полагаю, вы как-то читаете это во фрейм пространственных данных. Также ваша целевая строка проекции кажется сломанной. Я покажу вам, как я это сделаю:
Во-первых, с данными в текстовом файле (например, long-lat):
-75.35843 40.12232
-75.36189 40.12347
-75.36404 40.12456
-75.37228 40.1287
Я бы прочитал это с:
> pts = read.table("latlong.txt",head=FALSE)
> head(pts)
V1 V2
1 -75.35843 40.12232
2 -75.36189 40.12347
3 -75.36404 40.12456
4 -75.37228 40.12870
5 -75.37835 40.13243
6 -75.38479 40.13835
Затем используйте функции пакета sf
, чтобы превратить его в точки с помощью системы координат EPSG: 4326 - общие координаты GPS:
> pts2 = st_as_sf(pts, coords=c(1,2), crs=4326)
> pts2
Simple feature collection with 14 features and 0 fields
geometry type: POINT
dimension: XY
bbox: xmin: -75.43579 ymin: 40.12232 xmax: -75.35843 ymax: 40.17576
epsg (SRID): 4326
proj4string: +proj=longlat +datum=WGS84 +no_defs
First 10 features:
geometry
1 POINT (-75.35843 40.12232)
2 POINT (-75.36189 40.12347)
3 POINT (-75.36404 40.12456)
4 POINT (-75.37228 40.1287)
5 POINT (-75.37835 40.13243)
6 POINT (-75.38479 40.13835)
7 POINT (-75.38961 40.14198)
8 POINT (-75.39536 40.14724)
9 POINT (-75.40018 40.15457)
10 POINT (-75.40614 40.15849)
Теперь я могу преобразовать в любую другую систему координат. Ваша цель, кажется, EPSG: 6564 (WKID: 6564 Authority: EPSG
) (http://epsg.io/6564), хотя вы также упоминаете 3702, который, похоже, связан с Вайомингом ...).
> st_transform(pts2, 6564)
Simple feature collection with 14 features and 0 fields
geometry type: POINT
dimension: XY
bbox: xmin: 797083.4 ymin: 90364.93 xmax: 803830.7 ymax: 96120.91
epsg (SRID): 6564
proj4string: +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs
First 10 features:
geometry
1 POINT (803830.7 90364.93)
2 POINT (803532.4 90484.59)
3 POINT (803345.9 90600.62)
4 POINT (802631.5 91041.2)
5 POINT (802103.2 91441.3)
6 POINT (801536.9 92083.67)
7 POINT (801115.5 92475.59)
8 POINT (800610.2 93046.34)
9 POINT (800177.9 93849)
10 POINT (799658.8 94270.61)
>
и эти точки не совпадают с теми, которые вы дали для вашего кода R или ARCGis, предполагая, что заданные вами широты и долготы должны соответствовать преобразованным координатам X-Y, которые вы дали.
Я бы с полной уверенностью сказал, что числа, которые я привел выше, это EPSG: координаты 6564 EPSG: координаты длиной 4326 лат в источнике.
Также мне удалось исправить вашу разбитую проекционную строку:
proj <- "+lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0 +y_0=0 +proj=lcc +ellps=GRS80 +datum=NAD83 +units=m"
и это дает те же результаты, что и EPSG: 6564.
Не имея возможности запустить ваш код и воспроизвести ваши результаты, я не уверен, в чем проблема, но мой код состоит в том, как я это сделаю, и я уверен, что это правильно.