在海岸线附近的 ggplot 中选择栅格

2023-12-24

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

这是一个特写:

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

最后,我猜想一定会发生某种对角线纬度、经度过滤,但我不知道如何指定它。是否有某种方法可以在数据上花边或绘制多边形,然后让它选择里面的所有内容?

这是我的数据:

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")

这是根据这篇文章绘制的代码:

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))

Overview

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

过滤后distance为了仅包含最小距离值,我确定了哪些点df包含的距离小于或等于20公里(基于从特拉格拉到维纳罗斯的距离) https://www.google.com/maps/dir/Traiguera/Vinar%C3%B2s,+Spain/@40.4965084,0.3126398,12z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x12a0676f9c4e7569:0xe67e26579a7787b2!2m2!1d0.2895943!2d40.5244341!1m5!1m1!1s0x12a04fe40076ed75:0x11209302b14c1a2a!2m2!1d0.4747301!2d40.4679855!3e0.

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

可重复的例子

Note: df下面就不写了,以减少代码行数。创造df,只需复制并粘贴dput() https://stat.ethz.ch/R-manual/R-devel/library/base/html/dput.html并存储它。

此外,对于地中海西部地区,需要在我的浏览器中下载并在导入之前解压到我的工作目录中r /questions/tagged/r.

看完之后在不规则网格上绘制等高线 https://stackoverflow.com/questions/19339296/plotting-contours-on-an-irregular-grid/19339663,我使用的数据来自df2使用重现该情节base https://stat.ethz.ch/R-manual/R-devel/library/base/html/00Index.htmlR. GeoJSON 文件加泰罗尼亚各县的行政边界 https://analisi.transparenciacatalunya.cat/Urbanisme-infraestructures/L-mits-administratius-comarcals-de-Catalunya/txvb-mhz6取自他们的开放数据门户。

# 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")

会议信息

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 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在海岸线附近的 ggplot 中选择栅格 的相关文章

  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • R ggplot 中的柯尔莫哥洛夫-斯米尔诺夫图

    我正在尝试在 r 中绘制 KS 图 一切似乎都很顺利 除了我只能使用颜色来可视化两个不同的样本而不是线型这一事实 我已经尝试过以下方法 sample1 lt SD13009 sample2 lt SD13009PB group lt c r
  • R - 重塑 - 熔化错误

    我正在尝试融化数据框 但出现了这个奇怪的错误 有什么想法吗 str zx7 data frame 519 obs of 5 variables calday new Date format 2011 01 03 2011 01 04 201
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col

随机推荐

  • 如何使用 Objective-C 在 iOS 上执行相同的加密/解密 PHP 函数?

    我在 PHP 中有一个函数可以加密和解密字符串 function encrypt decrypt action string output false key mykeyhereblah iv md5 md5 key if action e
  • 如何根据静态控件的内容自动设置宽度和高度?

    我正在尝试创建一个Label类 我可以稍后重用它 我所做的是创建一个静态控件 然后使用 GDI 库来DrawString on it 快完成了 我只有一个问题 我需要自动设置静态控件的宽度和高度以适合其上的文本 Call this func
  • Hadoop 映射器可以在输出中生成多个键吗?

    单个 Mapper 类可以在一次运行中生成多个键值对 相同类型 吗 我们在映射器中输出键值对 如下所示 context write key value 这是该密钥的精简 和示例 版本 import java io DataInput imp
  • 更新到 systemjs-angular-loader.js 后出现 404s

    我正在更新我的 Angular 项目并决定删除所有实例moduleId module id 正如文档指示我在这里 https angular io docs ts latest guide change log html https ang
  • T-SQL EXEC 和范围

    假设我有一个存储过程 其主体如下 EXEC INSERT INTO quotename table blah SELECT IDENT CURRENT table IDENT CURRENT 是否保证获得 EXEC 中插入的该行的标识 ID
  • 在 Rust 中,当一个值隐藏另一个值时,堆栈上会发生什么? [复制]

    这个问题在这里已经有答案了 我在读掌握 Rust https www packtpub com application development mastering rust second edition 第一章末尾有一个练习 其中提供了示例
  • 如果设置 $_SESSION 转到此页面?

    好吧 这里遇到麻烦了 我创建了一个登录脚本 因此在一个人登录后 他们将被定向到另一个页面 而且 如果他们尝试访问其他页面之一 我会将其重定向到登录页面 我的问题是 如果用户登录并再次偶然进入登录页面 我希望它能够识别用户已登录并将其重定向到
  • 创建新的 MVC 项目时出错 - EF 和 JQuery

    每当我创建新的 MVC 项目时 我都会收到错误 无法为实体框架和 Jquery 初始化 Powershell 主机 错误 无法从 C Program Files Microsoft ASP NET ASP NET MVC 4 Package
  • 如何让 Elmah 与 ASP.NET 和 IIS 5.1 URL 路由一起使用

    我在通过本地 IIS 5 1 Web 服务器运行 ASP NET MVC 应用程序时遇到问题 我相信这些问题与 IgnoreRoutes 有关 但我似乎无法制作 IgnoreRoute 来解决问题 Problem 我可以查看我的 elmah
  • Android:如何从 Android 应用程序获取 IP 地址?

    是否可以从 Android 应用程序获取 IP 地址 我将其在书签中保存了一段时间 但从未测试过 http www droidnova com get the ip address of your device 304 html http
  • 如何对 input() 函数中显示的文本应用着色/格式(类似于 print 语句格式)?

    我有一个小型游戏应用程序 它是从 Windows 控制台 cmd exe 启动的 我可以使用 ANSI 转义序列以任何所需的方式格式化文本 我也想对文本应用格式input 方法 但我还没有找到如何做到这一点的方法 这是测试代码 from c
  • SQL Server 的 timestamp2 在 JDBC 中如何工作?

    我在尝试在 SQL Server 2008 中使用 timestamp2 而不是 Timestamp 时遇到了一些麻烦 显然 rs getTimestamp 在 timestamp 和 timestamp2 之间有非常不同的行为 但是 我找
  • 文字轮播交叉淡入淡出效果?

    我们正在尝试实现一个简单的文本轮播 用几个其他单词替换句子中的单个单词 它们将淡入 淡出 容器宽度应缩小 放大以容纳新单词 听起来很简单 但我们遇到了困难 应该像第二行一样工作www branch com http www branch c
  • Google App Engine (Java) 上的全文搜索

    关于这个主题有一些线索 但我认为我的用例有些不同 我想做的事 我的 GAE J 应用程序的全文搜索组件 索引大小较小 25 50MB左右 我不需要实时更新索引 定期重新索引就可以了 这是为了自动完成等 所以它需要非常快 我的印象是在数据存储
  • 在 Servlet 中使用 org.json 会导致 java.lang.ClassNotFoundException: org.json.JSONException

    我正在尝试开发一个 servlet 来发送一些 JSON 对象 但遇到几个异常 我相信我需要添加一些 jar 文件 但我不确定是哪个 这是 doGet 方法以及我导入的所有内容 import java io IOException impo
  • 更改导航栏按钮项目的标题

    let button UIButton button setImage UIImage named coin icon forState UIControlState Normal button addTarget self action
  • 在 docker 容器外部公开日志文件

    我有 net core 应用程序 其中 Serilog 作为日志框架 现在 Serilog 正在记录到文件 我想将此文件公开在容器外部 并像其他文件一样进行简单的访问 我根据 docker compose 参考尝试使用volume和volu
  • 如何将我的电子表格链接到应用制作工具?

    我是 App Maker 的新用户 刚刚开始使用 Google App Scripts 进行编码 所以基本上我对这个主题了解不多 今天我正在开发一个已经存在于 Google Sheets 中的应用程序 我必须使用应用程序制作工具重新创建它
  • 了解操作系统如何存储/检索 IO 设备输入

    我对键盘等 I O 设备如何存储输入以供操作系统或应用程序使用感到有点困惑 如果我有一台单处理器 单核CPU 的计算机 并且当前正在执行的进程是一个游戏 那么游戏如何能够 感知 键盘输入 即使按下按键会强制硬件中断 从而实现上下文切换 然后
  • 在海岸线附近的 ggplot 中选择栅格

    所以我有一张绘制加泰罗尼亚气压的地图 这是一个特写 我现在想选择气压高于 97 kPa 深蓝色 的所有观测值 并用它们创建一个新的数据框以供进一步分析 这是棘手的一点 我想选择符合高度过滤器 AAAAND 的观测值 并且位于地中海沿岸 大多