Schrift
[thread]3713[/thread]

geokoordinaten



<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
Froschpopo
 2006-09-11 06:47
#34629 #34629
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
es gibt ja die openGeoDB, die z.B. zu einem PLZ,-Ort die passenden GEO-Koordinaten liefert.

Wie das geht, lässt sich hier erfahren: http://opengeodb.hoppe-media.com/index.php?FAQEntfernung

Nun meine Frage:
Angenommen ich habe die zwei Geokoordinaten in der Hand, die restlichen in einer Datenbank.

Lässt sich mit nur einer Datenbankabfrage eine Liste aller gefundenen, in einem Umkreis von X Kilometer befindlichen, Ergebnisse ermitteln?

Angenommen die Datenbank sieht so aus:

Username|Koordinate1|Koordinate2

Nun habe ich noch zwei Koordinaten in der Hand, und will nun alle Datensätze in einem Umkreis von 20 km ermitteln.
Wie müsste denn ein solches Statement (mysql) aussehen? Lässt sich soetwas überhaupt mit einem einzelnen ermitteln?

Meine Idee: wenn zwei Koordinatenpaare vorhanden sind, lässt sich dann mit einer "größer-als" bzw "kleiner-als" - Lösung soetwas ermitteln?\n\n

<!--EDIT|Froschpopo|1157942951-->
Ronnie
 2006-09-11 09:40
#34630 #34630
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wenn es geht dann wahrscheinlich mit der spatial extension - siehe: http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html
MisterL
 2006-09-11 19:13
#34631 #34631
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Rein mathematisch gesehen wäre das eine Ellipse
Und die SQL-Query müsste man dann dementsprechend formulieren
“Perl is the only language that looks the same before and after RSA encryption.”
jan
 2006-09-11 21:27
#34632 #34632
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
das könnte auch helfen: http://www.tutorials.de/forum....en.html
GwenDragon
 2006-09-12 13:31
#34633 #34633
User since
2005-01-17
14608 Artikel
Admin1
[Homepage]
user image
Wieviel Datensätze haste denn? Die Berechnung der Umkreise könnte etwas dauern.

Vermutung: Kansst du nicht die näheren größeren Orte in die DB speichern und damit vorselektieren?
Iach weiß ja nicht so genau, was die Datenbank machen soll.
Froschpopo
 2006-09-12 13:56
#34634 #34634
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
die datenbank enthält ca 40.000 User. In jedem Datensitz sind die Geokoordinaten desjenigen Users enthalten.
Wenn man dann in einem Formular z.b. Koordinaten eingibt, will ich die in einem Umkreis von z.b. 20 km gefundenen Suchergebnisse ausgeben.
Froschpopo
 2006-09-12 18:23
#34635 #34635
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=jan,11.09.2006, 19:27]das könnte auch helfen: http://www.tutorials.de/forum....en.html[/quote]
hast du auch den kompletten Post gelesen? ;)
Der ist für mich alles andere als verständlich. Scheinbar hat keiner in dem Forum irgendwann ne Lösung gefunden, weil sich die beteiligten einfach nichtmehr geäußert habem.
Froschpopo
 2006-09-12 18:57
#34636 #34636
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
was haltet ihr davon:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl

use strict;
use Math::Trig;

#Geodaten Ort1 (Bochum)
my $B1 = 7.2167121725093;
my $L1 = 51.4840049423119;

#Geodaten Ort2 (Essen)
my $B2 = 7.008753968688;
my $L2 = 51.4586961144773;

#Kreiszahl Pi
my $pi = 3.14159;

#Umrechnung von Grad in Radius
my $breite1 = $B1 / 180 * $pi;
my $laenge1 = $L1 / 180 * $pi;

my $breite2 = $B2 / 180 * $pi;
my $laenge2 = $L2 / 180 * $pi;

#Entfernungsberechnung
my $entfernung = acos(sin($breite1)*sin($breite2) + cos($breite1)*cos($breite2)*cos($laenge2-$laenge1));

#Erdrundung einbeziehen
$entfernung = $entfernung * 6378.137;

print "Entfernung (Luftlinie): $entfernung km\n";

Laut Atlas kommt das ziemlich genau hin.
Jetzt will ich das mit ner Datenbank machen. D.h. ich will alles ausgeben, was innerhalb von z.B. 20 KM liegt. Dabei brauch ich aber jetzt irgendwie starthilfe.\n\n

<!--EDIT|Froschpopo|1158073103-->
MisterL
 2006-09-12 19:26
#34637 #34637
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Dann wird jetzt eine Funktion implementiert, welche die Ellipsengleichung beinhaltet. Diese übernimmt in der SQL-Query dann das Errechnen der inneliegenden Punkte. Zur Ellipse: http://de.wikipedia.org/wiki/Ellipse
“Perl is the only language that looks the same before and after RSA encryption.”
Froschpopo
 2006-09-12 19:38
#34638 #34638
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Und genau das verstehe ich nicht: Eine Elipse ergibt doch keinen gleichmäßigen Radius in alle Richtungen. Ich möchte einen in alle Richtungen gleichmäßigen Durchmesser haben!
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2006-09-11 06:47.