Kevin, To get the basemap in plot mode you need to download the tiles using read_osm. This works for me, I Simplified a bit:
library(sf) library(tmap) library(tigris) options(tigris_use_cache = TRUE) library(tmaptools) ## Get an example census map: rw_tract <- tracts(state = "MD", county = "Baltimore city", year = "2020") rw_tract <- rw_tract[rw_tract$NAME == "2711.01",] # for some reason had to re-jigger the box a bit. # also note your longitudes were backwards. lat_max <- 39.36 long_min <- -76.63 lat_min <- 39.34 long_max <- -76.60 bbox <- bb(c(xmin=long_min, ymin=lat_min, xmax=long_max, ymax=lat_max)) basem <- read_osm(bbox) tmap_mode("plot") myMap <- tm_shape(basem) + tm_rgb() + tm_shape(rw_tract) + tm_polygons(alpha = 0.2, col = "green") + tm_scale_bar() + tm_layout(title = "Radnor-Winston Neighborhood") # check it out myMap # save it. tmap_save(myMap, "c:/temp/myMapOut.jpg") Hope that helps. Tim > -----Original Message----- > From: Kevin Zembower <ke...@zembower.org> > Sent: Wednesday, June 7, 2023 5:59 PM > To: Howard, Tim G (DEC) <tim.how...@dec.ny.gov>; r-sig-geo@r- > project.org > Subject: Re: Adding Census polygons to OSM map? > > ATTENTION: This email came from an external source. Do not open > attachments or click on links from unknown senders or unexpected emails. > > > Tim, thank you very much. Yes, tmap seems to be moving in the right > direction for me. This is what I can do with it so far: > ===================================== > ## Trying with tmap: > library(tidyverse) > library(sf) > library(tmap) > library(terra) > library(spData) > library(spDataLarge) > library(tigris) > options(tigris_use_cache = TRUE) > library(OpenStreetMap) > > ## Get an Open Street Map: > rw_map <- openmap(nw, se, > type = "osm", > mergeTiles = TRUE) %>% > openproj(projection = "+proj=longlat +ellps=WGS84 +datum=WGS84 > +no_defs") > > ## Get an example census map: > rw_tract <- tracts(state = "MD", > county = "Baltimore city", > year = "2020") %>% > filter(NAME == "2711.01") > > ttm() > > ## Quick Tmap; also works: > qtm(rw_tract) > > ## Also works. _polygons combines _fill and _borders: > tm_shape(rw_tract) + > tm_polygons() > > ## Works: > tm_shape(rw_tract) + > tm_polygons(alpha = 0.2, col = "green") + > tm_scale_bar() + > tm_layout(title = "Radnor-Winston Neighborhood") + > tm_basemap(server = "OpenStreetMap") > > ======================================= > > So, in that last example, I can plot the basemap from Open Street Maps with > the Census tract on top of it. However, from what I've learned so far (just > about 4 hours of study), tm_basemap() only works with interactive maps > that are 'viewed' (in a browser as HTML) rather than plotted (printed). I > don't > understand why I can't just get the appearance I want without all the > unwanted interactivity features. > > To take it a step further, I don't understand why I can't just plot both the > basemap and the census tract with something like plot() (from > ggplot) and sf. > > Thanks, again, Tim, for your suggestion. I think it's moving me in the right > direction. > > -Kevin > > On 6/7/23 10:57, Howard, Tim G (DEC) wrote: > > Kevin, > > the tmap​ package might be what you are looking for. > > > > https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcran > > .r-project.org%2Fweb%2Fpackages%2Ftmap%2Fvignettes%2Ftmap- > getstarted.h > > > tml&data=05%7C01%7Ctim.howard%40dec.ny.gov%7C4d3f99e6eeff4493a3a > 108db6 > > > 7a26858%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C63821771946 > 393381 > > > 9%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzI > iLCJBTiI6 > > > Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=MY4b3C%2Bqm7w > ycxiX%2F3ww5 > > zMLltw59fmCgQTAeSxGu60%3D&reserved=0 > > > > https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcran > > .r- > project.org%2Fweb%2Fpackages%2Ftmap%2Findex.html&data=05%7C01%7 > Ctim > > > .howard%40dec.ny.gov%7C4d3f99e6eeff4493a3a108db67a26858%7Cf46cb8e > a7900 > > > 4d108ceb80e8c1c81ee7%7C0%7C0%7C638217719463933819%7CUnknown%7 > CTWFpbGZs > > > b3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn > 0%3D > > > %7C3000%7C%7C%7C&sdata=R61uJO4g0WW1GLh47uXGCB%2FX6%2B9grO4 > WYue3XxkfdQ0 > > %3D&reserved=0 > > > > > > Cheers, > > Tim > > > > From: R-sig-Geo <r-sig-geo-boun...@r-project.org> on behalf of Kevin > > Zembower via R-sig-Geo <r-sig-geo@r-project.org> > > Sent: Monday, June 5, 2023 11:21 AM > > To: r-sig-geo@r-project.org <r-sig-geo@r-project.org> > > Subject: [R-sig-Geo] Adding Census polygons to OSM map? > > > > ATTENTION: This email came from an external source. Do not open > attachments or click on links from unknown senders or unexpected emails. > > > > > > Hello, again, > > > > I've given up my work with leaflet, trying to map my neighborhood with > > US Census boundaries. Even though it was quick and easy to add the > > Census boundaries to the map, I couldn't create the labels I wanted > > (see > > https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat > > .ethz.ch%2Fpipermail%2Fr-sig-geo%2F2023- > June%2F029284.html&data=05%7C01%7Ctim.howard%40dec.ny.gov%7C4d3f > 99e6eeff4493a3a108db67a26858%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7 > C0%7C0%7C638217719464245369%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi > MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C300 > 0%7C%7C%7C&sdata=pQUYMZs%2FRsLeotKUB0XduKCkpq6Ir0Vq3VPsAZ8eT > Yk%3D&reserved=0). Also, it seems like leaflet added a lot of overhead that I > didn't need, such as interactive maps. I just need a color printed 2D map for > my use. > > > > I'm now trying to work with tigris and OpenStreetMap, but I can't draw > > the US Census boundaries on the OSM map. Here's what I have so far: > > > > ================================================== > > ## Experiment, using sf: > > library(tidyverse) > > library(tigris) > > options(tigris_use_cache = TRUE) > > library(sf) > > library(OpenStreetMap) > > ## library(sp) > > ## library(ggplot2) > > > > lat_max <- 39.3525 #Distance from 39.35 to 39.34 = 0.691mi long_max <- > > -76.617 #Distance from -76.61 to -76.62 = 0.5343 mi lat_min <- 39.3455 > > long_min <- -76.6095 nw <- c(lat_max, long_max) se <- c(lat_min, > > long_min) > > > > rw_map <- openmap(nw, se, > > type = "osm", > > mergeTiles = TRUE) %>% > > openproj() %>% > > OpenStreetMap::autoplot.OpenStreetMap() + > > xlab("long") + ylab("lat") > > > > rw_map > > > > rw_tract <- tracts(state = "MD", > > county = "Baltimore city", > > year = "2020") %>% > > filter(NAME == "2711.01") > > ## openproj() > > ## st_transform('+proj=longlat +datum=WGS84') > > ## spTransform('osm') > > > > OpenStreetMap::autoplot.OpenStreetMap(rw_tract, add = TRUE) > > ================================================== > > > > The commented out sections show some of the things I've tried so far. > > I'd like to be able to draw the rw_tract geometry data on the rw_map > > image. What I'd like is a 'addPolygon()' function in OpenStreetMap, > > like I found in leaflet. > > > > Can anyone offer me any suggestions or advice for accomplishing my task? > > Thanks so much. > > > > -Kevin > > > > _______________________________________________ > > R-sig-Geo mailing list > > R-sig-Geo@r-project.org > > https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat > > .ethz.ch%2Fmailman%2Flistinfo%2Fr-sig- > geo&data=05%7C01%7Ctim.howard%40 > > > dec.ny.gov%7C4d3f99e6eeff4493a3a108db67a26858%7Cf46cb8ea79004d108c > eb80 > > > e8c1c81ee7%7C0%7C0%7C638217719464245369%7CUnknown%7CTWFpbGZs > b3d8eyJWIj > > > oiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3 > 000%7C > > > %7C%7C&sdata=RVBbcRMpZINzm0yoMZuwfisK575l3hiQzYSAUiG9U4E%3D&r > eserved=0 _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo