Zu GEO Daten die passende Stadt in DB schreiben

E

Ec16

Hallo,

ich habe hier mal eine kurze Frage.
Ist es eigentlich möglich (bestimmt) eine mysql Datenbank zu aktualisieren wenn folgendes gegeben ist:

Also, ich habe bei einem DB Eintrag (insgesamt ca. 57.000 Einträge die es betrifft) 2 Werte (Lat & Lng) von GEO Daten und möchte jetzt einen weitere Spalte (Ort) in diesem Eintrag mit dem Ort füttern der zu den GEO Daten passt. Also das was man z.B. findet wenn man die GEO Daten in eine GEO Suchmaschine eingibt bzw. nur den Ort.

Ist so was umzusetzen der muss ich jetzt weiter per Hand in der DB die Daten suchen und eintragen?

Vielen Dank
 
Was ist bei dir die "GEO Suchmaschine". Eine Seite im Netz wo du die Latitude/Longitude-Werte eingeben kannst und dann den Namen der Stadt bekommst?

Das könnte eventuell mit einer Mischung aus jQuery/PHP/mySQL zu lösen sein (wobei ich keine direkte Lösung habe).

Einfacher könnte es aber sein wenn du z.B. bei OpenGeoDb schaust ob du dir da die kompletten Daten holen kannst und damit die vorhandene Tabelle neu aufbaust!?
 
Opengeodb ist bis auf eine SQL-Abfrage fertig:
Und zwar eine, mit der du das, was du brauchst,
aus den ganzen sonstigen Daten herausholst.
 
Es ist auch die Frage was der Seitenbetreiber dazu sagt wenn du 57.000 Anfragen abfeuerst und dann auch noch Daten ausliest.

Ich würde wie oben schon geschrieben von OpenGeoDb die entsprechende Tabelle nehmen und sie auf deine Bedürfnisse anpassen. Es stellt sich natürlich die Frage was du jetzt außer Lat/Lng sonst noch alles gespeichert hast.
 
Hey,

habe an dem selben Problem gesessen, die db hab ich auch von geo genommen, vlt interessiert dich folgendes script noch:

PHP:
<?php

# Bad Nenndorf
$lang1 = 9.37285961658953;
$breit1 = 52.3419705963189;

# Essen
$lang2 = 7.01667;
$breit2 = 51.45;

# ca. 168 km




$lat = ($lang1 + $lang2) / 2 * 0.01745 ;
$dx = 71.5 * cos($lat) * ($lang1 - $lang2);
$dy = 111.3 * ($breit1 - $breit2);

$entfernung = sqrt(($dx * $dx) + ($dy * $dy));
$weg = $entfernung / 100 * 20 + $entfernung;


#$dist = 6378.388 * acos(sin($breit1) * sin($breit2) + cos($breit1) * cos($breit2) * cos($lang2 - $lang1)) ;




#$e = acos(SIN($breit1)*SIN($breit2) + (COS($breit1)*COS($breit2)*COS($lang2-$lang1))) ;
#$e = -2.56482;
#$e = 0.99878;
#$r = ($e / 180) * 3.1416 ;

#$entf = $e * $r ;
#$entfernung = $entf  * 6378.137;
#echo $e ;
#echo $dist;
#echo "<br />";
echo round($entfernung, 2); 
echo "<br />";
echo round($weg, 2); 


echo "km";

auskommentiert ist noch eine andere rechnung die auch zu dem ergebniss kommt.
Der erste wert ist luftlinie der zweite ungefähr wenn man strassen nutzen würde, die auskommentierte arbeitet unter berücksichtigung der erdkrümmung, sofern man vorraussetzen würde das die erde eine Kugel und kein Ei ist ;)
 
Mit Verlaub, du schätzt die Verhältnismäßigkeiten etwas seltsam ein. ;)

Du willst lieber 57.000 Einträge per Hand (!?) bearbeiten, als dir die Datenbank von OpenGeoDB runterzuladen und mal – lokal auf dem eigenen Rechner – zu schauen, ob du das nicht auch automatisiert hinbekommst?

Das erscheint mir nicht sinnvoll.
 
Da hat mermshaus ja wohl mehr als Recht.

57.000 Städtenamen von Hand in die Datenbank einzutragen und das dann auch noch fehlerfrei, dauert sicher eine halbe Ewigkeit.

Was dann ja noch dazukommt: selbst beim manuellen Eintragen musst du jeden Ort auch noch suchen = trotzdem 57.000 Abfragen bei OpenGeoDb oder einer anderen Seite!

Wenn du die Daten per Update-Abfrage in deine Tabelle einspielen möchstest, kannst du es so lösen:

SQL:
UPDATE
    tabelle1
SET
    ort = (
SELECT
    ort
FROM
    tabelle2
WHERE
    tabelle1.lng = tabelle2.lng
AND
    tabelle1.lat = tabelle2.lat)

"tabelle1" ist deine derzeitige Tabelle, "tabelle2" ist die Tabelle in der die Ortsnamen enthalten sind. Die Feldbezeichner sollten klar sein.
 
Hallo,
habe das gleiche Problem wie der Themenstarter.
OK, bei mir sind es vielleicht nur halb so viele Einträge.
Mein Problem ist jetzt nur das OpenGeoDb keine Daten für die USA beinhaltet.
Ich brauche nur die Daten für die USA.
Gibt es da so was ähnliches wie OpenGeoDb oder bin ich bei OpenGeoDb nur zu blind es zu finden?
 
Zurück