Adding Census polygons to OSM map?
Wow, Tim, that is just exactly what I was looking for. I wasn't aware of the tmaptools package at all, but even if I knew of it, I doubt that I could have put the pieces together to solve my problem. Thanks so much for your efforts to help solve my problem. I really appreciate you sharing your knowledge and experience. -Kevin
On 6/8/23 09:07, Howard, Tim G (DEC) wrote:
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 at 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 at zembower.org>; r-sig-geo at 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 at zembower.org>
Sent: Wednesday, June 7, 2023 5:59 PM
To: Howard, Tim G (DEC) <tim.howard at dec.ny.gov>; r-sig-geo at 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 at r-project.org> on behalf of Kevin Zembower via R-sig-Geo <r-sig-geo at r-project.org> Sent: Monday, June 5, 2023 11:21 AM To: r-sig-geo at r-project.org <r-sig-geo at 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 at 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 at 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