Select ggplot 中靠近海岸线的栅格

Select raster in ggplot near coastline

所以我有一张绘制加泰罗尼亚气压的地图:

这是特写:

我现在想 select 所有气压高于 97 kPa(深蓝色)的观测值,并用它们创建一个新的数据框以供进一步分析。这是棘手的一点,我想 select 符合高度过滤器 AAAAND 的观察结果位于地中海沿岸。大多数高于 97 kPa 的观测值都位于地中海沿岸,但也有一些异常值位于内陆。

最后,我猜想一定会出现某种对角线纬度、经度过滤,但我不知道如何指定它。有没有某种方法可以在数据上系带或绘制多边形,然后将其 select 放入所有内容?

这是我的数据:

structure(list(final.Latitude = c(42.161626, 41.516819, 41.786856, 
41.748215, 42.393932, 41.767667, 41.938401, 41.494079, 41.752819, 
41.422327, 41.253914, 42.104854, 40.544337, 41.647625, 41.26267, 
40.745573, 40.881084, 41.201499, 41.494183, 40.873663, 41.211076, 
41.814818, 41.737032, 42.434746, 41.796036, 41.197585, 42.119308, 
41.665698, 41.141899, 40.883885, 40.814408, 40.710754, 41.65649, 
41.541525, 41.581905, 41.61424, 42.215454, 41.137955, 41.553355, 
42.17195, 40.909931, 42.757417, 41.89469, 41.49472, 41.447145, 
41.791172, 41.862813, 41.677615, 41.398371, 41.094337, 42.83454, 
41.331905, 41.954854, 41.560246, 41.758456, 41.516953, 41.625954, 
40.974225, 42.098215, 42.238615, 41.841862, 41.280658, 41.491805, 
41.675766, 42.416667, 41.220308, 42.043361, 41.009161, 41.136268, 
41.747716, 41.816881, 41.851497, 42.306365, 41.525909, 41.732976, 
41.187937, 41.788901, 41.862027, 41.874859, 41.074787, 41.724519, 
42.313455, 42.838364, 41.590543, 42.422663, 41.530049, 42.374163, 
41.639757, 41.914026, 41.531976, 42.282191, 41.474805, 41.760742, 
41.498525, 41.277658, 41.648019, 41.175305, 41.672663, 42.269094, 
41.561134, 41.467288, 42.403712, 41.100187, 41.82609, 41.516667, 
41.636616, 41.417024, 41.688442, 41.165596, 41.208101, 41.850617, 
41.197377, 42.367024, 42.361421, 41.594469, 42.391185, 42.578381, 
41.868737, 41.145762, 42.496539, 41.161892, 41.231334, 41.510179, 
41.634688, 41.763027, 41.929978, 40.671331, 41.713584, 41.462664, 
41.692433, 41.053748, 41.136997, 41.207852, 41.683047, 42.344326, 
41.4404, 42.411528, 41.041842, 41.984444, 42.034332, 40.655163, 
41.355913, 41.727408, 41.607816, 41.193202, 41.731762, 42.028479, 
41.102165, 41.955568, 41.360861, 41.743718, 41.580977, 41.852114, 
42.073092, 41.601927, 41.315489, 41.548474, 42.810764, 41.709801, 
42.371338, 41.47145, 42.621379, 41.826875, 41.374287, 41.616667, 
42.296039, 42.074764, 41.699929, 41.646217, 41.885617, 42.002284, 
41.726337, 41.284957, 41.47402, 40.734082, 40.716001, 41.480477, 
41.18225, 41.503525, 41.126212, 42.233618, 41.598858, 41.477979, 
41.605161, 41.039296, 42.360065, 41.759637, 41.846688, 42.109172, 
41.265454, 41.468488, 42.017482, 41.625876, 41.759101, 41.191922, 
41.699429, 41.751713, 42.22352, 41.248929, 42.271593, 41.354354, 
41.543718, 42.068952, 41.87566, 42.010081, 41.316667, 41.985403, 
42.181691, 42.065168, 41.501108, 42.218238, 41.873141, 41.946288, 
41.666667, 41.917381, 41.175447, 41.971022, 41.437188, 42.316667, 
42.042256, 41.191613, 42.057709, 41.522319, 41.42334, 41.678745, 
41.554229, 41.186914, 42.249185, 41.234832, 42.315525, 42.408303, 
41.477337, 41.413134, 41.915639, 41.188829, 41.740291, 41.309827, 
41.327836, 41.051187, 41.607475, 41.794363, 42.380192, 41.278987, 
41.717096, 41.940471, 41.422931, 41.728017, 41.002665, 41.224484, 
41.155913, 42.433333, 42.20033, 41.496859, 42.188615, 41.168999, 
41.894646, 41.138704, 42.227089, 41.466667, 41.224079, 41.54329, 
42.228907, 41.826019, 41.076036, 41.973982, 41.762849, 42.233975, 
41.744147, 42.212313, 41.383333, 41.26126, 41.45356, 41.533333, 
41.694361, 41.253569, 42.145754, 42.13269, 42.323734, 41.838472, 
41.808423, 41.237045, 41.257745, 42.035974, 41.456014, 41.99404, 
42.112564, 42.413192, 41.53343, 41.384189, 41.556626, 41.977765, 
41.750928, 41.737402, 42.184708, 41.874234, 41.116667, 41.995717, 
41.561111, 41.482015, 41.967881, 40.90787, 41.849001, 41.699143, 
41.394159, 41.701173, 42.422255, 41.125037, 41.146003, 41.673185, 
41.952427, 41.533986, 40.812492, 42.166362, 41.526426, 40.597668, 
41.322164, 42.036402, 41.880549, 42.20347, 41.379576, 41.752114, 
41.648215, 41.386759, 41.243112, 41.286117, 41.220468, 42.061813, 
41.929335, 41.247787, 42.283618, 41.957459, 42.137402, 41.316881, 
42.138901, 41.847644, 42.246931, 42.475945, 42.329978, 42.196145, 
42.217381, 42.375733, 42.254854, 41.613785, 41.348501, 41.947002, 
41.228003, 41.504069, 41.225245, 42.105996, 41.383666, 41.428805, 
41.184644, 42.393307, 42.105944, 42.369698, 42.077865, 42.330101, 
42.592736, 42.495852, 42.593676, 42.324487, 42.350054, 42.016913, 
42.173822, 42.373156, 42.198189, 42.254595, 42.372036, 42.286585, 
42.246175, 42.737724, 42.785504, 42.742824, 42.747696, 42.104657, 
42.212158, 42.21305, 42.324369, 42.36003), final.Longitude = c(1.092285, 
1.901004, 1.096829, 1.629193, 2.846645, 2.250857, 2.76217, 0.458438, 
0.659356, 0.937106, 1.093504, 3.085332, 0.48089, 0.693825, 1.170103, 
0.618666, 0.498917, 1.046086, 2.294718, 0.400167, 0.975421, 0.636328, 
0.584498, 0.627843, 0.568341, 1.11167, 2.101356, 0.555637, 1.375338, 
0.801686, 0.714752, 0.578086, 1.082864, 0.924567, 2.549358, 2.539721, 
2.641934, 0.908485, 2.401142, 3.074909, 0.260671, 0.71233, 1.045118, 
0.672773, 2.244789, 0.810942, 1.874909, 1.016459, 2.1741, 0.311004, 
0.716868, 1.922554, 3.207173, 1.016022, 0.904336, 1.433333, 1.011437, 
0.517667, 1.844004, 2.708886, 1.358886, 0.722351, 1.348755, 2.789078, 
1.883333, 1.439364, 2.910885, 0.383916, 0.989194, 2.558458, 2.305603, 
1.215786, 2.967557, 2.368952, 1.513526, 1.569665, 1.986723, 3.074338, 
0.878136, 1.052436, 2.464097, 2.36524, 0.738999, 2.581156, 2.926337, 
1.686508, 2.920236, 2.357387, 1.680977, 1.620736, 2.016739, 1.979945, 
2.161279, 0.765658, 1.968755, 0.970925, 1.324377, 1.271554, 2.848572, 
1.13935, 0.689467, 3.150642, 0.886446, 2.175124, 1.3, 1.518095, 
1.919698, 0.695244, 1.444914, 1.672893, 0.959004, 1.635581, 2.833618, 
1.870308, 2.405817, 2.999929, 1.086656, 2.111956, 0.81979, 1.272164, 
0.473006, 0.550333, 0.920149, 0.873428, 1.668666, 2.811885, 0.519665, 
1.01746, 1.024914, 2.113455, 0.438496, 0.649917, 1.247073, 2.28626, 
3.064954, 1.860957, 1.844289, 0.632897, 2.821111, 1.880192, 0.468583, 
0.664668, 2.059243, 2.289721, 0.777024, 2.503212, 3.10289, 0.752582, 
2.233086, 2.110014, 2.628836, 1.6172, 0.586083, 3.010814, 1.547502, 
1.453319, 0.824509, 0.710496, 0.902696, 1.458522, 1.532405, 1.248929, 
2.893647, 0.549688, 0.633333, 2.912027, 0.916209, 2.845646, 2.741505, 
2.232976, 2.28476, 1.825837, 0.75331, 1.93062, 0.37308, 0.530085, 
2.316382, 1.045336, 1.811358, 0.732084, 1.776623, 2.02648, 1.612224, 
0.879873, 0.596649, 3.000214, 2.01358, 1.041892, 2.208315, 1.365168, 
2.280459, 1.735019, 1.415025, 2.395075, 1.208506, 1.976123, 1.903569, 
2.860457, 1.294718, 2.231477, 1.849072, 1.894075, 1.313526, 1.17631, 
1.564897, 1.816667, 2.094575, 2.48476, 1.900428, 0.959546, 2.907316, 
0.720168, 2.556673, 2.75, 3.163098, 1.269737, 3.148144, 2.009243, 
3.116667, 2.10703, 1.255497, 1.267667, 1.750761, 1.203614, 0.855824, 
1.677122, 1.209089, 0.967787, 0.845336, 2.921769, 0.741027, 1.387723, 
1.514579, 1.185612, 0.85608, 0.638549, 0.988663, 2.094718, 0.871539, 
1.038313, 1.050881, 1.73626, 1.297127, 1.420879, 2.840791, 1.396841, 
1.70621, 0.599667, 1.310832, 1.107423, 1.133333, 2.190467, 2.157387, 
2.407067, 0.976254, 2.803533, 1.051562, 3.042647, 1.283333, 1.21775, 
2.109423, 1.73576, 1.895503, 1.139829, 2.791613, 1.323696, 2.286188, 
1.805639, 2.511456, 2.083333, 1.772075, 1.703618, 1.383333, 2.444646, 
1.550857, 2.569984, 2.978193, 3.186045, 2.285046, 2.745075, 1.807316, 
0.932084, 2.165025, 1.17831, 1.517809, 2.159886, 1.130453, 0.486334, 
1.796288, 0.567081, 2.516524, 2.292468, 1.977908, 0.900076, 2.287188, 
1.25, 2.418595, 2.008056, 2.267024, 1.241291, 0.512357, 2.228122, 
2.71888, 0.720332, 1.053843, 0.982562, 0.864294, 1.400214, 0.606714, 
3.126837, 0.514198, 0.521602, 0.894424, 1.955372, 0.446585, 0.876504, 
3.034546, 3.126409, 1.818155, 0.983416, 0.813849, 2.509957, 1.932048, 
1.249001, 1.249929, 1.533654, 3.046003, 2.255497, 1.330192, 2.981263, 
2.773767, 1.932191, 2.016775, 2.888187, 2.390149, 2.936294, 0.716667, 
2.316524, 3.056888, 2.970593, 3.068024, 2.889007, 0.964319, 0.956673, 
2.384404, 1.033249, 2.392219, 0.780085, 2.993361, 0.947085, 0.974277, 
0.589454, 0.722588, 1.469659, 1.190359, 1.646143, 1.039464, 1.261727, 
1.21003, 1.202521, 1.540233, 1.582939, 1.295875, 1.316197, 1.522829, 
1.395169, 1.608097, 1.605217, 1.424143, 1.501501, 0.720617, 0.692133, 
0.943847, 0.726361, 0.857982, 1.00119, 0.931612, 0.936593, 0.880921
), final.airpressure = c(90.3429670210118, 100.056314503294, 
97.3091644688341, 95.6535847066497, 99.3265763810809, 96.5299354845676, 
99.2908252491736, 99.9962987211271, 98.4839088116185, 95.1270315428243, 
91.7964083849734, 101.021480506879, 100.453323066872, 98.7679512938402, 
98.4130259181779, 101.215628071472, 101.154916909799, 98.1888998199279, 
100.236578057928, 97.3442020744334, 96.8780695175868, 97.2157924966616, 
97.6952727499611, 89.3510660330727, 97.4026261211394, 97.8595387529882, 
91.4445861078662, 98.1653373115852, 100.694700579387, 101.094242163897, 
101.227774675623, 101.227774675623, 97.3325214710347, 97.3675674866686, 
101.203482924827, 99.8643906852719, 99.1241567035337, 97.2274590917429, 
100.260637723706, 101.239922737453, 95.3556106036821, 87.4837596830127, 
97.5312824821367, 98.2596212844703, 101.252072257138, 98.5311924350098, 
97.4260055568285, 97.941775300055, 101.215628071472, 96.8548215707678, 
90.6144028722749, 96.5878708247223, 98.9221495412202, 96.8896955834789, 
98.1300041505036, 93.6882866645953, 97.648390271736, 101.094242163897, 
93.1166652957402, 97.2974880696958, 95.940976332665, 96.9013230445826, 
100.344892041253, 101.167056228173, 88.3170492768192, 99.1955517955091, 
100.815606749275, 97.9065226068125, 98.9696435706551, 99.2908252491736, 
91.5763611671335, 96.333215139154, 101.009358656544, 99.5532993411879, 
93.3852278362198, 100.513613145927, 94.8306977255515, 101.057854786839, 
97.4961775397119, 101.033603811924, 97.4961775397119, 90.4405901323857, 
90.8866542537754, 101.142779048056, 98.9221495412202, 97.5429869382878, 
100.032303869205, 99.0052790563431, 95.3441686169426, 97.1458223183509, 
85.7068860068727, 99.7326566531564, 92.3488424802678, 97.1225101185704, 
101.288529565072, 98.1064557754255, 100.610152546045, 94.8762273867043, 
99.7565953632834, 95.206971819536, 97.988798636897, 101.203482924827, 
96.2176846131662, 90.9412026091979, 93.1054919663179, 96.2061391837523, 
97.2507964822998, 98.7916584468953, 100.74304563755, 101.179197003352, 
95.4357429674702, 101.203482924827, 99.0052790563431, 87.5362656890491, 
99.5532993411879, 99.8284459750613, 86.5024876526411, 91.2801339042574, 
96.9943929811272, 86.751973904839, 95.5732694326337, 100.755135528406, 
97.554692799058, 98.4130259181779, 95.1384474715514, 100.092341260942, 
99.8044900228565, 98.0358445503587, 94.5012604507927, 95.4013922834961, 
97.0060330066725, 100.441269391339, 99.7326566531564, 98.3067972240066, 
100.646378721282, 98.9696435706551, 88.4230933496698, 101.009358656544, 
100.477434757695, 95.7799308085443, 99.302740863126, 95.1042037946933, 
92.2491595688505, 99.5771950003942, 97.4961775397119, 99.1955517955091, 
101.142779048056, 98.6139934081953, 95.2412524995432, 101.227774675623, 
99.0528129975234, 97.5898188107684, 97.5781087351297, 100.791413906912, 
96.8083424123042, 94.5693258589238, 98.1653373115852, 93.9021396579619, 
98.3539958134293, 93.2620406569011, 94.1164807924228, 89.3081878129729, 
99.3981172677039, 96.6110546956734, 99.4577740333045, 99.613049243971, 
92.1606428704777, 101.264223234853, 101.276375670773, 94.5126012824831, 
95.8719236916393, 98.4720914516169, 96.8199601104416, 100.646378721282, 
97.1808011101903, 100.670536751023, 100.997238260744, 98.7560998507858, 
98.2478308373571, 99.0171604026964, 99.3504176202466, 96.3100979416952, 
96.2292314281149, 97.8947745289984, 100.803509602308, 100.610152546045, 
96.0331238936967, 92.848875102663, 94.5466319440964, 98.5784987599884, 
101.082111582687, 92.5374264091341, 93.0608120542108, 95.1042037946933, 
100.068321981469, 95.9524899406276, 98.1064557754255, 99.5771950003942, 
98.5548427591196, 90.3971890662113, 98.15355817787, 99.8284459750613, 
95.7799308085443, 95.9755213018661, 92.693019947478, 98.7916584468953, 
94.6033769450608, 96.0792308579518, 94.8193187245782, 96.7502748288739, 
100.140397117231, 95.8489171908438, 97.2741394745025, 101.13064264277, 
100.549804560724, 99.8763751312065, 100.658457011412, 99.6967593586619, 
100.924546421398, 92.5596380567634, 99.8164672802803, 94.6715159035427, 
97.4610852327918, 96.7502748288739, 98.7324012307697, 98.15355817787, 
100.140397117231, 95.1498647702722, 97.2391270868996, 100.803509602308, 
91.631323470876, 94.842078092087, 94.4672461199774, 97.0060330066725, 
97.554692799058, 98.2242541872674, 90.408037379785, 101.227774675623, 
98.389409626026, 97.4143151376009, 97.5664000646158, 88.837883277904, 
98.3067972240066, 92.3820940484839, 100.224550390235, 94.6828771671133, 
97.0293172485913, 99.2312686227987, 99.2193615850005, 99.9123370990196, 
92.8823067150292, 93.2620406569011, 100.368977705507, 94.6033769450608, 
97.7539075022777, 100.140397117231, 99.8164672802803, 101.239922737453, 
94.6715159035427, 99.9483120154717, 99.0409273731154, 87.5782931823713, 
98.000557998281, 101.300684917927, 100.320812156865, 94.785189913392, 
92.3488424802678, 98.0123187708731, 97.2507964822998, 99.8524076773845, 
100.791413906912, 98.3776036052463, 93.4524894115233, 98.8272298464039, 
100.104353062587, 95.4701060199168, 100.284703164497, 100.74304563755, 
93.5759281491901, 100.405117042172, 101.203482924827, 100.924546421398, 
91.1597236157778, 95.5503346002599, 93.5646997115319, 92.9826737947488, 
93.2508498834821, 99.9003483379078, 98.4130259181779, 99.4935852775937, 
91.8735497628596, 97.1108561166103, 94.8306977255515, 94.6033769450608, 
94.0261723258617, 100.501552236019, 91.2910881775692, 98.0123187708731, 
99.6847964653268, 96.7270575491, 101.167056228173, 94.3313111822093, 
100.912436202455, 95.6995094483651, 97.8712826022554, 89.0620370589062, 
96.936213800838, 101.142779048056, 98.7560998507858, 100.791413906912, 
99.8883610153609, 101.179197003352, 95.7914250898844, 97.2507964822998, 
99.7206894524044, 93.7220205195241, 100.960885798805, 100.730957197395, 
88.5505143251773, 94.0036087522406, 98.5075477862968, 98.6613394871811, 
99.1955517955091, 99.3861902092696, 98.7442498298192, 100.730957197395, 
101.045728571852, 95.6076820035206, 98.2832064236821, 101.094242163897, 
100.128380990558, 92.5263225842078, 101.106374200865, 99.8763751312065, 
91.8184421669338, 100.670536751023, 90.0723442570617, 89.1475776674053, 
101.264223234853, 100.779319662913, 99.2908252491736, 100.140397117231, 
97.8595387529882, 91.0285480828219, 94.7624441974078, 96.9711171200268, 
101.203482924827, 97.4260055568285, 100.332851376663, 93.5534726212054, 
95.6650638255479, 100.912436202455, 91.631323470876, 87.211235711269, 
85.7377460403079, 91.6753170637597, 94.3879269519511, 87.6098270436714, 
91.9286904332642, 90.9739473358343, 92.4042684118727, 90.408037379785, 
96.3100979416952, 86.3780137131668, 88.9659019811689, 94.2634170829669, 
87.6729288330611, 91.3787697026177, 93.1390159773857, 89.9859162986326, 
91.4775120851854, 90.690550948402, 86.9395606892669, 87.1589246647255, 
95.0585647311234, 95.3441686169426, 94.5920252209444, 92.8377339061359, 
89.8456477071546)), .Names = c("final.Latitude", "final.Longitude", 
"final.airpressure"), row.names = c(NA, -379L), class = "data.frame")

这是基于此 post 绘制的代码:Plotting contours on an irregular grid

library(akima)
library(ggplot2)
library(reshape2)

x <- newfinal$final.Longitude
y <- newfinal$final.Latitude
z <- newfinal$final.airpressure

require(akima)

fld <- interp(x,y,z)

df <- melt(fld$z, na.rm = TRUE)
names(df) <- c("x", "y", "Rain")
df$Lon <- fld$x[df$x]
df$Lat <- fld$y[df$y]


ggplot(data = df, aes(x = Lon, y = Lat, z = Rain)) +
  geom_tile(aes(fill = Rain)) +
  stat_contour() +
  ggtitle("Air pressure Catalonia") +
  xlab("Longitude") +
  ylab("Latitude") +
  scale_fill_continuous(name = "kPa",
                        low = "white", high = "blue") +
  theme(plot.title = element_text(size = 20,),
        legend.title = element_text(size = 10),
        axis.text = element_text(size = 10),
        axis.title.x = element_text(size = 10, vjust = -0.5),
        axis.title.y = element_text(size = 10, vjust = 0.2),
        legend.text = element_text(size = 10))

概览

使用地中海西部的 shape file,我计算了巴利阿里(伊比利亚海)和西部盆地部分边界的坐标。然后,我计算了 df 中每 379 个坐标对与巴利阿里和西部盆地部分边界的每个坐标对的距离(以公里为单位)。

过滤 distance 以仅包含最小距离值后,我确定 df 中的哪些点包含小于或等于 20 公里的距离 (based on the distance from Traiguera to Vinaròs).

最后,df2是通过返回final.airpressure大于97且其坐标对距地中海小于或等于20公里的行创建的。

可重现的例子

注意:df下面为了减少代码行数就不写了。要创建 df,只需复制并粘贴 dput() 并存储它。

此外,地中海西部的 shape file 需要在我的浏览器中下载并在导入 .

阅读后Plotting contours on an irregular grid, I use the data from df2 to reproduce that plot using base R. The GeoJSON file of the administrative boundaries of the counties of Catalonia取自他们的开放数据门户。

# load necessary packages
library( akima )
library( sf )
library( leaflet )
library( geosphere )

# create sf data frame
# of Catalonia
catalonia.polygon <-
read_sf( dsn = "https://analisi.transparenciacatalunya.cat/api/geospatial/txvb-mhz6?method=export&format=GeoJSON" 
         , layer = "OGRGeoJSON"
         , stringsAsFactors = FALSE )

# dissolve into one polygon
catalonia.polygon <-
  st_union( x = catalonia.polygon )

# create sf data frame
# of the western basin
western.basin <-
  read_sf( dsn = getwd()
           , layer = "iho"
           , stringsAsFactors = FALSE )

# view first version of the map
my.map <-
  leaflet() %>%
  setView( lng = 1.514619
           , lat = 41.875227
           , zoom = 8 ) %>%
  addTiles() %>%
  addPolygons( data = catalonia.polygon
               , fill = "#D24618"
               , color = "#D24618" ) %>%
  addCircleMarkers( data = df
                    , lng = ~final.Longitude
                    , lat = ~final.Latitude
                    , fillColor = "#10539A"
                    , fillOpacity = 0.75
                    , stroke = FALSE
                    , radius = 10
                    , group = "No Filter" ) %>%
  addPolygons( data = western.basin
               , label = ~name )

# display map
my.map

# get the boundaries of each
# polygon within the western basin
list.of.polygon.boundaries <- 
  sapply( 
    X = methods::as( object = western.basin, Class = "Spatial" )@polygons
    , FUN = function( i )
      sp::coordinates( obj = i@Polygons[[1]] )
  )

# label each set of boundaries
names( list.of.polygon.boundaries ) <- western.basin$name

# from Google maps
# it looks like we only care about the
# the Balearic and Western Basin parts of the sea
# since they are nearest Catalonia
list.of.polygon.boundaries <-
  list.of.polygon.boundaries[ c("Balearic (Iberian Sea)", "Mediterranean Sea - Western Basin" ) ]

# calculate each points distance (in kilometers)
# from each boundary point within
# each polygon in list.of.polygon.boundaries
# ~1 minute to complete
distance <-
  apply(
    X = df[ c("final.Longitude", "final.Latitude") ]
    , MARGIN = 1
    , FUN = function( i )
      lapply(
        X = list.of.polygon.boundaries
        , FUN = function( j )
          distGeo(
            p1 = i
            , p2 = j
          ) / 1000 # to transform results into kilometers
      )
  )

# find the minimum distance value
# for each list in distance
distance.min <-
  lapply(
    X = distance
    , FUN = function( i )
      lapply(
        X = i
        , FUN = function( j )
          min( j )
      )
  )

# set the maximum distance
# allowed between a point in df
# and the sea to 20 kilometers
max.km <- 20

# identify which points in df
# are less than or equal to max.km
less.than.or.equal.to.max.km <-
  sapply(
    X = distance.min
    , FUN = function( i )
      sapply(
        X = i
        , FUN = function( j )
          j <= max.km
      )
  )

# convert matrix results into
# vector of TRUE/FALSE indices
less.than.or.equal.to.max.km <-
  apply(
    X = less.than.or.equal.to.max.km
    , MARGIN = 2
    , FUN = any
  )

# create subset from df
# where the air pressure is greater than 97 kpa
# AND the coordinate pairs are located
# along the Mediterranean coast
df2 <-
    df[ which( df$final.airpressure > 97 &
             less.than.or.equal.to.max.km ), ]

# View our results
my.map %>%
  hideGroup( group = "No Filter" ) %>%
  addCircleMarkers( data = df2
                    , lng = ~final.Longitude
                    , lat = ~final.Latitude
                    , fillColor = "#10539A"
                    , fillOpacity = 0.75
                    , stroke = FALSE
                    , radius = 10
                    , group = "Filter" )

在不规则网格上绘制等高线

# plot intended results
bivariate.interpolation <-
  akima::interp(
    x = df2$final.Longitude
    , y = df2$final.Latitude
    , z = df2$final.airpressure
    )
# using base R
filled.contour(
  x = bivariate.interpolation$x
  , y = bivariate.interpolation$y
  , z = bivariate.interpolation$z
  , color.palette = colorRampPalette( c("white", "blue" ) )
  , xlab = "Longitude"
  , ylab = "Latitude"
  , main = "Catalonia Air Pressure"
  , key.title = title(
    main = "Air Pressure (kPa)"
    , cex.main = 0.5 )
)

# end of script #

来自 df2

的最终数据
structure(list(final.Latitude = c(42.104854, 40.544337, 41.26267, 
40.745573, 40.881084, 41.201499, 41.494183, 40.873663, 41.197585, 
41.141899, 40.883885, 40.814408, 40.710754, 41.581905, 41.61424, 
41.137955, 41.553355, 42.17195, 41.447145, 41.398371, 41.954854, 
40.974225, 41.675766, 41.220308, 41.009161, 41.136268, 41.747716, 
42.306365, 41.525909, 41.187937, 41.862027, 41.074787, 41.724519, 
41.590543, 42.422663, 42.374163, 41.639757, 41.277658, 41.175305, 
42.403712, 41.417024, 41.165596, 41.208101, 41.197377, 41.594469, 
42.391185, 40.671331, 41.053748, 41.207852, 42.344326, 41.041842, 
40.655163, 41.607816, 41.731762, 42.028479, 41.102165, 41.360861, 
41.743718, 42.073092, 41.826875, 42.296039, 41.699929, 41.646217, 
40.734082, 40.716001, 41.480477, 41.18225, 41.039296, 42.360065, 
41.265454, 41.468488, 41.191922, 41.248929, 41.354354, 41.316667, 
42.218238, 41.666667, 41.917381, 41.175447, 41.971022, 41.437188, 
42.316667, 41.191613, 41.186914, 42.315525, 41.188829, 41.327836, 
41.051187, 41.278987, 41.002665, 41.224484, 41.155913, 41.496859, 
41.168999, 41.138704, 42.227089, 41.224079, 41.54329, 41.076036, 
41.383333, 41.26126, 41.694361, 41.253569, 42.13269, 42.323734, 
41.808423, 41.237045, 41.384189, 41.116667, 41.482015, 40.90787, 
41.699143, 41.146003, 41.952427, 40.812492, 40.597668, 42.036402, 
41.880549, 41.648215, 41.386759, 41.243112, 41.286117, 41.220468, 
42.061813, 41.247787, 42.283618, 41.316881, 42.138901, 42.246931, 
42.196145, 42.217381, 42.375733, 42.254854, 41.504069, 42.105996
), final.Longitude = c(3.085332, 0.48089, 1.170103, 0.618666, 
0.498917, 1.046086, 2.294718, 0.400167, 1.11167, 1.375338, 0.801686, 
0.714752, 0.578086, 2.549358, 2.539721, 0.908485, 2.401142, 3.074909, 
2.244789, 2.1741, 3.207173, 0.517667, 2.789078, 1.439364, 0.383916, 
0.989194, 2.558458, 2.967557, 2.368952, 1.569665, 3.074338, 1.052436, 
2.464097, 2.581156, 2.926337, 2.920236, 2.357387, 1.968755, 1.324377, 
3.150642, 1.919698, 1.444914, 1.672893, 1.635581, 2.405817, 2.999929, 
0.519665, 0.438496, 1.247073, 3.064954, 0.632897, 0.468583, 2.289721, 
2.503212, 3.10289, 0.752582, 2.110014, 2.628836, 3.010814, 2.893647, 
2.912027, 2.845646, 2.741505, 0.37308, 0.530085, 2.316382, 1.045336, 
0.596649, 3.000214, 1.365168, 2.280459, 1.208506, 1.294718, 1.849072, 
1.816667, 2.907316, 2.75, 3.163098, 1.269737, 3.148144, 2.009243, 
3.116667, 1.255497, 1.209089, 2.921769, 0.85608, 2.094718, 0.871539, 
1.297127, 0.599667, 1.310832, 1.107423, 2.157387, 0.976254, 1.051562, 
3.042647, 1.21775, 2.109423, 1.139829, 2.083333, 1.772075, 2.444646, 
1.550857, 2.978193, 3.186045, 2.745075, 1.807316, 1.796288, 1.25, 
2.267024, 0.512357, 2.71888, 1.400214, 3.126837, 0.521602, 0.446585, 
3.034546, 3.126409, 2.509957, 1.932048, 1.249001, 1.249929, 1.533654, 
3.046003, 1.330192, 2.981263, 2.016775, 2.888187, 2.936294, 3.056888, 
2.970593, 3.068024, 2.889007, 2.392219, 2.993361), final.airpressure = c(101.021480506879, 
100.453323066872, 98.4130259181779, 101.215628071472, 101.154916909799, 
98.1888998199279, 100.236578057928, 97.3442020744334, 97.8595387529882, 
100.694700579387, 101.094242163897, 101.227774675623, 101.227774675623, 
101.203482924827, 99.8643906852719, 97.2274590917429, 100.260637723706, 
101.239922737453, 101.252072257138, 101.215628071472, 98.9221495412202, 
101.094242163897, 101.167056228173, 99.1955517955091, 97.9065226068125, 
98.9696435706551, 99.2908252491736, 101.009358656544, 99.5532993411879, 
100.513613145927, 101.057854786839, 101.033603811924, 97.4961775397119, 
101.142779048056, 98.9221495412202, 100.032303869205, 99.0052790563431, 
101.288529565072, 100.610152546045, 101.203482924827, 97.2507964822998, 
100.74304563755, 101.179197003352, 101.203482924827, 99.5532993411879, 
99.8284459750613, 99.8044900228565, 97.0060330066725, 99.7326566531564, 
100.646378721282, 101.009358656544, 99.302740863126, 99.5771950003942, 
99.1955517955091, 101.142779048056, 98.6139934081953, 101.227774675623, 
99.0528129975234, 100.791413906912, 99.3981172677039, 99.613049243971, 
101.264223234853, 101.276375670773, 97.1808011101903, 100.670536751023, 
100.997238260744, 98.7560998507858, 100.803509602308, 100.610152546045, 
98.5784987599884, 101.082111582687, 100.068321981469, 98.5548427591196, 
98.15355817787, 98.7916584468953, 100.140397117231, 101.13064264277, 
100.549804560724, 99.8763751312065, 100.658457011412, 99.6967593586619, 
100.924546421398, 99.8164672802803, 100.140397117231, 100.803509602308, 
97.554692799058, 101.227774675623, 98.389409626026, 98.3067972240066, 
99.2312686227987, 99.2193615850005, 99.9123370990196, 100.368977705507, 
97.7539075022777, 99.8164672802803, 101.239922737453, 99.9483120154717, 
99.0409273731154, 101.300684917927, 99.8524076773845, 100.791413906912, 
98.8272298464039, 100.104353062587, 100.284703164497, 100.74304563755, 
100.405117042172, 101.203482924827, 98.4130259181779, 100.501552236019, 
99.6847964653268, 101.167056228173, 100.912436202455, 101.142779048056, 
100.791413906912, 101.179197003352, 99.7206894524044, 100.960885798805, 
100.730957197395, 98.6613394871811, 99.1955517955091, 99.3861902092696, 
98.7442498298192, 100.730957197395, 101.045728571852, 98.2832064236821, 
101.094242163897, 101.106374200865, 99.8763751312065, 100.670536751023, 
101.264223234853, 100.779319662913, 99.2908252491736, 100.140397117231, 
101.203482924827, 100.332851376663)), .Names = c("final.Latitude", 
"final.Longitude", "final.airpressure"), row.names = c(12L, 13L, 
15L, 16L, 17L, 18L, 19L, 20L, 26L, 29L, 30L, 31L, 32L, 35L, 36L, 
38L, 39L, 40L, 45L, 49L, 53L, 58L, 64L, 66L, 68L, 69L, 70L, 73L, 
74L, 76L, 78L, 80L, 81L, 84L, 85L, 87L, 88L, 95L, 97L, 102L, 
107L, 109L, 110L, 112L, 115L, 116L, 127L, 131L, 133L, 135L, 138L, 
141L, 144L, 146L, 147L, 148L, 150L, 151L, 154L, 163L, 166L, 168L, 
169L, 175L, 176L, 177L, 178L, 185L, 186L, 190L, 191L, 195L, 199L, 
201L, 206L, 211L, 214L, 215L, 216L, 217L, 218L, 219L, 221L, 227L, 
230L, 235L, 238L, 239L, 243L, 248L, 249L, 250L, 253L, 255L, 257L, 
258L, 260L, 261L, 264L, 270L, 271L, 274L, 275L, 277L, 278L, 280L, 
281L, 289L, 296L, 299L, 301L, 303L, 308L, 310L, 312L, 315L, 317L, 
318L, 322L, 323L, 324L, 325L, 326L, 327L, 329L, 330L, 333L, 334L, 
336L, 339L, 340L, 341L, 342L, 347L, 349L), class = "data.frame")

Session 信息

R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.2

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
[1] geosphere_1.5-7    leaflet_1.1.0.9000
[3] sf_0.6-0           akima_0.6-2       

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.15    magrittr_1.5    units_0.5-1    
 [4] xtable_1.8-2    lattice_0.20-35 R6_2.2.2       
 [7] rlang_0.2.0     udunits2_0.13   tools_3.4.3    
[10] grid_3.4.3      e1071_1.6-8     DBI_0.8        
[13] htmltools_0.3.6 crosstalk_1.0.0 class_7.3-14   
[16] yaml_2.1.17     digest_0.6.15   shiny_1.0.5    
[19] htmlwidgets_1.0 mime_0.5        sp_1.2-7       
[22] compiler_3.4.3  pillar_1.2.1    classInt_0.1-24
[25] httpuv_1.3.6.2