Background

We need to find a suitable location for a new IKEA store in Boston, MA. Using data from GIS sources, we need to make sure the location fits the following criteria: 1. The store is located in census tracts with appropriate median income (25,000-80,000) and household value (200,000-500,000) 2. The store will be built in the current “OpenLand” areas 3. The store should be within 2000ft of the major roads 4. The store should be at least 200,000 sq ft.

Data and Methods

  1. We used GIS data for Boston census tracts, land usage, and major roads. First load the necessary packages and data. We filtered the tracts to exclude the bodies of water (where median house value is 0.)
  2. Examine the data.
library(tidyverse)
library(sf)
library(tmap)
tractsAll = read_sf("Data_CS05/Boston_CensusTracts.shp") %>% filter(Med_HouseV > 0)
land_use = read_sf("Data_CS05/Boston_LandUse.shp")
roads = read_sf("Data_CS05/Boston_MajorRoads.shp")
head(tractsAll)
head(land_use)
head(roads)
  1. Filter the census data for the range of Med_Income as 25,000-80,000 and the range of Med_HouseV as 200,000-500,000.
tracts = tractsAll %>% filter(Med_Income %in% (25000:80000), Med_HouseV %in% (200000:500000))
head(tracts)
  1. Filter the land use data for just ‘Open Land’ value forLU05_DESC.
land_use = land_use %>% filter(LU05_DESC == "Open Land")
head(land_use)
  1. Create a buffer zone for the major roads in Boston with distance of 2000ft using st_buffer().
buffer = st_buffer(land_use, 2000)
  1. Get intersections of all selected areas from steps 3-5 using st_intersection().
inter = tracts %>% st_intersection(land_use) %>% st_intersection(buffer) %>% st_union() %>% st_cast("POLYGON")
head(inter)
  1. Calculate area of unioned polygons using st_area().
area = st_area(inter)
head(area)
length(area)
  1. Select the polygons with area >200,000 sq ft.
candidates = inter[as.integer(area) > 200000]
length(candidates)
head(candidates)

Results

  1. Produce the map with the final candidate polygons, and some other features on the map to provide context (e.g. Boston census tracts with median household value in the census tract).
  2. Make sure you also have all essential graph elements, such as title, subtitle, legends, labels, propercolors, font and size and etc. You may want to adjust xlim and ylim to focus on the final candidate polygons on the map
ggplot(data = tractsAll) + 
  geom_sf(aes(fill = Med_Income)) + 
  geom_sf(data = candidates, fill = "green") + 
  # geom_sf(data = roads, col = "red")
  labs(title = "Candidates for Boston IKEA Store", subtitle = "Locations selected based on median income/house value, area, and proximity to major roads, must currently be open land", fill = "Median Income", caption = "Green regions are potential locations for new store")

Conclusion

We found 20 candidates for the location of the new Boston IKEA store. They are mostly located in the northern area of Boston, though there are a few on the Eastern border of the city, with one candidate in the central area of the city. To narrow it down even further, we could potentially examine these locations’ proximity to large urban centers, which may be more suited to having an IKEA store since those areas already have frequent shoppers.