hallo nochmal,
ich möchte eine mir vorhandene icao karte im papierformat digitalisieren bzw. diese durch daten aus dem openstreet projekt nachbauen. meine icao karte erstreckt sich vom 51 - 53 längengrad und 6 - 12 breitengrad.
zur theorie :
ich analysiere zunächst alle osm daten die in dem oben genannten gebiet liegen. im nächsten schritt definere ich ein fenster in der größe von 1000 x 1000 pixel. damit innnerhalb dieses fensters jede geografische koordinate auf dem richtigen pixel landet nutze ich folgende formel :
public function ermittleKoordinateAlsPixel($L,$B)
{
$L1 = $this->reference["nw"]["long"]; // Längengrad für die Nord-West Grenze also linke obere Ecke des Fensters
$B1 = $this->reference["nw"]["lat"]; // Breitengrad für die Nord-West Grenze also linke obere Ecke des Fensters
$x1 = $this->reference["nw"]["x"]; // x-Pixelwert also linke obere Ecke des Fensters
$y1 = $this->reference["nw"]["y"]; // y-Pixelwert also linke obere Ecke des Fensters
$L2 = $this->reference["ne"]["long"];
$B2 = $this->reference["ne"]["lat"];
$x2 = $this->reference["ne"]["x"];
$y2 = $this->reference["ne"]["y"];
$L3 = $this->reference["sw"]["long"];
$B3 = $this->reference["sw"]["lat"];
$x3 = $this->reference["sw"]["x"];
$y3 = $this->reference["sw"]["y"];
$L4 = $this->reference["se"]["long"];
$B4 = $this->reference["se"]["lat"];
$x4 = $this->reference["se"]["x"];
$y4 = $this->reference["se"]["y"];
$B11 = $B1 + ($L - $L1) / ($L2 - $L1) * ($B2 - $B1);
$x11 = $x1 + ($L - $L1) / ($L2 - $L1) * ($x2 - $x1);
$y11 = $y1 + ($L - $L1) / ($L2 - $L1) * ($y2 - $y1);
$B12 = $B3 + ($L - $L3) / ($L4 - $L3) * ($B4 - $B3);
$x12 = $x3 + ($L - $L3) / ($L4 - $L3) * ($x4 - $x3);
$y12 = $y3 + ($L - $L3) / ($L4 - $L3) * ($y4 - $y3);
$x = $x11 + ($B - $B11) / ($B12 - $B11) * ($x12 - $x11);
$y = $y11 + ($B - $B11) / ($B12 - $B11) * ($y12 - $y11);
return array($x,$y);
}
ist mein lösungsansatz richtig oder falsch ?