Расслоение полигонов и точек расположения в г - PullRequest
0 голосов
/ 12 сентября 2018

Оклахома недавно легализовала медицинскую марихуану, и я делаю карту того, где можно создать диспансеры.Это зависит от двух вещей: оно должно быть в правильной зоне зонирования и не может быть слишком близко к школе, церкви или детской площадке.У меня есть две карты, которые показывают эти вещи, но я не могу понять, как их объединить.Я пытаюсь добиться того, чтобы показать, какая часть правильной зоны зонирования запрещена, потому что она находится слишком близко к школе, церкви и т. Д.

Код зонирования:

zoning_shapes <- "Primary_Zoning.shp"
zoning <- st_read(zoning_shapes)
library(dplyr)
zoning_1 <- filter(zoning, P_ZONE!="R-1")
zoning_2 <- filter(zoning_1, P_ZONE!="SPUD")
zoning_3 <- filter(zoning_2, P_ZONE!="AA")
zoning_4 <- filter(zoning_3, P_ZONE!="R-2")
zoning_5 <- filter(zoning_4, P_ZONE!="R-4")
zoning_6 <- filter(zoning_5, P_ZONE!="PUD")
zoning_7 <- filter(zoning_6, P_ZONE!="I-3")
zoning_8 <- filter(zoning_7, P_ZONE!="R-A")
zoning_9 <- filter(zoning_8, P_ZONE!="O-1")
zoning_10 <- filter(zoning_9, P_ZONE!="R-3")
zoning_11 <- filter(zoning_10, P_ZONE!="R-A2")
zoning_12 <- filter(zoning_11, P_ZONE!="R-1ZL")
zoning_13 <- filter(zoning_12, P_ZONE!="R-3M")
zoning_14 <- filter(zoning_13, P_ZONE!="R-4M")
zoning_15 <- filter(zoning_14, P_ZONE!="R-MH-1")
zoning_16 <- filter(zoning_15, P_ZONE!="R-MH-2")
zoning_17 <- filter(zoning_16, P_ZONE!="C-HC")
zoning_18 <- filter(zoning_17, P_ZONE!="HP")
zoning_19 <- filter(zoning_18, P_ZONE!="NC")
zoning_20 <- filter(zoning_19, P_ZONE!="AE-1")
zoning_21 <- filter(zoning_20, P_ZONE!="AE-2")
library(ggplot2)
library(sf)
ggplot(zoning_21) + geom_sf() +
  theme_void() +
  theme(panel.grid.major = 
          element_line(colour = 'transparent'))

Код запрещенного местоположения:

library(dplyr)
library(tigris)
library(sf)
library(ggplot2)
library(leaflet)
library(readr)
locations <- read_csv("Marijuana_map_CSV.csv")
View(locations)
mew <- colorFactor(c("red", "blue", "purple"), domain=c("School", "Church", "Playground"))
okc_locations <- leaflet(locations) %>%
  addTiles() %>%
  setView(-97.5164, 35.4676, zoom = 7) %>% 
  addCircles(~Longitude, ~Latitude, popup=locations$Name, 
             weight = 3, radius=304.8, 
             color=~mew(locations$Type), stroke = T, 
             fillOpacity = 0.8) %>%
  addPolygons(data=zoning_21, fillColor = "limegreen",
              fillOpacity = 0.5, weight = 0.2,
              smoothFactor = 0.2)
okc_locations

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь добавить код okc_locations в код zoning_21, я получаю одну красную точку, которая находится далеко и очень сжатаяверсия о районировании города.Когда я пытаюсь добавить полигоны зонирования на карту запрещенных точек, они не отображаются.

Есть идеи, как заставить эти две карты играть вместе?Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Судя по нашему разговору в комментариях, кажется, что у вас возникла проблема с другими проекциями, в этом случае вы захотите использовать st_transform (задокументировано здесь )

Сначала я выдумал поддельные данные:

locations <-
  data.frame(Name = c("St. Josephs", "St. Anthony", "Edwards Elementary"),
              type = c("Church", "Playground", "School"),
              long = c(35.4722725, 35.4751038, 35.4797194),
              lat = c(-97.5202865,-97.5239513,-97.4691759))

Я скачал шейп-файлы тигров для всех округов, а затем сузился до округа Оклахома:

us_counties <- read_sf("cb_2017_us_county_500k.shp")
ok_county <- subset(us_counties, STATEFP == "40" & NAME == "Oklahoma")

> print(st_crs(ok_county))
Coordinate Reference System:
  EPSG: 4269 
  proj4string: "+proj=longlat +datum=NAD83 +no_defs"

Так что я тогда использовал st_transform:

t2 <- st_transform(ok_county, "+proj=longlat +datum=WGS84")
> print(st_crs(t2))
Coordinate Reference System:
  EPSG: 4326 
  proj4string: "+proj=longlat +datum=WGS84 +no_defs"

И загружаем его в leaflet так:

leaflet(locations) %>%
  addTiles() %>%
  setView(-97.5164, 35.4676, zoom = 11) %>% 
  addMarkers(~lat, ~long, popup=locations$Name) %>%
  addPolygons(data=t2, fillColor = "limegreen",
              fillOpacity = 0.5, weight = 0.2,
              smoothFactor = 0.2)

Выводит эту карту: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...