Nur Geduld, junger Norbert ;-)
koenntest Du Deine Vermutung bitte etwas konkretisieren ... danke ...
Es ist eine unheimlich gute Idee, seinen Quellcode zu kommentieren.
// Du setzt hier Skalierungsfaktoren (das Verhältnis von X/Y entspricht ungefähr
// dem Cosinus von 49 Grad, d.h. einem plausiblen Faktor, um Längengrade in
// Deutschland auf Kilometer umzurechnen.
$faktX = 0.593;
$faktY = 0.899;
[...]
// Deine Abfrage läßt vermuten, dass Du in der DB Kilometerangaben gespeichert
// hast, die Du aus den Geokoordinaten ermittelt hast.
$query = "SELECT geoID, ortsname, nrdKm, ostKm FROM geodata4 WHERE ".
"SQRT((nrdKm - $nrdC) * (nrdKm - $nrdC) + (ostKm - $ostC) * (ostKm - $ostC)) < $radius ".
"ORDER BY nrdKm";
[...]
// Dein Bild habe ich mit anderen Deutschlandkarten verglichen, ich konnte
// keine Verzerrung feststellen. Ich hab' allerdings bei meiner kurzen
// Stichprobe keine Angaben über die verwendete Projektion gefunden.
// Auf jeden Fall skalierst Du auf Deinem Bild unterschiedlich, eine gleiche
// Anzahl von Kilometern in Ost-West-Richtung resultiert in einer geringeren
// Pixelanzahl als in Nord-Süd-Richtung.
$psX = floor($faktX * ($ost - $offsX));
$psY = $SRC[1] - floor($faktY * ($nrd - $offsY));
Wenn Deine Städte überall richtig positioniert werden - schließlich passt
Erfurt ganz gut - dann wäre es ein Problem der verwendeten Projektion.
Teste daher Dein Programm mit anderen Landeshauptstädten und Grenzstädten an
der Ost- und Westgrenze. Die Ovalform kommt jedoch definitiv von Deinen Skalierungsfaktoren $faktX und $faktY.
Grüße
Vinzenz