Próbuję zrobić to samo, co zadane w tym pytaniu, Cartogram + choropleth map in R, ale zaczynając od SpatialPolygonsDataFrame i mając nadzieję na skończyć z tym samym typem obiektu.Użyj Rcartogramu na obiekcie SpatialPolygonsDataFrame
Mogę zapisać obiekt jako plik kształtu, użyć scapetoad, ponownie go otworzyć i przekonwertować z powrotem, ale wolałbym mieć wszystko wewnątrz R, aby procedura była w pełni powtarzalna, i dzięki temu mogę automatycznie zakodować dziesiątki odmian .
Rozwidlałem kod Rcartogramu na github i dodałem moje dotychczasowe starania here.
Zasadniczo to, co robi to demo, tworzy mapę przestrzenną na mapie, sprawdza gęstość zaludnienia w każdym punkcie siatki i konwertuje ją na macierz gęstości w formacie wymaganym do pracy nad cartogram()
. Jak na razie dobrze.
Ale jak interpolować oryginalne punkty na mapie na podstawie wyników cartogram()
?
Występują tutaj dwa problemy. Pierwszym jest uzyskanie mapy i siatki w tych samych jednostkach, aby umożliwić interpolację. Drugi to dostęp do każdego punktu każdego wielokąta, interpolowanie go i utrzymywanie wszystkich we właściwej kolejności.
Siatka znajduje się w jednostkach gridowych, a mapa jest w rzutowanych jednostkach (w przypadku przykładu z długim). Albo siatka musi być rzutowana na longlat, albo mapa na jednostki siatki. Moją myślą jest wykonanie fałszywego CRS i użycie go razem z funkcją spTransform()
w package(rgdal)
, ponieważ obsługuje to każdy punkt obiektu przy minimalnym zamieszaniu.
Dostęp do każdego punktu jest trudny, ponieważ jest kilka warstw w dół do obiektu SpPDF: obiekt> wielokąty> Wielokąty> linie> współrzędne Myślę, że. Wszelkie pomysły, jak uzyskać do nich dostęp przy zachowaniu nienaruszonej struktury całej mapy?
Właśnie natknąłem się na to pytanie po opublikowaniu [moje własne] (http://stackoverflow.com/questions/32406216/population-weighted-polygon-distortion/) i borykałem się z użyciem samego "Rcartogramu". Do tej pory moją rekomendacją jest użycie ScapeToad; Próbuję zdecydować, czy możliwe jest przeniesienie jego prostoty do samego R – MichaelChirico