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 需要在我的浏览器中下载并在导入 r 之前在我的工作目录中解压缩.
阅读后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
所以我有一张绘制加泰罗尼亚气压的地图:
这是特写:
我现在想 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 需要在我的浏览器中下载并在导入 r 之前在我的工作目录中解压缩.
阅读后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