Добавление строк состояния к геокодированным данным

#r #geolocation #maps #geospatial

#r #геолокация #Карты #геопространственный

Вопрос:

Я строю данные с геокодированием с помощью функции mapview . Пример моего кода гласит:

 locations_sf <- st_as_sf(locations, coords = c("LONGITUDE", "LATITUDE"), crs = 4326)
mapview(locations_sf,cex=locations$FR,color="black",legend = FALSE,label=locations$NAME)
  

Пока это работает нормально. Однако мои данные из США, и я хотел бы добавить линии состояния на карту. До сих пор я не нашел, как это сделать в mapview . Есть предложения?

Ответ №1:

Хороший вопрос. Вероятно, наиболее важные вещи, которые следует учитывать перед началом, — это то, откуда вы получаете свои геоданные и какой тип геоданных вы хотите использовать.

Доступно множество источников набора данных, и большинство пакетов R имеют некоторые отображаемые goedata. Отличный источник геоданных — с веб-сайта:

https://gadm.org/data.html

Этот веб-сайт предоставляет большой выбор геоданных. Чтобы получить данные для США с границами штатов, выберите США из выпадающего списка страны, а затем выберите USA_1 для требуемого уровня детализации. USA_0 не показывает границы отдельных штатов, USA_1 показывает границы штатов, а USA_2 показывает границы округа и штата.

Вам нужно будет решить, какой из двух обычно используемых типов геоданных вы хотите: sp или sf. Я выбрал тип данных sf для этого примера, потому что данные sf просты в использовании. Данные, показанные в вашем примере, были преобразованы из sp в формат sf.

После загрузки файла, чтения и присвоения переменной штаты Гавайи и Аляска удаляются из данных. Это упрощает использование карты, содержащей только континентальные 48 штатов.

После этого данные отображаются с помощью mapview(), и открывается вкладка браузера с отображением карты. Здесь не использовался ни один из параметров форматирования mapview(). Код следует:

 df_1 <- readRDS("C:/python/datasets/GADM_Maps/US/gadm36_USA_1_sf.rds")
head(df_1, 3)
df49 <- df_1[df_1$NAME_1 != "Alaska", ]                       # remove AK from data
df48 <- df49[df49$NAME_1 != "Hawaii", ]                       # remove HI from data

mapview(df48$geom)
  

Страницу браузера mapview можно просмотреть по этой ссылке:

Комментарии:

1. Спасибо за очень подробный ответ! Это очень полезно.