Изменение системы координат (CRS) для данных переписных участков - PullRequest
0 голосов
/ 10 июля 2020

Как я могу изменить Систему координат (CRS) для данных переписи населения, чтобы она соответствовала Системе координат (CRS) в шейп-файле округа UCLA Congressional?

Я работаю с пакет sf и данные переписного участка под названием Census_70.1. Данные выглядят следующим образом:

Simple feature collection with 73669 features and 15 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -7115208 ymin: -1685018 xmax: 3321632 ymax: 4591848
epsg (SRID):    NA
proj4string:    +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs

geometry
1  MULTIPOLYGON (((777980.6 -6...
2  MULTIPOLYGON (((797299.6 -6...
3  MULTIPOLYGON (((781590.6 -7...
4  MULTIPOLYGON (((788040.7 -7...
5  MULTIPOLYGON (((782468.1 -7...
6  MULTIPOLYGON (((783828.9 -7...
7  MULTIPOLYGON (((776624.7 -7...
8  MULTIPOLYGON (((775274.6 -7...
9  MULTIPOLYGON (((791123.2 -7...
10 MULTIPOLYGON (((797096.8 -7...

Мне нужно изменить CRS, чтобы он соответствовал шейп-файлу следующего округа Конгресса:

Simple feature collection with 436 features and 19 fields (with 1 geometry empty)
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -179.1473 ymin: 18.91383 xmax: 179.7785 ymax: 71.35256
epsg (SRID):    4269
proj4string:    +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs

Я попытался использовать следующий код для повторного -установите CRS, используя следующий код:

Census_70.2 <- st_transform(st_set_crs(Census_70.1, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"), crs = 4269, check = T) 

Однако, хотя proj4string изменяется на Census_70.2, геометрия остается прежней.

Simple feature collection with 34492 features and 9 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -7115713 ymin: -1295867 xmax: 2146924 ymax: 3476641
epsg (SRID):    NA
proj4string:    +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs

                         geometry
1  MULTIPOLYGON (((777980.6 -6...
2  MULTIPOLYGON (((797299.6 -6...
3  MULTIPOLYGON (((781590.6 -7...
4  MULTIPOLYGON (((788040.7 -7...
5  MULTIPOLYGON (((782468.1 -7...
6  MULTIPOLYGON (((783828.9 -7...
7  MULTIPOLYGON (((776624.7 -7...
8  MULTIPOLYGON (((775274.6 -7...
9  MULTIPOLYGON (((791123.2 -7...
10 MULTIPOLYGON (((797096.8 -7...

Кроме того, запустив код преобразования, он искажает карту из исходного формата в Census_70.1 enter image description here

To this distortion in Census_70.2 введите описание изображения здесь

Что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

target_crs <- st_crs(congressional_district_data)

census_70.2 <- st_transform(census_70.1, target_crs)

Я думаю, это должно сработать, но вы можете проверить этот хороший сайт / книгу Робина Лавлейса «Геокомпьютеры с R», чтобы узнать больше, если это не так Или просто чтобы лучше с этим справиться.

Думаю, у вас был лишний st_set_crs, который вам не понадобился. Насколько я понимаю, функция устанавливает поле объектов CRS (что возвращается st_crs(), но на самом деле ничего не перепроецирует.

https://geocompr.robinlovelace.net/reproj-geo-data.html#reproj -ve c -geom

0 голосов
/ 10 июля 2020

из того, что я понял

library(raster) #it will load also the sp library
destinationcrs <- "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"
Census_70.2 <-  spTransform(Census_70.1,destinationcrs)

...