Я пытаюсь сделать то же самое, заданное в этом вопросе, Cartogram + choropleth map in R, но начиная с SpatialPolygonsDataFrame и надеясь получить тот же тип объекта.Использование Rcartogram на объекте SpatialPolygonsDataFrame
Я мог бы сохранить объект в виде шейп-файла, использовать scapetoad, снова открыть его и преобразовать обратно, но я предпочел бы все это внутри R, чтобы процедура была полностью воспроизводимой, и чтобы я мог кодировать десятки вариантов автоматически ,
Я раскодировал код Rcartogram на github и добавил свои усилия до сих пор here.
По существу, эта демонстрация создает SpatialGrid по карте, просматривает плотность населения в каждой точке сетки и преобразует ее в матрицу плотности в формате, который необходим для работы cartogram()
. Все идет нормально.
Но как интерполировать исходные точки карты на основе вывода cartogram()
?
Здесь есть две проблемы. Первый заключается в том, чтобы получить карту и сетку в одни и те же единицы, чтобы обеспечить интерполяцию. Второй - доступ к каждой точке каждого многоугольника, интерполирование и сохранение всех в правильном порядке.
Сетка находится в единицах сетки, а карта находится в проецируемых единицах (в случае примера длинной латы). Либо сетка должна быть проецирована в длинную, либо карту в единицы сетки. Моя мысль состоит в том, чтобы сделать поддельную CRS и использовать ее вместе с функцией spTransform()
в package(rgdal)
, так как она обрабатывает каждую точку объекта с минимальной суматохой.
Доступ к каждой точке затруднен, потому что они несколько слоев вниз в объект SpPDF: объект> полигоны> Полигоны> линии> координаты, которые я думаю. Любые идеи, как получить доступ к ним, сохраняя при этом структуру общей карты нетронутой?
Я только что наткнулся на этот вопрос после публикации [мой собственный] (http://stackoverflow.com/questions/32406216/population-weighted-polygon-distortion/) и борется с использованием самой «Rcartogram». Пока что моя рекомендация - использовать ScapeToad; Я пытаюсь решить, возможно ли мне передать его простоту в R самостоятельно – MichaelChirico