[R-sig-Geo] Adding Census polygons to OSM map?
Howard, Tim G (DEC)
t|m@how@rd @end|ng |rom dec@ny@gov
Thu Jun 8 15:07:03 CEST 2023
And I just realized an easier way to get a bounding box for the basemap is to use the spatial information
you already have in the polygon:
basem <- read_osm(bb(rw_tract, ext = 1.5))
The 'ext' option allows you to expand a certain amount beyond the neighborhood polygon.
You can modify it to your liking. And skip the lat/lon shenanigans.
Cheers,
Tim
> -----Original Message-----
> From: R-sig-Geo <r-sig-geo-bounces using r-project.org> On Behalf Of Howard,
> Tim G (DEC) via R-sig-Geo
> Sent: Thursday, June 8, 2023 8:53 AM
> To: Kevin Zembower <kevin using zembower.org>; r-sig-geo using r-project.org
> Subject: Re: [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.
>
>
> 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 <kevin using zembower.org>
> > Sent: Wednesday, June 7, 2023 5:59 PM
> > To: Howard, Tim G (DEC) <tim.howard using dec.ny.gov>; r-sig-geo using 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://cr/
> > >
> an%2F&data=05%7C01%7Ctim.howard%40dec.ny.gov%7Cbe436282b0844b9c
> a99a0
> > >
> 8db681f6989%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C6382182
> 5635
> > >
> 1940428%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> 2luMzIi
> > >
> LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=X4Cm12TD
> 2iIH498
> > > sJlRMPzOFz7IX9XuVdhGX8%2FO0Lv4%3D&reserved=0
> > > .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://cr/
> > >
> an%2F&data=05%7C01%7Ctim.howard%40dec.ny.gov%7Cbe436282b0844b9c
> a99a0
> > >
> 8db681f6989%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C6382182
> 5635
> > >
> 1940428%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> 2luMzIi
> > >
> LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=X4Cm12TD
> 2iIH498
> > > sJlRMPzOFz7IX9XuVdhGX8%2FO0Lv4%3D&reserved=0
> > > .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-bounces using r-project.org> on behalf of Kevin
> > > Zembower via R-sig-Geo <r-sig-geo using r-project.org>
> > > Sent: Monday, June 5, 2023 11:21 AM
> > > To: r-sig-geo using r-project.org <r-sig-geo using 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://st/
> > >
> at%2F&data=05%7C01%7Ctim.howard%40dec.ny.gov%7Cbe436282b0844b9c
> a99a0
> > >
> 8db681f6989%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C6382182
> 5635
> > >
> 1940428%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> 2luMzIi
> > >
> LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=QJgBzdN0a
> pmJ61x
> > > gwFp8pY3WQLOSTjt2YVdJGX681q0%3D&reserved=0
> > > .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 using r-project.org
> > > https://st/
> > >
> at%2F&data=05%7C01%7Ctim.howard%40dec.ny.gov%7Cbe436282b0844b9c
> a99a0
> > >
> 8db681f6989%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C6382182
> 5635
> > >
> 1940428%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> 2luMzIi
> > >
> LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=QJgBzdN0a
> pmJ61x
> > > gwFp8pY3WQLOSTjt2YVdJGX681q0%3D&reserved=0
> > > .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 using r-project.org
> https://stat.e/
> thz.ch%2Fmailman%2Flistinfo%2Fr-sig-
> geo&data=05%7C01%7Ctim.howard%40dec.ny.gov%7Cbe436282b0844b9ca9
> 9a08db681f6989%7Cf46cb8ea79004d108ceb80e8c1c81ee7%7C0%7C0%7C6382
> 18256351940428%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
> CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sd
> ata=%2FAyGIrey3G6HOOv3rWGC02L7LJCJ5NSaDnhqEvq8C2I%3D&reserved=
> 0
More information about the R-sig-Geo
mailing list