﻿1
00:00:01,280 --> 00:00:03,110
‫Dozent: In dieser

2
00:00:03,110 --> 00:00:06,660
‫Vorlesung lernen wir Geodatenabfragen kennen, um ein wirklich

3
00:00:06,660 --> 00:00:09,147
‫cooles Feature zu implementieren, nämlich

4
00:00:09,147 --> 00:00:12,750
‫eine Suchfunktion für Touren innerhalb einer bestimmten Entfernung

5
00:00:12,750 --> 00:00:15,313
‫von einem bestimmten Punkt bereitzustellen.

6
00:00:17,060 --> 00:00:18,712
‫Nehmen wir an,

7
00:00:18,712 --> 00:00:22,210
‫Sie leben an einem bestimmten Punkt und möchten wissen,

8
00:00:22,210 --> 00:00:26,008
‫welche Touren in einer bestimmten Entfernung von Ihnen beginnen, z.

9
00:00:26,008 --> 00:00:28,738
‫B. 250 Meilen, weil Sie nicht weiter

10
00:00:28,738 --> 00:00:31,430
‫fahren möchten, um Ihr Tourerlebnis zu beginnen.

11
00:00:31,430 --> 00:00:33,470
‫Das wäre also eine großartige

12
00:00:33,470 --> 00:00:36,413
‫Funktion und ein wirklich schöner Anwendungsfall für Geodatenabfragen.

13
00:00:36,413 --> 00:00:39,804
‫Und um so etwas zu implementieren, könnten

14
00:00:39,804 --> 00:00:43,597
‫wir hier in unserem Tourrouter eine schöne Route

15
00:00:43,597 --> 00:00:45,720
‫erstellen, so ähnlich.

16
00:00:45,720 --> 00:00:50,720
‫Also werde ich es hier vor diesen allgemeinen Routen hier

17
00:00:51,810 --> 00:00:52,643
‫setzen.

18
00:00:54,910 --> 00:00:59,910
‫Sagen wir also Router-Punkt-Route, und ich

19
00:01:00,580 --> 00:01:05,503
‫nenne das hier Touren, okay?

20
00:01:06,890 --> 00:01:09,663
‫Dann müssen wir auch den Abstand angeben.

21
00:01:11,620 --> 00:01:14,503
‫Deshalb erstellen wir hier einen Distanzparameter.

22
00:01:15,607 --> 00:01:17,800
‫Als nächstes müssen wir auch das Zentrum angeben,

23
00:01:17,800 --> 00:01:20,810
‫und das ist im Grunde der Punkt, an dem Sie leben.

24
00:01:20,810 --> 00:01:25,810
‫Lassen Sie uns es also um die Mitte herum angeben und dann einen

25
00:01:27,300 --> 00:01:30,090
‫Schrägstrich und dann Breiten- und Längengrad angeben.

26
00:01:30,090 --> 00:01:31,967
‫Im Grunde möchten Sie in diese

27
00:01:31,967 --> 00:01:34,870
‫Variable hier die Koordinaten des Ortes eingeben, an dem

28
00:01:34,870 --> 00:01:35,960
‫Sie sich befinden.

29
00:01:35,960 --> 00:01:37,960
‫Nehmen wir an, Sie leben in

30
00:01:37,960 --> 00:01:40,760
‫Los Angeles und möchten alle Touren im Umkreis

31
00:01:40,760 --> 00:01:42,390
‫von 300 Meilen finden.

32
00:01:42,390 --> 00:01:44,520
‫Hier würden Sie also

33
00:01:44,520 --> 00:01:46,710
‫300 sagen, und dann würden Sie

34
00:01:46,710 --> 00:01:49,570
‫hier die Koordinaten Ihres Wohnortes eingeben, in Ordnung?

35
00:01:49,570 --> 00:01:52,610
‫Dann bieten wir auch die Möglichkeit, die Einheit

36
00:01:52,610 --> 00:01:53,443
‫anzugeben.

37
00:01:53,443 --> 00:01:57,910
‫Also, ob diese Entfernung hier in Kilometern oder in Meilen ist.

38
00:01:57,910 --> 00:02:01,046
‫Sagen wir also eine

39
00:02:01,046 --> 00:02:05,070
‫Schrägstrich-Einheit und die Einheit als Parameter.

40
00:02:05,070 --> 00:02:07,990
‫Diese Art der Angabe einer URL ist etwas, das wir noch

41
00:02:07,990 --> 00:02:09,364
‫nie zuvor gemacht haben.

42
00:02:09,364 --> 00:02:12,634
‫Im Grunde sagen wir hier zentrieren

43
00:02:12,634 --> 00:02:15,521
‫und slashen und danach den

44
00:02:15,521 --> 00:02:17,736
‫Längen- und Breitengrad,

45
00:02:17,736 --> 00:02:21,510
‫dann die Slash-Einheit und dann den Abfrageparameter.

46
00:02:21,510 --> 00:02:22,832
‫Und natürlich könnten

47
00:02:22,832 --> 00:02:25,192
‫wir es auch so machen, dass der Benutzer

48
00:02:25,192 --> 00:02:28,303
‫all diese Optionen mit einer Abfragezeichenfolge angeben sollte, aber auf

49
00:02:28,303 --> 00:02:33,200
‫diese Weise sieht es viel sauberer aus und es ist auch eine Art Standardmethode zur

50
00:02:33,200 --> 00:02:35,554
‫Angabe von URLs, die viele Objekte enthalten.

51
00:02:35,554 --> 00:02:39,200
‫Also, was ich sagte, stattdessen könnten wir es

52
00:02:39,200 --> 00:02:41,274
‫natürlich so machen.

53
00:02:41,274 --> 00:02:46,274
‫Tours Entfernung und dann müsste der Benutzer die Entfernung wie

54
00:02:49,605 --> 00:02:51,823
‫folgt hier angeben.

55
00:02:53,620 --> 00:02:57,179
‫Und die Mitte wie folgt, sagen wir minus

56
00:02:57,179 --> 00:03:02,179
‫40 und 45, und dann stellt sich die Einheit auch auf Meilen ein.

57
00:03:04,090 --> 00:03:07,121
‫Okay, dies war eine Möglichkeit, Abfragezeichenfolgen zu verwenden, und

58
00:03:07,121 --> 00:03:09,343
‫wir haben es bereits getan.

59
00:03:09,343 --> 00:03:14,100
‫Und zwar nicht so, sondern so.

60
00:03:14,100 --> 00:03:16,740
‫Okay, aber stattdessen werden wir

61
00:03:16,740 --> 00:03:19,063
‫es wieder so spezifizieren.

62
00:03:20,990 --> 00:03:23,303
‫Was meiner Meinung nach viel schöner aussieht.

63
00:03:26,040 --> 00:03:28,217
‫Also minus 40, 45.

64
00:03:31,650 --> 00:03:33,905
‫Okay, denken Sie, dass

65
00:03:33,905 --> 00:03:36,610
‫das hier wirklich viel sauberer aussieht.

66
00:03:36,610 --> 00:03:39,290
‫Okay, und das ist eine andere Sache,

67
00:03:39,290 --> 00:03:41,249
‫die ich Ihnen zeigen wollte,

68
00:03:41,249 --> 00:03:45,750
‫dass es eine Art Standard für die Angabe von URLs ist, in Ordnung?

69
00:03:45,750 --> 00:03:46,971
‫Wie auch

70
00:03:46,971 --> 00:03:49,753
‫immer, für diese Route brauchen wir

71
00:03:49,753 --> 00:03:52,100
‫natürlich einen Routen-Handler, und der

72
00:03:52,100 --> 00:03:57,100
‫wird beim Tour-Controller sein, und nennen wir diese Handler-Funktion "Tours innerhalb".

73
00:03:59,530 --> 00:04:02,775
‫Lassen Sie uns nun diese Methode für

74
00:04:02,775 --> 00:04:04,513
‫diesen Handler implementieren.

75
00:04:06,280 --> 00:04:10,660
‫Also Tourcontroller und gleich hier unten.

76
00:04:17,970 --> 00:04:20,239
‫Beginnen wir mit dem Abrufen aller Parameter.

77
00:04:20,239 --> 00:04:24,253
‫Lassen Sie mich das alles hier kopieren.

78
00:04:25,667 --> 00:04:28,833
‫Und nur damit wir wissen, wie unsere Daten aussehen.

79
00:04:29,810 --> 00:04:30,643
‫Gut?

80
00:04:32,570 --> 00:04:35,953
‫Also dies, und dann hat dies einen Kommentar.

81
00:04:42,550 --> 00:04:47,069
‫In Ordnung, also lassen Sie uns eine einfache Umstrukturierung verwenden, um

82
00:04:47,069 --> 00:04:51,186
‫alle unsere Daten auf einmal aus den Parametern zu erhalten.

83
00:04:51,186 --> 00:04:54,477
‫Und eigentlich müssen

84
00:04:54,477 --> 00:04:59,477
‫wir const und Distance und Unit sagen.

85
00:05:01,650 --> 00:05:05,323
‫All dies kommt also von Anforderungspunktparametern.

86
00:05:08,402 --> 00:05:11,320
‫Okay, also auf Anfrage. params, wir

87
00:05:11,320 --> 00:05:13,990
‫haben Punktabstand, Punktzentrum und Punkteinheit, oder?

88
00:05:13,990 --> 00:05:16,122
‫Denn dies sind die Namen der

89
00:05:16,122 --> 00:05:18,510
‫drei Parameter, die wir hier angegeben haben.

90
00:05:18,510 --> 00:05:19,950
‫Und eigentlich ist

91
00:05:19,950 --> 00:05:23,448
‫es nicht die Mitte, es ist hier lang, okay,

92
00:05:23,448 --> 00:05:27,440
‫das ist also das Richtige, und dann endlich die Einheit.

93
00:05:27,440 --> 00:05:30,190
‫Auch hier verwenden wir die Umstrukturierung, um alle diese Variablen

94
00:05:30,190 --> 00:05:31,703
‫auf einmal zu erhalten.

95
00:05:33,438 --> 00:05:35,880
‫Als nächstes erhalten wir

96
00:05:35,880 --> 00:05:38,730
‫alle Koordinaten von dieser Breitengrad-Längengrad-Variablen hier.

97
00:05:38,730 --> 00:05:42,826
‫Wie wir sehen, erwarten wir die Daten in diesem Format, und

98
00:05:42,826 --> 00:05:45,930
‫das macht es wirklich einfach, diese Daten von

99
00:05:45,930 --> 00:05:47,610
‫Google Maps zu kopieren.

100
00:05:47,610 --> 00:05:49,610
‫Lassen Sie mich Ihnen das nur schnell zeigen.

101
00:05:50,573 --> 00:05:53,310
‫Es ist wichtig, dass Sie verstehen, wie so

102
00:05:53,310 --> 00:05:55,563
‫etwas auch in der Praxis funktioniert.

103
00:05:59,380 --> 00:06:03,323
‫Lassen Sie uns hier das Beispiel aus Los Angeles verwenden.

104
00:06:07,430 --> 00:06:10,593
‫Okay, und nehmen wir an, du wohnst hier irgendwo.

105
00:06:12,720 --> 00:06:17,350
‫Okay, und so können Sie den Breiten- und Längengrad

106
00:06:17,350 --> 00:06:20,124
‫ganz einfach so ermitteln, okay?

107
00:06:20,124 --> 00:06:24,523
‫Setzen Sie das hier noch einmal als Beispiel ein.

108
00:06:26,140 --> 00:06:27,840
‫Und das ist das Format.

109
00:06:27,840 --> 00:06:30,483
‫Es sieht aus wie Breite und Länge.

110
00:06:32,610 --> 00:06:36,263
‫Lassen Sie uns nun für jede von ihnen eine Variable erstellen.

111
00:06:37,755 --> 00:06:39,170
‫Also einen für den Breitengrad und einen für den Längengrad.

112
00:06:39,170 --> 00:06:44,170
‫Also Breitengrad-Punktaufteilung, weil es eine Zeichenfolge ist und

113
00:06:45,074 --> 00:06:48,940
‫wir sie durch Komma aufteilen möchten.

114
00:06:48,940 --> 00:06:51,577
‫Dadurch wird dann ein Array aus zwei

115
00:06:51,577 --> 00:06:55,180
‫Elementen erstellt, und jetzt können wir wieder Destruktor verwenden, um diese in

116
00:06:55,180 --> 00:06:58,193
‫den beiden Variablen zu speichern, an denen wir interessiert sind.

117
00:07:01,910 --> 00:07:05,073
‫Also Breiten- und Längengrade.

118
00:07:12,110 --> 00:07:15,200
‫Okay, als nächstes möchte ich testen, ob wir tatsächlich

119
00:07:15,200 --> 00:07:17,810
‫die Längen- und Breitengradvariablen finden müssen.

120
00:07:17,810 --> 00:07:20,940
‫Denn wenn nicht, bedeutet dies, dass der Benutzer sie

121
00:07:20,940 --> 00:07:23,040
‫nicht im erforderlichen Format angegeben hat.

122
00:07:23,040 --> 00:07:25,270
‫Angenommen, es gibt keinen

123
00:07:25,270 --> 00:07:30,270
‫Breiten- oder Längengrad, dann möchten wir einen neuen Fehler erstellen.

124
00:07:32,610 --> 00:07:37,610
‫Also wie immer neuer App-Fehler, und ich bin mir nicht sicher, ob

125
00:07:39,520 --> 00:07:42,590
‫wir ihn tatsächlich noch hier haben, und

126
00:07:42,590 --> 00:07:43,825
‫tatsächlich nicht.

127
00:07:43,825 --> 00:07:47,270
‫Also haben wir diesen Teil auskommentiert, weil wir den App-Fehler

128
00:07:47,270 --> 00:07:50,240
‫nach dem Erstellen unserer Handler-Factory-Funktionen nicht mehr brauchten,

129
00:07:50,240 --> 00:07:53,610
‫aber jetzt brauchen wir ihn tatsächlich wieder, und so bringen

130
00:07:53,610 --> 00:07:55,003
‫wir ihn zurück.

131
00:07:58,476 --> 00:08:00,876
‫Und die Nachricht

132
00:08:06,510 --> 00:08:11,303
‫hier wird bitte in folgendem Format sein.

133
00:08:12,400 --> 00:08:15,463
‫Und Fehlercode 400 für diese Anfrage.

134
00:08:17,230 --> 00:08:21,657
‫Großartig, und um zu sehen, ob das alles

135
00:08:21,657 --> 00:08:23,220
‫richtig funktioniert,

136
00:08:23,220 --> 00:08:27,490
‫melden wir uns einfach bei der Konsole ab.

137
00:08:27,490 --> 00:08:32,490
‫Die Entfernung, die Länge und Einheit.

138
00:08:36,050 --> 00:08:39,113
‫Und lassen Sie uns hier auch eine

139
00:08:40,910 --> 00:08:44,273
‫allgemeine Nachricht senden, nur um den Anfrage-zu-Antwort-Zyklus wirklich abzuschließen.

140
00:08:45,240 --> 00:08:48,253
‫Und dafür ist natürlich wie immer das Gleiche.

141
00:08:52,368 --> 00:08:54,950
‫Also Status vorerst erfolgreich, und natürlich werden wir später

142
00:08:54,950 --> 00:08:57,523
‫die Daten senden, die die Abfrage zurückgibt.

143
00:08:59,930 --> 00:09:01,823
‫Also lasst uns das hier eigentlich kopieren.

144
00:09:03,360 --> 00:09:05,610
‫Denn diese Art von ist bereits das, was wir wollen.

145
00:09:08,080 --> 00:09:13,060
‫Also zurück in Postman, lassen Sie uns das alles schließen.

146
00:09:13,060 --> 00:09:14,563
‫Diese brauchen wir nicht mehr.

147
00:09:18,720 --> 00:09:21,620
‫Alles klar, wir müssen auch nicht eingeloggt sein

148
00:09:21,620 --> 00:09:23,883
‫und wollen auch keine Updates.

149
00:09:26,952 --> 00:09:30,800
‫Wie auch immer, wir müssen auch diesen Teil bekommen, für den

150
00:09:30,800 --> 00:09:33,379
‫ich zu faul bin, ihn aufzuschreiben.

151
00:09:33,379 --> 00:09:38,379
‫Und das testen wir jetzt.

152
00:09:39,800 --> 00:09:41,410
‫Und das hat nicht

153
00:09:41,410 --> 00:09:45,033
‫funktioniert, und ich glaube, diese hier haben wir tatsächlich Touren genannt.

154
00:09:46,035 --> 00:09:46,868
‫Haben wir?

155
00:09:47,830 --> 00:09:49,640
‫Also Touren innerhalb.

156
00:09:49,640 --> 00:09:53,065
‫Ich bin mir also nicht sicher, warum ich

157
00:09:53,065 --> 00:09:58,065
‫hier Distanz geschrieben habe. Lassen Sie uns das hier in unseren Beispielen schnell beheben.

158
00:10:00,800 --> 00:10:03,513
‫Und so sind es natürlich Touren im Inneren.

159
00:10:06,120 --> 00:10:10,057
‫Und das funktioniert immer noch nicht, also lassen Sie uns einen Blick auf die Implementierung

160
00:10:10,057 --> 00:10:12,007
‫werfen und sie hier tatsächlich weiterleiten.

161
00:10:15,510 --> 00:10:17,993
‫Hier haben wir das,

162
00:10:17,993 --> 00:10:21,156
‫und ja, das stimmt natürlich überhaupt nicht.

163
00:10:21,156 --> 00:10:26,156
‫Dieser hier sollte also offensichtlich nicht innerhalb der Punktroute liegen.

164
00:10:26,450 --> 00:10:29,363
‫Stattdessen sollte es in der get-Methode enthalten sein.

165
00:10:34,030 --> 00:10:36,820
‫Und so sieht das jetzt viel mehr aus wie das, was

166
00:10:36,820 --> 00:10:37,860
‫wir hier haben.

167
00:10:37,860 --> 00:10:40,163
‫Also dot route und dann dot get.

168
00:10:42,910 --> 00:10:45,963
‫Also ein Versuch weniger und diesmal hat es geklappt.

169
00:10:46,800 --> 00:10:49,200
‫Und werfen wir einen Blick

170
00:10:49,200 --> 00:10:51,634
‫auf die Konsole, und tatsächlich erhalten wir

171
00:10:51,634 --> 00:10:56,450
‫hier die Entfernung, die als Breitengrad und Längengrad angegeben ist, und die Einheit.

172
00:10:56,450 --> 00:10:58,690
‫Großartig, und jetzt ist es an der

173
00:10:58,690 --> 00:11:00,673
‫Zeit, die Abfrage selbst zu schreiben.

174
00:11:01,610 --> 00:11:04,112
‫Nun funktioniert eine Geodatenabfrage eigentlich

175
00:11:04,112 --> 00:11:06,830
‫ganz ähnlich wie eine normale Abfrage.

176
00:11:06,830 --> 00:11:10,677
‫Wir werden also immer noch Touren schreiben, ist gleich Tour. finden und

177
00:11:17,400 --> 00:11:21,833
‫natürlich auf das Ergebnis dieses Versprechens warten.

178
00:11:24,720 --> 00:11:28,120
‫Und dann das alte Spiel, alles als asynchron

179
00:11:28,120 --> 00:11:33,120
‫zu markieren und dann das Asynchrone abzufangen und unsere Funktion darin

180
00:11:34,890 --> 00:11:35,723
‫einzuschließen.

181
00:11:37,910 --> 00:11:40,280
‫Wir haben also alle

182
00:11:40,280 --> 00:11:44,266
‫Touren hier ungenutzt, und lassen Sie uns gleich

183
00:11:44,266 --> 00:11:46,240
‫das Antwortobjekt bearbeiten.

184
00:11:46,240 --> 00:11:51,120
‫Also Daten, und jetzt denken Sie daran, wie wir es Daten genannt haben.

185
00:11:52,610 --> 00:11:54,803
‫Und dann Touren.

186
00:11:58,970 --> 00:12:01,293
‫Okay, und alles, was wir tun müssen, ist hier

187
00:12:01,293 --> 00:12:03,193
‫das Objekt anzugeben oder zu filtern.

188
00:12:04,660 --> 00:12:06,770
‫Denken Sie also daran,

189
00:12:06,770 --> 00:12:09,010
‫dass wir grundsätzlich nach dem

190
00:12:09,010 --> 00:12:11,316
‫Startort abfragen möchten, da das Startortfeld

191
00:12:11,316 --> 00:12:15,240
‫den geografischen Punkt enthält, an dem jede Tour beginnt.

192
00:12:15,240 --> 00:12:17,683
‫Und genau danach suchen wir.

193
00:12:18,890 --> 00:12:23,023
‫Also, start location, und jetzt müssen wir den Wert

194
00:12:23,023 --> 00:12:25,900
‫angeben, nach dem wir suchen.

195
00:12:25,900 --> 00:12:28,389
‫Und dafür verwenden wir jetzt einen

196
00:12:28,389 --> 00:12:30,203
‫Geo-Operator namens geo innerhalb.

197
00:12:31,920 --> 00:12:34,120
‫Wie immer müssen wir

198
00:12:34,120 --> 00:12:36,900
‫das Subjekt angeben, und dann hier, wo

199
00:12:36,900 --> 00:12:39,860
‫wir früher wie einen mathematischen Operator wie

200
00:12:39,860 --> 00:12:44,163
‫größer als verwenden würden, diesmal verwenden wir einen Geo-Operator wie diesen.

201
00:12:45,640 --> 00:12:49,950
‫Geo innerhalb, und dieser Operator tut genau das, was er sagt.

202
00:12:49,950 --> 00:12:53,740
‫Grundsätzlich findet es Dokumente innerhalb einer bestimmten Geometrie.

203
00:12:53,740 --> 00:12:58,040
‫Und diese Geometrie müssen wir im nächsten Schritt definieren.

204
00:12:58,040 --> 00:12:59,600
‫Wir wollen also

205
00:12:59,600 --> 00:13:03,440
‫Dokumente finden, aber wo wollen wir diese Dokumente eigentlich finden?

206
00:13:03,440 --> 00:13:06,792
‫Nun, wir wollen sie innerhalb einer Kugel finden,

207
00:13:06,792 --> 00:13:09,780
‫die an diesem von uns definierten Punkt

208
00:13:09,780 --> 00:13:13,680
‫beginnt und einen Radius der von uns definierten Entfernung hat.

209
00:13:13,680 --> 00:13:16,023
‫Also wieder bei unserem Beispiel in Los

210
00:13:17,029 --> 00:13:18,646
‫Angeles, wenn Sie die

211
00:13:18,646 --> 00:13:21,660
‫Entfernung von 250 Meilen angeben, dann bedeutet das, dass Sie

212
00:13:21,660 --> 00:13:26,150
‫alle Tourdokumente innerhalb einer Kugel finden möchten, die einen Radius von 250 Meilen hat.

213
00:13:26,150 --> 00:13:28,190
‫Okay, sinnvoll?

214
00:13:28,190 --> 00:13:30,313
‫Und jetzt müssen wir

215
00:13:30,313 --> 00:13:33,810
‫die Informationen hier an den Geo-Inner-Operator weitergeben, okay?

216
00:13:33,810 --> 00:13:36,563
‫Und das tun wir, indem wir eine Mittelkugel definieren.

217
00:13:40,160 --> 00:13:42,793
‫Okay, und wieder weiß ich, dass

218
00:13:42,793 --> 00:13:47,380
‫das ziemlich verwirrend aussieht, aber deshalb erkläre ich es hier Schritt für Schritt.

219
00:13:47,380 --> 00:13:49,150
‫Und auch gleich werden wir

220
00:13:49,150 --> 00:13:51,080
‫einen Blick auf die Dokumentation werfen.

221
00:13:51,080 --> 00:13:53,307
‫Der Kugelmitteloperator nimmt also

222
00:13:53,307 --> 00:13:56,900
‫ein Array der Koordinaten und des Radius.

223
00:13:56,900 --> 00:13:59,501
‫Und lassen Sie uns den Code hier

224
00:13:59,501 --> 00:14:02,770
‫tatsächlich formatieren, damit er zumindest ein bisschen einfacher aussieht, okay?

225
00:14:02,770 --> 00:14:05,558
‫Nun, es sieht irgendwie gleich aus, aber wie auch

226
00:14:05,558 --> 00:14:08,020
‫immer, so finden Sie die Koordinaten hier.

227
00:14:08,020 --> 00:14:10,900
‫Und dafür brauchen wir noch

228
00:14:10,900 --> 00:14:14,890
‫ein weiteres Array und dann den Längen- und Breitengrad.

229
00:14:14,890 --> 00:14:15,723
‫Und das ist richtig.

230
00:14:15,723 --> 00:14:17,984
‫Sie müssen immer zuerst den

231
00:14:17,984 --> 00:14:21,040
‫Längengrad und dann den Breitengrad definieren, was

232
00:14:21,040 --> 00:14:24,366
‫etwas kontraintuitiv ist, da normalerweise Koordinatenpaare immer zuerst mit

233
00:14:24,366 --> 00:14:27,760
‫dem Breitengrad und zuerst mit dem Längengrad angegeben werden.

234
00:14:27,760 --> 00:14:30,298
‫Ich glaube, ich habe es bereits

235
00:14:30,298 --> 00:14:33,590
‫erwähnt, dass es in Geo-Angrenzend aus irgendeinem Grund so funktioniert.

236
00:14:33,590 --> 00:14:35,430
‫Das ist also der Mittelpunkt der Kugel.

237
00:14:35,430 --> 00:14:36,263
‫Jetzt müssen wir den Radius angeben.

238
00:14:36,263 --> 00:14:41,130
‫Nun passieren wir hier eigentlich nicht in der Ferne, sondern

239
00:14:41,130 --> 00:14:45,100
‫erwartet stattdessen einen Radius in einer speziellen Einheit

240
00:14:45,100 --> 00:14:46,600
‫namens Radiant.

241
00:14:46,600 --> 00:14:48,780
‫Lassen Sie mich hier die Radiusvariable

242
00:14:48,780 --> 00:14:51,633
‫eingeben, und in einer Sekunde werden wir sie definieren.

243
00:14:56,190 --> 00:15:00,820
‫Lassen Sie uns nun den Radius definieren.

244
00:15:00,820 --> 00:15:03,780
‫Auch hier ist der Radius im Grunde die

245
00:15:03,780 --> 00:15:06,000
‫Distanz, die wir als Radius

246
00:15:06,000 --> 00:15:09,500
‫haben wollen, aber umgerechnet in eine spezielle Einheit namens Bogenmaß.

247
00:15:09,500 --> 00:15:11,441
‫Und um das Bogenmaß

248
00:15:11,441 --> 00:15:14,217
‫zu erhalten, müssen wir unsere Entfernung durch

249
00:15:14,217 --> 00:15:15,940
‫den Erdradius teilen.

250
00:15:15,940 --> 00:15:20,340
‫Das klingt ein bisschen verrückt, aber wirklich so funktioniert es.

251
00:15:20,340 --> 00:15:23,532
‫Okay, jetzt müssen wir hier

252
00:15:23,532 --> 00:15:27,313
‫tatsächlich unsere Einheiten berücksichtigen, denn natürlich ist

253
00:15:27,313 --> 00:15:31,180
‫der Erdradius in Meilen anders als in Kilometern.

254
00:15:31,180 --> 00:15:33,756
‫Lassen Sie uns jetzt hier eine

255
00:15:33,756 --> 00:15:38,756
‫Drehung von größer machen und sagen, dass, wenn die Einheit gleich Meilen

256
00:15:40,074 --> 00:15:43,453
‫ist, das Ergebnis hier die Entfernung sein sollte.

257
00:15:44,510 --> 00:15:49,290
‫Also im Grunde unser ursprünglicher Radius geteilt durch 3963. 2.

258
00:15:52,930 --> 00:15:55,383
‫Okay, das ist noch einmal der Radius der Erde in Meilen.

259
00:15:55,383 --> 00:15:59,217
‫Okay, ansonsten gehen wir dann davon aus,

260
00:15:59,217 --> 00:16:01,663
‫dass es Kilometer sind.

261
00:16:01,663 --> 00:16:05,941
‫Wenn es sich also um Kilometer handelt, ist es die

262
00:16:05,941 --> 00:16:10,157
‫Distanz geteilt durch 6.378. 1 Kilometer.

263
00:16:14,210 --> 00:16:19,210
‫In Ordnung, also wieder ist diese Art von verrückter Umwandlung hier

264
00:16:19,900 --> 00:16:21,819
‫notwendig, weil normalerweise erwartet

265
00:16:21,819 --> 00:16:26,117
‫wird, dass der Radius unserer Kugel im Bogenmaß ist.

266
00:16:26,117 --> 00:16:28,292
‫Und das Bogenmaß erhalten wir, indem

267
00:16:28,292 --> 00:16:30,593
‫wir die Entfernung durch den Erdradius dividieren.

268
00:16:31,450 --> 00:16:34,173
‫Großartig, wir sind also fast bereit, dies jetzt zu testen.

269
00:16:34,173 --> 00:16:39,173
‫Fügen wir einfach die Results-Eigenschaft hinzu, die wir früher hatten.

270
00:16:43,530 --> 00:16:46,060
‫Bei der Anzahl der Ergebnisse im

271
00:16:46,060 --> 00:16:48,057
‫Grunde, und dann

272
00:16:48,057 --> 00:16:50,918
‫ist eine weitere sehr wichtige Sache, dass

273
00:16:50,918 --> 00:16:54,845
‫wir, um nur grundlegende Abfragen durchführen zu können, zuerst dem

274
00:16:54,845 --> 00:16:57,664
‫Feld, in dem sich die Geodaten befinden,

275
00:16:57,664 --> 00:17:01,440
‫nach denen wir suchen, einen Index zuordnen müssen gelagert.

276
00:17:01,440 --> 00:17:05,700
‫In diesem Fall müssen wir also einen Index zum Startort hinzufügen.

277
00:17:05,700 --> 00:17:08,503
‫Also machen wir das hier im Tourmodell.

278
00:17:10,310 --> 00:17:14,820
‫Hier unten brauchen wir also noch einen weiteren Index.

279
00:17:14,820 --> 00:17:17,853
‫Tour-Schema. Index.

280
00:17:19,185 --> 00:17:24,185
‫Startort, aber jetzt werden wir ihn nicht auf eins oder

281
00:17:26,070 --> 00:17:28,530
‫minus eins setzen, da wir

282
00:17:28,530 --> 00:17:30,750
‫diesmal einen anderen Index

283
00:17:30,750 --> 00:17:31,940
‫benötigen.

284
00:17:31,940 --> 00:17:35,045
‫Für Geodaten muss dieser Index also ein

285
00:17:35,045 --> 00:17:39,160
‫2D-Kugelindex sein, wenn die Daten reale Punkte auf der Erde

286
00:17:39,160 --> 00:17:41,314
‫wie eine Kugel beschreiben.

287
00:17:41,314 --> 00:17:45,276
‫Alternativ können wir auch einen 2D-Index verwenden, wenn

288
00:17:45,276 --> 00:17:49,660
‫wir nur fiktive Punkte auf einer einfachen zweidimensionalen Ebene verwenden.

289
00:17:49,660 --> 00:17:52,210
‫In diesem Fall sprechen wir

290
00:17:52,210 --> 00:17:54,411
‫natürlich von realen Punkten

291
00:17:54,411 --> 00:17:58,805
‫auf der Erdoberfläche, daher verwenden wir hier einen 2D-Kugelindex.

292
00:17:58,805 --> 00:18:03,805
‫Also eine 2D-Kugel wie diese.

293
00:18:04,000 --> 00:18:07,253
‫Okay, und wir sagen im Grunde,

294
00:18:07,253 --> 00:18:12,090
‫dass diese Startposition hier auf eine 2D-Kugel indiziert werden sollte.

295
00:18:12,090 --> 00:18:16,510
‫Also eine erdähnliche Kugel, in der sich alle unsere Daten befinden.

296
00:18:16,510 --> 00:18:18,906
‫Super, und damit sollten wir

297
00:18:18,906 --> 00:18:22,283
‫nun eigentlich bereit sein, unsere neue Route auszuprobieren.

298
00:18:23,520 --> 00:18:26,839
‫Okay, lass uns diesen Radius hier

299
00:18:26,839 --> 00:18:31,839
‫einfach um 400 Meilen vergrößern, und mal sehen, was wir bekommen.

300
00:18:32,260 --> 00:18:34,609
‫Nun, wir bekommen diesen seltsam aussehenden Fehler,

301
00:18:34,609 --> 00:18:37,282
‫und ich bin mir nicht wirklich sicher, was das ist.

302
00:18:37,282 --> 00:18:40,290
‫Schauen wir also mal rein.

303
00:18:40,290 --> 00:18:43,330
‫Und wahrscheinlich stimmt hier etwas mit dem Radius nicht,

304
00:18:43,330 --> 00:18:46,810
‫aber eigentlich ist dies ein großartiger Zeitpunkt, um unseren Debugger zu testen.

305
00:18:46,810 --> 00:18:49,130
‫Das habe ich Ihnen schon vor langer Zeit

306
00:18:49,130 --> 00:18:51,700
‫gezeigt, aber dies ist ein guter Anwendungsfall, um sich

307
00:18:51,700 --> 00:18:53,743
‫den Debugger tatsächlich noch einmal anzusehen.

308
00:18:54,950 --> 00:18:57,620
‫Ich denke, wir haben dafür ein NPM-Skript,

309
00:18:57,620 --> 00:18:59,140
‫es heißt Debug.

310
00:18:59,140 --> 00:19:04,140
‫Wir müssen also diesen Prozess kennen und dann sagen, NPM run debug.

311
00:19:07,460 --> 00:19:08,293
‫Okay?

312
00:19:09,570 --> 00:19:12,818
‫Das sollte sich also dieses schöne Fenster öffnen.

313
00:19:12,818 --> 00:19:17,233
‫Und lassen Sie uns alle diese Dateien hier schließen.

314
00:19:18,560 --> 00:19:21,898
‫Okay, und wir sind in unseren Controllern.

315
00:19:21,898 --> 00:19:23,673
‫Tour-Controller.

316
00:19:24,680 --> 00:19:29,590
‫Und jetzt setzen wir hier einen Breakpoint.

317
00:19:29,590 --> 00:19:31,940
‫Okay, denn zu diesem Zeitpunkt haben

318
00:19:31,940 --> 00:19:33,998
‫wir alle unsere Variablen definiert

319
00:19:33,998 --> 00:19:38,480
‫und können uns dann ihre Werte ansehen, um zu sehen, was los ist.

320
00:19:38,480 --> 00:19:40,877
‫Natürlich hätten wir das auch mit einer einfachen

321
00:19:40,877 --> 00:19:43,343
‫Konsole machen können. log, aber in

322
00:19:43,343 --> 00:19:45,544
‫manchen Situationen, in denen viel los

323
00:19:45,544 --> 00:19:48,399
‫ist, ist es auch schön, den Debugger zu verwenden.

324
00:19:48,399 --> 00:19:50,777
‫Daher müssen wir unsere Anfrage senden.

325
00:19:50,777 --> 00:19:54,750
‫Und jetzt sind wir im Debugger an unserem Breakpoint.

326
00:19:54,750 --> 00:19:56,240
‫Und so hat unser

327
00:19:56,240 --> 00:19:58,280
‫Code zu diesem Zeitpunkt wirklich aufgehört.

328
00:19:58,280 --> 00:20:00,187
‫Und wir können hier sehen,

329
00:20:00,187 --> 00:20:02,953
‫dass tatsächlich alle unsere Variablen definiert zu sein scheinen.

330
00:20:04,130 --> 00:20:07,280
‫Schauen wir uns das hier in local an.

331
00:20:07,280 --> 00:20:09,153
‫Wir haben also eine

332
00:20:09,153 --> 00:20:13,360
‫Entfernung, wir haben den Breitengrad, den Längengrad und auch den Radius.

333
00:20:13,360 --> 00:20:14,916
‫Also lass uns hier weitermachen.

334
00:20:14,916 --> 00:20:16,493
‫Also sind wir direkt

335
00:20:16,493 --> 00:20:21,493
‫zur nächsten Zeile gesprungen, weil dieses if hier nicht in den if-Block eingetreten ist.

336
00:20:24,350 --> 00:20:27,400
‫Und so führt es jetzt alle diese Funktionen aus.

337
00:20:27,400 --> 00:20:29,600
‫Aber lassen Sie uns tatsächlich aus

338
00:20:29,600 --> 00:20:32,680
‫ihnen heraustreten, und jetzt bekommen wir tatsächlich undefinierte Touren.

339
00:20:32,680 --> 00:20:36,010
‫Wenn wir also jetzt so

340
00:20:36,010 --> 00:20:40,690
‫weitermachen, werden wir wahrscheinlich denselben Fehler wieder bekommen, oder?

341
00:20:40,690 --> 00:20:43,160
‫Und das tun wir in der Tat.

342
00:20:43,160 --> 00:20:46,043
‫Es muss also etwas hier in dieser

343
00:20:46,043 --> 00:20:50,894
‫Zeile sein, sagen wir, und tatsächlich, ich glaube, ich habe den Fehler gefunden.

344
00:20:50,894 --> 00:20:53,820
‫So schreibt man jetzt Kugel.

345
00:20:53,820 --> 00:20:57,096
‫Sphäre ist also eher so, oder?

346
00:20:57,096 --> 00:21:01,963
‫Also hoffe ich und glaube, dass dies tatsächlich der Fehler war.

347
00:21:04,100 --> 00:21:07,390
‫Schließen wir also den Debugger hier tatsächlich und

348
00:21:07,390 --> 00:21:10,718
‫lassen Sie uns entlasten, und eigentlich hätte das meinen

349
00:21:10,718 --> 00:21:12,593
‫Code hier aktualisieren sollen.

350
00:21:13,690 --> 00:21:15,913
‫Mal sehen, und es tat es tatsächlich nicht.

351
00:21:17,180 --> 00:21:21,980
‫Ich bin mir nicht sicher, warum das so ist, aber in Ordnung.

352
00:21:21,980 --> 00:21:23,373
‫Lassen Sie uns das hier noch einmal ausführen.

353
00:21:24,230 --> 00:21:27,350
‫Nicht dieser Befehl, okay,

354
00:21:27,350 --> 00:21:30,623
‫lass uns einfach NPM starten.

355
00:21:34,210 --> 00:21:35,463
‫Schließen Sie alle diese.

356
00:21:36,970 --> 00:21:38,293
‫Und jetzt versuchen Sie es noch einmal.

357
00:21:40,500 --> 00:21:44,080
‫Ah, und jetzt bekommen wir hier einige echte Ergebnisse, schön.

358
00:21:44,080 --> 00:21:47,800
‫Es sagt mir also, dass diese Touren

359
00:21:47,800 --> 00:21:51,170
‫hier in der angegebenen 400-Meilen-Distanz liegen.

360
00:21:51,170 --> 00:21:54,550
‫Aber wie können wir wirklich wissen, dass es wahr ist?

361
00:21:54,550 --> 00:21:57,827
‫Nun, eigentlich können wir dafür einen Kompass verwenden.

362
00:21:57,827 --> 00:22:01,784
‫Wenn wir hier also den Kompass öffnen, haben wir etwas

363
00:22:01,784 --> 00:22:04,090
‫wirklich Schönes, nämlich dieses Schema.

364
00:22:04,090 --> 00:22:06,660
‫Das machen wir also hier in den Touren.

365
00:22:06,660 --> 00:22:09,818
‫Und so können wir jetzt hier zum Schema kommen

366
00:22:09,818 --> 00:22:11,773
‫und dieses Schema dann analysieren.

367
00:22:12,830 --> 00:22:15,456
‫Analysieren Sie also das Schema, und hier haben wir

368
00:22:15,456 --> 00:22:17,893
‫nun eine schöne Zusammenfassung für alle unsere Felder.

369
00:22:19,648 --> 00:22:20,893
‫Sie sehen

370
00:22:20,893 --> 00:22:23,477
‫beispielsweise, dass der Schwierigkeitsgrad bei 50 %

371
00:22:23,477 --> 00:22:28,477
‫der Dokumente leicht, bei 30 % mittel und bei 20 % schwer ist.

372
00:22:28,480 --> 00:22:29,990
‫Sie sehen auch diese Laufzeiten.

373
00:22:29,990 --> 00:22:34,880
‫In 20% sind es also fünf, und auch neun ist beliebter als

374
00:22:34,880 --> 00:22:36,643
‫die anderen Laufzeiten.

375
00:22:38,030 --> 00:22:41,491
‫Was mich hier wirklich interessiert, sind die Standorte.

376
00:22:41,491 --> 00:22:46,283
‫Oder eigentlich die Startorte, also das ist hier.

377
00:22:47,400 --> 00:22:49,801
‫Und jetzt würden Sie normalerweise hier eine Karte sehen.

378
00:22:49,801 --> 00:22:53,217
‫Aber im Moment gibt es keine Karte, weil

379
00:22:53,217 --> 00:22:56,816
‫wir gerade ein Dokument haben, das keinen Startort hat.

380
00:22:56,816 --> 00:22:58,648
‫Damit dies

381
00:22:58,648 --> 00:23:02,616
‫ordnungsgemäß funktioniert, müssen wir dieses Dokument loswerden.

382
00:23:02,616 --> 00:23:05,046
‫Es war also eines dieser Testdokumente,

383
00:23:05,046 --> 00:23:08,994
‫die wir erstellt haben, die wir aber jetzt eigentlich nicht mehr brauchen.

384
00:23:08,994 --> 00:23:12,330
‫Also lass mich sehen, ob es hier auftaucht.

385
00:23:12,330 --> 00:23:14,065
‫Vielleicht ist es am Ende.

386
00:23:14,065 --> 00:23:16,452
‫Also ja, es ist diese neue Testtour.

387
00:23:16,452 --> 00:23:19,681
‫Lass uns das loswerden.

388
00:23:19,681 --> 00:23:23,310
‫Zurück zu unserem Schema, analysieren wir es noch einmal.

389
00:23:23,310 --> 00:23:28,310
‫Okay, hier haben wir also die Star-Anwendungen.

390
00:23:31,650 --> 00:23:35,760
‫Und hier siehst du schon die Karte, das ist also toll, oder?

391
00:23:35,760 --> 00:23:38,660
‫Das ist wirklich ein praktisches Feature.

392
00:23:38,660 --> 00:23:40,485
‫Wir sollten hier also neun Punkte haben.

393
00:23:40,485 --> 00:23:44,880
‫Also eins, zwei, drei, vier, fünf, sechs, sieben, acht, eins

394
00:23:44,880 --> 00:23:47,240
‫hier oben, das neunte.

395
00:23:47,240 --> 00:23:50,313
‫Also wahrscheinlich ist dieser hier, um die Nordlichter zu sehen.

396
00:23:50,313 --> 00:23:51,940
‫Richtig?

397
00:23:51,940 --> 00:23:54,880
‫Und jetzt können wir diese Abfrage mit dieser

398
00:23:54,880 --> 00:23:56,583
‫grafischen Oberfläche tatsächlich replizieren.

399
00:23:57,780 --> 00:24:00,960
‫Kommen wir also nach Los Angeles und ungefähr zu

400
00:24:00,960 --> 00:24:03,210
‫dem Punkt, an dem wir waren.

401
00:24:03,210 --> 00:24:05,920
‫Sagen wir also hier, und ich zoome ein wenig

402
00:24:05,920 --> 00:24:07,840
‫heraus, nur um etwas mehr Platz

403
00:24:07,840 --> 00:24:11,120
‫zu schaffen, aber jetzt können wir die Umschalttaste drücken und dann ziehen.

404
00:24:11,120 --> 00:24:12,783
‫Also wie es hier unten heißt.

405
00:24:13,810 --> 00:24:16,340
‫Also lege die Hand dort hin, wo unser Punkt war,

406
00:24:16,340 --> 00:24:18,727
‫also im Grunde irgendwo hier in Los Angeles.

407
00:24:18,727 --> 00:24:22,750
‫Jetzt verschieben und dann ziehen, jetzt gut.

408
00:24:22,750 --> 00:24:25,410
‫Sie können also sehen, dass wir, wenn

409
00:24:25,410 --> 00:24:28,132
‫wir beginnen, diese Sphäre zu vergrößern, mehr und

410
00:24:28,132 --> 00:24:32,053
‫mehr zu einigen dieser Punkte hier gelangen, die gelb werden, okay?

411
00:24:32,053 --> 00:24:37,053
‫Und ich glaubte, dass unser Radius ungefähr 0 war. 1 oder

412
00:24:37,232 --> 00:24:42,232
‫so ähnlich, sagen wir.

413
00:24:42,320 --> 00:24:45,540
‫Und so sehen Sie, dass eigentlich drei Dokumente,

414
00:24:45,540 --> 00:24:48,740
‫also drei Touren innerhalb dieser Sphäre, die wir

415
00:24:48,740 --> 00:24:51,010
‫gerade erstellt haben, okay?

416
00:24:51,010 --> 00:24:54,380
‫Wir haben also diese Kugel mit dem Radius 0. 1, wie Sie hier

417
00:24:54,380 --> 00:24:56,060
‫oben sehen können.

418
00:24:56,060 --> 00:24:58,583
‫Und so sieht diese Abfrage tatsächlich genauso aus

419
00:24:58,583 --> 00:25:02,260
‫wie die, die wir gerade in unserer Controller-Funktion mit Code gefüllt

420
00:25:02,260 --> 00:25:03,218
‫haben, oder?

421
00:25:03,218 --> 00:25:07,500
‫Wir erhalten also diese drei Dokumente, die orange markiert sind,

422
00:25:07,500 --> 00:25:12,177
‫also lassen Sie uns jetzt hier nochmal auf Analysieren klicken, und

423
00:25:12,177 --> 00:25:15,853
‫unsere Abfrage hat nun drei Dokumente zurückgegeben.

424
00:25:17,100 --> 00:25:19,920
‫Sehen wir uns also die Namen an.

425
00:25:19,920 --> 00:25:21,731
‫Also wo ist das?

426
00:25:21,731 --> 00:25:24,171
‫Für Sportliebhaber, Weinverkoster

427
00:25:24,171 --> 00:25:26,130
‫und Parkcamper.

428
00:25:26,130 --> 00:25:28,670
‫Und die drei Touren, die wir in Postman

429
00:25:28,670 --> 00:25:32,440
‫bekommen haben, also als Ergebnis für API, sollten genau dieselben drei sein.

430
00:25:32,440 --> 00:25:35,743
‫Also der Sportliebhaber, Weinverkoster und Parkcamper.

431
00:25:39,440 --> 00:25:43,853
‫Also Parkcamper, dann haben Sie, der Sportliebhaber, und der

432
00:25:45,806 --> 00:25:47,643
‫letzte, der sich

433
00:25:51,168 --> 00:25:54,420
‫erinnern sollte, sollte der Weinverkoster sein, und

434
00:25:54,420 --> 00:25:56,450
‫das ist er tatsächlich.

435
00:25:56,450 --> 00:25:58,467
‫Super, das ist wirklich fantastisch.

436
00:25:58,467 --> 00:26:02,706
‫Lassen Sie uns dies jetzt hier auf 200 reduzieren, sehen

437
00:26:02,706 --> 00:26:06,214
‫wir, wie viele Ergebnisse Sie dann erhalten,

438
00:26:06,214 --> 00:26:09,293
‫und tatsächlich ist es nur eines.

439
00:26:10,150 --> 00:26:12,635
‫Kommen wir also zurück zum Kompass.

440
00:26:12,635 --> 00:26:16,510
‫Lassen Sie uns diese Abfrage hier löschen.

441
00:26:16,510 --> 00:26:19,159
‫Wenn wir also zu all unseren Dokumenten zurückkehren, werfen

442
00:26:19,159 --> 00:26:21,473
‫Sie einen Blick auf unsere Karte.

443
00:26:23,200 --> 00:26:28,150
‫Und hier ist LA, okay.

444
00:26:28,150 --> 00:26:30,803
‫Es ist ein anderer Radius, der ungefähr 0 sein sollte. 05.

445
00:26:31,861 --> 00:26:34,970
‫Sagen wir jetzt so etwas, und so

446
00:26:34,970 --> 00:26:38,125
‫bekommen wir tatsächlich nur diese eine Tour, von der

447
00:26:38,125 --> 00:26:42,209
‫ich glaube, dass es sich um die Weinprobe oder so handelt.

448
00:26:42,209 --> 00:26:44,184
‫Ja, das müssen wir analysieren.

449
00:26:44,184 --> 00:26:49,184
‫Also oh, eigentlich ist es der Sportliebhaber.

450
00:26:51,650 --> 00:26:54,233
‫Mal sehen, ob wir das hier haben.

451
00:26:56,210 --> 00:26:57,800
‫Und tatsächlich ist es so.

452
00:26:57,800 --> 00:27:00,211
‫Es ist also der Sportliebhaber, und das

453
00:27:00,211 --> 00:27:04,910
‫ist die einzige Tour, die sich im Umkreis von 200 Meilen von Los Angeles befindet.

454
00:27:04,910 --> 00:27:06,000
‫Fantastisch.

455
00:27:06,000 --> 00:27:09,883
‫Also das finde ich wirklich richtig spannend, richtig cool.

456
00:27:11,860 --> 00:27:14,036
‫Lassen Sie mich Ihnen noch ganz schnell

457
00:27:14,036 --> 00:27:18,303
‫etwas anderes zeigen, damit Sie auch alle unsere Standorte auf der Karte sehen können.

458
00:27:19,200 --> 00:27:20,823
‫Das ist also hier.

459
00:27:22,800 --> 00:27:25,818
‫Dies sind also die Orte

460
00:27:25,818 --> 00:27:30,280
‫aller Touren, also die, die in Ort gespeichert sind.

461
00:27:30,280 --> 00:27:32,830
‫Wir haben also die Koordinaten, und wir haben

462
00:27:32,830 --> 00:27:35,293
‫auch Tage, Beschreibungen und die Uhrzeit, okay?

463
00:27:38,067 --> 00:27:41,266
‫Und natürlich dreht sich unsere Anfrage hier nicht um all das.

464
00:27:41,266 --> 00:27:43,516
‫Für diese Abfrage interessieren uns

465
00:27:43,516 --> 00:27:46,583
‫eigentlich nur die Sternstandorte, aber ich wollte Ihnen

466
00:27:46,583 --> 00:27:50,890
‫trotzdem diese Karte zeigen, auf der wir auch alle Standorte sehen können.

467
00:27:50,890 --> 00:27:54,251
‫Okay, es gibt wirklich ein riesiges Potenzial für die

468
00:27:54,251 --> 00:27:56,770
‫Verwendung von Geodaten mit MongoDB.

469
00:27:56,770 --> 00:27:59,870
‫Die Möglichkeiten für solche Geo-Abfragen

470
00:27:59,870 --> 00:28:02,010
‫sind wirklich endlos.

471
00:28:02,010 --> 00:28:03,735
‫Und ich wollte Ihnen eigentlich

472
00:28:03,735 --> 00:28:06,637
‫zeigen, ob wir in MongoDB noch weitere Geodatenoperatoren haben.

473
00:28:06,637 --> 00:28:10,603
‫Werfen wir also noch einmal einen Blick in die Dokumentation.

474
00:28:11,931 --> 00:28:14,569
‫Kommen wir hier noch

475
00:28:14,569 --> 00:28:19,569
‫einmal zu den Referenz- und Operatoren und den Abfrageoperatoren.

476
00:28:21,970 --> 00:28:25,530
‫Und ich glaube, es ist irgendwo hier unten, ja.

477
00:28:25,530 --> 00:28:27,583
‫Hier haben wir also den Geodatenoperator.

478
00:28:27,583 --> 00:28:31,020
‫Und Sie sehen, dass dies diejenige ist, die wir

479
00:28:31,020 --> 00:28:33,599
‫verwendet haben, also diejenige, die

480
00:28:33,599 --> 00:28:36,190
‫Geometrien innerhalb einer angrenzenden geo-begrenzenden Geometrie auswählt.

481
00:28:36,190 --> 00:28:39,220
‫Das klingt ein bisschen seltsam, aber diese angrenzende

482
00:28:39,220 --> 00:28:42,546
‫geo-angrenzende Geometrie ist die Kugel, die wir in unserem

483
00:28:42,546 --> 00:28:44,570
‫Code definiert haben, oder?

484
00:28:44,570 --> 00:28:46,820
‫Jetzt hätten wir hier auch die Snear verwenden können,

485
00:28:46,820 --> 00:28:48,373
‫schauen wir uns das an.

486
00:28:49,560 --> 00:28:51,833
‫Und so hätte das ein bisschen anders ausgesehen.

487
00:28:51,833 --> 00:28:54,830
‫In diesem Fall würden wir also den Punkt

488
00:28:54,830 --> 00:28:57,600
‫mit dem erhaltenen Längen- und Breitengrad definieren

489
00:28:57,600 --> 00:28:59,498
‫und dann die maximale Entfernung

490
00:28:59,498 --> 00:29:01,223
‫hier in Metern angeben.

491
00:29:01,223 --> 00:29:03,342
‫Und in diesem Fall mussten

492
00:29:03,342 --> 00:29:06,164
‫wir die Umrechnung in Radiant nicht vornehmen.

493
00:29:06,164 --> 00:29:07,890
‫Okay, das Schöne daran ist

494
00:29:07,890 --> 00:29:10,188
‫auch, dass wir einen Mindestabstand angeben können.

495
00:29:10,188 --> 00:29:12,782
‫Damit könnten wir zum Beispiel Touren

496
00:29:12,782 --> 00:29:16,779
‫ausschließen, die nur 80 km von unserem Ausgangspunkt entfernt

497
00:29:16,779 --> 00:29:18,040
‫sind, okay?

498
00:29:18,040 --> 00:29:20,270
‫Wenn Sie also eines Tages so

499
00:29:20,270 --> 00:29:23,993
‫etwas brauchen, können Sie auch hier immer den neuen Operator verwenden.

500
00:29:25,071 --> 00:29:26,503
‫OK großartig.

501
00:29:27,916 --> 00:29:30,468
‫Mit dieser hier gerade definierten Geo-Abfrage

502
00:29:30,468 --> 00:29:33,600
‫haben wir also grundsätzlich Dokumente gefunden, die sich in

503
00:29:33,600 --> 00:29:36,401
‫einer gewissen Entfernung von unserem Ausgangspunkt befinden.

504
00:29:36,401 --> 00:29:39,500
‫Aber was wäre, wenn wir eigentlich

505
00:29:39,500 --> 00:29:43,600
‫die genauen Entfernungen aller Touren zu diesem Startpunkt wissen wollten?

506
00:29:43,600 --> 00:29:46,300
‫Genau das werden wir in der

507
00:29:46,300 --> 00:29:47,683
‫nächsten Vorlesung berechnen.

