Не удается объединить ggplot шейп-файлов, включая полигоны и пространственные точки - PullRequest
0 голосов
/ 11 октября 2019

Я скачал три разных шейп-файла из города Чикаго. Теперь я хотел объединить их и построить их вместе. Только отделения палаты не заговор. '' 'Ошибка: data должен быть фреймом данных или другим объектом, принудительно задаваемым fortify(), а не объектом S4 с классом SpatialPointsDataFrame' ''

Первые два являются полигонами, а третий ориентирован на точку...

это мой код:

#setting directiories
chicagodir = 'Community Areas/'
chicagoshp = paste(chicagodir, "geo_export_b982773b-13a7-4b96-827d-d969f0695777.shp", sep = "")
chicagoread =readOGR(chicagoshp)
plot(chicagoread)


#Wardprecints facilities 
wardprecinctsdir = 'WardPrecincts/'
wardprecinctsshp = paste(wardprecinctsdir, "WardPrecincts.shp", sep = "")
wardprecinctsshpread =readOGR(wardprecinctsshp)
plot(wardprecinctsshpread)

#Ward Offices - Map - Exportable
wardofficesdir = 'Ward Offices - Map - Exportable/'
wardofficesshp = paste(wardofficesdir, "geo_export_b47221aa-0cc1-45db-8a3c-3e6ba72dccf1.shp", sep = "")
wardofficesshpread = readOGR(wardofficesshp)
plot(wardofficesshpread)


chicago_transform <- spTransform(chicagoread, CRS("+proj=longlat +init=epsg:4326"))
wardpre_transform <-spTransform(wardprecinctsshpread, CRS("+proj=longlat +init=epsg:4326"))
wardoff_transform <-spTransform(wardofficesshpread, CRS("+proj=longlat +init=epsg:4326"))


combinedplot = ggplot() +
  geom_path(data = chicago_transform, aes(x = long, y = lat, group = group)) +
  coord_fixed() +
  labs(title = "Plot of Chicago",
       x = "long", y = "lat") +# Because we don't need x and y labels do we?
  #add specific wardprecinctsshpread and wardoffices
  geom_polygon(data=wardpre_transform, aes(x = long, y = lat, group = group, color="red")) +
  geom_polygon(data=wardoff_transform, aes(x = long, y = lat, group = group, color="blue"))
combinedplot
'''

Как мне решить, построение точек для двух многоугольников? Спасибо заранее

1 Ответ

0 голосов
/ 12 октября 2019

Действительно, данные офиса отделения отличаются в баллах. Вы можете просто использовать as.data.frame на SpatialPointsDataFrame для построения графика.

Обратите внимание, что вместо lat и long вам нужны latitude и longitude (в действительности координаты y и x).

В противном случае, дайте мне знать, если вы это имели в виду.

library(rgdal)
library(ggplot2)

chicagoread =readOGR("geo_export_210c4709-68df-496d-8b9c-8f7484608bc9.shp")
plot(chicagoread)

wardprecinctsshpread =readOGR("WardPrecincts.shp")
plot(wardprecinctsshpread)

wardofficesshpread = readOGR("geo_export_10f18171-8b13-4022-8d57-08d3b9bb0027.shp")
plot(wardofficesshpread)

chicago_transform <- spTransform(chicagoread, CRS("+proj=longlat +init=epsg:4326"))
wardpre_transform <- spTransform(wardprecinctsshpread, CRS("+proj=longlat +init=epsg:4326"))
wardoff_transform <- spTransform(wardofficesshpread, CRS("+proj=longlat +init=epsg:4326"))

combinedplot = ggplot() +
  geom_path(data = chicago_transform, aes(x = long, y = lat, group = group)) +
  coord_fixed() +
  labs(title = "Plot of Chicago", x = "long", y = "lat") +
  geom_polygon(data=wardpre_transform, aes(x = long, y = lat, group = group), color="red") +
  geom_point(data=as.data.frame(wardoff_transform), aes(x = longitude, y = latitude), color="blue") +
  theme_bw()

combinedplot

chicago ward offices map

...