#r #sf #tmap
Вопрос:
У меня есть полигональный объект sf, и мне интересно, как я могу рисовать контурные линии на основе значений столбцов. То, что я хочу понять, — это что-то вроде приведенного ниже (эта карта указана здесь).
Мои данные выглядят так, как показано ниже. Пожалуйста, загрузите данные отсюда. Я хочу нарисовать контурные линии на основе столбца contour
. Мои полигоны идентичны приведенному выше примеру. Есть какие-нибудь мысли?
Simple feature collection with 6 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -88.47322 ymin: 30.22113 xmax: -84.89089 ymax: 35.00802
Geodetic CRS: NAD83
STATE STASD_N STASD_A geometry contour
1 01 110 0110 MULTIPOLYGON (((-87.92697 3... 141
2 01 120 0120 MULTIPOLYGON (((-85.59516 3... 190
3 01 130 0130 MULTIPOLYGON (((-87.91345 3... 76
4 01 140 0140 MULTIPOLYGON (((-87.83804 3... 70
5 01 150 0150 MULTIPOLYGON (((-88.08681 3... 112
6 01 160 0160 MULTIPOLYGON (((-84.99523 3... 167
Вот то, с чем я пробовал tmap
. Существует tm_iso
функция, однако она принимает только пространственные линии. Таким образом, я преобразовал свои полигоны в линии с st_cast
помощью . Смотрите код ниже.
lines <- st_cast(asdsiso, 'MULTILINESTRING')
tm_shape(lines) tm_iso(col = 'contour', text = 'contour')
Тогда я думаю, что, вероятно, смогу объединить полигоны. Таким образом, я попробовал приведенный ниже код. Но карта все та же, за исключением легенды.
linesAgg <- linesAgg %>% group_by(contour2) %>%
summarise(contour2 = mean(contour2))
tm_shape(linesAgg) tm_iso(col = 'contour2', text = 'contour2')
Карта все та же, за исключением легенды.
Комментарии:
1. Просить нас загрузить файл размером 2 МБ и выполнить ваш проект за вас кажется немного чересчур. Вам следует потратить время, чтобы показать, какие усилия по кодированию вы предприняли до сих пор. Наверняка вы уже провели некоторый ввод данных и предварительное сопоставление?
2. И почему бы не показать, какое кодирование вы выбрали, используя примеры, которые находятся на страницах справки функций для загруженных вами пакетов (ну, во всяком случае, еще не в вашем примере).
3. Идеально! Я соответствующим образом отредактировал сообщение. Я действительно ценю ваш вклад!
4. @nniloc Ты прав. Я смог нарисовать эти контурные линии, перейдя на предложенный вами веб-сайт. Оказалось, что мне нужно интерполировать данные в растр (сначала я преобразовал полигоны в точки и интерполировал по точкам). Затем я использую
st_contour
функцию для создания линий из растра.5. Для всех, кто также ищет решение проблемы, вы можете проверить этот пример .