Используйте Rcartogram для объекта SpatialPolygonsDataFrame
Я пытаюсь сделать то же самое, заданное в этом вопросе,Картограмма + картографическая карта в R, но начиная с SpatialPolygonsDataFrame и надеясь получить такой же тип объекта.
Я мог бы сохранить объект как шейп-файл, использоватьscapetoad, открыть его и преобразовать обратно, но я бы предпочел, чтобы все это было в R, чтобы процедура была полностью воспроизводимой, и чтобы я мог автоматически кодировать десятки вариантов.
Я раздвоил код Rcartogram на github и добавил свои усилияВот.
По сути, эта демонстрация создает SpatialGrid на карте, ищет плотность населения в каждой точке сетки и преобразует ее в матрицу плотности в формате, необходимом дляcartogram()
работать на. Все идет нормально.
Но, как интерполировать исходные точки карты на основе выходных данныхcartogram()
?
Здесь есть две проблемы. Во-первых, чтобы получить карту и сетку в тех же единицах, чтобы позволить интерполяцию. Второе - это получить доступ к каждой точке каждого многоугольника, интерполировать ее и держать все в правильном порядке.
Сетка указана в единицах сетки, а карта в проецируемых единицах (в случае примера longlat). Либо сетка должна быть спроецирована в longlat, либо карта в единицах сетки. Моя мысль состоит в том, чтобы сделать поддельный CRS и использовать его вместе сspTransform()
функция вpackage(rgdal)
, поскольку это обрабатывает каждую точку в объекте с минимальной суетой.
Доступ к каждой точке затруднен, потому что они представляют собой несколько слоев вниз в объект SpPDF: объект> полигоны> полигоны> линии> координаты, я думаю. Любые идеи, как получить к ним доступ при сохранении структуры карты в целом?