我使用ggplot2
, ggspatial
和制作了地图sf
。我使用ggspatial
这样我就可以下载开源基础地图,而无需依赖 Google 并且需要 API 密钥。该ggspatial
annotation_map_tile
调用会下载一组提供基本地图的图块。我正在尝试将我感兴趣的州以外的地图涂白,以便底图仅显示在州内。
这是我的代码。dput
对象的sf
位于底部。当你运行它时,你会看到一张新墨西哥州的地图,上面有一条黑线勾勒出该州的轮廓。我想让地图在州外变成白色。
library(ggplot)
library(ggspatial)
library(sf)
ggplot() +
annotation_map_tile(zoom = 7, type = "hikebike") +
geom_sf(data = sf, fill = NA, color = "black", lwd = 2)
我尝试了两件事。首先,我虽然想以某种方式反转 fill 参数geom_sf
,但不认为有办法做到这一点。我的另一个尝试是将所有州都包括在一个额外的geom_sf
电话中并填充那些白色。这可能行得通,但它需要下载超过 4,000 个地图图块,我想避免这种情况,即使可以使用cachedir
参数保存地图图块。
sf <- structure(list(GEOID = "35", geometry = structure(list(structure(list(
list(structure(c(-109.050044, -109.050173, -109.049843, -109.049813,
-109.049112, -109.049195, -109.048763, -109.049106, -109.048769,
-109.04859, -109.048599, -109.048731, -109.048296, -109.048286,
-109.047612, -109.047653, -109.047653, -109.047645, -109.047638,
-109.047117, -109.04748, -109.047453, -109.046905, -109.047013,
-109.047117, -109.047116, -109.047237, -109.04747, -109.046827,
-109.046909, -109.047045, -109.04687, -109.046564, -109.047298,
-109.046662, -109.047145, -109.046426, -109.047006, -109.046182,
-109.046182, -109.046156, -109.046086, -109.045363, -109.046104,
-109.045624, -109.046072, -109.045851, -109.046084, -109.046796,
-109.046481, -109.046509, -109.046296, -109.046295, -109.046024,
-109.046055, -109.046054, -109.046011, -109.045973, -109.045729,
-109.046183, -109.045431, -109.045433, -109.045407, -109.045272,
-109.045244, -109.045223, -108.958868, -108.954404, -108.620309,
-108.619689, -108.320721, -108.320464, -108.2884, -108.288086,
-108.250635, -108.249358, -108.000623, -107.420913, -106.877292,
-106.869796, -106.750591, -106.675626, -106.661344, -106.628733,
-106.628652, -106.617125, -106.617159, -106.500589, -106.343139,
-106.293279, -106.248675, -106.247705, -106.201469, -106.006634,
-105.997472, -105.996159, -105.716471, -105.66472, -105.62747,
-105.533922, -105.512485, -105.508836, -105.465182, -105.447255,
-105.442459, -105.41931, -105.251296, -105.220613, -105.1208,
-105.029228, -105.000554, -104.73212, -104.732031, -104.645029,
-104.625545, -104.624556, -104.519257, -104.338833, -104.250536,
-104.007855, -103.734364, -103.733247, -103.155922, -103.002199,
-103.002247, -103.001964, -103.002198, -103.002518, -103.002252,
-103.002188, -103.002565, -103.002434, -103.041924, -103.041745,
-103.041674, -103.040824, -103.041305, -103.042186, -103.041716,
-103.041917, -103.041146, -103.041554, -103.042366, -103.042775,
-103.042497, -103.042377, -103.042366, -103.042339, -103.042395,
-103.042568, -103.042711, -103.0426, -103.04252, -103.043261,
-103.042642, -103.042521, -103.042781, -103.04277, -103.042769,
-103.042827, -103.043286, -103.043072, -103.043594, -103.043589,
-103.043588, -103.043582, -103.043538, -103.043583, -103.043611,
-103.043585, -103.043613, -103.043613, -103.043614, -103.04363,
-103.043693, -103.043919, -103.043944, -103.043946, -103.043979,
-103.043936, -103.043719, -103.043644, -103.043569, -103.043516,
-103.043686, -103.043744, -103.043767, -103.043721, -103.043771,
-103.043746, -103.043555, -103.043531, -103.043617, -103.04395,
-103.044893, -103.045698, -103.045644, -103.046907, -103.047346,
-103.049096, -103.049608, -103.050148, -103.050532, -103.051087,
-103.051535, -103.051363, -103.051664, -103.05261, -103.056655,
-103.057487, -103.057856, -103.059242, -103.05972, -103.060103,
-103.063905, -103.06398, -103.064452, -103.064625, -103.064679,
-103.064657, -103.064569, -103.064701, -103.064862, -103.064807,
-103.064916, -103.064889, -103.064672, -103.064699, -103.064711,
-103.064698, -103.064807, -103.064827, -103.064799, -103.064798,
-103.064864, -103.064633, -103.064815, -103.064761, -103.064788,
-103.064761, -103.064696, -103.064422, -103.064348, -103.064344,
-103.064423, -103.085876, -103.088698, -103.215641, -103.267633,
-103.267708, -103.270383, -103.278521, -103.326501, -103.748317,
-103.875476, -103.980179, -104.024521, -104.531756, -104.531937,
-104.640918, -104.643526, -104.918272, -105.077046, -105.078605,
-105.11804, -105.131377, -105.132916, -105.14824, -105.15031,
-105.153994, -105.390396, -105.427049, -105.428582, -105.429281,
-105.731362, -105.750527, -105.854061, -105.886159, -105.9006,
-105.998003, -106.125534, -106.18184, -106.200699, -106.205915,
-106.313307, -106.376861, -106.394298, -106.411075, -106.565142,
-106.566056, -106.587972, -106.595333, -106.598639, -106.599096,
-106.618486, -106.619448, -106.623568, -106.631182, -106.636492,
-106.639529, -106.638186, -106.630114, -106.626466, -106.623216,
-106.621873, -106.619569, -106.618745, -106.619371, -106.620454,
-106.624299, -106.625535, -106.625123, -106.622819, -106.617708,
-106.614702, -106.616136, -106.623659, -106.622377, -106.622117,
-106.622529, -106.625322, -106.629747, -106.628663, -106.623933,
-106.611846, -106.614346, -106.623445, -106.625947, -106.633668,
-106.64084, -106.645479, -106.645646, -106.645296, -106.6429,
-106.638154, -106.633927, -106.630692, -106.629197, -106.630799,
-106.634873, -106.63588, -106.635926, -106.627808, -106.625763,
-106.621857, -106.614637, -106.605845, -106.605245, -106.602045,
-106.601945, -106.605267, -106.602727, -106.593826, -106.589045,
-106.588045, -106.582144, -106.581344, -106.577244, -106.570944,
-106.566844, -106.563444, -106.562945, -106.558444, -106.547144,
-106.545344, -106.544714, -106.542144, -106.542097, -106.535843,
-106.535343, -106.535154, -106.534743, -106.533043, -106.533,
-106.53248, -106.530515, -106.527943, -106.527738, -106.527623,
-106.527997, -106.528543, -106.528543, -106.750547, -106.750547,
-106.993544, -106.998235, -107.00056, -107.00056, -107.296824,
-107.422246, -107.422495, -108.208394, -108.208087, -108.208521,
-108.208572, -108.208573, -108.707657, -108.788711, -108.851105,
-108.861028, -109.050044, 31.332502, 31.480004, 31.499515,
31.499528, 31.636598, 31.796551, 31.810776, 31.843715, 31.861383,
31.870791, 32.013651, 32.028174, 32.084093, 32.089114, 32.426377,
32.681379, 32.686327, 32.689988, 32.693439, 32.77757, 33.06842,
33.069427, 33.091931, 33.092917, 33.137559, 33.137995, 33.208965,
33.250063, 33.365272, 33.36557, 33.36928, 33.372654, 33.37506,
33.409783, 33.625055, 33.74001, 33.875052, 34.00005, 34.522393,
34.522553, 34.579291, 34.771016, 34.785406, 34.799981, 34.814226,
34.828566, 34.959718, 35.250025, 35.363606, 35.546326, 35.54644,
35.614251, 35.616517, 35.8798, 35.888721, 35.92586, 35.925896,
36.002338, 36.117028, 36.181751, 36.500001, 36.874589, 36.874998,
36.968871, 36.969489, 36.999084, 36.998913, 36.998906, 36.999287,
36.999249, 36.99951, 36.999499, 36.99952, 36.999555, 36.999561,
36.999015, 37.000001, 37.000005, 37.000139, 36.992426, 36.992461,
36.993123, 36.993243, 36.993161, 36.993175, 36.993004, 36.992967,
36.993768, 36.99423, 36.99389, 36.994288, 36.994266, 36.994122,
36.995343, 36.995417, 36.995418, 36.995849, 36.995874, 36.995679,
36.995875, 36.995777, 36.995895, 36.995991, 36.996017, 36.995994,
36.995856, 36.995605, 36.995169, 36.995428, 36.992729, 36.993264,
36.993484, 36.993447, 36.993378, 36.993599, 36.994377, 36.993766,
36.993535, 36.994644, 36.996239, 36.998041, 36.998016, 37.000232,
37.000104, 36.911587, 36.909573, 36.719427, 36.675186, 36.61718,
36.602716, 36.526588, 36.500397, 36.500439, 36.318267, 36.317534,
36.055231, 35.837694, 35.825217, 35.814072, 35.796441, 35.791583,
35.622487, 35.250056, 35.241237, 35.211862, 35.183149, 35.182786,
35.181922, 35.178573, 35.159318, 35.144735, 35.142766, 35.135596,
35.125058, 35.109913, 34.899546, 34.850243, 34.792224, 34.747361,
34.671188, 34.653099, 34.619782, 34.46266, 34.459774, 34.459662,
34.455657, 34.405463, 34.400678, 34.397105, 34.393716, 34.390442,
34.388679, 34.384969, 34.38469, 34.383578, 34.380916, 34.37966,
34.379555, 34.312764, 34.302585, 34.289441, 34.256903, 34.087947,
34.079382, 34.063078, 34.049986, 34.043545, 34.04232, 34.041538,
34.037294, 34.032714, 34.018014, 34.003633, 33.974629, 33.945617,
33.906299, 33.901537, 33.8503, 33.824675, 33.74627, 33.737766,
33.701971, 33.672408, 33.658186, 33.650487, 33.64195, 33.629489,
33.570599, 33.388438, 33.329477, 33.315234, 33.260371, 33.256262,
33.219225, 33.042055, 33.038693, 33.01029, 32.999899, 32.964373,
32.959097, 32.900014, 32.879355, 32.868346, 32.857696, 32.85726,
32.849359, 32.82847, 32.827531, 32.784593, 32.783602, 32.777303,
32.726628, 32.708694, 32.690761, 32.682647, 32.64642, 32.624537,
32.601863, 32.600397, 32.587983, 32.522193, 32.145006, 32.123041,
32.087051, 32.000518, 32.000465, 32.000453, 32.000513, 32.000475,
32.000324, 32.000326, 32.000419, 32.00037, 32.000198, 32.000554,
32.000125, 32.00001, 32.000117, 32.000311, 32.000396, 32.000443,
32.000496, 32.000579, 32.000533, 32.000485, 32.000524, 32.000518,
32.000485, 32.000497, 32.000497, 32.000607, 32.000638, 32.0006,
32.000577, 32.001564, 32.002206, 32.00235, 32.00197, 32.0021,
32.002328, 32.002533, 32.00205, 32.001785, 32.001762, 32.001512,
32.001172, 32.001484, 32.001334, 32.000736, 32.000759, 32.000749,
32.000778, 32.000754, 32.000731, 32.000495, 31.994733, 31.990999,
31.989809, 31.985719, 31.980348, 31.97682, 31.971258, 31.97069,
31.97291, 31.972933, 31.971578, 31.966955, 31.964777, 31.963403,
31.961054, 31.957476, 31.954531, 31.952891, 31.956008, 31.956,
31.948439, 31.94551, 31.940863, 31.936621, 31.934863, 31.930053,
31.92657, 31.923614, 31.925335, 31.920003, 31.918003, 31.914034,
31.912227, 31.90979, 31.904598, 31.89867, 31.895649, 31.894859,
31.892933, 31.891663, 31.889184, 31.886411, 31.883717, 31.879697,
31.874478, 31.871514, 31.866235, 31.860593, 31.856276, 31.852854,
31.84649, 31.846305, 31.845905, 31.844405, 31.839605, 31.827912,
31.825024, 31.824901, 31.822706, 31.822106, 31.815506, 31.813906,
31.810406, 31.810206, 31.813306, 31.812606, 31.811104, 31.810406,
31.807305, 31.805007, 31.804287, 31.802107, 31.802146, 31.798607,
31.797507, 31.797089, 31.796107, 31.791907, 31.791829, 31.791914,
31.792103, 31.790507, 31.789761, 31.789119, 31.786945, 31.784407,
31.783907, 31.783706, 31.783898, 31.783689, 31.783671, 31.783679,
31.783513, 31.783762, 31.783599, 31.783599, 31.783599, 31.613489,
31.499798, 31.499742, 31.333395, 31.333191, 31.332365, 31.332301,
31.332315, 31.332502), .Dim = c(401L, 2L)))), class = c("XY",
"MULTIPOLYGON", "sfg"))), class = c("sfc_MULTIPOLYGON", "sfc"
), precision = 0, bbox = structure(c(xmin = -109.050173, ymin = 31.332301,
xmax = -103.001964, ymax = 37.000232), class = "bbox"), crs = structure(list(
input = "EPSG:4326", wkt = "GEOGCRS[\"WGS 84\",\n DATUM[\"World Geodetic System 1984\",\n ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n LENGTHUNIT[\"metre\",1]]],\n PRIMEM[\"Greenwich\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n CS[ellipsoidal,2],\n AXIS[\"geodetic latitude (Lat)\",north,\n ORDER[1],\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n AXIS[\"geodetic longitude (Lon)\",east,\n ORDER[2],\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n USAGE[\n SCOPE[\"Horizontal component of 3D system.\"],\n AREA[\"World.\"],\n BBOX[-90,-180,90,180]],\n ID[\"EPSG\",4326]]"), class = "crs"), n_empty = 0L)), row.names = c(NA,
-1L), sf_column = "geometry", agr = structure(c(GEOID = NA_integer_), .Label = c("constant",
"aggregate", "identity"), class = "factor"), class = c("sf",
"tbl_df", "tbl", "data.frame"))